sasaki-t / USBtoGPIO_SerialCommunication-RTCs

A USB to GPIO, SPI, I2C component for OpenRTM-aist using an Adafruit FT232H breakout board
0 stars 0 forks source link

USBtoGPIO_SerialCommunication-RTCs

Adafruit FT232H BreakoutおよびAdafruit MCP2221A Breakoutを使用したUSB-GPIO, SPI, I2C, UART変換コンポーネントとその利用例を提供するOpenRTM-aist用コンポーネント群です。

USB to GPIO, SPI, I2C, UART components and sample components for OpenRTM-aist using Adafruit FT232H breakout / Adafruit MCP2221A breakout boards

概要

開発の背景

ロボットシステムやRTシステムでは、センサやLEDといった電子部品や、モータなどのアクチュエータを利用した開発が行われます。 このような場合にはGPIO(General Purpose Input/Output)ポートや、SPIやI2C, UART通信といったシリアル通信インタフェースが必要となるため、PCに加えてRaspberry PiやArduinoといったワンボードコンピュータやワンボードマイコンを利用してRTコンポーネントの開発を行う必要がありました。そこで、USBポートを介してGPIOやシリアル通信機能を利用することができる変換ボードをコンポーネント化しました。

開発したUSB-GPIO, SPI, I2C変換コンポーネントおよびUSB-GPIO, I2C, UART変換コンポーネントにはそれぞれ以下のような機能があります。

いずれの機能についても設定はConfigurationから行うことができ、またデータは全てコンポーネントの入出力ポートを通してやり取りできるため、プログラムの記述やマイコンへの書き込みを行うことなくこれらの機能を利用することができます。 また、様々なOS(Windows, macOS, Linux)で利用することが可能です。

コンポーネント群

利用ハードウェア

依存ライブラリ

利用方法

Adafruit_FT232H_Breakout, Adafruit_MCP2221A_Breakoutの基本的な使用手順を説明します。 コンポーネントの仕様、使い方の詳細に関しましては付属のマニュアルに記述されておりますのでそちらをご覧ください。

使用前の準備

Adafruit_FT232H_Breakoutの使用準備

Adafruit_FT232H_Breakoutの使用にあたり、事前にソフトウェアのインストールなどの準備が必要となります。 OSごとの概要は下記のとおりですが、詳細は公式サイトの手順を参照してください。

Adafruit_MCP2221A_Breakoutの使用準備

Adafruit_MCP2221A_Breakoutの使用にあたり、事前にソフトウェアのインストールなどの準備が必要となります。 OSごとの概要は下記のとおりですが、詳細は公式サイトの手順を参照してください。

使用手順

Adafruit_FT232H_Breakoutの使用手順

  1. (コンポーネント実行前の準備)
    • Adafruit FT232H Breakoutボードが新しいタイプ(コネクタがUSB Type-Cのもの)の場合、I2C通信を使うならボードのI2C Modeスイッチをオンに、SPI通信を使うならオフにする
    • 入出力の対象となる回路を作成し、Adafruit FT232H Breakoutボードの各ピンに接続する
    • Adafruit FT232H BreakoutボードとPCをUSBで接続する
  2. Configurationを設定する
    • シリアル通信(I2CもしくはSPI通信)を利用するか、利用する場合はどちらを利用するのかをSER_selectで指定する
    • GPIOを利用する場合は、GPIO_C7_0_IO_selectとGPIO_D7_4_IO_selectで各ピンをそれぞれディジタル入力ピンとして使用するか、ディジタル出力ピンとして使用するかを指定する。SPI通信を利用する場合はCS (chip select)ピンをSPI_cs_pinで指定し、GPIO_D7_4_IO_select設定時にそのピンは出力ピンに指定する
    • I2C通信を利用する場合はI2C_device_addressでデバイスの7ビットアドレスを、SPI通信を利用する場合はSPI_baudrate, SPI_mode, SPI_cs_talkingで通信パラメータを設定する
  3. コンポーネントをアクティブ化する
  4. InPort, OutPortを他のコンポーネントに接続し、システムを拡張していく

Adafruit_MCP2221A_Breakoutの使用手順

  1. (コンポーネント実行前の準備)
    • 入出力の対象となる回路を作成し、Adafruit MCP2221A Breakoutボードの各ピンに接続する
    • Adafruit MCP2221A BreakoutボードとPCをUSBで接続する
  2. Configurationを設定する
    • GPIOを利用する場合は、GPIO_G0_select~GPIO_G3_selectで各ピンの利用方法(アナログ/ディジタル、入力/出力)を指定する
    • シリアル通信(I2CおよびUART通信)を利用するかをそれぞれI2C_use, UART_useで指定する
    • I2C通信を利用する場合はI2C_device_addressでデバイスの7ビットアドレスを、UART通信を利用する場合はUART_port, UART_baudrate, UART_read_timeoutで通信パラメータを設定する
  3. コンポーネントをアクティブ化する
  4. InPort, OutPortを他のコンポーネントに接続し、システムを拡張していく

使用例

Adafruit_FT232H_Breakoutについて、GPIO, シリアル通信機能それぞれの使用例の動画を公開しています。
https://www.youtube.com/watch?v=tZ5US8G4aX8