GOTO
書式:GOTO [ラベル]
ラベルに指定された行にジャンプする。
ラベルには行番号またはラベル文字列を指定する。
ジャンプ先に行番号を指定する場合は、数値だけでなく変数を使用した式も指定可能。

GOSUB
書式:GOSUB [ラベル]
ラベルに指定された行のサブルーチンにジャンプします。
ラベルの指定はGOTOと同様。
サブルーチンのRETURN命令で、本命令の次の命令に戻ります。

RETURN
書式:RETURN
サブルーチンから戻ります。

IF〜THEN〜ELSEIF〜THEN〜ELSE〜ENDIF
書式:IF [式] THEN 〜 ELSEIF [式] THEN 〜 ELSE 〜 ENDIF
式の演算結果が0以外「真」のときはTHENに続く命令文を実行します。
式の演算結果が0「偽」のときはELSEIFの条件判定を、ELSEIFが省略された場合はELSEに続く命令文を実行します。
ELSEIF、ELSE は省略できます。(IFの後には、THENとENDIFが必要)
THEN、ELSE 直後に行番号またはラベルを記載すると、GOTO を記述したときと同様の動作となります。

FOR〜TO〜STEP〜NEXT
書式:FOR [変数名=式1] TO [式2] STEP [式3] 〜 NEXT
変数名に式1を代入した後、変数が式2になるまでNEXTとの間をループします。
プログラムがNEXTに来る毎に、変数に式3の値が加算されます。
STEP 式3は省略可能で、省略された場合は1が指定されたことになります。

DO〜LOOP
書式:DO〜LOOP
DO〜LOOP を繰り返します。

DO〜LOOP WHILE
書式:DO 〜 LOOP WHILE [式]
DO〜LOOP間を実行した後に式の判定をして、式の結果が0以外「真」のとき、DO〜LOOP WHILEを繰り返します。

WHILE〜LOOP
書式:WHILE [式] 〜 LOOP
式の結果が0以外「真」のとき、WHILE〜LOOPを繰り返します。

EXIT
書式:EXIT
FOR〜NEXT、DO/WHILE〜LOOPの繰り返し処理から抜け出ます。
NEXTまたはLOOP(LOOP WHILE)の直後の命令に処理を移します。
入れ子の場合は一番近いループにのみ適用されます。

CONTINUE
書式:CONTINUE
FOR〜NEXT、DO/WHILE〜LOOPのループ内での処理中に、本命令以降の処理をスキップして再び繰り返し処理を実行します。
入れ子の場合は一番近いループにのみ適用されます。

PRINT、?
書式:PRINT [式] または ?[式]
数値,文字列を出力します。"PRINT"のかわりに "?" を代用できます。
引数には1つまたは複数の式または文字列を指定できます。
数値や式は文字列に変換されます。
複数の式、文字列はコンマやセミコロンで区切って指定します。
コンマで区切るとタブ出力になり、セミコロンで区切ると続けて出力します。
最後をセミコロンで終了すると改行しません。
PRINT文中では、文字列、CHR関数、FORM関数などが利用できます。

INPUT
書式:INPUT [変数]
シリアルポートからの入力を待ち、入力された数値を変数に格納する。
入力する数値の先頭が$の場合は、16進数として扱います。
変数名の後ろに$をつけると、入力された1文字目のASCIIコードを変数に格納する。


>10 input a
>20 input b
>30 print a,b

>>run
10 ←入力
$10 ←入力
10 16 ←10進、16進
OK

>10 input a$
>20 print a

>>run
10 ←入力(ASCII)
49 ←10進
@ ←入力(ASCII)
64 ←10進
OK

OUTP
書式:OUTP [式1], [式2]
GPIOのポートに出力します。
式1にはポート番号を指定します。(下表にあるポート番号のみ指定可能です。)
式2が0以上の時はポートを出力ポートに設定し、0ではLowを出力、1以上ではHighを出力します。
また、式2に負数を指定したときは、ポートをハイインピーダンスに設定します。
表1
ポート 名前 ピン
0 PA00 32pin
1 PA01 31pin
6 PA06 7pin
7 PA07 8pin
8 PA08 9pin
9 PA09 14pin
13 PA13 15pin
14 PA14 24pin
15 PA15 23pin
16 PA16 16pin
17 PA17 17pin
18 PA18 18pin
19 PA19 25pin
22 PA22 26pin
23 PA23 20pin
24 PA24 28pin
25 PA25 27pin
27 PA27 5pin
28 PA28 19pin
34 PB02 1pin
35 PB03 4pin
54 PB22 6pin
55 PB23 21pin

PWM
書式:PWM [式1, 式2]
PA08にPWMを出力します。
[式1]にはプリスケーラー値、[式2]には比較値を設定します。
出力周波数 = 16MHz / (プリスケーラー値 + 1)
DUTY = 比較値 / (プリスケーラー値 + 1)
[式1]と[式2]の両方を省略してPWMコマンドを実行するとPWM出力を停止します。


PWM 3999,1000 ← Frq=4KHz, Duty=25%

END
書式:END
プログラムの実行を終了して、ダイレクトモードになります。
RESUMEでの再開はできません。

STOP
書式:STOP
プログラムの実行を中断します。
「Break信号」または「Breakキャラクタ」でのプログラムの中断と同様です。
RESUME命令で、このBREAKの次の命令からの再開が可能です。

RESUME
書式:RESUME
STOP命令または、シリアルポートからの「Break信号」または「Breakキャラクタ」で中断した処理を再開します。
エラー発生によって中断した場合はRESUME命令で再開することはできません。

PAUSE
書式:PAUSE
シリアルポートから1文字が入力されるまで待ちます。
シリアルポートからの「Break信号」または「Breakキャラクタ」によって中断が可能です。
(この場合、プログラムも中断します。)

DELAY
書式:DELAY [式]
式で指定した時間(1/1024秒単位)をプログラムの動作を停止し、時間が経過するプログラムの動作を再開します。
式に指定できる値の範囲は「0〜2,147,483,647」です。(この範囲を超える値を指定してもエラーにならない場合がありますが、正しい動作にはなりません。)
シリアルポートからの「Break信号」または「Breakキャラクタ」によって中断が可能です。
(この場合、プログラムも中断します。)

SLEEP
書式:SLEEP [式]
省電力モードで待機します。
[式]で指定された値によって以下のように動作します。
表2
式の値 Sleep解除時間 PA06ピンの変化
>0 [式]で指定された値の絶対値の時間(秒単位)が経過 無効
<0 Low→Highの変化でSleep解除
=0 時間指定なし(無期限)
「Break信号」や「Ctrl-C」では解除されません。
SleepコマンドでPA06ピンが有効に指定されると、INP関数やOUTPコマンドにかかわらず、強制的に入力ポートに再設定されます。SleepコマンドでPA06を使用する場合は、他の目的でPA06を使用しないようにしてください。
式に指定できる値の範囲は「-2,097,151〜2,097,151」となります。(この範囲を超える値を指定してもエラーにならない場合がありますが、正しい動作にはなりません。)

DEEP
書式:DEEP [式]
SLEEPよりもさらに消費電流を落とした、超省電力モード(Deep Sleep)で待機します。
ただし、SLEEPコマンドと違いDeep Sleepが解除されるとシステムリセットとなります。
[式]で指定された値によって以下のように動作します。
表3
式の値 Sleep解除時間 PA06ピンの変化
>0 [式]で指定された値の絶対値の時間(秒単位)が経過 無効
<0 Low→Highの変化でSleep解除
=0 時間指定なし(無期限)
「Break信号」や「Ctrl-C」では解除されません。
SleepコマンドでPA06ピンが有効に指定されると、INP関数やOUTPコマンドにかかわらず、強制的に入力ポートに再設定されます。SleepコマンドでPA06を使用する場合は、他の目的でPA06を使用しないようにしてください。
式に指定できる値の範囲は「-2,097,151〜2,097,151」となります。(この範囲を超える値を指定してもエラーにならない場合がありますが、正しい動作にはなりません。)

RESET
書式:RESET
モジュールのシステムリセットを実行します。

DATA
書式:DATA [式1], [式2]・・・
READコマンドで読み込む数値を記載します。(数値だけでなく、演算式も記述可能です。)
1つ以上の式をカンマで区切って記述します。
READ命令の位置とは関係なく、プログラム中のどこでも配置できます。

READ
書式:READ [変数]
DATAコマンドで記載された式の数値を、変数に読み込みます。
本コマンドを実行するたびに、DATA文に設定された数値をプログラムの先頭に近い順から読み込まれます。
読み込むDATAが無くなってからREADするとエラーとなります。

RESTORE
書式:RESTORE
READ命令で読み込むDATA命令の順番を、プログラムの先頭に戻します。

ALOAD
書式:ALOAD
ASAVEコマンドでFlashメモリーに保存した配列変数「@(0〜255)」を読み込みます。
全ての配列変数が上書きされます。

ASAVE
書式:ASAVE
全ての配列変数「@(0〜255)」をFlashメモリーに保存します。Flashメモリーの内容は上書きされます。
本コマンドで保存した内容はALOADコマンドで読み出します。
リセットや電源断でもFlashメモリーに保存した内容は維持されます。

RANDOMIZE
書式:RANDOMIZE [式]
乱数の種を設定します。
式で与えられた値で、RND()関数が生成する乱数の種を設定します。
式が省略された場合は0が指定されたものとします。
この乱数の種は、デバイスIDから計算した値を使用するので、式の値が同じでもLRA1モジュールの個体毎に異なる値となります。
システム起動時はRANDOMIZE 0が実行された状態です。

VER
書式:VER
ソフトウェアのバージョンを表示します。

EDIT
書式:EDIT [式]
プログラム入力モードの禁止/許可を設定します。
式が0のときまたは省略されたとき「プログラム入力禁止モード」になります。
式が0以外の時は「プログラム入力許可モード」になります。
システム起動時は「プログラム入力禁止モード」です。

「プログラム入力禁止モード」:
このモードはダイレクトモードでのコマンドプロンプトが「>」になります。
ダイレクトモードで、数値から始まる行が入力されてもプログラム行の書き込みはエラーになります。またプログラム操作関連のいくつかのコマンドがエラーになります。
不用意な数値入力によるプログラムの誤消去や誤登録を防止することができます。

「プログラム入力許可モード」:
このモードはダイレクトモードでのコマンドプロンプトが「>>」になります。
ダイレクトモードで、数値から始まる行が入力されると、プログラム行の書き込みとなります。

インデントや不要なスペース等は無視され、コメントと文字列以外は大文字小文字の区別はありません。プログラム行が書き込まれると、次行にコマンドプロンプトが表示されます。「OK」は表示されません。
入力1行毎に中間コードへの変換が行われるので、連続して行を入力する場合は、コマンドプロンプトが表示されてから次行を入力してください。
また、中間コードへの変換時に文法エラー等があった場合は、その行はプログラムエリアに書き込まれずにエラーメッセージを表示します。
入力されたプログラム行は、行番号の順番にプログラムエリアに書き込まれます。
入力された行番号と同じ行番号のプログラム行が既に書き込まれている場合は、新たに入力されたプログラム行に置き換えられます。行番号に続くコマンド等が無く行番号だけの入力のときは、その行番号の行は削除されます。

NEW
書式:NEW
プログラムと変数をクリアします。
プログラムエリアのプログラムを全て削除します。
各変数も初期化されますが、特殊変数は初期化されません。

RENUM
書式:RENUM [式]
プログラムの行番号を付け替えます。
プログラムエリアのプログラム行の行番号を、式で指定された番号からはじまって10ずつ増加するように付け替えます。式は省略可能で、省略時は10と仮定されます。
このコマンドでは行番号のみを付け替えるので、GOTOやGOSUBの飛び先はそのままとなります。

DELETE
書式:DELETE [式1], [式2]
プログラムを削除します。
式1から式2までの行番号のプログラム行が削除されます。
式2が省略された場合は、式1からプログラムの最後までが削除されます。

PLOAD
書式:PLOAD
FLASHメモリーに保存されたプログラムをプログラムエリアに読み込みます。
RAM上にあるプログラムは上書きされます。

PSAVE
書式:PSAVE
プログラムエリアのプログラムをFLASHメモリーに保存します。
FLASHメモリーに保存することができるプログラムは1つのみです。
FLASHメモリーに保存したプログラムは、電源断やシステムリセットでも消去されません。

RUN
書式:RUN [ラベル]
プログラムエリアのプログラムを実行します。
[ラベル]を省略した場合は、プログラムを先頭から実行します。
[ラベル]を指定した場合は、指定した行番号またはラベルからプログラムを実行します。
実行に先立って、各変数は0にクリアされます。(LoRa設定値等を除く)

LIST
書式:LIST [ラベル]
プログラムエリアのプログラムを表示します。
[ラベル]を省略した場合は、プログラムの先頭から出力します。
[ラベル]を指定した場合は、指定した行番号またはラベル以降のプログラムを出力します。

RND
書式:RND(式)
0以上の式を超えない値の乱数が戻ります。

ABS
書式:ABS(式)
式の絶対値が戻ります。

ATAN2
書式:ATAN2(式1、式2)
式2/式1の逆正接が戻ります。
計算結果は−πから+πラジアンです。 ただし、本関数からの戻り値は計算結果の1000000倍の整数値となります。
したがって、本関数の計算結果を 17453 (1000000π/180) で割ると「度(degree)」に換算することができます。
引数1が0の場合の戻り値は0となります。(”Division by 0 error”にはなりません。)
一般的な逆正接関数は計算結果が−π/2から+π/2ラジアンですが、本関数は式1が負数の場合でも正しい角度を計算することができます。

INP
書式:INP(式)
GPIOのポートの状態を取得します。
式にはポート番号を指定します。(下表にあるポート番号のみ指定可能です。)
戻り値が0の時はポートがLow、1の時はHighが入力されています。
表4
ポート 名前 ピン
0 PA00 32pin
1 PA01 31pin
6 PA06 7pin
7 PA07 8pin
8 PA08 9pin
9 PA09 14pin
13 PA13 15pin
14 PA14 24pin
15 PA15 23pin
16 PA16 16pin
17 PA17 17pin
18 PA18 18pin
19 PA19 25pin
22 PA22 26pin
23 PA23 20pin
24 PA24 28pin
25 PA25 27pin
27 PA27 5pin
28 PA28 19pin
34 PB02 1pin
35 PB03 4pin
54 PB22 6pin
55 PB23 21pin
本関数を実行すると指定されたポートは入力のハイインピーダンス(Pull-Up/Downなし)に設定されますが、ポート番号に+$100を加算するとPull-Downに、+$200を加算するとPull-Upに設定されます。
PA06、PA14などシステムで使用するポートについてはできるだけ使用しないようにしてください。

ADC
書式:ADC(式)
ADCポートからAD変換された値を取得します。
式には下表に記載のポート番号のみ指定可能です。(それ以外の指定はエラーとなります)
表5
ポート 入力ソース 戻り値 リファレンス
6 PA06/pin-7 0〜4095ADC変換の値がそのまま戻ります。 VDD
7 PA07/pin-8
10 PB02/pin-1
11 PB03/pin-4
16 PA08/pin-9
17 PA09/pin-14
24 CPU内部の温度センサのADC値
25 Bandgap電圧(1.0V)のADC値
26 CPUコア電圧(Typ:0.9〜1.2V) 1mV単位の計測値(誤差があります) 内部Bandgap (1.0V)
27 VDD電圧
入力ソースが6〜17の外部ピンの場合は、OUTPコマンドやINP関数の設定にかかわらず、この関数実行時にアナログ入力に設定されます。

CHR
書式:CHR(式)
式の下位8ビットをそのまま文字列中に出力します。
PRINTコマンドなどで特定のキャラクタコードを利用したい場合などに使用します。

数値式には使用できません。文字列用の変数もありません。
ただし、PRINT、LPINT、TXD、SENDコマンドの引数などの文字列の設定や出力では文字列の使用が可能です。

WCHR
書式:WCHR(式)
式の下位16ビット(Little endian)をそのまま文字列中に出力します。
PRINTコマンドなどでWordサイズのバイナリデーターを利用したい場合などに使用します。

数値式には使用できません。文字列用の変数もありません。
ただし、PRINT、LPINT、TXD、SENDコマンドの引数などの文字列の設定や出力では文字列の使用が可能です。

FORM
書式:FORM(書式文字列、式)
書式文字列の指定に従って、式の数値を文字列に出力します。
書式文字列で使用する書式指定文字は以下のとおり。

 D :10進数(デフォルト)
 X :16進数(0〜9、A〜F)
 x :16進数(0〜9、a〜f )
 0 :リーディングゼロ(無指定の場合は空白文字)
 1〜9:出力桁数指定(無指定の場合は可変長)
 - :符号用に1文字分を左端に追加します。
 + :正数の場合に+符号を付加します。

無指定の場合、デフォルトの10進数・可変長となります。
 例:次のように使用する
 Print Form("",-1234) -> “-1234” を表示
 Print Form("X04", 1234)  -> “04D2“ を表示
 Lprint Form("-05", 1234) -> “01234” をLCD表示
 Send Form("-5",-1234) -> “- 1234” をLoRaで送信
 Txd=Form("-+5",1234) -> “+ 1234” をLoRa送信バッファに設定

数値式には使用できません。文字列用の変数もありません。
ただし、PRINT、LPINT、TXD、SENDコマンドの引数などの文字列の設定や出力では文字列の使用が可能です。

予約変数と定数
本BASICには、システムで予約された変数と定数があります。
文字列以外の予約変数と定数は、通常の変数や数値と同様に計算式やコマンド引数などに使うことができます。

・予約変数(FLASH保存不可)
表6
変数名 内容 説明
TICK システムカウント値 システム起動から1/1024秒毎にカウントアップされる値です。
参照と値の設定が可能。
リセット、電源ON、DEEPからの復帰時に0にクリアされます。
CLOCK RTCクロック値 システム起動から1秒毎にカウントアップされる値です。
参照のみで値の設定は不可。
リセットと電源ONで0にクリアされますが、
DEEPからのリセット復帰時はクリアされずにカウント値を継続します。
INKEY 入力文字 シリアルポートからの入力された文字のASCIIコードです。
入力がない場合は-1となります。参照のみで設定不可。

・予約変数(FLASH保存可能)
表7
変数名 内容 説明
ECHO エコーバック シリアルポートに入力された文字のエコーバックを指定します。
0:エコーバックなし、0以外:エコーバックあり。
SSAVE/SLOADコマンドでの保存/復元ができます。
デフォルト値は1です。

>?echo ←エコー状態確認
>echo=0 ←エコーバックなし
AUTO 自動実行文字列 システム起動時に自動実行するBASICコマンドを文字列で設定します。
マルチステートメントでの記述が 可能です。
設定できる文字列の最大文字数は63文字で、デフォルト値は空白です。
SSAVE/SLOADコマンドで保存/復元ができます。
Printコマンド等、文字列の使用箇所で参照利用できます。

>auto="pload:run"←あらかじめpsaveで保存したプログラムを呼び出し実行する。
BAUD ボーレート シリアルポートの転送速度を設定、参照します。
この変数を設定すると、即時にシリアルポートの設定に反映されます。
設定可能な値は次の通りで、それ以外はエラーです。
300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200
SSAVE/SLOADコマンドで保存/復元ができます。
デフォルト値は115200です。

>baud=9600 ←9600bps
<参考>baudコマンドでボーレートを変更するにはどうすればよいですか。

BRKCH Breakキャラクタ プログラムの動作を中断するために使用する「Breakキャラクタ」のASCIIコードを設定します。
0のときは「Break信号」となります。
0以外に設定されている場合は、Break信号は無効です。
デフォルト値は 「0x03 (Ctrl-C)」です。

>brkch=8 ←0x08(BackSpaceに割り当て
XTAL32K 低速クロックの設定 低速クロック(32.768kHz)を外部水晶振動子または内部CRに設定します。
0:内部CRを使用します
1:外部接続の水晶振動子を使用します
上記以外の値は無視されます。

外部に水晶振動子(32.768kHz)を接続したときのみ、”1”(外部)に設定してください。
水晶振動子を接続せずに”1”を設定したときはエラーになります。
(ハードウェアの状態によってはハングアップする場合があります。)
LoRa-WANモードでは外部水晶振動子での使用を推奨します。
モジュールへの水晶振動子の接続方法等についてはハードウェアマニュアルを参照してください。

xtal32k=0 ←内部CR発振

・定数 (参照のみ可能、設定不可)
表8
定数名 内容 説明
FALSE 0と同等
TRUE 1と同等
SN シリアル番号 LRA1モジュールのシリアル番号(モジュール毎に固有の値)
DEVID デバイス固有ID文字列 LRA1のデバイスID (8byte)
Printコマンド等、文字列の使用箇所で16文字の16進数文字列として参照利用できます。

エラーメッセージ
エラーが発生したときは、以下のエラーメッセージを表示して処理を中止します。
プログラムモードのときは、エラーが発生した行の行番号も表示します。
表9
エラーメッセージ 内容
Syntax error 文法エラーです。認識できない命令文や記述ミスがあります。
Division by 0 error 0で除算しました。
Array index over error 配列の添え字の範囲が負数または255を超えています。
バッファの指定範囲を超えたときもこのエラーとなります。
Parameter error パラメーターが必要な命令にパラメーターが指定されていません。
または、パラメーターの範囲を超えた値が指定されました。
Stack overflow error スタックがオーバーしました
GOSUB,FOR,DO,WHILE の入れ子が8段を超えました。
Can't resume error プログラムを RESUME 命令で再開できません。
処理がエラーで中止されたときは再開ができません。
Label not found error GOTO,GOSUBの指定先のラベル番号が見つかりませんでした。
Unless from pg-mode error プログラムモードでは実行できない命令文です。
LOAD,NEW,LIST,RUN,RESUME命令は、プログラムモードで実行できません。
Program area overflow error プログラム用メモリーの容量がオーバーしました。
Loop nothing error DO/WHILE命令で、対応するLOOP命令がありません。
Endif not found error IF命令に対応するENDIF命令がありません。
Device access error デバイス(LCD,BME280など)のアクセスエラーです。
Edit mode error プログラム編集モードではありません。
Unexpected Next error NEXT命令に対応するFOR命令がありません。
Unexpected Return error RETURN命令に対応するGOSUB命令がありません。
Unexpected Loop error LOOP命令に対応するDO/WHILE命令がありません。
Unexpected Exit error EXIT命令に対応するFORまたはDO/WHILE命令がありません。
Unexpected Continue error CONTINUE命令に対応するFORまたはDO/WHILE命令がありません。

LCLR
変数を使用して評価ボード上のLCDに文字を表示することができます。
I2CでLCDが接続されている必要があります。
書式 : Lclr
LCDの表示をクリアします。

LPRINT
変数を使用して評価ボード上のLCDに文字を表示することができます。
I2CでLCDが接続されている必要があります。
書式 : LPrint [引数]
LCDに文字列を表示します。
引数はPRINTコマンドに準拠しますが、改行やタブは無視されます。
表示が1行の桁数を超えても改行しません。

LPOS
範囲 : 0〜7、64〜71
評価ボード上のLCDに文字列を表示するときの表示位置を指定します。
表示位置と設定値は以下のようになります。
LPOS変数は設定のみ可能です。参照はできません。
表10
LCD画面
0 1 2 3 4 5 6 7
64 65 66 67 68 69 70 71


LPOS=64・・・表示位置を2行目の先頭にセットする

LCONT
範囲 : 1〜63
評価ボード上のLCDのコントラストを設定します。
1 : 薄い ←→ 63 : 濃い
デフォルト値は25です。
LCONT変数は設定のみ可能です。参照はできません。

LCONT=20・・・コントラストを薄く(設定値20)する

BME LCLR
コマンドを使用して評価ボード上のBME280から気温・湿度・気圧を取得することができます。
I2CでBME280が接続されている必要があります。

書式:BME [引数1[,引数2[,引数3]]]
評価ボード上のBME280で「気温、湿度、気圧」を計測します。
引数が省略された場合は、「気温、湿度、気圧」の順に表示します。
引数を指定したときは、計測値を各変数に格納します。
引数1には気温、引数2には湿度、引数3には気圧が入ります。
表示または変数に格納される各計測値は以下のようになっています。

 気温 : 0.1(℃)単位
 湿度 : 0.1(%)単位
 気圧 : 0.1(hPa)単位

>BME
226 391 10223
OK
>BME A,B,C
OK
>PRINT A,B,C
226 391 10223
OK

LoRa制御について
LRA1-BASICでは、LoRa制御用のコマンド、変数、関数を使用してLoRaパケットの送受信をすることができます。

LoRa変数
下記の各LoRa変数は参照および設定が可能です。
通常の変数と同様に扱えます。(ただし、参照のみで設定不可の変数もあります)
ただし、各LoRa変数には最大値と最小値がありその範囲を超えて設定することはできません。各変数の意味については別途資料を参照してください。
表11
変数名 内容 範囲 デフォルト
MODEM モデム設定 0 : FSK , 1 : LoRa 1
PWR 送信出力 -4〜13 (dBm) 13
SF 拡散率(Spread Factor) 7〜12 10
BW 帯域幅(Bandwidth) 6 : 62.5kHz , 7 : 125kHz , 8 : 250kHz , 9 : 500kHz 7
CR 符号化率(Cording Rate) 1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8 1
CH チャンネル 24〜61 36
FRQ 送受信周波数 920600〜928000(kHz) [参照のみ] 923000
GID グループID 0〜65535 0
OWN 自局ID 0〜65535 1
DST 宛先ID 0〜65535 0
RSSI RSSI -137〜0 [参照のみ] 0
STAT LoRa状態 詳細はSTAT変数の項目を参照してください 0
CTRL コントロール 各ビットの設定により動作を制御します。
詳細は後記
$0000

いくつかの変数はSSAVEコマンドでFlashメモリーに保存し、SLOADコマンドで復元することができます。
また、システム起動時には自動的にFlashメモリーから復元されて起動します。
Defaultコマンドでデフォルト値に再設定できます。

MODEM
変調方式を指定します。
範囲:0:FSK / 1:LoRa
FSK変調では、Sf, Cr, Bwの指定は無効です。

PWR
送信出力を設定します。
範囲:-4〜13
設定した出力で送信します。単位は(dBm)です。
電源電圧が標準電圧(3.3V)より低い場合は、実際の送信出力が低くなる場合があります。

SF
拡散率(Spread Factor)を設定します。
範囲:7〜12
LoRa方式でのSF7〜SF12に該当します。
BW=9(500kHz)のときはSF10以上のみ設定可能です。

BW
帯域幅(Bandwidth)を設定します。
範囲:6〜9
6 : 62.5kHz , 7 : 125kHz , 8 : 250kHz , 9 : 500kHz
FSK方式ではBWの設定にかかわらず500kHzとなります。
BW=9(500kHz)はSF10以上のときのみ設定可能です。

CR
符号化率(Cording Rate)を設定します。
範囲:1〜4
1 : 4/5 , 2=4/6 , 3: 4/7 , 4: 4/8
FSK方式ではCRの設定は無効です。

CH
送受信チャンネルを設定します。
範囲 : 24〜61
ここで設定されたチャンネルで送受信を行います。
CH変数を設定するとFRQ変数の値にも反映されます。

FRQ
送受信周波数を参照します。
範囲:920600〜928000
CH変数で設定したチャンネルに対応する周波数を参照します。単位は(kHz)です。
この変数は参照のみ可能です。設定はできません。

GID
グループIDを設定します。
範囲:0〜65535
同じグループID(GID)に設定されたモジュール間での送受信が可能です。
別のグループIDから送信されたフレームは受信しません。
SENDコマンドおよびTXD変数に文字列を設定したときは、この変数の値が送信バッファのGidに自動設定されます。

OWN
自局IDを設定します。
範囲:0〜65534
受信側で設定した自局ID(OWN)と、送信側が送信したフレームの宛先ID(DST)が一致したフレームを受信することができます。ただし、宛先IDが65535で送信されたフレームは自局IDにかかわらず受信します。
送信フレームにはここで設定した自局ID(Own)も含むので、受信側では送信元を確認することができます。
SENDコマンドおよびTXD変数に文字列を設定したときは、この変数の値が送信バッファのOwnに自動設定されます。

DST
宛先IDを設定します。
範囲:0〜65535
フレーム送信時の宛先ID(DST)を設定し、受信側で設定した自局ID(OWN)と一致した場合に受信されます。
宛先IDが65535はブロードキャストとなり、送信されたフレームは受信側の自局IDにかかわらず受信されます。
SENDコマンドおよびTXD変数に文字列を設定したときは、この変数の値が送信バッファのDSTに自動設定されます。

RSSI
受信パケットのRSSI値の参照
範囲:-137〜0
最後に受信した受信フレームのRSSIを参照します。単位は(dBm)です。
この変数は参照のみ可能です。設定はできません。

STAT
送受信状態およびLoRaエラーの参照
範囲 : 0〜
この変数で送受信の結果を確認することができます。
基本的には参照のみとなりますが、0のみ設定可能です。
表12
Statの値 意味
0 IDLE(なし)
4 キャリアセンスエラー
5 送信データ長エラー
8 受信タイムアウト
9 受信CRCエラー
10 パケット受信

RECVコマンドでタイムアウトを指定した場合などは、コマンドから戻った原因がフレーム受信なのかタイムアウトなのかをこのStat変数で確認する必要があります。

CTRL
各種コントロールを設定します。
範囲 : なし(32bit)
本システムの動作や送受信コマンドの振る舞いを指定することができます。
下記の表にある各ビットの論理和で設定します。
表13
内容
$00000001  RECVコマンドで、RSSI値の表示をしない
$00000002 RECVコマンドで、送信元IDの表示をしない
$00000004 RECVコマンドで、行頭に @ の表示をしない
$00000008 RECVコマンドで、CRCエラーを表示する
$00000010 起動時にバージョン等を表示しない
$00000020 LED(PA18, PA19)の制御をしない
$00000040 未使用
$00000080 未使用
$00000100 COMMコマンドは送信のみ(受信しない)
$00000200 WAKEUP(PA06)の極性を反転する(デフォルトではHighでWakeupする)
$00000400 ACTIVE(PA14)の極性を反転する(デフォルトではLowがActive状態)
$00000800 RXD(PA05)をPull-Downにする。(デフォルトはHi-Z)
$00001000 ACTIVE(PA14)を制御しない (OUTP, INPコマンドは使用可能)
$00002000 LED(PA18)とLED(PA19)を入れ替える
$00004000 LED(PA18)を送信BUSYでHighにする (デフォルトは送信中にHigh)

16進数で記載していますが、一般の変数と同様に10進数での設定も可能です。
未使用または規定されていないビットについては0を設定してください。将来のファームウェアアップデートによって使用する場合があります。

LoRa送受信バッファ
LoRaの送受信では送受信バッファを使用します。
送受信バッファは以下のようになっています。
表14
Offset 名前 内容
0 Gid グループID(Little endian)
1
2 Own Txd : 自局ID
Rxd : 送信元ID
3
4 Dst Txd:宛先ID
Rxd:自局ID(ブロードキャストの場合は65535)
5
6 Reserve 未使用
7 Len データ長(0〜242)
8

249
Data 送信データ
Lenで指定したデータ長のデータを格納する

送信バッファと受信バッファはお互いに独立しています。
送信バッファはTXD/TXDW変数、受信バッファはRXD/RXDW変数を使用して操作します。
TXD/TXDW変数は参照と設定が、RXD/RXDW変数は参照が可能です。
受信バッファは最後に受信したパケットで上書きされます。
送信バッファは送信が完了してもクリアされることはありません。

TXD, TXDW, TXDL
送信バッファの設定と参照
書式:Txd(式) または Txd
式には送信バッファのOffsetを指定します。
送信バッファのOffset位置からByte単位で参照または設定をします。
値を設定するときに、値が1byteを超えるときは、下位8bitが有効です。
例:
Txd(7)=10 : Lengthに10を設定します。
A=Txd(10) : 送信Dataの2byte目を参照します。
書式:Txdw(式)、Txdl(式)
式で指定された送信バッファのOffset位置から、TxdwはWord(16bit)単位、TxdlはDword(32bit)単位で参照と設定をします。エンディアンは、Little endianです。Offsetが奇数でも構いません。
例:
 Txdw(4)=$1234 : 宛先ID(Dst)に$1234を設定します。
 Txdl(8)=$12345678 : Dataの先頭からの4バイト分に$12345678を設定します。

式が指定されない場合は、送信バッファのDataを文字列として参照、設定します。
文字列を設定すると、Dataに文字列が格納されるとともにGid, Own, Dst, Lenも自動的に設定されます。
例:
 Txd=”1234” : TxdのDataに”1234”の4byteを設定します。

PRINT、LPRINTコマンド中に記述した場合は、送信バッファのDataが文字列として表示されます。
例:
 Print Txd : 送信バッファのDataを文字列表示する

送信バッファはSENDコマンドによって送信します。
SENDコマンドの引数に文字列を指定した場合は、Txdに文字列を指定した場合と同様に、送信バッファにその内容が設定されます。

RXD, RXDW, RXDL
受信バッファの参照
書式:Rxd(式) または Rxd
式には受信バッファのOffsetを指定します。
送信バッファのOffset位置からByte単位で参照をします。(Txdと異なり、設定はできません)
各Offsetの場所は1byteです。
例:
A=Rxd(9) :受信Dataの2byte目を参照します。

書式:Rxdw(式)、Rxdl(式)
式で指定された送信バッファのOffset位置からRxdwはWord(16bit)単位、RxdlはDword(32bit)単位で参照します。
エンディアンは、Little endianです。Offsetが奇数でも構いません。
例:
 A=Rxdw(2) : Aに送信元ID(Own)を取得します。
 A=Rxdl(8) : AにDataの先頭から4バイト分(32bit)を取得します。

式が指定されない場合は、受信バッファのDataを文字列として参照します。
PRINT、LPRINTコマンド中に記述できます。
文字列長は受信バッファ中のLenに従います。
例:
 Print Rxd : 受信バッファのDataを文字列表示

#?
書式:#?
各種設定値を一括表示します。

DEFAULT
書式:DEFAULT
各種設定をデフォルト値に戻します。
このコマンドでは設定値をFLASHに保存されません。

SSAVE
書式:SSAVE
設定値をFlashメモリーに保存します。
ここで保存した設定はシステム起動時に自動的に読み込まれます。
またSLOADコマンドで読み込むことができます。

SLOAD
書式:SLOAD
設定値をFlashメモリーから読み出します。
SSAVEでFlashメモリーに保存した設定内容が読み出されます。

SEND
書式:SEND [文字列]
LoRaパケットを送信します。
文字列が指定された場合は、文字列を送信バッファのDataに格納し、そのパケットを送信します。
このとき、バッファのDataに文字列が格納されるとともにGid, Own, Dst, Lenも自動的に設定されます。
文字列にはBASE64またはパーセントエンコーディングの指定が可能です。
(詳細は文字列のエンコーディングを参照してください)
文字列が指定されない場合は、送信バッファの内容がパケットとして送信されます。
RECVコマンドで受信動作中のときは、本コマンドの実行によって受信が終了します。
※送信エラーについて
SF,CR,BW,CHの組み合わせによっては、指定された送信データ長(Len)のデータ(Data)を送信する時間が電波法の規定 時間を超える可能性があり、その場合はパケットが送信されずにinvalid_data_length エラーとなります。また、送信しようとしたCHが他の送信機(LoRa方式以外や他社製も含む)によって使用中のためにCHに空きがないときは、パケットは送信されずにno_free_chエラーとなります。

RECV
書式:RECV [式]
LoRaパケットの受信を開始します。
以下の受信条件全てに合致したパケットを受信すると、そのパケットを受信バッファに格納します。

受信パケットのSF,CR,BWがSF変数、CR変数、BW変数と同じ設定
受信パケットのGid=GID変数
受信パケットのDst=OWN変数、または受信パケットのDst=65535

引数に指定する式の値によって以下の動作となります。
表17
動作
>0 式にはタイムアウトの時間(msec)を指定します。
パケット受信またはタイムアウト時間経過でコマンド戻ります。受信終了のSTOPコマンドは不要です。
終了原因をStat変数で確認する必要があります。
受信動作を開始してすぐにコマンドから戻ります。
STOPコマンドで受信を終了するまでは受信動作を継続します。
受信状態はStat変数で確認してください。Stat変数が0のときのみパケットを受信します。
受信パケットの処理(Timeoutの処理を含む)が完了したら
Stat変数をクリアして、次のパケットが受信できるようにする必要があります。
<0 「Break信号」または「Breakキャラクタ」が入力されるまでは受信動作を継続し、
受信したパケットのデータを表示します。
表示内容は「@, RSSI, 送信元ID, 受信Data」となります。
Ctrl変数の設定内容によって、表示内容を変更できます。
なし  
受信パケットのデータをBASE64でエンコードして表示します。
それ以外は「引数なし」と同じ動作です。
(詳細は文字列のエンコーディングを参照してください)
受信パケットのデータをパーセントエンコードして表示します。
それ以外は「引数なし」と同じ動作です。
(詳細は文字列のエンコーディングを参照してください)
受信パケットのデータを16進数にエンコードして表示します。
それ以外は「引数なし」と同じ動作です。
(詳細は文字列のエンコーディングを参照してください)
受信パケットのデータをSTX($02)/ETX($03)で挟んで表示します。
それ以外は引数無しの場合と同じです。

RXSTOP
書式:RXSTOP
受信動作を終了します。
RECVコマンドで引数が0で受信を開始したとき、受信を終了するために使用します。

COMM
書式:COMM [式]
簡易的な双方向通信モードを開始します。
受信パケットがあるとパケットを表示し、入力文字列が改行されると、その文字列のパケットを送信します。
「Break信号」または「Breakキャラクタ」が入力されるまでは動作を継続します。
PA06がHigh→LowになったらSleep動作に入り、Low→HighでSleep解除して動作を継続します。
表18
動作
なし  受信パケットのデータをそのまま表示します。
入力文字列をそのまま送信します。(改行コードは含みません)
受信パケットのデータをBASE64でエンコードして表示します。
入力文字列はBASE64でデコードして送信されます。
受信パケットのデータをパーセントエンコードして表示します。
入力文字列はパーセントデコードして送信されます。
受信パケットのデータを16進数にエンコードして表示します。
入力文字列はパーセントデコードして送信されます。
受信パケットのデータをSTX($02)/ETX($03)で挟んで表示します。
STX($02)/ETX($03)で挟まれた入力文字列を送信します。(STX/ETXは送信しません)

IsFree
書式:ISFREE(式)
CHの空き状況をセンスします。
CHが空きのときは'1'が、使用中の場合は'0'が戻ります。
式にはCHが空くまでの最大待ち時間をmsec単位で指定します。
Low-Ch:7msec / High-Ch:125usec 単位で空きCHをセンスします。 引数がセンス単位時間未満の場合は1回のセンスを実行します。引数が負数のときはエラーとなります。
この関数の実行中は、Ctrl-C(Break)でのBASICの中断はできません。
WANモードでも実行可能ですがCHはP2PモードでのCH変数の設定が使用されます。

LoRaエラー
LoRaコマンドでエラーが発生すると、以下のエラーメッセージが表示されます。
LoRaエラーが発生してもBASICプログラムの動作は中断しません。
STAT変数にはエラー番号が格納されます。
表19
エラーメッセージ 内容 STAT変数
no_free_ch キャリアセンスエラー 4
invalid_data_length 送信データ長エラー 5
timeout 受信タイムアウト 8
CRC_Error 受信CRCエラー 9

通常のBASICコマンドと異なり、BASICプログラムの動作は中断されません。

文字列のエンコーディング、デコーディング
文字列は「16進数」、「BASE64」または「パーセント」でエンコード/デコードすることができます。

Printコマンドでのエンコーディング
PRINTコマンドの前に「&」をつけると、BASE64でエンコードした文字列を表示します。
PRINTコマンドの前に「%」をつけると、パーセントでエンコードした文字列を表示します。
PRINTコマンドの前に「$」をつけると、16進数でエンコードした文字列を表示します。


>&Print “123” <------- Base64 encode
MTIzNA0KOK
>%Print “123” <------- Percent encode
1234%0d%0aOK
>$Print “134” <------- Hexdecimal encode
313233340d0aOK

改行コードもエンコードされることに注意してください。(改行表示されません。)
改行コードを含めない場合は文字列の最後をセミコロンで終えてください。
例 : &Print “12345”;

※UPRINTコマンドもPRINTコマンドと同様にエンコーディングが可能です。

エンコーディングされた文字列
文字列を以下のように指定すると、エンコードされた文字列として扱います。
&"xxxxxxxxxxxx" <---- Base64 decode
%"xxxxxxxxxxxx" <---- Percent decode
$"xxxxxxxxxxxx" <---- Hexdecimal decode

PRINT, UPRINTの式以外に、TXD, I2CDへの設定値としても利用可能です。


>TXD=&”MTIzNDU=”
OK
>PRINT TXD
12345
OK
>&PRINT TXD
MTIzNDUNCg==OK <--- 改行コードもエンコードされて、コマンド終了の”OK”が続いて表示
>SEND
OK
>TXD=$”61313233”
OK
>PRINT TXD
a123
OK

LoRaコマンドのエンコーディング
LoRaコマンドでの送受信データの設定/表示に、各エンコード、デコードを適用することができます。

Recvコマンド
書式:RECV [式]
RECVコマンド の引数の[式]に「$」、「%」または「&」にすると、受信データをエンコードして表示します。
詳細はRECVコマンドを参照してください。

>RECV % <----- Percent encode
@-50,10, a123

>RECV & <----- Base64 encode
@-50,10, YTAxMg==

>RECV $<----- Hexdecimal encode
@-50,10,61303132

Commコマンド
書式:COMM [式]
COMMコマンドの引数の式に「$」、「%」または「&」にすると、入力された文字列はデコードされて送信します。
また、受信データはエンコードして表示します。
Comm & <----- Base64 encode/decode
Comm % <----- Percent encode/decode
Comm $ <----- Hexdecimal encode/decode

詳細はCOMMコマンドを参照してください。

UART2 制御
LRA1ではメインのシリアルポートのほかに、PA22, PA23をシリアルポートとして利用することができます。本マニュアルではこの追加のシリアル通信機能を「UART2」と記述します。
また、このUART2にGPSモジュールを接続したときに利用できるコマンドも搭載しています。
この章ではUART2とGPSに関連したコマンドおよび変数を解説しています。

Utrans
書式:UTRANS
UART2を透過モードで使用します。
UART2のボーレートはUBAUD変数で指定した値となります。(デフォルト値は9600)
メインのUARTとUART2を透過的につなげます。UARTから入力された文字はUART2に送信し、UART2から受信した文字はUARTに送信します。
メインUARTから、BRKCH変数で指定したキャラクタまたはBreak信号が入力されると本コマンドを終了します。
メインUARTとUART2のボーレートは異なっても構いませんが、バッファのオーバーフローに注意してください。
本コマンド実行中のみ、UART2のPA22、PA23が有効になり、終了すると各ポートはHi-Zになります。

Uprint
書式:UPRINT [式]
UART2に[式]の結果を出力します。
出力先がUART2になる以外は、PRINTコマンドと同様です。
システムリセット、電源ONまたは、SLEEP/DEPPからの復帰後、初めてUPRINTコマンドを実行したとき、UART2が有効になります。それまではUART2の各ポート(PA22, PA23)は有効になりません。
UART2のボーレートはUBAUD変数で指定した値となります。(デフォルト値は9600)
PRINTコマンドと同様に、UPRINTコマンドの前にデコード指定子をつけることも可能です。

UART2変数
UART2に関連する変数には以下のものがあります。
変数名 内容 説明
UBAUD UART2ボーレート UART2の転送速度を設定、参照します。
UPRINT, UINKEY, UGPS, UTRANS の実行で有効になります。
設定可能な値は次の通りで、それ以外はエラーです。
300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200
SSAVE/SLOADコマンドでの保存はできません。
デフォルト値は9600です。
UINKEY UART2文字入力 UART2からの入力された文字のASCIIコードが入ります。
入力がない場合は-1 となります。参照のみで設定不可。
システムリセット、電源ONまたは、SLEEP/DEPPからの復帰後、
初めてUPRINTコマンドを実行したとき、UART2が有効になります。
それまではUART2の各ポート(PA22, PA23)は有効になりません。

GPSコマンド
GPSデバイスをUART2に接続すると、GPSを制御するためのUgpsコマンドの利用が可能です。また、GPSから取得した時刻情報を操作するためのDateTimeコマンドがあります。
GPSデバイスには一般的なNMEAフォーマットをシリアル出力するものが使用可能です。(ただし、該当するすべてのGPSデバイスの対応を保証するものではありません。)

Ugps
書式:UGPS [式1], [式2]
UART2に接続されたGPSモジュールから時刻、緯度、経度情報を取得します。
[式1]にはタイムアウト値(msec単位)を指定します。(省略時および0指定時は、無制限)
[式2]にはHDOP閾値x10を指定します。(省略時は0です)

UART2のボーレートはUBAUD変数で指定した値となります。(デフォルト値は9600)
GPSから取得した値は、以下のように配列変数の0〜3に設定されます。
表24
設定先  設定される値
@(0) シリアル秒 (UTCの「2020/1/1, 00:00:00」からの経過秒数)
@(1) 緯度 (度を1000000倍した値)、南緯は負数
@(2) 経度 (度を1000000倍した値)、西経は負数
@(3) 標高 (メートル10倍した値)

GPSから有効な情報を取得するか、タイムアウト、またはメインUARTから「Break信号」または「Breakキャラクタ」が入力されると終了します。
GPSから取得した位置情報のHDOP(水平精度低下率)が[引数3]で指定した値以下になるまで取得動作を継続します。
([式2]に指定した値の1/10がHDOPの閾値となります。)
タイムアウトなどにより、GPSから有効な情報を取得できずに終了した場合は@(0〜3)に0が設定されます。ただし、有効な位置情報を取得してもHDOP閾値の条件を満たさずにタイムアウトの場合は、最新の有効な情報が格納されます。
本コマンド実行中のみ、UART2のPA22、PA23が有効になり、終了すると各ポートはHi-Zになります。
GPSは標準的なNMEAフォーマットを出力するものを接続してください。(ただし、GPS機種や機器の設定によっては対応できないものもあります。)


GPS 10000, 14    ← タイムアウ=10秒、HDOP閾値=1.4
@(0) : 19743865 ← 20/08/16 12:24:25
@(1) : 35710950 ← 北緯35度42.6570分 (35.710950度)
@(2) : 139707341 ← 東経139度42.4405分 (139.707341度)
@(3) : 161 ← 16.1M

DateTime
書式:DATETIME [式1], [式2]
シリアル秒の値を日付(年、月、日)、時刻(時、分、秒)に変換します。
式1にはシリアル秒の値を指定します。(シリアル秒は、「2020/1/1, 00:00:00」からの経過秒数です。)
式2には変換後の値を格納する配列変数の先頭インデックス値(0〜249)を指定します。
以下のように指定されたインデックス値から6個分の配列変数に格納されます。
表25
変換先 変換後の値
@(0+引数1)  年(20〜88) 西暦の下二桁
@(1+引数1) 月(1〜12)
@(2+引数1) 日(1〜31)
@(3+引数1) 時(0〜23)
@(4+引数1) 分(0〜59)
@(5+引数1) 秒(0〜59)

シリアル秒は、0(20/01/01 00:00:00)〜2147483647(88/19 03:14:05) が有効です。
それ以外の値を指定してもエラーにはなりませんが、変換結果は不正な値です。


DATETIME @(0)+32400, 4 ← UTCからJST(+9h)の日時に変換して@(4〜9)に設定

Distance
書式:Distance [式1]
GPSで計測した2地点間の距離と角度を求めます。
式1には本コマンドで使用する配列変数の先頭インデックス値(0〜250)を指定します。
式1が省略された場合は0が指定されたとみなされます。
配列変数に2地点の位置情報(緯度/経度)を設定し、演算結果はそれに続く配列変数に格納されます。
以下のように式1で指定されたインデックス値から6個分の配列変数を使用します。

配列変数 内容
@(+0) 地点1の位置情報 緯度 (度を1000000 倍した値)、南緯は負数
@(+1) 経度 (度を1000000 倍した値)、西経は負数
@(+2) 地点2の位置情報 緯度 (度を1000000 倍した値)、南緯は負数
@(+3) 経度 (度を1000000 倍した値)、西経は負数
@(+4) 演算結果 地点2の距離 (単位メートル)
@(+5) 地点2の角度 (度を1000000 倍した値)、真北は0


10 @(1)=35654400
20 @(2)=139744770
30 @(3)=21422500
40 @(4)=39826100
50 Distance 1
60 Print @(5),@(6)

>run
9491280 -66947015
OK

I2C 制御
LRA1のI2Cポートを制御するコマンドおよび変数があります。
評価ボードではこのI2CポートにLCDとBME280が接続されていて、それぞれ専用のコマンドが用意されていますが、本章のコマンドと変数を利用することで他のI2Cデバイスとの通信が可能となります。

I2cR
書式:I2CR [式1], [式2] , [式3]
I2CデバイスからReadします
式1には、I2Cのデバイスアドレスを 0〜127で指定します。(省略できません。)
式2には、レジスタ(メモリアドレス)を -1〜255で指定します。 (省略時は-1となります。)
-1の場合はレジスタ指定をせずRead動作のみを実行します。
式3には、Readするデータ長を1〜32で指定します。(省略時は1となります。)
I2CデバイスからReadされたデータはI2Cバッファ に格納されます。このI2CバッファはI2CD配列変数から操作ができます。(I2CDバッファを参照)

I2cW
書式:I2CW [式1], [式2] , [式3]
I2CデバイスにWriteします
式1には、I2Cのデバイスアドレスを 0〜127で指定します。(省略できません。)
式2には、レジスタ(メモリアドレス)を -1〜255で指定します。 (省略時は-1となります。)
-1の場合はレジスタ指定をせずWrite動作のみを実行します。
式3には、Writeするデータ長を1〜32で指定します。(省略時は1となります。)
I2CデバイスにWriteするデータはI2Cバッファに格納されている内容です。このI2CバッファはI2CD配列変数から操作ができます。(I2CDバッファを参照)

I2Cバッファ
I2C制御コマンドのI2CR, I2CWではデータの送受信に専用のI2Cバッファを使用します。
このI2CバッファはI2CD配列変数として操作することができます。
I2Cバッファのサイズは32バイトで、送信と受信で共通に使用されます。

I2cD
I2Cバッファの設定と参照
書式:I2CD(式) または I2CD
式にはI2CバッファのOffset値を指定します。(0〜31)
I2CバッファのOffset位置からByte単位で参照または設定をします。
値を設定するときに、値が1byteを超えるときは、下位8bitが有効です。
式が指定されない場合は、I2Cバッファに文字列として設定します。
以下の例のように文字列のデコード指定も可能です。
例)
I2CD(0) = 10
? I2CD(1)
I2CD = $“1234”
I2CW $10,0,2
I2CR $10

LoRaWanコマンド
LoRaWanモードでは以下のコマンドが使用可能です。
表26
コマンド名 内容 引数
Wan_Join アクティベーション(Join)を実行 なし
Wan_UnJoin アクティベーション(Join)を解除 なし
Wan_Tx アップリンクデータを送信 [ encode ]
Wan_Rx ダウンリンクデータを受信 (Class-C)  [ timeout , ] [ encode ] 
Wan_LinkChk  リンクチェックMACコマンドを設定 なし

各コマンドの詳細については、それぞれの解説を参照してください。
コマンド名の大文字/小文字は同様に扱われます。混同して使用可能です。
これらのコマンドをP2Pモードで実行するとエラーとなります。
LoRaWanのコマンドは完了までに時間がかかることがありますが、「Ctrl-C」で中断することはできません。(Wan_Rxコマンドを除きます)
LoRaWanコマンドの実行結果はStat変数に反映されます。(詳細はStatを参照)

Wan_Join
アクティベーション(Join)を実行
書式 : Wan_Join
引数 : なし
LoRaWanネットワークにアクティベーションします。
Wan_JoinMode 変数によって、アクティベーションの方式が異なります。
表27
Wan_JoinMode アクティベーション方式
1 OTAA (Over-The-Air Activation)
2 ABP (Activation By Personalization)

Wan_Txコマンドでデータを送信するには、本コマンドによるアクティベーションが必要です。
現在のアクティベーション状態は、Wan_JoinStatで確認することができます。
アクティベーションされている状態でWan_Joinコマンドを実行した場合、アクティベーションは一旦解除されます。
アクティベーション解除のみを行うにはWan_UnJoinコマンドを使用します。
各アクティベーションの方式の動作については以下に解説します。

Join - OTAA
OTAA (Over-The-Air Activation)方式でネットワークにアクティベーション(Join-Request)します。
アクティベーションに成功すると “join_accepted” と表示します。OTAAアクティベーシではネットワークからDevAddr、NwkSkey、AppSkey が設定されるので、それらをLoRaWanの各変数から参照することができます。(LoRaWan変数を参照してください)
OTAAでアクティベーションを実行するには、Wan_DevEUI、Wan_AppEUI、Wan_AppKeyが設定されていて、それぞれの値がアクティベーションするネットワーク(LoRaWanサーバ)に登録されている必要があります。
アクティベーションに失敗するとLoRaWan仕様V1.0.2に従って制限時間が経過するまでは次のアクティベーション要求を実行できません。 リージョンAS923ではDuty=1% なので、制限時間はフレーム送信時間の100倍の時間となります。Join-Requestの送信時間は約370msecで、制限時間は約37秒です。Join-Requestの送信完了後から制限時間中にWan_Join (OTAA)コマンドを実行すると ”*dutycycle_restricted” エラー(Stat = 7)となります。
本モジュールのリセット、電源断、DEEPからの復帰によってアクティベーション状態は解除されます。
ネットワークがアクティベーシを拒否するときは応答などを何も送信しないので結果的に “*timeout” エラー(Stat = 11)となります。
Wan_Joinコマンド実行からアクティベートされるまで約6秒、タイムアウトは約7秒です。

Join - ABP
ABP (Activation By Personalization)方式でアクティベーションします。
ネットワークとの送受信はありません。
ABPアクティベーションを実行すると “Joined” と表示します。
ABPアクティベーションにはネットワークから事前に発行されたDevAddr、NwkSkey、AppSkeyを Wan_DevAddr、Wan_NwkSkey、Wan_AppSkey の各変数に設定しておく必要があります。
Wan_DevAddrが0に設定されているときは、本コマンドのABPアクティベーション実行時に乱数で生成した値を設定します。ネットワーク側の設定によってはWan_DevAddr には事前に値の設定が必要です。
本モジュールのリセット、電源断、DEEPからの復帰によってアクティベーション状態は解除されます。

※制限事項 : ABPは試験的な暫定搭載のため、正常動作しない場合があります。


>WAN_JOINMODE=1
OK
>WAN_JOIN
*timeout
OK
>WAN_JOIN
*dutycycle_restricted
OK
>WAN_JOIN
join_accepted
OK
>? WAN_JOINSTAT
1
OK
>WAN_TX
OK

Wan_UnJoin
アクティベーション(Join)を解除
書式 : Wan_UnJoin
引数 : なし
LoRaWanネットワークからアクティベーションを解除します。
OTAAおよびABPでのアクティベーションを解除し、“Unjoined” と表示します。
ネットワークとの通信はありません。本モジュール内部のアクティベーション状態が解除されるだけとなります。
OTAAでアクティベーションしていた場合、Wan_DevAddr、Wan_AppSkey、Wan_NwkSkey が0にクリアされます。
ABPでアクティベーションしていた場合、それぞれの設定値はクリアされません。
Class-Cでダウンリンク受信待機中の時は受信待機状態が解除されます。


>? WAN_JOINSTAT
1
OK
>WAN_TX
OK
>WAN_UNJOIN
Unjoined
OK
>WAN_TX
*not_joined
OK
>? WAN_JOINSTAT
0
OK

Wan_Tx
アップリンクデータを送信
書式 : Wan_Tx [encode]
encode : 受信したダウンリンクデータの表示エンコーディングを指定します。
表30
encode 受信データの表示形式
パーセントエンコーディングで表示
BASE64エンコーディングで表示
16進数文字列で表示
STX/ETXで囲んだバイナリで表示
表示しない
バイナリ値でそのまま表示 <引数省略時のデフォルト>

送信バッファ(TXD)に格納された内容のアップリンクデータを送信します。送信データはWanTxコマンドの引数に直接指定できません。
アップリンクデータを送信するには、アクティベーションされている必要があります。(詳細はWan_Joinコマンドを参照)
送信フレームのポート番号(FProt)にはWan_FPortの値が設定されます。(詳細はWan_FPortを参照)
データ長は送信バッファのTxd(7)に設定しておいてください。Txdに文字列を設定するとデータ長は自動的に送信バッファのTxd(7)に文字列長が設定されます。(詳細はTxdを参照)
データレートはWan_Drの値です。DR毎に送信可能な最大データ長が異なります。この最大データ長を超えるデータを送信することはできません。その場合はDR値を調整してください。(詳細はWan_Dr、Wan_Lengthを参照)
Wan_Adrの値を送信フレームのADRに設定して送信します。ADR制御はネットワークに依存します。(詳細はWan_Adrを参照)
Wan_Cnf = 0 (off) のとき、送達確認はありません。したがって、再送制御はありません。
Wan_Cnf = 1 (on) のとき、送達確認を実施します。Wan_Trialの設定にしたがって再送制御をします。(詳細はWan_Trialを参照)
アップリンクデータの送信後、LoRaWAN仕様V1.0.2にしたがってネットワークからのダウンリンクデータの受信を待ちます。このときにダウンリンクデータを受信すると、次の書式で受信したダウンリンクデータを表示します。
@<RxRSSI>,<RxFPort>,<RxData>
受信したダウンリンクデータ<RxData>は引数のencodeに指定されたエンコーディングで表示します。
また、以下に示す各変数に受信結果が反映されます。
Stat = 10、Rssi = <RxRSSI>、Rxd(6) = <RxFProt>、Rxd(7) = <RxData>.Length、Rxd(8〜) = <RxData>
このWan_Txコマンドに先立ってWan_LinkChkコマンドでリンクチェックが設定されていた場合、このアップリンクデータの送信フレームにリンクチェックMACコマンドが設定されます。ネットワークからリンクチェックの応答があるとその内容を表示します。(詳細はWan_LinkChkコマンドを参照)


>TXD=$”01020304”
OK
>WAN_FPORT=50
OK
>WAN_TX $
@-75,100,0a0b0c
OK
>? STAT
10
OK
>WAN_TX $
OK
>? STAT
0
OK

Wan_Rx
ダウンリンクデータを受信
書式 : Wan_Rx [timeout , ] [encode]
timeout : タイムアウト時間を 1/1024秒単位で指定します。<省略時のデフォルトは -1 >
encode : 受信データの表示エンコーディングを指定します。 (Wan_Txコマンド参照)

Wan_Rxコマンドは、Class-Cにおけるダウンリンクデータを受信します。
本コマンドはClass-C (Wan_Class = 2)でのみ実行可能で、Class-C以外では “*incompatible_class”エラーとなります。また、アクティベーションされていない状態での実行は ”*not-joined”エラーとなります。
timeoutにはタイムアウト時間を1/1024sec単位で指定します。timeoutの値によって以下のように動作します。
表32
timeout 内容
> 0 指定した時間が経過するかダウンリンクデータを受信すると終了します。
= 0 すぐに終了します。
< 0 ダウンリンクデータを受信するまで終了しません。<省略時のデフォルト>

timeoutの時間が経過してWan_Rxコマンドが終了しても ”*timeout”エラーにはなりません。
Wan_Rxコマンドの実行時、既にダウンリンクデータの受信があった場合は、timeoutの指定にかかわらずその受信ダウンリンクデータを表示してコマンドを終了します。
encodeの指定および受信したダウンリンクデータの表示はWan_Txコマンドと同様です。(Wan_Txコマンドを参照)
Wan_Rxコマンドの実行完了後もWan_UnJoinコマンドによってアクティベーションが解除されるまではダウンリンクの受信状態を継続します。
ダウンリンクの受信状態中もWan_Txコマンドによるアップリンクデータの送信が可能です。(このとき、アップリンクデータ送信終了後のRx Waindowに続いてダウンリンクの受信状態になります。)
ダウンリンクデータの受信後、Wan_Rxコマンドで受信したダウンリンクデータの確認をしないと、新たなダウンリンクデータの受信があっても破棄されて受信バッファは更新されません。
ダウンリンクデータの受信状態はWan_Rxコマンド実行後のStat変数で確認することができます。
※Wan_Rxコマンドは「Ctrl-C」で実行を中断することができます。(このとき、BASICのプログラムも中断します。)

  ※制限事項 : Wan_RxコマンドはClass-Cが暫定版のため、正常な動作は保証されません。


>WAN_RX -1,$
@-75,50,010203
OK
>? STAT
10
OK
>WAN_RX 0,$
OK
>? STAT
0
OK

Wan_LinkChk
リンクチェックMACコマンドを設定
書式 : Wan_LinkChk
引数 : なし
次のWan_Txコマンドで送信するデータフレームに、LinkCheckReqコマンドを設定します。
このとき、ネットワークからのダウンリンクには応答のLinkCheckAnsが含まれるので、Wan_Txコマンド実行時にその内容を以下の書式で表示します。
#<DemodMargin>, <NbGateways>
表34
項目 内容
<DemoMargin> 最後に正常に受信されたLinkCheckReqコマンドのリンクマージン。(dB単位)
<NbGateways> 最後のLinkCheckReqコマンドを正常に受信したGatewayの数。(0〜255)

ダウンリンクデータを受信したときは、この表示に続いて受信データを表示します。


>WAN_LINKCHK
OK
>WAN_TX $
#19,1
@-75,50,010203
OK

Wan_Save
UP/DOWNリンクカウントを保存
書式 : Wan_Save
引数 : なし
現在のUP/DOWNリンクカウント(Wan_UpCnt , Wan_DownCnt )をFLASHに保存します。
FLASHに保存されたUP/DOWNリンクカウントはシステム起動時に読み込まれます。


>? WAN_UPCNT
5
OK
>WAN_SAVE
OK
>RESET

i2-ele LRA1
Ver x.xx.x
OK
>? WAN_UPCNT
5
OK

Wan_ChList
チャンネル一覧を表示
書式 : Wan_ChList
引数 : なし
アップリンクで使用するチャンネルの周波数を一覧で表示します。
デフォルトチャンネル、およびJoin時にLoRaサーバから指定されたチャンネルとなります。
Wan_ChMask変数でマスクされているチャンネルに「*」が付きます。


>WAN_CHLIST
1:923200000
2:923400000
OK
>WAN_JOIN
join_accept
OK
>WAN_CHLIST
1:923200000
2:923400000
3:922200000
4:922400000
5:922600000
6:922800000
7:923000000
OK

LoRaWan変数
下表の各LoRaWan変数は参照および設定が可能で、通常の変数と同様に扱えます。
ただし、参照のみで設定不可の変数もあります。
各LoRaWan変数には最大値と最小値がありその範囲を超えて設定することはできません。
表38
変数名 内容 範囲 参照 設定 保存 デフォルト
Wan_Mode LoRaモード 0 : P2P, 1 : LoRaWan -
Wan_Class LoRaWanクラス 0 : Class-A, 2 : Class-C 0 (Class-A)
Wan_JoinMode Join方式 1 : OTAA, 2 : ABP -
Wan_TxPwr 送信出力 0〜7 0 (13dBm)
Wan_Dr データレート 0〜6 2 (DR2)
Wan_FPort 送信ポート番号 1〜223 1
Wan_Cnf 送信確認 0, 1 0 (off)
Wan_Adr ADR 0, 1 0 (off)
Wan_Trial 送信試行回数 1〜8 1
Wan_Length Payloadバイト数 0〜242 (Wan_Drに連動 × × -
Wan_JoinStat Join状態 0, 1, 2 × × -
Wan_UpCnt Upリンクカウンタ 32bit整数 S -
Wan_DownCnt Downリンクカウンタ 32bit整数 S -
Wan_DevAddr DevAddr 32bit整数 ABP -
Wan_DevEui DevEui 8byte (16進数文字列) -
Wan_AppEui AppEui 8byte (16進数文字列) OTAA OTAA -
Wan_AppKey AppKey 16byte (16進数文字列) OTAA OTAA -
Wan_AppSkey AppSkey 16byte (16進数文字列) ABP -
Wan_NwkSkey NwkSkey 16byte (16進数文字列) ABP -
Wan_ChMask チャンネルマスク 16bit 整数 0

(参照/設定= 〇:可、×:不可、△:管理者モード、OTAA:OTAA&管理者、ABP:ABP&管理者)
(保存= 〇:自動保存、△:Ssaveコマンドで保存、S:Wan_Saveコマンドで保存、×:保存不可)
各変数の詳細については、それぞれの解説を参照してください。
いくつかの変数はSSaveコマンドでFLASHに保存します。(Wan_saveコマンドで保存する変数もあります。)
アクティベーション関連の変数は設定を変更すると自動的にFLASHに保存します。
FLASHに保存された値は、システム起動時に自動的に読み出されます。

DEFAULTコマンドについて
DefaultコマンドでLoRaWan変数はデフォルト値に再設定されます。ただし、アクティベーション関連の変数およびデフォルト値のない変数はDefaultコマンドの影響を受けません。
LoRaWanモードのときは、P2Pモードのみに関連する変数はデフォルト値に設定されません。
同様に、P2PモードのときはLoRaWanモードのみに関連する変数はデフォルト値に設定されません。

Wan_Mode
LRA1の動作モードを設定します。
範囲 : 0, 1 (デフォルト無し)
表39
Wan_Mode 動作モード
0 P2Pモード
1 LoRaWanモード

動作モードを変更するときに設定します。
Wan_ModeはSSaveコマンドでFLASHに保存します。(Wan_Saveコマンドでは保存されません)
Wan_Modeで動作モードを変更したときはSSaveコマンドで値を保存してシステムを再起動してください。
動作モードの変更後に再起動せずに各LoRa関連(P2P/LoRaWan)のコマンドを実行した場合の動作については保証されません。(正常動作しない可能性があります。)
また、動作モードを切り替えても、BASICプログラムの内容や一般変数、配列変数の内容には影響しません。
Wan_ModeはDefaultコマンドの影響を受けません。
本リファレンスマニュアルでは、LoRaWanモード(Wan_Mode = 1) に設定されたときの動作について解説しています。
P2Pモード(Wan_Mode = 0)での動作については LRA1ソフトウェア リファレンスマニュアル を参照してください。


>? WAN_MODE
0
>WAN_MODE=1
OK
>SSAVE
OK
>RESET

Wan_Class
LoRaWanのクラスを設定/参照します。
範囲 : 0, 2 (デフォルト:0)
表41
Wan_Class LoRaWanクラス
0 Class-A <デフォルト>
1 Class-B (未対応につき、設定不可)
2 Class-C

Class-Cに設定したときは、Wan_Rxコマンドを実行できます。
アクティベーションされている状態でWan_Classを変更した場合、次の動作となります。
Class-A→C : ダウンリンクデータの受信を開始します。
Class-C→A : ダウンリンクデータの受信を停止します。

※制限事項 : Class-Cは暫定版のため、正常な動作は保証されません。


>? WAN_CLASS
0
OK

Wan_JoinMode
アクティベーション方式を設定/参照します。
範囲 : 1, 2 (デフォルト:1)
LoRaWanネットワークへのアクティベーション方式を設定します。
Wan_ JoinMode に設定する値は下表のようになります。
表43
Wan_JoinMode アクティベーション方式
1 OTAA (Over-The-Air Activation) <デフォルト>
2 ABP (Activation By Personalization)

Wan_JoinModeによって、Wan_Joinコマンドでのアクティベーション方式を指定します。
Wan_JoinModeを設定するときは、アクティベーションが解除されていなければなりません。すでにアクティベーション済みのときは、”*denied”エラーとなります。(このときBASICの処理は止まりません。)
各アクティベーション方式については、Wan_Joinコマンドを参照してください。
※Wan_JoinMode は設定値を変更するとFLASHに自動保存します。


>WAN_JOINMODE=1
OK
>WAN_JOIN
join_accepted
OK
>? WAN_JOINSTAT
1
OK
>WAN_TX
OK

Wan_TxPwr
送信出力を設定/参照します。
範囲 : 0〜7 (デフォルト:0)
Wan_TxPwrに設定する値は下表のようになります。
表45
Wan_TxPwr LoRaWan規定 (EIRP) 出力(dBm)
0 MaxEIRP 13
1 MaxEIRP - 2dBm 11
2 MaxEIRP - 4dBm 9
3 MaxEIRP - 6dBm 7
4 MaxEIRP - 8dBm 5
5 MaxEIRP - 12dBm 3
6 MaxEIRP - 14dBm 1
7 MaxEIRP - 16dBm -1

(EIRP : Equivalent Isotropically Radiated Power = 等価等方放射電力)
LoRaWanモードでは、P2PモードのPwr変数による送信出力の設定には影響されません。
モジュールの電源電圧が標準電圧(3.3V)より低い場合は、実際の送信出力が低くなる場合があります。
Wan_TxPwr はSSaveコマンドでFLASHに保存します。(Wan_Saveコマンドでは保存されません)


>WAN_TXPWR=2
OK
>? WAN_TXPWR
2
>WAN_TX
OK

Wan_Dr
データーレート(Data Rate)を参照/設定します。
範囲 : 0〜6 (デフォルト:2)
データレートの値は下記の表のようになります。
表47
Wan_Dr 設定 (SF/Bandwidth) ビット速度(bps) 最大Payload長
0 SF12 / 125kHz 250 0
1 SF11 / 125kHz 440 0
2 SF10 / 125kHz 980 11
3 SF9 / 125kHz 1760 53
4 SF8 / 125kHz 3125 125
5 SF7 / 125kHz 5470 242
6 SF7 / 250kHz 11000 242

本モジュールはDR7 (FSK) には対応していません。(設定不可)
ADRが有効なときは、Wan_Drの設定よりもADR制御によるデータレートが優先されます。(詳細はWan_Adrを参照)
LoRaWanモードでは、P2PモードのSf, Bw, Cr には影響されません。
Wan_Dr はSSaveコマンドでFLASHに保存します。(Wan_Saveコマンドでは保存されません)


>WAN_DR=3
OK
>? WAN_DR
3
>WAN_TX
OK

Wan_FPort
送信ポート番号を参照/設定します。
範囲 : 1〜233 (デフォルト:1)
Wan_Txコマンドで送信するデータフレームのポート番号(FPort)です。
ポート番号はアプリケーション固有の値で、ユーザーが任意で決めることができます。
Wan_FPort はSSaveコマンドでFLASHに保存します。(Wan_Saveコマンドでは保存されません)


>WAN_FPORT=100
OK
>? WAN_FPORT
100
>WAN_TX
OK

Wan_Cnf
送達確認を参照/設定します。
範囲 : 0, 1
Wan_Txコマンドでデータフレームを送信するときに、送達確認を行うかどうかを設定します。
表50
Wan_Cnf 送達確認
0 送達確認をしません (Unconfirm)  <デフォルト値>
1 送達確認をします  (Confirm)

Wan_Cnf = 1(Confirm)のとき、Wan_Txコマンドによるデータ送信時に送達確認と再送制御を実施します。
再送制御はWan_Trialの設定値にしたがいます。(詳細はWan_Trialを参照)
Wan_Cnf はSSaveコマンドでFLASHに保存します。(Wan_Saveコマンドでは保存されません)


>WAN_CNF=1
OK
>? WAN_CNF
1
>WAN_TX
*timeout
OK

Wan_Adr
ADR (Adaptive Data Rate) を参照/設定します。
範囲 : 0, 1
Wan_Txコマンドでアップリンクデータを送信するとき、フレームにこのADRを設定します。
表52
Wan_Adr ADR制御
0 ADR-off <デフォルト値>
1 ADR-on

Wan_Adr = 1 (ADR-on) に設定するとADR制御が有効になります。
ただし、実際のADR制御はネットワーク側の動作に依存するので、Wan_Adr = 1(on) に設定しても、ネットワーク側の設定によってはADR制御が有効にならないことがあります。
ADR制御が有効な場合は、Wan_Drで設定したデータレートよりも、ADR制御によるデータレートが優先されます。
この場合、データレートは動的に変更されることとなります。
Wan_Adr はSSaveコマンドでFLASHに保存します。(Wan_Saveコマンドでは保存されません)


>WAN_ADR=1
OK
>? WAN_ADR
1
>WAN_TX
OK

ADR (Adaptive Data Rate) について
ADRはネットワークサーバからエンドデバイスのデータレートを制御する仕組みです。
エンドデバイスの通信状況に合わせてデータレートを動的に制御します。
エンドデバイスとゲートウエイが近い距離にあると判断した場合、データレートを上げます。データレートを上げることで送信時間が短くなり、消費電力を抑えるとともにエンドデバイス同士の衝突の確率を下げてより多くのエンドデバイスをカバーすることができます。
逆に、エンドデバイスとゲートウエイが遠い距離にあると判断した場合、データレートを下げます。

Wan_Trial
送信試行回数を参照/設定します。
範囲 : 1〜8 (デフォルト:1)
Wan_Trial には、Wan_Txコマンドでデータフレームを送信したときに確認応答が受信できなかった場合の、再送信の試行回数を設定します。再送信はWan_Cnf = 1(confirm) に設定されているときのみ実施されます。
Wan_Trial = 1のときは、初回送信のみで再送信しないことを意味します。(ただし、タイムアウトエラーは発生します。)
次の表のようにLoRaWan仕様V1.0.2に従ってデータレートアダプテーションを実行します。
表54
送信回 Data Rate
1(初回) DR
2 DR
3 max (DR-1, 0)
4 max (DR-1, 0)
5 max (DR-2, 0)
6 max (DR-2, 0)
7 max (DR-3, 0)
8 max (DR-3, 0)

Wan_Trialが1または2に設定されているときに確認応答を受信しなかった場合、DRは低下しないことに注意してください。
再送信時にデータレートアダプテーションによってDRが低下したとき、送信フレームのデータ長がそのDRの最大送信長を超える場合、DRは低下せずに現在のDRでフレームが再送信されます。
(例 : DR3でデータ長が11byte以下のとき、5回目の送信はDR1となるところですが、DR1の最大データ長は0なので、4回目と同じDR2のまま送信します。)
Wan_Trial はSSaveコマンドでFLASHに保存します。(Wan_Saveコマンドでは保存されません)


>WAN_TRIAL=3
OK
>? WAN_TRIAL
3
>WAN_TX
OK

Wan_Length
現在のデータレートで送信できる送信バイト数を参照します。
範囲 : 0〜242 (デフォルト: Wan_Drによる)
この変数は参照のみ可能です。値を設定することはできません。
各データレートの送信可能バイト数は、Wan_Dr変数の解説を参照してください。


>WAN_DR=2
OK
>? WAN_LENGTH
11
OK

Wan_JoinStat
アクティベーションの状態を参照します。
範囲 : 0, 1, 2 (デフォルト値なし)
現在のアクティベーション状態を下表にしたがって示します。
表57
Wan_JoinStat アクティベーション状態
0 未アクティベーション
1 OTAAでアクティベーション済
2 ABPでアクティベーション済

Wan_JoinStatは参照のみ可能です。値を設定することはできません。


>WAN_JOIN
join_accepted
OK
>? WAN_JOINSTAT
1
OK

Wan_UpCnt
UPリンクカウンタを設定/参照します。
範囲 : 0〜4294967295
次の送信に使用するUPリンクカウンタの値を設定、参照します。
UPリンクカウンタは、エンドデバイスがアップリンクのフレームを送信するたびにエンドデバイスによってインクリメントされる値です。設定をすることでUPリンクカウンタを、サーバが保存した値に同期させる事ができます。
UPリンクカウンタはOTAAでアクティベーションを実行すると0にリセットされます。
Wan_Saveコマンドで現在のUPリンクカウンタをFLASHに保存できます。(Ssaveコマンドでは保存されません。)


>? WAN_UPCNT
5
OK
>WAN_TX
OK
>? WAN_UPCNT
6
OK
>WAN_UPCNT=7
OK

Wan_DownCnt
DOWNリンクカウンタを設定/参照します。
範囲 : 0〜4294967295
次の送信に使用するDOWNリンクカウンタの値を設定、参照します。
DOWNリンクカウンタは、ネットワークサーバがダウンリンクのフレームを送信するたびにネットワークサーバによってインクリメントされる値です。設定をすることでDOWNリンクカウンタを、サーバが保存した値に同期させる事ができます。
DOWNリンクカウンタはOTAAでアクティベーションを実行すると0にリセットされます。
Wan_Saveコマンドで現在のDOWNリンクカウンタをFLASHに保存できます。(Ssaveコマンドでは保存されません。)


>? WAN_DOWNCNT
5
OK
>WAN_DOWNCNT=6
OK

Wan_DevAddr
DevAddr (Device Address) を参照/設定します。
範囲 : 32bit (デフォルト:0)
エンドデバイスをネットワーク内で識別するために、エンドデバイス、ネットワークサーバ、アプリケーションサーバ間で共有して使用します。
DevAddr はOTAAではアクティベーション時にネットワークから割り当てられるアドレスです。(ABPでのWan_DevAddrとは別扱いとなるので、ABPで設定したWan_DevAddrに影響しません。)

ABPでは、あらかじめネットワークサーバ側と共通に登録しておく必要があります。Wan_DevAddrが0に設定されているときはABPのアクティベーション実行時に乱数を設定します。
※Wan_DevAddr は値を変更すると自動的にFLASHに保存されます。(OTAAのWan_DevAddrは保存されません。)
※アクティベーション済み状態のときに変更すると、ネットワークとの通信が正常に行われなくなります。
※Wan_DevAddrの変更はWan_JoinModeがABPに設定されているときのみ可能です。
※Wan_DevAddr の参照/変更は管理者モードでのみ可能です。


>WAN_DEVADDR=12345
OK
>? WAN_DEVADDR
12345
OK

Wan_DevEui
DevEui (Device EUI) を参照/設定します。
範囲 : 64bit (デフォルト:なし)
エンドデバイス(端末)を識別するアドレスで、一般的にはエンドデバイス(端末)メーカーが割り当てます。
IEEE が発行したEUI-64で、グローバルに固有値です。値はエンドデバイスごとに異なります。
DevEui はOTAAに必須の項目で、ネットワークに登録されている必要があります。
Wan_DevEui をゼロ(64bit全部を0)に設定し保存すると、モジュール起動時にWan_DevEuiにはDevIdが設定されるようになります。( WAN_DEVEUI=$”” でゼロに設定されます。)

Printコマンド等の文字列が使用できる箇所で16進数文字列として参照可能です。
設定は各エンコード文字列で指定できます。(16進数エンコードを推奨)
※Wan_DevEui は値を変更すると自動的にFLASHに保存されます。
※Wan_DevEui の変更は管理者モードでのみ可能です。


>WAN_DEVEUI=$”0123456789abcdef”
OK
>? WAN_DEVEUI
0123456789abcdef
OK

Wan_AppEui
AppEui (Application EUI) を参照/設定します。
範囲: 64bit (デフォルト:なし)
Join Server のIDで、ネットワークオペレータによって割り当てます。
IEEE が発行したEUI-64で、グローバルに固有値です。
AppEuiはOTAAに必須の項目で、ネットワークに登録されている必要があります。
ABPでは使用しません。

Printコマンド等の文字列が使用できる箇所で16進数文字列として参照可能です。
設定は各エンコード文字列で指定できます。(16進数エンコードを推奨)
※Wan_AppEui は値を変更すると自動的にFLASHに保存されます。
※Wan_AppEui の参照/変更はWan_JoinModeがOTAAに設定されているときのみ可能です。
※Wan_AppEui の変更は管理者モードでのみ可能です。


>WAN_APPEUI=$”0123456789abcdef”
OK
>? WAN_APPEUI
0123456789abcdef
OK

Wan_AppKey
AppKey (Application Key) を参照/設定します。
範囲 : 128 bit (デフォルト:なし)
エンドデバイスに固有のAES-128ルートキーで、NwkSkey, AppSKeyを引き出すために使用します。
AppKey はOTAAに必須の項目で、ネットワークに登録されている必要があります。
ABPでは使用しません。

Printコマンド等の文字列が使用できる箇所で16進数文字列として参照可能です。
設定は各エンコード文字列で指定できます。(16進数エンコードを推奨)
※Wan_AppKeyは値を変更すると自動的にFLASHに保存されます。
※Wan_AppKeyの参照/変更はWan_JoinModeがOTAAに設定されているときのみ可能です。
※Wan_AppKeyの参照/変更は管理者モードでのみ可能です。


>WAN_APPKEY=$”0123456789abcdef0123456789abcdef”
OK
>? WAN_APPKEY
0123456789abcdef0123456789abcdef
OK

Wan_AppSkey
AppSkey (Application Session Key) を参照/設定します。
範囲 : 128 bit (デフォルト:なし)
128bit AES暗号鍵で、エンドデバイスとアプリケーションサーバ間で共有します。
アプリケーションペイロードのセキュリティのため、アプリケーションデータ、メッセージの暗号化復号化に使用されます。
OTAAではアクティベーション時に割り当てます。(ABPでのWan_AppSkeyとは別扱いとなるので、ABPで設定したWan_AppSkeyに影響しません。)
ABPではあらかじめネットワークサーバ側と共通に登録しておく必要があります。

Printコマンド等の文字列が使用できる箇所で16進数文字列として参照可能です。
設定は各エンコード文字列で指定できます。(16進数エンコードを推奨)
※Wan_AppSkeyは値を変更すると自動的にFLASHに保存されます。
※アクティベーション済み状態のときに変更すると、ネットワークとの通信が正常に行われなくなります。
※Wan_AppSkeyの変更はWan_JoinModeがABPに設定されているときのみ可能です。
※Wan_AppSkeyの参照/変更は管理者モードでのみ可能です。


>WAN_APPSKEY=$”0123456789abcdef0123456789abcdef”
OK
>? WAN_APPSKEY
0123456789abcdef0123456789abcdef
OK

Wan_NwkSkey
NwkSkey (Network Session Key) を参照/設定します。
範囲: 128 bit (デフォルト:なし)
128bit AES暗号鍵で、エンドデバイスとネットワークサーバ間で共有します。
メッセージの保全とエンドデバイスとネットワークサーバ間のセキュリティに使用されます。
OTAAではアクティベーション時に割り当てます。(ABPでのWan_NwkSkeyとは別扱いとなるので、ABPで設定したWan_NwkSkeyに影響しません。)
ABPではあらかじめネットワークサーバ側と共通に登録しておく必要があります。
Printコマンド等の文字列が使用できる箇所で16進数文字列として参照可能です。
設定は各エンコード文字列で指定できます。(16進数エンコードを推奨)
※Wan_NwkSkey は値を変更すると自動的にFLASHに保存されます。
※アクティベーション済み状態のときに変更すると、ネットワークとの通信が正常に行われなくなります。
※Wan_NwkSkeyの変更はWan_JoinModeがABPに設定されているときのみ可能です。
※Wan_NwkSkeyの参照/変更は管理者モードでのみ可能です。


>WAN_NWKSKEY=$”0123456789abcdef0123456789abcdef”
OK
>? WAN_NWKSKEY
0123456789abcdef0123456789abcdef
OK

Wan_ChMask
チャンネルマスクを参照/設定します。
範囲: 16 bit (デフォルト:0)
Uplinkに使用するチャンネルを制限します。
最下位ビット(LSB)から順に「Ch1、Ch2…」のように16チャンネル分をチャンネル毎にビット単位で設定します。
ビットが‘1’のチャンネルは使用可に、’0’ のチャンネルは使用不可となります。
ただし、Wan_ChMask が0(全ビットが0)のときは制限無しになります。
Wan_ChMask はSSaveコマンドでFLASHに保存します。(Wan_Saveコマンドでは保存されません)


>? WAN_CHMASK
0
OK
>WAN_CHLIST
1:923200000
2:923400000
OK
>WAN_CHMASK=2
OK
>WAN_CHLIST
1:923200000*
2:923400000
OK

送受信バッファ
LoRaWanの送受信では送受信バッファを使用します。
送信バッファと受信バッファはお互いに独立しています。

バッファのフォーマット
送受信バッファの構成は以下のようになっています。
表68
Offset 名前 内容
0 N/A 未使用
1
2
3
4 SNR Txd :未使用 / Rxd :SNR
5 DR Txd :未使用 / Rxd :Datarate
6 FPort Txd :未使用 / Rxd :ポート番号(FPort)
7 Length  データ長(0〜242)
8

249
Data Txd :送信データ / Rxd :受信データ
データ長はLengthに設定

P2Pモードの送受信バッファと共通のエリアです。
送受信バッファの設定/参照などの基本的な使用方法はP2Pモードと同じです。

Txd, Txdw, Txdl
基本的な使用法はP2Pモードと同じです。(解説省略)
TxdにはWan_Txコマンドで送信するアップリンクデータフレームのペイロードに入れるデータを格納しておきます。
Txd に文字列を設定したときは、Txd(7) のデータ長(Length)が自動的に設定されます。Txd(0)〜(6) は未使用です。
(詳細はバッファのフォーマットを参照)
Wan_Txコマンドでアップリンクデータを送信しても送信バッファの内容は変化しないので、再度Wan_txコマンドを実行すると同一データが送信されます。


>TXD=”12345”
OK
>WAN_FPORT=10
OK
>WAN_TX
OK

Rxd, Rxdw, Rxdl
基本的な使用法はP2Pモードと同じです。(解説省略)
RxdにはWan_TxコマンドおよびWan_Rxコマンド(Class-Cの場合)で受信したダウンリンクデータのペイロード内容と受信情報(SNR、Datarate、FPort)が格納されます。
RXD(7) には受信データ長(Length)、RXD(6) にはポート番号(FPort)、RXD(5) にはDatarete(DR)、RXD(4) にはSNRが設定されます。RXD(0)〜(3) は未使用です。
(詳細はバッファのフォーマットを参照)


>WAN_TX $
@-80,55,30313233
OK
>? RXD
01234
OK
>? RXD(7)
4
OK
>? RXD(6)
55
OK

#?(設定表示)
LoRaWanの各種設定値やその他設定情報を一括表示します。
P2Pモードのときとは表示内容が異なります。(一部共通)
また、Wan_JoinModeや管理者モードの状態によっても表示内容が若干変わります。


>#?
Sn=123456
DevId=$"70b3d559e01d4dbe"
Wan_mode=1[Wan]
Class=0[A]
JoinMode=1[OTAA]
TxPwr=0[13dBm]
Dr=2
FPort=1
Cnf=0
Adr=0
Trial=1
DevEui=$"0123456789abcdef"
AppEui=$"0123456789abcdef"
Ctrl=$00000000
Echo=1[On]
Auto=""
>

SSave
LoRaWan変数およびその他設定をFLASHに保存します。
LoRaWanモードのときは、P2Pモードのみに関連する変数(Sf, Bw, …など)は保存されません。
LoRaWanモードとP2Pモードに共通の変数や設定値は保存対象となります。
LoRaWanのアクティベーションに関連する値は保存しません。(詳細はLoRaWan変数を参照)
SSaveコマンドで保存した値は、SLoadコマンドおよびシステム起動時に読み込まれます。

Default
LoRaWan変数およびその他設定をデフォルト値に再設定します。
LoRaWanモードのときは、P2Pモードのみに関連する変数(Sf, Bw, …など)はデフォルト値になりません。
LoRaWanモードとP2Pモードに共通の変数や設定値はデフォルト値になります。
LoRaWanのアクティベーションに関連する変数は変更しません。(詳細はLoRaWan変数を参照)
DefaultコマンドのみではFLASHへの保存は行われません。

Rssi
受信RSSIを参照します。
範囲 : -157〜0 (デフォルト値なし)
Wan_Txコマンドでネットワークからダウンリンクを受信したときのRSSI値が設定されます。
Rssiが表す「RSSI (Received signal strength indication):受信信号強度情報」の単位はdBmです。
ダウンリンクを受信するたびに最新のRSSIに更新されます。
受信データがなくても送達確認などのダウンリンクを受信するとその受信フレームのRSSI値が設定されます。
Wan_JoinコマンドによるJoin_Requestへの応答(Join_Acceptフレーム)受信などは対象にはなりません。
Rssiは参照のみ可能です。値を設定することはできません。基本的にP2PモードのRssiと同様です。


>WAN_TX $
@-50,10,beef
OK
>? RSSI
-50
OK

Snr
受信SNRを参照します。
範囲 : -128〜127 (デフォルト値なし)
Wan_Txコマンドでネットワークからダウンリンクを受信したときのSNR値が設定されます。
Snrが表す「SNR (Signal-to-Noise Ratio):信号対雑音比」の単位はdBです。
ダウンリンクを受信するたびに最新のSNRに更新されます。
受信データがなくても送達確認などのダウンリンクを受信するとその受信フレームのSNR値が設定されます。
Wan_JoinコマンドによるJoin_Requestへの応答(Join_Acceptフレーム)受信などは対象にはなりません。
Snrは参照のみ可能です。値を設定することはできません。基本的にP2PモードのRssiと同様です。


>WAN_TX $
@-50,10,beef
OK
>? SNR
8
OK

Stat
Stat 変数LoRaWanモードとP2Pモードに共通の変数です。LoRaWanモードではLoRaWanコマンドの実行結果(エラー等)がStat 変数に反映されます。各LoRaWanコマンドとStat変数の関係を下表に示します。
表74
Stat 意味 表示 Wanコマンド
Join Tx Rx LinkChk
0 エラーなし
1 対象外CLASS *incompatible_class
2 不正なパラメーター *invalid_parameter
3 拒否 *denied
4 空きチャネル無し *no_free_ch
5 不正なデータ長 *invalid_data_length
6 未アクティベーション *not_join
7 Duty Cycle制限中 *dutycycle_restricted
8 タイムアウト *timeout
9 受信CRCエラー *crc_error
10 データ受信
11 処理中 *busy
12 その他エラー *error

LoRaWanコマンドの実行でLoRaWanのエラーが発生(Stat ≠ 0)してもBASICの実行は継続します。
従来同様に、BASICの文法エラーやパラメータエラーなどが発生したときはBASICの実行は中断されます。その他LoRaWanモードでもP2Pモードに関連する変数(Sf, Bw, …など)にアクセスすることが可能ですが、LoRaWanの動作に影響はありません。また、P2Pモード関連のコマンドで実行可能(Modeエラーにならない)なものもありますが、結果は保証されません。
BASICの制御に関連する変数やコマンドは共通して使用します


>WAN_JOIN
*timeout
OK
>WAN_JOIN
*dutycycle_restricted
OK
>? STAT
7
OK
>WAN_TX
*not_join
OK
>? STAT
6
>WAN_JOIN
join_accepted
OK
>WAN_TX $
@-50,10,303132
OK
>? STAT
10
OK

Xtal32k
低速クロックを設定します
範囲: 0,1
0 : 内部CRを使用します
1 : 外部接続の水晶振動子を使用します
上記以外の値は無視されます。

低速クロック(32.768kHz)を外部クリスタルまたは内部CRに設定します。
変数への設定直後に低速クロックが切り替わります。
この変数はSSaveコマンドで設定保存され、システム起動時にはこの変数による低速クロックが有効となります。

外部に水晶振動子(32.768kHz)を接続したときのみ、”1”(外部)に設定してください。水晶振動子を接続せずに”1”を設定したときはエラーになります。ただし、ハードウェアの状態によってはハングアップする場合があります。

※注意事項
LoRa-WANモードで動作させる場合は、外部水晶振動子での動作を強く推奨します。
低速クロックは、LoRa-WANでの通信タイミングのタイマーに利用しているので、LoRa-WANモードを内部CRで動作させた場合は、ゲートウエイとの通信できない可能性が高くなります。

※補足
DeepコマンドによってSLEEPするときは、低速クロックを内部CRに設定した方が待機中の消費電力を低くすることができます。

なお、モジュールへの水晶振動子の接続方法等についてはハードウェアマニュアルを参照してください。


>XTAL32K=0
OK
>? XTAL32K
0
OK
>XTAL32K=1
OK
>? XTAL32K
1
OK

管理者モード
LRA1にはパラメーターの設定変更を防止する目的で管理者モードがあります。
Pass変数にパスワードを設定することで管理者モードになります。
管理者モードで設定変更可能な変数については、各変数の解説を参照してください。
なお、この管理者モードはユーザーが意図しない変数設定を防止することを目的としていますので、セキュリティ的な目的での使用は想定していません。

Pass
動作モードの設定
範囲: なし
 999999 : 管理者モードになります。 
 上記以外の数値を設定すると「通常モード」になります。
参照時は以下の値が返ります
通常モード =0
管理者モード=1


>?PASS
0
OK
>WAN_DEVEUI=$0

Permission error
>PASS=999999
OK
>?PASS
1
OK
>WAN_DEVEUI=$0
OK
>PASS=123
OK
>?PASS
0
OK