FT232RLのボードをPythonのGPIOとして使って見ました
PCからPythonのコードで直接制御できるGPIOを探していて、AdaruitのGPIOの
クローンで同じFT232Hを使っているものを調べていたのですが、Python2.7の
32bitでないと動作させられない事が判り、また値段も千円近くで高価だったので、
別のものも検討していたら、FT232RLを使った UST to Uart TTL のボードが
Bit Bang Mode を利用すればGPIOとしても利用できる事を知り調べて見ました。
結果としては、問題無くGPIOとして利用できる事と、またこのボードにどうして
余計な引き出しピン用の穴が用意されている事が判りました。
<FT232RL module>
FT232RLは USB to Serial のデバイスですが、Bit-Bang-Mode をサポート
FT232RLは USB to Serial のデバイスですが、Bit-Bang-Mode をサポート
していて USB to GPIO としても利用可能で、PC上のPythonから直接GPIO
としてアクセスする状況を確認して見ました。なお、その時利用した基板は、
GPIOとして利用する時の端子が取り出し可能な以下のものです。
1.FT232RLチップjを搭載
2.FT232RLはBit-Bang-Modeをサポート
3.Bit-Bang-Modeでは8bitsのGPIOとして利用可能
4.GPIOと利用の時はpit-port単位で入出力の指定が可能
5.PCとの接続はUSB-miniの端子
[動作状況]
2.FT232RLはBit-Bang-Modeをサポート
3.Bit-Bang-Modeでは8bitsのGPIOとして利用可能
4.GPIOと利用の時はpit-port単位で入出力の指定が可能
5.PCとの接続はUSB-miniの端子
[動作状況]
<関連資料>
Bit Bang Mode に関しては次のURLを参考にしました。
URL : https://ore-kb.net/wordpress/wp-content/uploads/2013/03/how_to_use_bitbang.pdf
FT232RLのアクセスに関しては次のURLを参考にしました。
URL : https://m8051.blogspot.com/2010/05/ft232rbit-bang-using-python.html
LCD1602のアクセスに関しては、次のArduinoのライブラリを参考にしました。
(Pythonコードへのポーティングを行いました。)
URL : https://www.arduino.cc/en/Reference/LiquidCrystal
<動作環境>
動作に発に必要なPCのドライバとインストールパッケージは次のものと
Bit Bang Mode に関しては次のURLを参考にしました。
URL : https://ore-kb.net/wordpress/wp-content/uploads/2013/03/how_to_use_bitbang.pdf
FT232RLのアクセスに関しては次のURLを参考にしました。
URL : https://m8051.blogspot.com/2010/05/ft232rbit-bang-using-python.html
LCD1602のアクセスに関しては、次のArduinoのライブラリを参考にしました。
(Pythonコードへのポーティングを行いました。)
URL : https://www.arduino.cc/en/Reference/LiquidCrystal
<動作環境>
動作に発に必要なPCのドライバとインストールパッケージは次のものと
なります。
[ドライバ]
[ドライバ]
ドライバが自動でダウンロードして選択できなくて、次のURLから
ダウロードしてマニュアルでインストールする必要が有る場合も有ります。
[パッケージ]
関連するパッケージのインストールは次の2つです。
pip install ftd2xx and pip install pywin32
pywin32のインストールが上手く行かなくて、次の様に"win32con.py"を
マニュアルでセットしなければならない場合が有ります。
関連するパッケージのインストールは次の2つです。
pip install ftd2xx and pip install pywin32
pywin32のインストールが上手く行かなくて、次の様に"win32con.py"を
マニュアルでセットしなければならない場合が有ります。
<テスト内容>
FT232RでのGPIO動作テストに関する目標は次の様な内容で、その結果は
FT232RでのGPIO動作テストに関する目標は次の様な内容で、その結果は
次の様な状況でした。
[目的と結果]
テストの確認目標は次のものでした。
1.ビット毎に入力と出力の指定が可能がどうかを確認
2.また、各入出力ビット間はそれぞれ単独で動作可能かどうかを確認
3.簡単なGPIO接続デバイスを用意し、それらに希望の動作をさせる事が
[目的と結果]
テストの確認目標は次のものでした。
1.ビット毎に入力と出力の指定が可能がどうかを確認
2.また、各入出力ビット間はそれぞれ単独で動作可能かどうかを確認
3.簡単なGPIO接続デバイスを用意し、それらに希望の動作をさせる事が
できるかどうかを確認(今回は16x2のLCD、LED、Slide SW を
接続して見ました。)
結果としては、次の様な状況で、高速を必要としないものに関しては
結果としては、次の様な状況で、高速を必要としないものに関しては
8ビットのGPIOが問題無く実現できる事が判りました。
1.ビット毎に入力と出力を指定する事が可能
2.また、入出力ビット間の動作も単独で行う事ができるのを確認
3.Pythonのコードによる16x2のLCD表示用モジュールに関しては、
1.ビット毎に入力と出力を指定する事が可能
2.また、入出力ビット間の動作も単独で行う事ができるのを確認
3.Pythonのコードによる16x2のLCD表示用モジュールに関しては、
Arduinoのライブラリから移植を行ったが、移植作業はほぼ単純な
置き換えで対応できる事を確認
4.試験的に、SPI動作をさせる内容を組んで見たが、SPIのクロック
4.試験的に、SPI動作をさせる内容を組んで見たが、SPIのクロック
信号をビット出力のHi/Lowの変化で作る必要も有り、Mbpsを
超える高速動作は難しい事を確認(高速動作を必要とする表示関係の
利用可能である事が判りました。USB3.0とMPSSEモードを利用して
FT232Hを動作させる方法も検討しましたが、速度を必要としない簡単な
もので有れば、このデバイス方が安価で簡単に利用できるのでとても
利用用途も広がるのではないかと思いました。
[テストでの機器の接続]
[テストでの機器の接続]
[テストシステム]
テスト用のシステムとしては、上記の回路で単独でループシーケンスを
テスト用のシステムとしては、上記の回路で単独でループシーケンスを
させるものと、WiFiを利用してブラウザから上記の回路を動作させるもので
行いました。
(単独動作)
(ブラウザからの制御)