Главная → Связь

LoRa-модуль Ra-02 (SX1278): связь на километры без интернета — обзор и подключение

26 сентября 2026 · Связь

Что это за модуль

Wi-Fi и Bluetooth работают на десятки метров, сотовой связи в поле нет, а передать показания датчика с дачи или с бочки на огороде хочется. Для этого случая придумана LoRa — чирп-сигнал (chirp spread spectrum), который принимается из-под уровня шума. Модуль Ra-02 от Ai-Thinker построен на трансивере Semtech SX1278 и стоит пару сотен рублей. При мощности всего +20 дБм (100 мВт) связка «передатчик — приёмник» на открытой местности держит километры: по datasheet SX1278 — больше 10 км при прямой видимости, сквозь городскую застройку — сотни метров. Все цифры ниже — из datasheet Semtech SX1276/77/78/79 и спецификаций производителя модуля, не по памяти.

Почему дальность побеждает скорость

У LoRa два главных винта: spreading factor (SF6–SF12) и полоса (7,8–500 кГц). Чем выше SF, тем сильнее сигнал «размазан» по времени, тем ниже скорость, но тем ниже требуемый уровень сигнала на входе. При SF12 и узкой полосе чувствительность доходит до −148 дБм — сигнал, который в десятки раз слабее шума. Скорость при этом падает до десятков бит в секунду; на верхнем пределе LoRa даёт 37,5 кбит/с. Помимо LoRa чип умеет FSK/GFSK/OOK — до 300 кбит/с, если нужен обычный радиоканал. Есть режим CAD (Channel Activity Detection): чип «подслушивает» эфир и отвечает, идёт ли передача, — на этом строятся сети из многих передатчиков.

Характеристики по паспорту

Параметр Значение (Ra-02 / SX1278)
Чип Semtech SX1278, модуль Ai-Thinker Ra-02
Диапазон 410–525 МГц, рабочая частота проектов — 433 МГц
Мощность передачи до +20 дБм (100 мВт).
Чувствительность приёмника до −148 дБм (SF12, узкая полоса)
Скорость ~18 бит/с (SF12) … 37,5 кбит/с (LoRa); до 300 кбит/с в FSK
Spreading factor / полоса SF6–SF12; полоса 7,8–500 кГц
Питание 1,8–3,7 В, номинал 3,3 В; питание 5 В — нельзя
Ток TX 105–120 мА, RX ~10,8–12 мА, standby 1,6 мА, сон 0,2 мкА
Интерфейс SPI (NSS/SCK/MOSI/MISO) + RESET + DIO0–DIO5, полудуплекс
Пакетный движок до 256 байт на пакет, аппаратный CRC
Антенна U.FL (IPEX) в этой версии; есть варианты с пайкой на площадку
Корпус SMD с краевыми пазами, шаг 2 мм, металлический экран
Температура −40…+85 °C

Подключение к Arduino и ESP32

У модуля 16 контактных площадок, но по делу хватает половины: GND, 3,3 В, RESET, NSS, SCK, MOSI, MISO, DIO0. Остальные DIO пригодятся для расширенных режимов — прерываний по приёму и по окончании передачи в библиотеках RadioHead.

  1. Питание — только 3,3 В. Верхняя граница всего 3,7 В, и логика трёхвольтовая. Максимум на цифровых входах чипа — VDD + 0,3 В, то есть около 3,6 В. С 5-вольтовой Arduino Uno сигналы в модуль подавать напрямую нельзя — ставь резисторный делитель или преобразователь уровней.
  2. Не питай от стабилизатора Arduino Uno. Встроенный 3,3-вольтовый регулятор Uno даёт около 50 мА, а при передаче на полной мощности модуль тянет 105–120 мА. Нужен внешний стабилизатор с запасом от 200 мА или плата, у которой 3,3 В «родные» — ESP8266, ESP32.
  3. Антенна — до подачи питания. Передача на +20 дБм без подключённой антенны пробивает выходной каскад чипа. Сначала антенна, потом питание.
  4. RESET — на GPIO. Библиотеки сами дёргают его при старте; висящий в воздухе RESET означает непредсказуемое поведение.
  5. Куда подключать. Для кода ниже: NSS→D10 (ESP32: GPIO5), SCK→D13 (GPIO18), MOSI→D11 (GPIO23), MISO→D12 (GPIO19), RESET→D9 (GPIO14), DIO0→D2 (GPIO26), земля — общая с платой.
// Передатчик на Ra-02 (SX1278): раз в 10 секунд шлёт пакет
// Библиотека: "LoRa" от sandeepmistry — https://github.com/sandeepmistry/arduino-LoRa

#include <SPI.h>
#include <LoRa.h>

#define NSS_PIN    10   // ESP32: 5
#define RESET_PIN   9   // ESP32: 14
#define DIO0_PIN    2   // ESP32: 26

void setup() {
  Serial.begin(115200);
  LoRa.setPins(NSS_PIN, RESET_PIN, DIO0_PIN);
  if (!LoRa.begin(433E6)) {          // частота 433 МГц
    Serial.println("LoRa не запустился");
    while (1);
  }
  LoRa.setSpreadingFactor(10);       // SF6-SF12: выше = дальше и медленнее
  LoRa.setSignalBandwidth(125E3);    // 7.8E3 ... 500E3
  LoRa.setCodingRate4(8);            // 5..8: выше = надёжнее, ниже скорость
  Serial.println("Готов к передаче");
}

int counter = 0;
void loop() {
  LoRa.beginPacket();
  LoRa.print("Temp: ");
  LoRa.print(18.5 + (counter % 3));  // подставь свои данные
  LoRa.print(" #");
  LoRa.println(counter++);
  LoRa.endPacket();
  Serial.println("Пакет отправлен");
  delay(10000);
}

Приёмник: тот же LoRa.begin с той же частотой и теми же SF/полосой; LoRa.parsePacket() в цикле вытащит пакет, LoRa.Rssi() и LoRa.packetSnr() покажут качество линии — на этих двух числах настраивают антенны и размещение. Главное правило: несовпадение любого параметра не даёт ошибки, приёмник просто молчит. SF10 на 125 кГц и SF10 на 250 кГц друг друга не слышат.

Частые ошибки

  1. Кормят модуль 5 вольтами. Максимум 3,7 В, логика 3,3-вольтовая. От 5 В чип живёт недолго или вообще не стартует.
  2. Передают без антенны. Выходной каскад деградирует даже если тест пакетов проходил.
  3. Питают от встроенного 3,3 В Uno. Технически недостаточно: при передаче 105–120 мА, регулятор даёт ~50 мА. Передача срезается или модуль перезагружается.
  4. Разные SF или полоса у передатчика и приёмника. Пакеты не доходят, никакой ругани нет. Каждый раз сверяй setSpreadingFactor и setSignalBandwidth с обеих сторон.
  5. Ждут 10 км в квартире. Сквозь бетон — сотни метров, километры — на открытом рельефе при прямой видимости и антенне повыше.
  6. Превышают нормы эфира. 433 МГц — ISM-диапазон, но по регионам действуют свои регламенты по мощности и скважности передачи.
  7. Гонят большие объёмы. LoRa — узкобитный канал: минуты на сотни килобайт. Для телеметрии и команд — да, для картинок и конфигов — нет.

Что взять под задачу

Собрал датчики на участке и не хочешь тянуть кабель или городить Wi-Fi там, где его нет — Ra-02 дешевле и гибче: батарейный узел, дальность в километры, никакой инфраструктуры. Питание для узлов собирается из DC-DC преобразователей, а если нужно на линии ещё и распознавание адресов — смотри в сторону RS-485 на MAX485 для стационарных линий: LoRa там не конкурент, но и радиоканал — не про RS-485.

Информация собрана из открытых источников и паспортов производителей и не является истиной в последней инстанции. Характеристики, распиновку и совместимость проверяйте по документации конкретной партии модуля перед покупкой и подключением.

Читайте дальше

Моторы и приводы

Драйвер моторов L298N: обзор, схема, честные минусы

Синяя платка с большим радиатором — первое, что попадает в руки при сборке машинки на Arduino. Внутри микросхема STMicroelectronics L298: два полных…

Читать обзор →
Дисплеи

Дисплей LCD1602 с I2C-переходником PCF8574: обзор и подключение

Экран 16×2 — первый дисплей, который берёт новичок, и первая же ловушка: ему нужны шесть проводов данных и управления, плюс отдельная подстройка…

Читать обзор →
Датчики

Тензодатчик и HX711: делаем электронные весы

Почему датчику не обойтись без усилителя Электронные весы — это пара: тензодатчик, превращающий деформацию металла в изменение сопротивления, и АЦП-усилитель, потому что…

Читать обзор →