RisalDash RisalDash

مشروع · LoRa · مدى بعيد

كيلومترات من الراديو بلا إنترنت إطلاقًا

يموت Wi-Fi عند السور. وحدة LoRa بأربعة دولارات تواصل الكلام كيلومتراتٍ — حسّاسات مزرعة، كوخ جبليّ، قارب راسٍ — بلا بوّابة ولا شريحة اتّصال ولا رسم شهريّ. هذا البناء يربط لوحتي ESP32 نقطة-إلى-نقطة ويضع RSSI وSNR وسجلّ حركة حيًّا على لوحة كلّ عقدة — فترى جودة الوصلة وأنت تبتعد.

مشروعLoRaSX1278راديوESP32
مشروع LoRa نقطة-إلى-نقطة بـ ESP32: SX1278 وRSSI وSNR حيًّا بلا إنترنت

التوصيل — SPI عاديّ وطرفا تحكّم

SX1278 جهاز SPI: خطوط SCK/MISO/MOSI مشتركة، وNSS خاصّ به، وخطّ RST، وDIO0 كمقاطعة «الحزمة جاهزة». قاعدة فيزيائيّة واحدة فوق كلّ شيء: لا تُرسل أبدًا بلا هوائيّ — يموت المضخّم في ثوانٍ.

وحدة LoRa SX1278 موصّلة بـ ESP32 عبر SPI مع NSS وRST وDIO0
SX1278 على VSPI في ESP32. مبنيّ في BoardLab.

البروتوكول — منارة لا مكدّس

لا يحتاج LoRa النقطيّ مكدّس LoRaWAN. كلّ عقدة تبثّ ID:عدّاد؛ وكلّ ما يُسمع بغير هويّتك هو النظير. يُسقط CRC العتاديّ الحزم الفاسدة بصمت، ومهلة 10 ثوانٍ تقود ليد «النظير متّصل»:

#define NODE_ID 'A'             // flash 'A' on one board, 'B' on the other
#define FREQ 433E6              // match your module + region!

LoRa.setPins(LORA_NSS, LORA_RST, LORA_DIO0);
if (!LoRa.begin(FREQ)) { evlog->print("LoRa init FAILED"); return; }
LoRa.enableCrc();               // drop corrupt packets in hardware

// Beacon "A:123" every couple of seconds:
LoRa.beginPacket();
LoRa.print(String((char)NODE_ID) + ":" + String(++txNo));
LoRa.endPacket();
int sz = LoRa.parsePacket();
if (sz) {
  String msg;
  while (LoRa.available()) msg += (char)LoRa.read();
  if (msg.length() && msg[0] != NODE_ID) {      // anything not ours = the peer
    recv += 1;
    rssi = LoRa.packetRssi();                   // link strength, dBm
    snr  = LoRa.packetSnr();                    // quality above the noise floor
    if (evlog) evlog->print(msg + "  " + String((int)rssi) + " dBm");
  }
}
online = millis() - lastHear < 10000;           // peer-online LED

احرق الكود الجاهز (examples/06_Projects/LoRaLink، المكتبة sandeepmistry/LoRa) على لوحتين — NODE_ID 'A' و'B' — فتقدّم كلٌّ منهما لوحتها AP. ⚠ اضبط FREQ لمنطقتك: 433 MHz (آسيا/EU ISM)، 868 MHz (أوروبا)، 915 MHz (أميركا).

قراءة RSSI وSNR

القراءةالمدىالمعنى
RSSI −40…−90 dBmقويّهامش وافر
RSSI −90…−110 dBmعاملمنطقة المدى البعيد الطبيعيّة
RSSI −110…−125 dBmالحافّةيفكّ LoRa الترميز حتّى تحت الضجيج — راقب SNR
SNR > 0 dBنظيفالإشارة فوق الضجيج
SNR 0…−15 dBمنطقة السحرهنا لا ينجو سوى LoRa

أذرع المدى: عامل انتشار أعلى (SF7→SF12) يشتري كيلومترات بثمن زمن البثّ؛ وعرض نطاق أضيق يساعد أيضًا. لعقدة بطاريّة اجمعها مع النوم العميق: منارة، نوم، تكرار. ومقارنة LoRa بـ ESP-NOW وZigbee وسواها في دليل البروتوكولات اللاسلكيّة؛ وشبكة mesh فوق LoRa في Meshtastic.

لوحتان وهوائيّان — ووصلة تراقبها بالـ dBm.