Tutorial LoRa
Silakan download modul Workshop LoRa Antares. Klik. Klik Modul Workshop LoRa Antares
Pendahuluan
Pada tutorial ini, Anda akan menggunakan konektivitas LoRa untuk mengirim data sederhana ke Antares. Modul yang digunakan pada tutorial ini adalah modul LYNX-32 LoRa Antares.

1. Prasyarat
Sebelum memulai, pastikan Anda telah memenuhi syarat sebagai berikut:
a. Install Arduino IDE pada perangkat Anda. Klik Software Arduino IDEjika Anda belum menginstall.
b. Board ESP-32: Download Board ESP-32 pada Arduino IDE. Klik Tutorial Berikut Tutorial Install Board ESP32
c. Library LoRaWAN: Download Library LoraWAN pada Arduino IDE. Klik Download Download Library LoraWAN
*Note: Library hanya untuk board LYNX-32.
d. Membuat aplikasi dan device pada console Antares akun Anda.
2. Langkah-langkah Install Library LoraWAN
Sebelum memulai proses pada software, Anda perlu menginstall Library LoraWAN Arduino Library pada Arduino IDE yang Anda gunakan. Pada Arduino IDE, buka add .ZIP Library dengan klik Sketch > Include Library > add .ZIP Library.

Kemudian pilih file zip Library LoRaWAN-Arduino-Library.zip pada direktori penyimpanan yang telah Anda download sebelumnya. Lalu klik Open.

3. Konfigurasi
Cara melakukan konfigurasi adalah sebagai berikut:
a. Masuk pada laman console Antares akun Anda. Klik pada 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. Ikuti pengaturan seperti di bawah.

b. Pada Arduino IDE, konfigurasikan ESP32 Dev Modul sebagai board yang akan Anda gunakan. Klik Tools > Board > ESP Dev Module..
c. Pada Arduino IDE, konfigurasikan Port sesuai dengan Board ESP32 yang Anda gunakan. Klik Tools > Port > COM .....
4. Mengirim Data Sederhana ke Antares
Setelah Anda selesai melakukan konfigurasi, saatnya membuat kode program untuk mengirim data sederhana ke device pada console Antares yang telah Anda buat sebelumnya. Kode Program dapat Anda dapatkan di direktori example pada folder library LoRaWAN Arduino Library yang telah Anda download sebelumnya atau dengan mudah Anda dapatkan dengan klik File > Examples > Antares LoRaWAN > send-class-A-ABP pada Arduino IDE.
Kode program send-class-A-ABP* seperti berikut:
*Note: Jangan lupa untuk ketik devAddr, nwkSKey, dan appSKey yang Anda gunakan pada console Antares akun Anda. Setelah itu upload program dan tunggu beberapa detik.
/**
Example of ABP device
Authors:
Ivan Moreno
Eduardo Contreras
June 2019
This code is beerware; if you see me (or any other collaborator
member) at the local, and you've found our code helpful,
please buy us a round!
Distributed as-is; no warranty is given.
*/
#include
//ABP Credentials
const char *devAddr = "4ff6c1bd";
const char *nwkSKey = "93df5e92cbaf1efc0000000000000000";
const char *appSKey = "000000000000000002e21425cc8ccfa2";
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_A);
// 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 proses upload kode program selesai, silakan periksa data yang masuk pada Device Antares yang telah Anda buat sebelumnya. Jika berhasil maka tampilan pada Device Anda akan seperti berikut ini:

Menggunakan Shield Workshop Antares
Pendahuluan
Silakan download modul Workshop LoRa Antares. Klik Modul Workshop LoRa Antares
Pada bagian ini, Anda akan menggunakan Shield Workshop Antares pada modul Arduino LoRa. Pada Shield Workshop Antares ini terdapat sensor suhu dan kelembaban (DHT11), relay, LED dan push button. Pada tutorial ini, Anda akan melakukan monitoring suhu dan kelembaban melalui console Antares menggunakan Modul LYNX-32 LoRa.

1. Alat dan Bahan
Alat dan bahan yang digunakan diantaranya:
a. Modul LYNX-32 LoRa
b. Shield Workshop Antares
c. Kabel Micro USB Type C
2. Kirim Data Sensor
Sebelumnya, pastikan Anda telah memasang Shield Workshop Antares pada Modul LYNX-32 LoRa dengan benar. Kode program ditunjukkan seperti dibawah ini: Note: Jangan lupa untuk ketik devAddr, nwkSKey, dan appSKey yang Anda gunakan pada console Antares akun Anda. Setelah itu upload program dan tunggu beberapa detik.
#include
/**
Example of ABP device
Authors:
Ivan Moreno
Eduardo Contreras
June 2019
This code is beerware; if you see me (or any other collaborator
member) at the local, and you've found our code helpful,
please buy us a round!
Distributed as-is; no warranty is given.
*/
#include
#include "DHT.h"
#define DHTTYPE DHT11
#define SENSOR_DHT 14
DHT dht(SENSOR_DHT, DHTTYPE);
//ABP Credentials
/*
Notes:
- select ABP Activation on ANTARES
- select inherit to generate your keys
- nwkSKey: 32 digit hex, you can put 16 first digits by first 16 digits your access key and add 16 digits with 0 (ex : abcdef01234567890000000000000000)
- appSKey: 32 digit hex, put 16 first digits by 0 and put last 16 digits by last 16 digit your access key (ex : 0000000000000000abcdef0123456789)
*/
const char *devAddr = "4ff6c1bd";
const char *nwkSKey = "93df5e92cbaf1efc0000000000000000";
const char *appSKey = "000000000000000002e21425cc8ccfa2";
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
String dataSend = "";
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,
};
float getTemperature()
{
float t = dht.readTemperature();
if (isnan(t)) return 0;
return t;
}
float getHumidity()
{
float h = dht.readHumidity();
if (isnan(h)) return 0;
return h;
}
void setup() {
// Setup loraid access
Serial.begin(115200);
dht.begin();
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_A);
// Set Data Rate
lora.setDataRate(SF10BW125);
// Set FramePort Tx
lora.setFramePortTx(5);
// set channel to random
lora.setChannel(MULTI);
// 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();
int t,h;
t = getTemperature();
h = getHumidity();
Serial.println("Temperature : " + (String)t+" C");
Serial.println("Humidity : " + (String)h+" %");
dataSend = "{\"Temp\": " + (String)t + ", \"Humd\": " + (String)h +"}";
dataSend.toCharArray(myStr,50);
Serial.print("Sending: ");
Serial.println(dataSend);
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 proses upload kode program selesai, silakan periksa data yang masuk pada Device Antares yang telah Anda buat sebelumnya. Jika berhasil maka tampilan pada Device Anda akan seperti berikut ini:
