IchigoJam に、新たなモバイルIoTデバイスが登場しようとしています。
IchigoSodaの後継機「MixSoda」を開発中との情報(下記リンク参照)が公開されていました。本ブログでは、今、試せる実験を行ってみます。
https://yrm006.github.io/2022.06.11/
目次
(本ブログは、MixSodaの話ではありません)
MixSodaには、従来のIchigoSoda同様のIoT.OUTやIoT.INコマンドがサポートされるそうです。本ブログは、これらに対応していない方法で実験します。
※MixSodaの発売まで待てない人向けの情報です。
本ブログでの実験
下記で紹介したM5Stack用のLTEモジュールSCO-M5SNRF9160を使用します。当該モジュールは、UART(シリアル通信)で簡単に送受信ができます。
今回は、上記の記事のM5Stack本体は使用せずに、LTEモジュールとボトム・モジュールのみをIchigoJamに接続します。
上図は、電源(5V、3.3V、GND)とUARTのTXDとRXDを、M5Stack用ボトム・モジュールの端子に接続し、実験を行った時の様子です。
モニタ画面には、IchigoJamのBTN入力(タクトスイッチ)に応じて、「$$TX 01 03 0000」や「$$TX 01 03 0001」をLTEモジュールのUARTに送信した様子が映っています。
WebSocket確認ツール Message IoT さくらのモノプラットフォーム用
送信したデータは、さくらのモノプラットフォームを経由して、WebSocketで受信することが出来ます。
下図は、WebSocket確認ツール Message IoT(さくらのモノプラットフォーム用) での受信例です。画面上部の「WebSocket Token」にトークンを入力すると、画面中央のログ表示部にIchigoJamが送信した情報を表示できるようになします。
上図の左側は、ボタン状態(押下=1、解放=0)の受信結果で、右側はアナログ入力(0~1023)の受信結果です。
WebSocket確認ツール Message IoT さくらのモノプラットフォーム用
https://git.bokunimo.com/IchigoJam/message_iot/sipf.html
IchigoJam 用プログラム
プログラムは、MixJuiceでダウンロードすることが出来ます。
ボタン状態を送信するプログラム
?”MJ GETS git.bokunimo.com/MJ/pg08/61.txt”
アナログ入力を送信するプログラム
?”MJ GETS git.bokunimo.com/MJ/pg08/62.txt”
その他の各種 IoT用プログラム
?”MJ GETS git.bokunimo.com/MJ/808.txt
(解説) https://bokunimo.net/ichigojam/iot/
ボタン状態(押下=1、解放=0)送信機のプログラム
IchigoJam基板上のボタンを押したり、離したりすると、ボタン状態に応じた値を送信します。送信部は、行番号540です。行番号200番台で変数Bに代入した値を送信します。行番号500番台の送信部(TX)は、10進数で0~15、16進数で0~Fの値が送れるようにしましたが、実際に変数Bに入るのは0または1の値です。
1 cls:?"Sakura's MonoPF BTN/PIR
2 uart 0:?"CC BY クニノ ワタル
200 ?:?"== メイン ==
210 ?"B=";B
220 gosub 500
230 wait 10
240 ?"== BTN マチ ==
250 if B=btn() cont
260 B=!B
270 goto 200
500 'TX
510 uart 3:clk
520 if B < 0 B=0
530 if B > 15 B=15
540 ?"$$TX 01 03 000";hex$(B)
550 uart 0:gosub 700
560 return
700 'RX
710 clt
720 I=inkey()
730 if I clt:? chr$(I);
740 if tick()<90 goto 720
750 return
アナログ入力(0~1023)送信機のプログラム
IchigoJam基板上のBTNに入力したアナログ値を、30秒ごとに送信します。送信部は、行番号540と550です。変数Aに代入されたアナログ入力値をLTE送信します。本プログラムでは、変数Aの値を2バイトの16進数4桁に変換し、LTEモジュールに出力しました。
本プログラムでは、変数Aに代入した2バイトの符号つき整数(-32768~32767)を送ることが出来ますが、実際の送信範囲は、アナログ入力値の範囲の0~1023です。
行番号4の変数Tは、送信周期(秒)です。パケットを節約するには、数字を大きくしてください。
1 cls:?"Sakura's MonoPF TX ANA
2 uart 0:?"CC BY クニノ ワタル
3 ?"BTN デンアツ ヲ ソウシン
4 T=30:?" シュウキ=";T;" ビョウ
5 S=0:?" ショウデンリョク=";S;" (1=ON)
200 ?:?"== メイン ==
210 A=ANA():?" A=";A
220 B=A>>12:C=A&#F00>>8
230 D=A&#F0>>4:E=A&#F
240 gosub 500
250 for I=1 to T
260 led 0:wait 60,!S:led 1
270 next
280 goto 200
500 'TX
510 uart 3:clk
520 if B < 0 B=0
530 if B > 15 B=15
540 ?"$$TX 01 03 ";hex$(B);
550 ?hex$(C);hex$(D);hex$(E)
560 uart 0:gosub 700
570 return
700 'RX
710 clt
720 I=inkey()
730 if I clt:? chr$(I);
740 if tick()<90 goto 720
750 return
by bokunimo.net
「さくらのモノプラットフォームにIchigoJam BASICからモバイル・データ送信」への1件の返信
4/21発売予定のRaspberry Pi/M5Stack向けの書籍「IPネットワーク通信プログラム入門」の中で当ページで紹介した情報の、ほんの一部を紹介しています。
書籍紹介のページ(ラズパイ/M5Stack):
https://bokunimo.net/blog/raspberry-pi/3546/