Skip to main content

Беспроводная связь (WiFi/BLE/LoRa) - от пульта до интернета

Представьте робота, который должен работать без проводов: дрон в воздухе, робот-исследователь в поле, манипулятор в цеху. Каждый сценарий требует своего способа связи — быстрого, дальнего или экономного.


Сравнение протоколов (кратко)

ПротоколМакс. дальностьСкоростьПотреблениеЛучше всего для
Bluetooth (BLE)10-50 м1 Мбит/с★☆☆☆☆ (самый экономичный)Управление с телефона, настройка
Wi-Fi50-100 м50-300 Мбит/с★★★★★ (самый “прожорливый”)Видео, большие данные, интернет
LoRa2-10 км0.3-50 кбит/с★★☆☆☆ (очень экономичный)Дальняя связь, маяки, метеостанции

1. Bluetooth / BLE — для управления с телефона

Как работает: Как гарнитура для телефона, только для робота.

Что умеет:

  • Подключение к смартфону/планшету
  • Передача простых команд (“вперед”, “налево”)
  • Отправка телеметрии (скорость, заряд батареи)
  • Работа годами от батарейки-таблетки

Практический пример: Пульт для робота

Сценарий:
• Робот на Arduino + модуль HC-05
• Приложение на телефоне (MIT App Inventor или готовое)
• При нажатии кнопки "Вперед" → телефон отправляет 'F'
• Робот получает 'F' → едет вперед

Код на Arduino:

#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11); // RX, TX

void setup() {
  Serial.begin(9600);
  BT.begin(9600); // Скорость Bluetooth
}

void loop() {
  if (BT.available()) {
    char command = BT.read();
    if (command == 'F') goForward();
    if (command == 'S') stop();
    if (command == 'L') turnLeft();
  }
}

Плюсы:

  • Встроен в ESP32 (бесплатно)
  • Простое подключение
  • Малое потребление

Минусы:

  • Недалеко (комната, коридор)
  • Нельзя передать видео

2. Wi-Fi — для всего серьезного

Как работает: Как домашний интернет, только для робота.

Что умеет:

  • Передавать видео с камеры
  • Управление через веб-страницу
  • Отправка данных в облако
  • Обновление прошивки “по воздуху”

Практический пример: FPV-робот с камерой

Компоненты:
• ESP32-CAM (камера + Wi-Fi)
• Двигатели для шасси
• Power Bank

Как работает:
1. ESP32 подключается к Wi-Fi
2. Создает веб-сервер
3. На компьютере/телефоне открываете страницу 192.168.1.10
4. Видите видео и кнопки управления

Код (упрощенно):

#include <WiFi.h>
#include <WebServer.h>

const char* ssid = "Ваш_Wi-Fi";
const char* password = "Ваш_пароль";

WebServer server(80);

void handleRoot() {
  String html = "<h1>Управление роботом</h1>";
  html += "<button onclick='fetch(\"/forward\")'>Вперед</button>";
  server.send(200, "text/html", html);
}

void setup() {
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) delay(500);
  
  server.on("/", handleRoot);
  server.on("/forward", [](){ goForward(); server.send(200); });
  server.begin();
}

void loop() {
  server.handleClient();
}

Плюсы:

  • Высокая скорость (видео, звук)
  • Доступ из любой точки мира (через интернет)
  • Много готовых библиотек

Минусы:

  • “Ест” батарею (ESP32 с Wi-Fi: ~100-200 мА)
  • Нужен роутер или точка доступа

3. LoRa — для супердальней связи

Как работает: Как рация, только цифровая.

Что умеет:

  • Связь на километры без интернета
  • Работа от батареек месяцами
  • Проходить через стены и деревья

Практический пример: Метеостанция в поле

Сценарий:
• Датчики (температура, влажность, давление) в поле
• Передатчик LoRa отправляет данные раз в час
• Приемник LoRa дома получает и показывает на экране
• Расстояние: 3 км

Схема подключения:

[Датчики + Arduino + LoRa модуль] в поле
               (радиоволны 868 МГц)
[Arduino + LoRa модуль + Экран] дома

Важные настройки LoRa:

// Типичные параметры для России
#define FREQUENCY 868.0  // МГц (в России 868 или 434)
#define BANDWIDTH 125.0  // кГц (чем меньше — дальше, но медленнее)
#define SPREADING_FACTOR 7  // от 6 до 12 (чем больше — надежнее, но медленнее)

Плюсы:

  • Очень далеко (километры!)
  • Очень экономично
  • Не требует инфраструктуры (роутеров)

Минусы:

  • Очень медленно (несколько байт в секунду)
  • Нельзя передать даже картинку
  • Нужна лицензия на некоторые частоты

4. MQTT — умная передача данных

Что это: Не способ связи, а “язык” для общения поверх Wi-Fi/LoRa/Ethernet.

Как работает: Как чат в телеграме с каналами.

  • Робот “публикует” в канал robot/temperature
  • Компьютер “подписывается” на этот канал
  • Сервер (брокер) пересылает сообщения

Пример с ESP32 и домашним сервером:

#include <WiFi.h>
#include <PubSubClient.h>

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  WiFi.begin("ssid", "password");
  client.setServer("192.168.1.100", 1883); // Адрес брокера
  client.connect("robot01");
}

void loop() {
  float temp = readTemperature();
  client.publish("home/robot01/temp", String(temp).c_str());
  delay(10000); // Отправлять каждые 10 секунд
}

Зачем нужно:

  • Один робот → много получателей (телефон, компьютер, облако)
  • Сохранение данных если получатель отключился
  • Простая интеграция с Home Assistant, Node-RED

Как выбрать для школьного проекта?

Проект 1: Робот для соревнований в зале

Что нужно: Управление с пульта, быстрая реакция
Выбор: Bluetooth (BLE)
Почему: Просто, не нужен Wi-Fi, мало помех в зале

Проект 2: Робот-исследователь для школы

Что нужно: Передавать видео, управлять через сайт
Выбор: Wi-Fi (ESP32-CAM)
Почему: Можно показывать видео на экране, много детей управляют

Проект 3: Метеостанция на школьном стадионе

Что нужно: Данные с далекого места без розетки
Выбор: LoRa
Почему: Работает от батареек, далеко, не нужен интернет

Частые проблемы беспроводной связи

Проблема 1: “Wi-Fi не подключается в школе”

Причина: Школьный Wi-Fi требует авторизации
Решение: 
1. Использовать режим точки доступа (AP) на ESP32
2. Принести свой роутер
3. Использовать мобильную точку доступа

Проблема 2: “Bluetooth отключается через 10 метров”

Причина: Препятствия (стены, люди)
Решение:
1. Убедиться, что это BLE 5.0 (лучше проходит препятствия)
2. Использовать внешнюю антенну
3. Уменьшить скорость для большей дальности

Проблема 3: “LoRa не работает в городе”

Причина: Помехи от Wi-Fi, вышек
Решение:
1. Использовать частоту 434 МГц (менее загружена)
2. Увеличить spreading factor (SF)
3. Поднять антенну выше

Эксперимент: Сделай свой Wi-Fi пульт

Что нужно:

  • ESP32 (например, NodeMCU)
  • 2 светодиода
  • Макетная плата

Шаги:

  1. Подключите светодиоды к пинам 12 и 14

  2. Загрузите код:

    #include <WiFi.h>
    #include <WebServer.h>
    
    WebServer server(80);
    
    void handleRoot() {
      String page = "<h1>Пульт управления</h1>";
      page += "<button onclick='fetch(\"/ledon\")'>ВКЛ красный</button>";
      page += "<button onclick='fetch(\"/ledoff\")'>ВЫКЛ красный</button>";
      server.send(200, "text/html", page);
    }
    
    void setup() {
      pinMode(12, OUTPUT);
      WiFi.softAP("RobotRemote", "12345678");
      server.on("/", handleRoot);
      server.on("/ledon", [](){ digitalWrite(12, HIGH); server.send(200); });
      server.begin();
    }
    
    void loop() { server.handleClient(); }
    
  3. Подключитесь к Wi-Fi “RobotRemote” с паролем “12345678”

  4. Откройте 192.168.4.1 в браузере

  5. Нажимайте кнопки — светодиоды загораются!


Проверь себя

Смогу ли я:

  1. Выбрать беспроводной протокол для дрона с камерой?
  2. Настроить Bluetooth для управления роботом с телефона?
  3. Объяснить, почему LoRa нельзя использовать для видео?
  4. Создать простой веб-интерфейс для робота на ESP32?

Если на все вопросы можете ответить — вы готовы делать беспроводных роботов!


Что дальше?

Разобрались с беспроводной связью? Теперь можно:

Совет: Начните с самого простого — Bluetooth управления. Потом сделайте Wi-Fi веб-интерфейс. Только потом пробуйте LoRa для действительно дальних проектов. Каждый протокол решает свою задачу — не пытайтесь одним решить всё.