趣味のマイコンいじり

安価なマイコンを利用して作成したアプリの紹介です。

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 をサポート
   していて USB to GPIO としても利用可能で、PC上のPythonから直接GPIO
   としてアクセスする状況を確認して見ました。なお、その時利用した基板は、
   GPIOとして利用する時の端子が取り出し可能な以下のものです。
    イメージ 1

   1.FT232RLチップjを搭載
   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のドライバとインストールパッケージは次のものと
   なります。 

 [ドライバ]
    イメージ 2

     ドライバが自動でダウンロードして選択できなくて、次のURLから
     ダウロードしてマニュアルでインストールする必要が有る場合も有ります。
     イメージ 3

 [パッケージ]
   関連するパッケージのインストールは次の2つです。
    pip install ftd2xx  and  pip install pywin32
    pywin32のインストールが上手く行かなくて、次の様に"win32con.py"を
    マニュアルでセットしなければならない場合が有ります。
    イメージ 4
 
<テスト内容>
    FT232RでのGPIO動作テストに関する目標は次の様な内容で、その結果は
    次の様な状況でした。

 [目的と結果]
    テストの確認目標は次のものでした。
         1.ビット毎に入力と出力の指定が可能がどうかを確認
         2.また、各入出力ビット間はそれぞれ単独で動作可能かどうかを確認
         3.簡単なGPIO接続デバイスを用意し、それらに希望の動作をさせる事が
               できるかどうかを確認(今回は16x2のLCD、LED、Slide SW を
               接続して見ました。)

      結果としては、次の様な状況で、高速を必要としないものに関しては
      8ビットのGPIOが問題無く実現できる事が判りました。
         1.ビット毎に入力と出力を指定する事が可能
         2.また、入出力ビット間の動作も単独で行う事ができるのを確認
         3.Pythonのコードによる16x2のLCD表示用モジュールに関しては、
               Arduinoのライブラリから移植を行ったが、移植作業はほぼ単純な
               置き換えで対応できる事を確認
         4.試験的に、SPI動作をさせる内容を組んで見たが、SPIのクロック
               信号をビット出力のHi/Lowの変化で作る必要も有り、Mbpsを
               超える高速動作は難しい事を確認(高速動作を必要とする表示関係の
               デバイス以外は対応できそうです。)

        以上の様な状況で、このデバイスはPCから直接アクセスできるGPIOとして
        利用可能である事が判りました。USB3.0とMPSSEモードを利用して
        FT232Hを動作させる方法も検討しましたが、速度を必要としない簡単な
        もので有れば、このデバイス方が安価で簡単に利用できるのでとても
        重宝かと思いました。また、接続するデバイス用のPythonのモジュールに
        関しては、Arduinoのライブラリから比較的簡単に移植できる事も判り、
        利用用途も広がるのではないかと思いました。

 [テストでの機器の接続]
     イメージ 5

     イメージ 6

 [テストシステム]
    テスト用のシステムとしては、上記の回路で単独でループシーケンスを
    させるものと、WiFiを利用してブラウザから上記の回路を動作させるもので
    行いました。
     イメージ 7
            (単独動作)

     イメージ 8
            (ブラウザからの制御)
 
    [コード類]
     Code download URL : https://www.dropbox.com/s/jhu6o9cwrt6l3xc/FT232RL_BBM_test.zip?dl=0