GNU Radio و رمزگشایی LoRa چیست؟ (مبتدی)
GNU Radio یک محیط پردازش سیگنال متنباز است که با بلوکهای گرافیکی (مشابه Blockly) کار میکند. به جای کدنویسی، بلوکهایی مثل “RTL-SDR Source”، “FFT”، “LoRa Decoder” را با خطوط به هم وصل میکنید و یک گیرنده کامل LoRa میسازید.
LoRa از مدولاسیون CSS (Chirp Spread Spectrum) استفاده میکند — فرکانس سیگنال به آرامی از پایین به بالا (یا بالا به پایین) تغییر میکند. این Chirpها در Waterfall شکل اریب دارند و با پلاگین gr-lora میتوان payload واقعی را استخراج کرد.
هدف این راهنما
شنود و رمزگشایی پکتهای LoRa واقعی ارسالشده از یک Arduino+SX1278 با GNU Radio و RTL-SDR.
- هزینه: RTL-SDR ۱۵-۳۰ دلار + نرمافزار رایگان
- سیستمعامل: Linux (Ubuntu) پیشنهادی
- پیشنیاز: یک ماژول LoRa ارسالکننده
نصب GNU Radio و gr-lora در Ubuntu
# نصب GNU Radio:
sudo apt install -y gnuradio gnuradio-dev
# نصب پلاگین RTL-SDR:
sudo apt install -y gr-osmosdr
# نصب gr-lora (رمزگشای LoRa):
sudo apt install -y cmake libboost-all-dev libspdlog-dev
git clone https://github.com/rpp0/gr-lora.git
cd gr-lora && mkdir build && cd build
cmake .. && make -j4
sudo make install && sudo ldconfig
# تأیید نصب:
python3 -c "import lora; print('gr-lora OK')"
ساخت Flowgraph در GNU Radio Companion
// بلوکهای لازم در GNU Radio Companion:
// ۱. RTL-SDR Source
// Device: rtl=0
// Sample Rate: 1M
// Center Freq: 433.175M (فرکانس LoRa شما)
// ۲. Low Pass Filter
// Cutoff: 125000 Hz (BW=125kHz)
// Transition: 10000 Hz
// ۳. lora_receiver (از gr-lora)
// SF: 7 (Spreading Factor)
// BW: 125000
// CR: 4/8 (Code Rate)
// Implicit: False
// ۴. Message Debug
// نمایش payload در Console
// اتصال: RTL-SDR → LPF → lora_receiver → Message Debug
// payload در console:
// pkt_len=13 payload=[0x48 0x65 0x6C 0x6C 0x6F] = "Hello"
برنامه TX LoRa برای تست (Arduino)
#include <LoRa.h>
void setup() {
LoRa.begin(433.175E6);
LoRa.setSpreadingFactor(7); // SF7
LoRa.setSignalBandwidth(125E3); // BW 125kHz
LoRa.setCodingRate4(8); // CR 4/8
LoRa.setTxPower(14);
}
void loop() {
LoRa.beginPacket();
LoRa.print("Hello from UGV");
LoRa.endPacket();
delay(5000);
}
چکلیست رمزگشایی
| بررسی | نتیجه |
|---|---|
| Chirp در Waterfall دیده میشود؟ | خطوط اریب زرد |
| SF و BW مطابقت دارد؟ | همان تنظیم TX |
| payload در console ظاهر میشود؟ | Message Debug |
| CRC Error ندارد؟ | RSSI بالای -۱۲۰dBm باشد |