BASICコマンドをLTE送信!PCやスマホからIchiogoSodaを遠隔制御

LTEモバイル通信機能を搭載したIchigoSodaへBASICコマンドを送る実験をしてみました。

PCやスマホから「LED 1」「BEEP」「?”こんにちわ”」といったIchigoJam BASICのコマンドを送信する(上図)と、IchigoSoda上で実行することが出来ます。※ただし8文字まで

β版IchigoJam BASICで8文字受信

ベータ版のIchigoJam BASIC 1.3.2 bata 11で、8文字までの文字列の受信に対応していただけたので、対応プログラムを作ってみました。

IchigoSoda用プログラム

以下にIchigoSoda側のプログラムを示します。sakura.ioモジュールがBASICコマンドを受信すると、キーバッファへBASICコマンドを取込み、IchigoSoda上で実行します。

new
 1 cls:?"SAKURA IoT RX
 2 ?"CC BY Wataru Kunino
 3 T=1:?" シュウキ=";T;" ビョウ
 9 M=#114E :'Ver. 1.3.2

 100 ?"== RX マチウケ ==
 110 ?".";:wait T*60

 200 '== RX ==
 210 poke M,0
 220 I=IoT.in()
 230 if peek(M)!=1 goto 110
 260 cls:?"Ch=";peek(M+2)
 270 if peek(M+3)=98 goto 300
 280 ? I
 290 goto 200

 300 '== String ==
 310 I=0
 320 C=peek(M+4+I)
 330 poke #1004+I,C
 340 I=I+1
 350 if C AND I<8 goto 320
 360 P="/goto 200/"
 370 poke P,10:poke P+9,10
 380 copy #1004+I,P,I+10
 390 poke #1003,I+10
 400 end
 999 ?"MJ GET bokunimowakaru.github.io/MJ/803.txt

行番号100番台は、1秒ごとに「.」を表示するだけです。何か他の処理をさせたいときのために確保しました。

行番号200番台は、sakura.ioからの受信の待ち受け部です。行番号220のIoT.inコマンドが、sakura.ioから受信データを取得します。文字列(バイナリ)の受信に成功したら、行番号300番台へgotoします。数値を受信した時は、行番号280で数値を表示します。

行番号300番台は、受信したバイナリデータをキーバッファへ取り込む部分です。行番号330で、キーバッファへ書き込みます。また、行番号360で「goto 200」の命令をキーバッファへ入れておきます。これで、プログラムを終了後、受信した命令を実行し、goto 200で再び、プログラムに戻ります。

キーバッファへの操作コマンドは、あまり自信がありません。誤っていたら、コメント欄などから教えてくださいますよう、お願いします。

WebSocket 確認ツール Message IoT からBASICコマンドを送信する

BASICコマンドの送信には「WebSocket 確認ツール Message IoT 」を使用しました。
冒頭の画面のように、Tokenを入力し、sakura.ioへの接続に成功したら、Module IDを入力し、Message欄へBASICコマンドを入力し、実行してください。

https://bokunimowakaru.github.io/IchigoJam/message_iot/index.html

以上で、8文字までのBASICコマンドをIchigoSodaへ送ることが出来ます。

ただし、コマンドに誤りがあるとSyntax Errorが発生し、プログラムが停止してしまいます。

試しに

on error goto 200

と、入れてみましたが、動きませんでした。

セキュリティに関するご注意
sakura.ioモジュールのtokenやモジュールIDが流出すると、攻撃者にIchigoSodaを乗っ取られる可能性が考えられます。また、攻撃などに要した通信料が課金されます。十分に注意して下さい。

by ボクにもわかるIchigoJam用マイコンボード
https://bokunimo.net/ichigojam/