はじめに
2024年の目標の一つに、モノ作りイベントでの展示がありました。
展示の内容は、「自分を応援してくれるロボット」と題して、Androidタブレット上の迷路を解くと、紙製のロボットがおめでとうメッセージを出す仕組みです。
Androidタブレットのプログラム環境としてAppInventorを使い、ロボットの制御にはRaspberry Pi Picoを用いることにしました。
AndroidタブレットとRaspberry Pi Picoの間は、有線のシリアル通信で信号をやり取りすることにしました。
本稿の内容は、「鹿児島らぐ」での相談とつくろか!の「百舌鳥堂」ブースの展示を含みます。
AppInventorの有線シリアル通信
AppInventorに標準で用意されているのは、USBホストケーブルを介してArduinoに接続する場合のシリアル通信拡張機能です。
このモジュールを使う場合、Arduinoに標準搭載のUSB-to-serialアダプタチップにのみ対応していて、汎用の安いUSB-to-serialアダプタでは利用できません。
Appinventor-SerialOTG
AppInventorで利用可能なUSB-to-serialアダプタ用拡張機能に、rkl099さん作成の「Appinventor-SerialOTG」があります。
この拡張機能では、PL2303、PL2303HX、(PL2303HXN用は未移植)、 FTDI FT232、 CP210x、CH341、CH341 (「偽物」) のチップに対応しています。さらに、CdcAcmとして、オリジナルのArduino Uno、Adafruit Feather M0 と Adafruit CLUE、Micro:bit、Teensy、OpenCR、DigiCDCライブラリを使うATTINY85に対応しています。
この機能拡張を使って、汎用の安いUSB-to-serialアダプタとRaspberry pi picoと通信します。
AppInventor上のプログラム
AppInventor上で「SerialOTG.aia」を追加することで利用可能となります。
使用方法は「SerialOTG_1.5.pdf」を見るとわかりますが、9600 bpsの通信速度が初期設定です。
紫色のブロック「呼び出す SerialOTG1 .Initialaize」、「呼び出す SerialOTG1 .Write データ “BEGINQ”」、「呼び出す SerialOTG1 .Write データ “GOALQ”」の3か所で使用しています。
配線は以下の通りです。
Androidタブレット<-USBホストケーブル+マイクロUSBケーブルー>USB-to-serialアダプタ <-ジャンプワイヤー>Raspberry Pi Pico
おわりに
つくろか!の「百舌鳥堂」ブースの展示では、USB-to-serialアダプタを利用して、AndroidタブレットとRaspberry Pi Picoを接続しました。
CdcAcmが利用可能ですので、USB-to-serialアダプタを省略できるかもしれません。この点は今後の課題です。