LoRaWAN | Downlink Tutorial

LoRaWAN Downlink Tutorial

1. Pendahuluan

Pada tutorial ini, Anda akan menggunakan software POSTMAN atau MQTT FX untuk mengirim pesan downlink ke perangkat LoRaWAN Anda. Modul yang digunakan pada tutorial ini adalah modul Arduino LoRa Antares berbasis Arduino Pro Mini (ATMEGA328P).

2. Prasyarat

Sebelum memulai, pastikan Anda telah memenuhi syarat sebagai berikut:

a. Install Arduino IDE pada komputer Anda. Klik Software Arduino IDE jika Anda belum menginstall.

b. Untuk mengetahui cara installasi library ESP32 Klik Tutorial Berikut Tutorial Install Board ESP32

c. Library LoRaWAN: Download Library LoraWAN pada Arduino IDE. Klik link di bawah:

*Note: Library hanya untuk board LYNX-32.

d. Untuk menggunakan RESTFUL API berbasis protokol HTTP, Anda perlu meng-install software POSTMAN. Klik Software POSTMAN jika Anda belum menginstall.

e. Untuk menggunakan RESTFUL API berbasis protokol MQTT, Anda perlu meng-install software MQTT FX. Klik Software MQTT FX jika Anda belum menginstall.

3. Konfigurasi Perangkat

a. Masuk pada laman console Antares akun Anda. Buat device pada aplikasi di console akun anda. Jika sudah memiliki device Anda bisa langsung buak page device yang telah Anda buat sebelumnya. Kemudian klik Set LoRa seperti pada gambar berikut:

Lalu akan muncul kotak dialog Set LoRa Device seperti gambar di bawah. Pada pilihan Select LoRa Device Class, pilih Class C > Aktivasi ABP > ABP Parameter Inherit > Klik Set LoRa .

b. Pada Arduino IDE, konfigurasikan Arduino Pro or Pro Mini sebagai board yang akan Anda gunakan. Klik Tools > Board > Arduino Pro or Pro Mini.

c. Pada Arduino IDE, konfigurasikan Processor ESP32 dev board sebagai processor yang akan Anda gunakan. Klik Tools > Processor > ESP32 dev board. *Notes: Jika menggunakan board lain, pilih sesuai board yang digunakan

d. Pada Arduino IDE, konfigurasikan Port sesuai dengan Board Arduino LoRa yang Anda gunakan. Klik Tools > Port > COM ....

e. Pada Arduino IDE, upload program example class C dari library loraid melalui File > Examples> Antares LoRaWAN > send-class-C-ABP. Sesuaikan data access key dan juga device address sesuai akun di ANTARES. Berikut source code untuk file example class C:.

#include <lorawan.h>

//ABP Credentials
const char *devAddr = "Lora-Device-Address";
const char *nwkSKey = "Network-Session-Key";
const char *appSKey = "Application-Session-Key";



const unsigned long interval = 10000;    // 10 s interval to send message
unsigned long previousMillis = 0;  // will store last time message sent
unsigned int counter = 0;     // message counter

char myStr[50];
byte outStr[255];
byte recvStatus = 0;
int port, channel, freq;
bool newmessage = false;

const sRFM_pins RFM_pins = {
  .CS = 5,
  .RST = 0,
  .DIO0 = 27,
  .DIO1 = 2,
};

void setup() {
  // Setup loraid access
  Serial.begin(115200);
  delay(2000);
  if (!lora.init()) {
    Serial.println("RFM95 not detected");
    delay(5000);
    return;
  }

  // Set LoRaWAN Class change CLASS_A or CLASS_C
  lora.setDeviceClass(CLASS_C);

  // Set Data Rate
  lora.setDataRate(SF10BW125);

  // Set FramePort Tx
  lora.setFramePortTx(5);

  // set channel to random
  lora.setChannel(MULTI);

  // Set TxPower to 15 dBi (max)
  lora.setTxPower(15);

  // Put ABP Key and DevAddress here
  lora.setNwkSKey(nwkSKey);
  lora.setAppSKey(appSKey);
  lora.setDevAddr(devAddr);
}

void loop() {
  // Check interval overflow
  if (millis() - previousMillis > interval) {
    previousMillis = millis();

    sprintf(myStr, "Lora Counter-%d", counter++);

    
    Serial.print("Sending: ");
    Serial.println(myStr);
    lora.sendUplink(myStr, strlen(myStr), 0);
    port = lora.getFramePortTx();
    channel = lora.getChannel();
    freq = lora.getChannelFreq(channel);
    Serial.print(F("fport: "));    Serial.print(port);Serial.print(" ");
    Serial.print(F("Ch: "));    Serial.print(channel);Serial.print(" ");
    Serial.print(F("Freq: "));    Serial.print(freq);Serial.println(" ");

  }

  // Check Lora RX
  lora.update();

  recvStatus = lora.readDataByte(outStr);
  if (recvStatus) {
    newmessage = true;
    int counter = 0;
    port = lora.getFramePortRx();
    channel = lora.getChannelRx();
    freq = lora.getChannelRxFreq(channel);

    for (int i = 0; i < recvStatus; i++)
    {
      if (((outStr[i] >= 32) && (outStr[i] <= 126)) || (outStr[i] == 10) || (outStr[i] == 13))
        counter++;
    }
    if (port != 0)
    {
      if (counter == recvStatus)
      {
        Serial.print(F("Received String : "));
        for (int i = 0; i < recvStatus; i++)
        {
          Serial.print(char(outStr[i]));
        }
      }
      else
      {
        Serial.print(F("Received Hex: "));
        for (int i = 0; i < recvStatus; i++)
        {
          Serial.print(outStr[i], HEX); Serial.print(" ");
        }
      }
      Serial.println();
      Serial.print(F("fport: "));    Serial.print(port);Serial.print(" ");
      Serial.print(F("Ch: "));    Serial.print(channel);Serial.print(" ");
      Serial.print(F("Freq: "));    Serial.println(freq);Serial.println(" ");
    }
    else
    {
      Serial.print(F("Received Mac Cmd : "));
      for (int i = 0; i < recvStatus; i++)
      {
        Serial.print(outStr[i], HEX); Serial.print(" ");
      }
      Serial.println();
      Serial.print(F("fport: "));    Serial.print(port);Serial.print(" ");
      Serial.print(F("Ch: "));    Serial.print(channel);Serial.print(" ");
      Serial.print(F("Freq: "));    Serial.println(freq);Serial.println(" ");
    }
  }
} 

Setelah mengupload program example class C pada board yang digunakan. Pastikan perangkat sudah mengirimkan data lora dan sampai pada platform ANTARES. Jika data dari board sudah dapat masuk ke ANTARES, maka langkah selanjutnya yaitu melakukan downlink (mengirimkan message) ke perangkat melalui Platform ANTARES via POSTMAN atau MQTT FX.

Setelah Anda selesai melakukan konfigurasi pada perangkat dan perangkat sudah dipastikan dapat mengirim data ke ANTARES, saatnya mencoba untuk mengirim downlink ke device melalui Platform ANTARES dengan menggunakan software POSTMAN

Jika belum melakukan instalasi POSTMAN dapat mengikuti tutorial pada page Tutorial POSTMAN.

Untuk melakukan downlink digunakan metode POST. Untuk melakukan metode POST ini diperlukan paramter header dan juga body. Petama-tama Isi parameter Header sesuai tabel dibawah ini: *Notes: Sesuaikan parameter access key dan alamat URI sesuai akun Anda

Field

Initial Value

Current Value

access-key

your-access-key

your-access-key

application-name

your app name in ANTARES

your app name in ANTARES

device-name

your device name in ANTARES

your device name in ANTARES

e-mail

Your e-mail

Your e-mail

Jika sudah diisi, tampilan header akan menjadi seperti ini

Kemudian selanjutnya ke bagian body. Pada bagian body ini berisikan data yang ingin dikirimkan ke device LoRa Anda. Isi parameter Body sesuai dengan apa yang ingin dikirimkan ke perangkat dengan mengikuti format di bawah ini:

Field

Value

Body

Jika parameter body sudah diisi maka akan seperti pada gambar di bawah ini:

Klik send untuk mengeksekusi POST downlink message ke ANTARES. Jika sudah di POST maka downlink message akan langsung dikirimkan ke perangkat melalui gateway LoRa terdekat. Message downlink dapat dilihat melalui serial monitor pada Arduino IDE

Jika menggunakan board arduino dapat menggunakan Baud Rate 9600 untuk melihat data downlink yang diterima. Berikut contoh serial monitor saat berhasil menerima downlink:

Setelah Anda selesai melakukan konfigurasi pada perangkat dan perangkat sudah dipastikan dapat mengirim data ke ANTARES, selain menggunakan POSTMAN, Bagi Anda yang lebih cocok menggunakan protokol MQTT, Anda dapat mencoba untuk mengirim downlink ke device melalui Platform ANTARES dengan menggunakan software MQTT FX

Pada bagian ini, Anda untuk mengirimkan data melalui MQTT FX, diperlukan konfigurasi broker ke Platform ANTARES sebagai berikut:

Host

mqtt.antares.id

Port

1883

Untuk bagian Client ID bisa disesuaikan dengan access key akun Anda ataupun uniqe code lainnya. Setelah sesuai dapat disimpan dengan menekan tombol save.

Setelah konfigurasi broker sudah sesuai dapat langsung dihubungkan ke broker MQTT ANTARES dengan menekan tombol Connect.

Jika sudah terhubung maka akan menampilkan lingkaran hijau di atas kanan seperti pada gambar:

Setelah terhubung, langkah selanjutnya yaitu mengirimkan publish ke ANTARES ke device yang terdaftar di ANTARES dengan menginputkan topic dan juga content body sebagai berikut:

Topic

/oneM2M/req/your-access-key/antares-cse/json

Payload

Setelah data access key dan alamat device sudah sesuai, klik tombol publiish untuk mengirimkan data ke ANTARES

Jika berhasil masuk ke ANTARES, maka pada device ANTARES akan muncul seperti pada gambar dibawah ini:

Jika data downlink masuk ke Platform ANTARES, maka akan langsung di forwardkan ke NS Lora dan dikirimkan melalui gateway terdekat. Data dapat diterima oleh perangkat seperti pada gambar berikut: