Проект · LoRa · Дальняя связь
Километры радио — совсем без интернета
Wi-Fi умирает у забора. LoRa-модуль за $4 продолжает говорить километрами — датчики на ферме, домик в горах, лодка на якоре — без шлюза, SIM-карты и абонплаты. Эта сборка связывает два ESP32 точка-точка и выводит RSSI, SNR и живой журнал трафика на дашборд каждого узла — видно, как тает связь, пока вы уходите.
Подключение — обычный SPI плюс два управляющих пина
SX1278 — SPI-устройство: общие SCK/MISO/MOSI, свой NSS chip-select, линия RST и DIO0 как прерывание «пакет готов». Одно физическое правило важнее всего: никогда не передавать без антенны — усилитель умирает за секунды.
Протокол — бикон, а не стек
P2P LoRa не требует LoRaWAN-стека. Каждый узел биконит ID:счётчик; всё услышанное не со
своим ID — это пир. Аппаратный CRC молча отбрасывает битые пакеты, а таймаут в 10
секунд управляет LED «peer online»:
#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 МГц (Азия/EU ISM), 868 МГц (EU),
915 МГц (US).
Читаем RSSI и SNR
| Показание | Диапазон | Смысл |
|---|---|---|
| RSSI −40…−90 dBm | сильный | запас с головой |
| RSSI −90…−110 dBm | рабочий | нормальная «дальняя» зона |
| RSSI −110…−125 dBm | край | LoRa декодирует и ниже шума — смотрите SNR |
| SNR > 0 dB | чисто | сигнал выше шума |
| SNR 0…−15 dB | магия LoRa | здесь выживает только LoRa |
Рычаги дальности: больший spreading factor (SF7→SF12) покупает километры ценой эфирного времени; уже и полоса помогает. Для батарейного узла — пара с deep sleep: бикон, сон, повтор. Как LoRa соотносится с ESP-NOW, Zigbee и остальными — гайд по беспроводным протоколам; mesh поверх LoRa — Meshtastic.
Две платы, две антенны — и связь, за которой следишь по dBm.