LoRaWAN چه تفاوتی با LoRa دارد؟
LoRa فقط لایه فیزیکی (امواج رادیویی) است. LoRaWAN یک پروتکل شبکه روی آن است که چارچوب بسته، رمزنگاری AES-128، و آدرسدهی دستگاه را اضافه میکند. TTN (The Things Network) یک شبکه LoRaWAN عمومی رایگان است با Gatewayهایی در شهرهای مختلف جهان — از طریق سایتش میتوانی ببینی Gateway در شهرت هست یا نه.
اگر Gateway در منطقهات نیست، میتوانی یک RAK831 Gateway (~۱.۵M تومان) با Raspberry Pi بسازی — بسیاری از جوامع مکر ایران این کار را کردهاند.
🛠️ کارت پروژه
| ماژول | TTGO LoRa32 یا Heltec WiFi LoRa 32 (~۴۵۰K) |
| شبکه | TTN v3 (رایگان، ایران سرپوشیده نیست) |
| داشبورد | Cayenne by myDevices یا Node-RED |
مراحل ثبت دستگاه در TTN
- در thethingsnetwork.org ثبتنام کن.
- Console → Applications → Add Application.
- Add Device → DevEUI را از ماژول بخوان، یا random generate کن.
- Authentication Mode: OTAA — AppEUI و AppKey را کپی کن.
کد ESP32 + LoRa برای TTN
// کتابخانه: MCCI LoRaWAN LMIC library
#include <lmic.h>
#include <hal/hal.h>
#include <TinyGPS++.h>
// کلیدهای TTN — از Console کپی کن
static const u1_t PROGMEM APPEUI[8]={0x00,...};
static const u1_t PROGMEM DEVEUI[8]={0x00,...};
static const u1_t PROGMEM APPKEY[16]={0x00,...};
// Payload: lat(4B) + lng(4B) + alt(2B) = 10 bytes
void buildPayload(uint8_t* buf, float lat, float lng, float alt){
int32_t ilat = (int32_t)(lat * 10000);
int32_t ilng = (int32_t)(lng * 10000);
int16_t ialt = (int16_t)(alt);
memcpy(buf, &ilat, 4);
memcpy(buf+4, &ilng, 4);
memcpy(buf+8, &ialt, 2);
}
void do_send(osjob_t* j){
if(LMIC.opmode & OP_TXRXPEND) return;
uint8_t payload[10];
buildPayload(payload, gps.location.lat(), gps.location.lng(), gps.altitude.meters());
LMIC_setTxData2(1, payload, sizeof(payload), 0);
}