IchigoJamのIoTコマンド×sakura.ioモジュールでAmbientへ送信

IchigoJam BASICのIoTコマンド×sakura.ioモジュールで、Ambientへデータを蓄積する実験を行ってみました。
sakura.ioモジュールと、発売されたばかりのIchigoSodaの組み合わせで送信することが出来ます。
sakura.io製品:
IchigoSoda/IchigoJam for sakura.io (Amazonでの販売ページ)
sakura.io さくらの通信モジュール LTE (Amazonでの販売ページ)
ボクは、まだIchigoSodaを入手していないので、写真のような組み合わせで実験してみました。
IchigoJam用コンピュータ電子工作学習キット(CQ出版社 IF ICH-KIT)に、sakura.ioモジュールを接続し、IchigoJam (ベータ版ファームウェア)から数字の1と65535を送信したときの様子(送信可能な数値の範囲は0~65535)。
IoTコマンドは、昨日、リリースされたIchigoJamのベータ版でサポートされたコマンドです。IchigoJamとsakura.ioモジュールとの組み合わせで、簡単にsakura.ioへ数値データを送信することが出来ます。
数字の1を送信したいときは「IoT.OUT 1」のように入力するだけです。
IoT.OUT 1          :' 数字の1を送信
IoT.OUT 65535   :' 数字の65535を送信
IoT.OUT ana()     :' BTN端子の入力電圧に応じた数字(0~1023)を送信
for I=0 to I+1:iot.out ana():wait 600:next      :' 20秒ごとにBTN端子の状態を送信
IchigoJam用のβ版ファームウェアは下記からダウンロードすることが出来ます。
IchigoJam用ファームウェア:

sakura.ioからAmbientへデータ転送

IchigoJam×sakura.ioモジュールから送信された数値データを、Node-REDでAmbientへ転送してみました。Node-REDはIoT用のゲートウェイを簡単に製作することが可能なソフトウェアです。Raspberry Piをはじめ、様々なプラットフォーム上で動作します。
データの流れ:
IchigoJam –> sakura.io –> Node-RED –> Ambient
IchigoJamから送信したデータをNode-REDでAmbientへ転送する。
Node-REDとNode-RED用のAmbientノードのインストール方法や操作方法については、下記を参照してください。※後半の「IoT用クラウドサービスAmbientへデータを送信する」も忘れずに実施してください。
インストール手順
sakura.ioからAmbientへデータを転送するためのNode-RED用のフローを下記に公開しました。ブラウザなどでアクセスし、[Ctrl]+[A]と[Ctrl]+[C]でコピーしておき、Node-RED画面の右上のメニューアイコン(3本の横線)をクリックし、「読込み」→「クリップボード」と選択後、[Ctrl]+[V]でペーストしてください。
「読込み」を実行後、フローのエリア内をマウスでクリックすると、フロー図が表示されます。フロー図内で下記を設定し、「デプロイ」を実行すれば、準備完了です。
  • Ambientノードをダブルクリックし、Ambientのサイトから得たChannel Id とWrite Keyを入力する。
  • sakura.ioノード内のURL(またはpath)のwssから始まる文字列の「xxxx」の部分へ、sakura.ioから得たトークンを入力する。

      初期値:wss://api.sakura.io/ws/v1/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      入力例:wss://api.sakura.io/ws/v1/01234567-89ab-cdef-0123-456789abcdef

IchigoJamからIoTコマンドで送信した数値データは、Node-REDがsakura.ioからAmbientへ転送し、Ambientは数値データをグラフします。グラフはパソコンやスマホで閲覧することが出来ます。
20秒ごとに、IchigoJamからデータを送信し、Ambientでグラフ化したときの様子

IoT命令のない時。。。ある時。。。

現時点では、IoT命令は、IchigoJamのβ版のファームウェアのみでしかサポートされていません。
正式リリース版のIchigoJam Ver 1.1、1.2.1~1.2.3で動かすには以下のようなプログラムになります。
new
1 cls:?"SAKURA IoT
2 ?"アナログ ニュウリョク A=BTN
3 ?"I2C SDA ポート IN3
4 ?"I2C SCL ポート EX1/SCL
5 W=600:?"ソクテイ カンカク W=";W
6 ' CC BY Wataru Kunino
100 'INIT
210 A=ana(0):?"ana(0)=";A
220 poke#700,33,10,1,76,A&255,A>>8,0,0,0,0,0,0:N=11:gosub900
390 led0:waitW:led1:goto100
900 'I2C
910 C=0:forI=0toN
920 C=C^peek(#700+I):next
930 N=N+1:poke#700+N,C:
940 ifi2cw(79,#700,1,#701,N)?"E
950 forI=0toN:?peek(#700+I);
960 ?" ";:next:?
970 return

run
ana(0)=832
33 10 1 76 64 3 0 0 0 0 0 0 37
ana(0)=831
33 10 1 76 63 3 0 0 0 0 0 0 90
ana(0)=833
33 10 1 76 65 3 0 0 0 0 0 0 36
ana(0)=832
33 10 1 76 64 3 0 0 0 0 0 0 37
IoT命令があれば
ほぼ、同じ処理を以下の1行で実行することが出来ます。
for I=0 to I+1:iot.out ana():for J=0 to 12:?peek(#800+J);" ";:next:?:wait 600:next

リンク集

1. IchigoJam×さくらのIoTで遠隔地の照度を測るワイヤレスセンサ
2. Node-REDで簡単ESP8266/ESP32 ワイヤレスセンサ用IoTゲートウェイ
by ボクにもわかるIchigoJam用 IchigoSoda / sakura.io

IchigoJamからLoRaWANへBTN状態を送信する

IchigoJam Tのボタン状態をLoRaWANへ送信するBASICプログラムを作ってみました。
ここでは、IchigoJam側のプログラムについて紹介します。(LoRaWAN側については、STマイクロ社が提供する STM32 CubeExpansion LRWAN に含まれるAT_SlaveのSORACOM版を使用して動作確認しました。)
IchigoJam T へLoRaモジュールを接続したときの様子。LoRaの電源はIchigoJam TのCN5から供給した。また、シリアルTXDとRXDを接続した。
以下にプログラムを示します。プログラムの実行の直前までは、IchigoJam TのTXDを外しておく必要があります。

1 cls:?"LoRaWAN for IchigoJam
100 'Init
110 uart 3:clt:led 0
120 ?"AT":wait 30
130 if inkey()<>asc("O") goto 130
140 if inkey()<>asc("K") goto 140
150 if tick()>300 end
160 ?"ATZ":wait 30
200 'Join
210 ?"AT+JOIN":wait 10
220 if inkey() goto 220
230 ?"AT+NJS=?":wait 10
240 I=inkey():if I=asc("1") goto 300
250 if !I wait 250:goto 220
260 if inkey()<>13 goto 260
270 goto 240
300 'Send
310 if inkey() goto 310
320 led 1
330 B=btn()
340 ?"AT+SEND=1:";B
350 led 0
360 wait 300
370 goto 300

本プログラムを入力し、IchigoJam TのTXDをLoRaモジュールのRX端子へ接続してからRUNを実行すると、IchigoJamのボタン状態を5秒ごとにLoRaWANへ送信します。
送信した結果を下図に示します。グラフ用データの欄の最後の0または1の数字がIchigoJamのボタン状態です。
IchigoJam TでIoTの世界へ。
by ボクにもわかるIchigoJam用マイコンボード