App Inventor2によるAndroidとマイコンのBluetoothシリアル通信
Androidスマートフォンとマイコンが連携すれば出来ることの幅が広がる。両者が連携する手段はシリアル通信かUDP等のネットワーク通信。一長一短あるが、今回はシリアル通信で行う。
シリアル通信に関しては、USBホストにUSB-シリアル変換基盤を介すか、Bluetoothを使うか、やはり一長一短ある。ただ私のプログラム知識ではBluetoothを使うしか選択肢は無かったのでBluetoothを使う。
私がAndroidでプログラムを作れるのはProcessingとApp Inventor2だけだ。ProcessingはketaiライブラリにBluetoothのサンプルが入っていたので、多分このライブラリを使えばProcessingでも出来るのだろうが、せっかくApp Inventor2は正規にサポートしているのでこちらを使った。ちなみに、Bluetoothを使うメリットは無線で10m位離れてても通信出来ること。デメリットはマイコン側の電源を用意する必要があること、USBホストにUSB-シリアル変換基盤を介す場合のメリットは、Androidからマイコンの電源がとれること、デメリットは有線になることだ。
App Inventor2でプログラムを作る前に、先ずはマイコンとBluetoothでデータを受け取れるか試す。マイコンはGR-KURUMIを使い、秋月電子のRN-42使用BluetoothモジュールでAndroidとシリアル通信する。GR-KURUMIは電源を入れるとひたすら「Hello」をシリアルに送り続ける。BluetoothモジュールはマイクロUSBからしか電源供給出来ないようなので、USBモバイルバッテリー(黒いドロイド君)で給電し、モジュールから出ている3.3VでGR-KURUMIに給電している。見てのとおりBluetoothモジュールとマイコンのシリアル通信はUARTなので、MAX232等のチップを使えば通常のRS232CもBluetoothで飛ばせる。
AndroidのBlueTermというアプリで、GR-KURUMIからの「Hello」が確認出来た。
App Inventor2はレゴブロックのような感覚で作れるプログラミング言語だ。最初はGoogleが運営していたが、マサチューセツ工科大学に移行し、Google IDがあれば無料で使える。Android実機とリアルタイムにデバックすることも可能になった。ConnectでAI Companionを選ぶと、二次元バーコードとコードが表示される。Android実機側でどちらかを選択すれば良い。
おまけでAndroidからパソコンに送るのも作ってみた。