前回 CMWX1ZZABZ搭載ボードをArduino IDEで開発するための環境構築に関して説明しましたので
今回は実際にサンプルプログラムからLoRaWANにOTAAモードで接続してみます。
なお接続先は「福岡市LoRaWAN実証実験」ゲートウェイでテストしました。
ベースとしたプログラムは
LoRaWAN_Join_OTAA です。
このプログラムは Arduino IDE の スケッチ例からも選択できます。
LoRaWAN_Join_OTAA.ino
/* Simple OTAA join for a LoRaWAN network
*
* In setup() below please replace the argument to LoRaWAN.begin()
* with your appropriate region specific band:
*
* AS923
* AU915
* EU868
* IN865
* KR920
* US915
*
* AU915/US915 networks have 64+8 channels. Typical gateways support only
* 8 (9) channels. Hence it's a good idea to pick the proper channel
* subset via select via LoRaWAN.setSubBand(),
*
* EU868/IN865 have duty cycle restrictions. For debugging it makes sense
* to disable those via setDutyCycle(false);
*
* For an external antenna one should set the proper antenna gain
* (default is 2.0) via setAntennaGain().
*
* Please edit the keys below as they are just debugging samples.
*
*
* This example code is in the public domain.
*/
#include "LoRaWAN.h"
const char *appEui = "0101010101010101";
const char *appKey = "2B7E151628AED2A6ABF7158809CF4F3C";
const char *devEui = "0101010101010101";
void setup( void )
{
Serial.begin(9600);
while (!Serial) { }
LoRaWAN.begin(US915);
// LoRaWAN.setSubBand(2);
// LoRaWAN.setDutyCycle(false);
// LoRaWAN.setAntennaGain(2.0);
LoRaWAN.joinOTAA(appEui, appKey, devEui);
Serial.println("JOIN( )");
}
void loop( void )
{
if (LoRaWAN.joined() && !LoRaWAN.busy())
{
Serial.print("TRANSMIT( ");
Serial.print("TimeOnAir: ");
Serial.print(LoRaWAN.getTimeOnAir());
Serial.print(", NextTxTime: ");
Serial.print(LoRaWAN.getNextTxTime());
Serial.print(", MaxPayloadSize: ");
Serial.print(LoRaWAN.getMaxPayloadSize());
Serial.print(", DR: ");
Serial.print(LoRaWAN.getDataRate());
Serial.print(", TxPower: ");
Serial.print(LoRaWAN.getTxPower(), 1);
Serial.print("dbm, UpLinkCounter: ");
Serial.print(LoRaWAN.getUpLinkCounter());
Serial.print(", DownLinkCounter: ");
Serial.print(LoRaWAN.getDownLinkCounter());
Serial.println(" )");
LoRaWAN.beginPacket();
LoRaWAN.write(0xef);
LoRaWAN.write(0xbe);
LoRaWAN.write(0xad);
LoRaWAN.write(0xde);
LoRaWAN.endPacket();
}
delay(10000);
}
変更箇所
LoRaWAN.begin(US915); -> LoRaWAN.begin(AS923);
appEui、appKey、devEui はゲートウェイへの登録値に合わせてください。
なおこのままだと10秒おきの送信となりますので delay(10000) の 10000 をもっと大きい数字に変更してください。
例 5分 : 300000