2024年5月にUnabiz者がリリースしたUnaBiz upgrades Sigfox 0G Technology, reducing device energy consumption by up to 18Xに書かれているSigfoxのオープンソースライブラリとして提供しているSigfox End Point Libraryを実装すれば、通常上り100bpsが600bpsへ、リピート回数も3回固定から指定回数に変更することができ、バッテリーのライフサイクルが約18倍になりますよという内容が気になったので、(おそらく対応しているであろう)LSM100Aモジュールをベースに開発ボード化しているSigfox Breakout Board [BRKLSM100]を購入して、試してみました。
SigfoxとLoRaのモード切替
AT+MODE=X
のXを0でSigfox、1でLoRaに切り替えられる。
AT+MODE=0でSigfoxに切り替えられるのだが、応答は”OK”だけなので、本当に切り替わったかは、`AT+MODE=?"で確認した方が良い。
-----------------------------
SEONGJI INDUSTRIAL CO., LTD.
-------------------------------------
>> Device : LSM100A
>> Mode : Sigfox
>> IAP_VERSION : V1.0.0
-------------------------------------
>> APP_VERSION: V1.0.3
>> MW_SIGFOX_VERSION: V1.7.0
>> MW_RADIO_VERSION: V1.2.0
>> TXPOWER MODE : LOWPOWER
>> SIGFOX SUPPORT RC TYPE: VD
>> SIGFOX sfx_rc : RC3C
>> SIGFOX APPLICATION READY
-------------------------------------
-----------------------------
SEONGJI INDUSTRIAL CO., LTD.
-------------------------------------
>> Device : LSM100A
>> Mode : LoRa
>> IAP_VERSION : V1.0.0
-------------------------------------
>> APP_VERSION: V1.0.3
>> MW_LORAWAN_VERSION: V2.4.0
>> MW_RADIO_VERSION: V1.2.0
>> TXPOWER MODE : LOWPOWER
>> L2_SPEC_VERSION: V1.0.4
>> RP_SPEC_VERSION: V2-1.0.1
------ OTAA ------
>> AppKey:
>> NwkKey:
------ ABP ------
>> AppSKey:
>> NwkSKey:
------ IDs ------
>> DevEui:
>> AppEui:
>> DevAddr:
-------------------------------------
Sigfox Radio Configurationの変更
デフォルトで設定されているRCは欧州を意味する1になっているため、日本向けRC3Cに変更する必要があります。
AT$RC=3C
でRC3Cに変更できます。これも同じく、AT$RC=?で変更確認しましょう。
AT$TM=3C,0
でRCZを切り替えるという記載を見ることがありますが、これをやっても、おそらく、コマンドを受け付けていないのでしょう。下記ATコマンドエラーが戻ってきます。
ERROR 0x50
AT_ERROR
600bpsのアップリンク通信はできるのか?
通常のメッセージ送信コマンドAT$SF
コマンドでは、600bpsを指定するパラメターはありません。
ただ、Local test用として、AT$SL=freq,datarate,count
というコマンドがあります。これをすると、例えばAT$SL=922400000,600,5
というコマンドを叩けば、しばらくして下記応答が得られます。
FREP[922400000] dataRate[600]
715s848:Wait For End of Tx
716s172:OnTxDone
716s172:End Of Tx
716s635:Wait For End of Tx
716s959:OnTxDone
716s959:End Of Tx
717s423:Wait For End of Tx
717s748:OnTxDone
717s748:End Of Tx
718s210:Wait For End of Tx
718s535:OnTxDone
718s535:End Of Tx
718s999:Wait For End of Tx
719s323:OnTxDone
719s323:End Of Tx
OK
よくわかないので、600bpsのところを100bpsにしてみました。
FREP[922400000] dataRate[100]
802s037:Wait For End of Tx
803s454:OnTxDone
803s454:End Of Tx
803s916:Wait For End of Tx
805s333:OnTxDone
805s333:End Of Tx
805s796:Wait For End of Tx
807s213:OnTxDone
807s213:End Of Tx
807s676:Wait For End of Tx
809s093:OnTxDone
809s093:End Of Tx
809s556:Wait For End of Tx
810s973:OnTxDone
810s973:End Of Tx
OK
なんか、時刻のようなものが返ってくるので、比較をしてみたところ、600bpsの時は、3.475s、100bpsの時は、8.936sと約2.5倍の違いがありました。
なんとなく、600bpsになっているんじゃないかという気にさせる結果です。
正直、LSM100Aのユーザーマニュアルの記載が少ないこと、現場から離れて時が経っており、Sigfox End Point Libraryの実装内容がよくわからないということもあり、実際のところはわかりません。また、調べます。
最後に、ATコマンド一覧を載せておきます。
AT+<CMD>? : Help on <CMD>
AT+<CMD> : Run <CMD>
AT+<CMD>=<value> : Set the value
AT+<CMD>=? : Get the value
ATZ: Trig a MCU reset
AT$RFS: Restore EEPROM Factory Settings
AT+VER: Get the FW version
AT$ID: Get the ID
AT$PAC: Get the PAC
ATS410: 0:Private Key 1:Public Key
ATS411: Payload Encryption 0:Off 1:On
AT$SB=<Bit>,<Opt downlink>,<Opt TxRepeat><CR>. Send a bit to the sigfox network
AT$SF=<Payload>,<Opt downlink>,<Opt TxRepeat><CR>. Send a ASCII frame to the sigfox network
AT$SH=<PayloadLength>,<Payload>,<Opt downlink>,<Opt TxRepeat><CR>. Send a Hex frame to the sigfox network
AT$CW=<frequency><CR> frequency in Hz or in MHz. Run CW Test mode
AT$PN=<frequency>,<bitrate><CR> frequency in Hz or in MHz, bitrate=[100, 600]. Run PRBS9 BPBSK Test mode
AT$TM=<rc>,<mode><CR> mode=[0..12]. Run Sigfox Test mode
AT+BAT: Get the battery Level in mV
ATS302=<power>,<CR> power in dBm=[0..20]. Set Radio output power in dBm
ATS300: send an out of band message once.
ATS400=<param1><param2><param3>,<param4><CR>. Configure specific variables for standard.
AT$RC<param1><CR> param1=[1:7]. Set/Get the Regional Config zones.
AT$RSSICAL=<param1><CR> param1=rssi value in dB. Set/Get the rssi calibration value in dB.
ATE=<param1><CR> [0,1]. Set/Get the echo state.
AT+VL=<param1><CR> [0:3]. Set/Get the Verbose Level with integer from 0(VLEVEL_OFF) to 3(VLEVEL_H)
AT+MODE LoRa/SigFox Select 0:SigFox, 1:LoRa
AT$RL Starts listening for a local loop
AT$SL Send Tx packet for a local loop
AT$SSWVER Get SW Version