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等のチップを使えば通常のRS232CBluetoothで飛ばせる。
 AndroidのBlueTermというアプリで、GR-KURUMIからの「Hello」が確認出来た。



 App Inventor2はレゴブロックのような感覚で作れるプログラミング言語だ。最初はGoogleが運営していたが、マサチューセツ工科大学に移行し、Google IDがあれば無料で使える。Android実機とリアルタイムにデバックすることも可能になった。ConnectでAI Companionを選ぶと、二次元バーコードとコードが表示される。Android実機側でどちらかを選択すれば良い。


 Bluetooth通信はこちらの情報を参考にして出来た。


 おまけでAndroidからパソコンに送るのも作ってみた。