カテゴリー
IchigoJam

さくらのモノプラットフォームにIchigoJam BASICからモバイル・データ送信

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に接続します。

IchigoJamのBTN入力(タクトスイッチ)に応じて、「$$TX 01 03 0000」や「$$TX 01 03 0001」をLTEモジュールのUARTに送信する

上図は、電源(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

ボクにもわかるIchigoJam用マイコンボード

by bokunimo.net