Uncategorized

ESP32 + LoRa: узел датчиков дальнего радиуса (до 8 км)

Проблема

WiFi отлично работает — пока вам не нужно поставить датчик в саду в 200 метрах от дома. Или на ферме за долиной. Или внутри металлического склада. WiFi умирает на 50 метрах. Bluetooth — на 10.

LoRa меняет всё. С модулем E32 (915 МГц, 1 Вт) можно передавать данные датчиков на расстояние до 8 километров — без сотовой вышки, без WiFi и без ежемесячных платежей.

Что вы соберёте

Узел датчиков LoRa с питанием от батареи, который:

  • Считывает температуру и влажность
  • Передаёт данные по LoRa на приёмник
  • Уходит в глубокий сон на 10 минут между измерениями (батареи хватает на месяцы)

Сложность: для начинающих  |  Время: 45 минут  |  Стоимость: ~$40 за детали

Нужное железо (спецификация)

Деталь Модель Кол-во Цена Купить
Микроконтроллер (передатчик) ESP32 DevKitC V4 1 $13.49 Смотреть товар
Микроконтроллер (приёмник) ESP32-C3 SuperMini 1 $7.49 Смотреть товар
Модуль LoRa E32-915T30D (915 МГц) 2 $11.99 за шт. Смотреть товар
Датчик температуры/влажности DHT22 1 $5.24 Смотреть товар
Питание от батареи Шилд 18650 1 $11.99 Смотреть товар
Макетная плата 830 точек 1 $4.49 Смотреть товар
Провода-перемычки M-M, 40 шт. 1 $2.99 Смотреть товар

Важно про частоту: модули E32 бывают в версиях 433 МГц, 868 МГц и 915 МГц. Они НЕ умеют общаться друг с другом. Убедитесь, что оба модуля на ОДНОЙ частоте. В США используется 915 МГц.

Шаг 1: Монтаж (узел-передатчик)

Модуль LoRa E32 работает через UART — это заметно проще, чем LoRa-модули на SPI. Никаких сложных библиотек!

Пин E32 LoRa Пин ESP32 Примечание
VCC 5V Питание (сверьтесь со спецификацией модуля)
GND GND Земля
RXD GPIO 17 (TX2) RX модуля ← TX ESP32
TXD GPIO 16 (RX2) TX модуля → RX ESP32
M0 GND Режим передачи
M1 GND Режим передачи
DATA DHT22 GPIO 13 Данные датчика

Перекрёстное соединение TX↔RX: UART — как телефонный разговор: ваш рот (TX) подключается к чужому уху (RX). Всегда соединяйте крест-накрест: TXD модуля → RX2 ESP32, RXD модуля → TX2 ESP32.

Шаг 2: Код передатчика

Загрузите это на ESP32-передатчик (тот, что с датчиком DHT22):

#include <HardwareSerial.h>
#include "DHT.h"

HardwareSerial LoRaSerial(2); // ESP32 Serial2 (GPIO 16, 17)

#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

// Deep sleep: 10 minutes between readings
#define uS_TO_S_FACTOR 1000000ULL
#define TIME_TO_SLEEP  600

void setup() {
  Serial.begin(115200);
  Serial.println("sensbench LoRa Sensor Node");

  LoRaSerial.begin(9600);
  dht.begin();
  delay(2000);

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("Sensor read failed!");
  } else {
    String data = "T:" + String(t, 1) + "C H:" + String(h, 1) + "%";
    Serial.println("Sending: " + data);
    LoRaSerial.println(data);
  }

  Serial.println("Deep sleeping for 10 minutes...");
  Serial.flush();

  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  esp_deep_sleep_start();
}

void loop() {
  // Not reached after deep sleep
}

Шаг 3: Код приёмника

Загрузите это на ESP32-приёмник (подключённый к компьютеру):

#include <HardwareSerial.h>

HardwareSerial LoRaSerial(2);

void setup() {
  Serial.begin(115200);
  Serial.println("sensbench LoRa Receiver");
  LoRaSerial.begin(9600);
}

void loop() {
  if (LoRaSerial.available()) {
    String data = LoRaSerial.readString();
    Serial.print("Received: ");
    Serial.println(data);
  }
}

Шаг 4: Проверьте

  1. Запитайте узел-передатчик от шилда 18650
  2. Подключите приёмник к компьютеру и откройте Serial Monitor (115200 бод)
  3. Каждые 10 минут вы будете видеть температуру и влажность, прилетающие с расстояния до 8 км

Почему это так хорошо работает

  • Глубокий сон: в глубоком сне ESP32 потребляет всего 10µА. С батареей 18650 на 2000 мАч узел датчиков проживёт больше 3 месяцев на одном заряде.
  • LoRa по UART: в отличие от LoRa на SPI (SX1276), модуль E32 общается простым последовательным портом. Никакой сложной библиотеки, никакой путаницы с проводами SPI и регистрами конфигурации.
  • Мощность 1 Вт (30 дБм): E32-915T30D — это версия повышенной мощности. Обычные модули выдают 20 дБм (100 мВт). Этот — 30 дБм (1000 мВт): в 10 раз больше мощности, в 3 раза больше радиус.

Идём дальше

  • Добавьте узлы датчиков: каждый узел шлёт данные по своему расписанию, чтобы не было коллизий
  • Пересылайте в облако: подключите ESP32-приёмник к WiFi и передавайте данные LoRa в MQTT
  • Солнечное питание: добавьте небольшую солнечную панель к шилду 18650 для постоянной установки
  • Соберите сеть: несколько приёмников могут ретранслировать данные на ещё большие расстояния

Leave a Reply

Your email address will not be published. Required fields are marked *