IchigoJam BASIC I2Cコマンドを使う
IoTコマンドだけでもお使いいただけますが、より細かく制御したい場合はI2Cコマンドを利用する方法があります。
任意のアドレスにMixSodaコマンドを書き込み、そのアドレスをI2Cコマンドで指定します。
MixSodaコマンド一覧(Ver 8)
プロトコル: i2c
スレーブアドレス: 0x4f
* 0x21
4byteのデータを1つ送信する
(LTE通信が完了もしくはタイムアウトするまでI2Cバスがロックされます)
write: 8byte
(0x21, dummy, dummy, dummy, d0, d1, d2, d3)
data = (d0<<0) | (d1<<8) | (d2<<16) | (d3<<24)
read : 3byte
(status, 0, 0)
status| 1:success, 5:error
* 0x22
4byteのデータを1つ送信する
(LTE通信の完了を待たずにI2Cバスのロックを解除します)
write: 8byte
(0x22, dummy, dummy, dummy, d0, d1, d2, d3)
data = (d0<<0) | (d1<<8) | (d2<<16) | (d3<<24)
read : 3byte
(status, 0, 0)
status| 1:accepted
* 0x20
送信キューに8byte値をためる
MAX: 256byte
write: 12byte
(0x20, dummy, dummy, dummy, d0, d1, d2, d3, d4, d5, d6, d7)
read : 3byte
(status, 0, 0)
status| 1:success, 5:error
* 0x24
送信キューの中身を全て送信する
(LTE通信が完了もしくはタイムアウトするまでI2Cバスがロックされます)
write: 1byte
(0x24)
read : 3byte
(status, 0, 0)
status| 1:success, 5:error
* 0x25
送信キューの中身を全て送信する
(LTE通信の完了を待たずにI2Cバスのロックを解除します)
write: 1byte
(0x25)
read : 3byte
(status, 0, 0)
status| 1:accepted
* 0x30
4byteのデータを1つ取得する
(LTE通信が完了もしくはタイムアウトするまでI2Cバスがロックされます)
write: 1byte
(0x30)
read : 8byte
(status, dummy, dummy, dummy, d0, d1, d2, d3)
status| 1:success, 5:error
data = (d0<<0) | (d1<<8) | (d2<<16) | (d3<<24)
* 0x34
データを取得する
(LTE通信が完了もしくはタイムアウトするまでI2Cバスがロックされます)
MAX: 128byte
write: 1byte
(0x34)
read : (2+n)byte
(status, length, data0, data1, ..., data(n-1))
status| 1:success, 5:error
* 0xc0
GPS位置情報を取得する
write: 1byte
(0xc0)
read : 29byte
(status, 27,
longitude0, longitude1, longitude2, longitude3,
latitude0, latitude1, latitude2, latitude3,
altitude0, altitude1, altitude2, altitude3,
speed0, speed1, speed2, speed3,
direction0, direction1, direction2, direction3,
date_year0, date_year1, date_month, date_day, date_hour, date_min, date_sec)
status| 1:success, 2:busy, 5:error
* 0xc1
GPSをON/OFFする
1:ON, 0:OFF
write: 2byte
(0xc1, on/off)
* 0xd0
ICCIDを取得する
write: 1byte
(0xd0)
read : 10byte
(1, 8, iccid0, iccid1, iccid2, iccid3, iccid4, iccid5, iccid6, iccid7)
iccid = (iccid0<<0) | (iccid1<<8) | (iccid2<<16) | (iccid3<<24) |
(iccid4<<32) | (iccid5<<40) | (iccid6<<48) | (iccid3<<56)
* 0xd1
IMEIを取得する
write: 1byte
(0xd1)
read : 10byte
(1, 8, imei0, imei1, imei2, imei3, imei4, imei5, imei6, imei7)
imei = (imei0<<0) | (imei1<<8) | (imei2<<16) | (imei3<<24) |
(imei4<<32) | (imei5<<40) | (imei6<<48) | (imei3<<56)
* 0xd2
通信量の上限を設定する(単位はbyte、4byteで指定)
Default: 0x00100000 (1MB)
write: 5byte
(0xd2, b0, b1, b2, b3)
maxbyte = (b0<<0) | (b1<<8) | (b2<<16) | (b3<<24)
* 0xd3
通信可能なバイト数を取得する
write: 1byte
(0xd3)
read : 6byte
(1, 4, b0, b1, b2, b3)
remainbyte = (b0<<0) | (b1<<8) | (b2<<16) | (b3<<24)
* 0xd4
PLMNを設定する
write: 3byte
(0xd4, plmn0, plmn1)
plmn = (plmn0<<0) | (plmn1<<8)
read : 2byte
(status, 0)
status| 1:success, 5:error
* 0xd5
PLMNを取得する
write: 1byte
(0xd5)
read : 4byte
(1, 2, plmn0, plmn1)
plmn = (plmn0<<0) | (plmn1<<8)
* 0xd6
接続状況を取得する
write: 1byte
(0xd6)
read : 1byte
(status)
status| 0:not connect, 1:connect, 5:error
* 0xd7
LTE通信エラーの上限回数を設定する
(起動してからの通信エラー回数が上限回数に達すると再起動します)
(0が設定されている場合は再起動しません)
Default: 0x05
write: 2byte
(0xd7, num)
* 0xd8
LTE通信エラーの上限回数を取得する
(起動してからのLTE通信エラー回数が上限回数に達すると再起動します)
(0が設定されている場合は再起動しません)
write: 1byte
(0xd8)
read : 3byte
(1, 1, num)
* 0xfd
LTEボード(MixDake)を再起動する
(再起動には時間がかかります。コマンドの利用にはご注意ください)
write: 4byte
(0xfd, 0xab, 0x13, 0xc6)
* 0xfe
ascii文字をuart送信する(末尾に'\n'を自動付加)
uart送信後に受信した1行を取得
write: (1+n)byte
(0xfe, char0, char1, ..., char(n-1))
read : Nbyte
(char0, char1, char2, ..., char(N-1))
* 0xff
MixSodaのバージョンを取得する
write: 1byte
(0xff)
read : 1byte
(ver)
コード例
変数Aの値を即時送信する
10 POKE #700,#21,0,0,0,(A>>0)&#FF,(A>>8)&#FF,0,0
20 R=I2CW(#4F,#700,8)
#704のアドレスから128byte送信する
10 I=0
20 POKE #700,#20,0,0,0
30 R=I2CW(#4F,#700,4,#704+I,8)
40 I=I+8
50 IF I<128 GOTO 30
60 POKE #700,#24
70 R=I2CW(#4F,#700,1)
数値を1つ受信する
10 POKE #700,#30
20 R=I2CR(#4F,#700,1,#710,8)
30 ?(PEEK(#714)<<0)+(PEEK(#715)<<8)
その他コマンド使用例 Ver.8
※送信されたデータはMixServerで取得可能です。リファレンスはこちら。