Беспроводная связь (WiFi/BLE/LoRa) - от пульта до интернета
Представьте робота, который должен работать без проводов: дрон в воздухе, робот-исследователь в поле, манипулятор в цеху. Каждый сценарий требует своего способа связи — быстрого, дальнего или экономного.
Сравнение протоколов (кратко)
| Протокол | Макс. дальность | Скорость | Потребление | Лучше всего для |
|---|---|---|---|---|
| Bluetooth (BLE) | 10-50 м | 1 Мбит/с | ★☆☆☆☆ (самый экономичный) | Управление с телефона, настройка |
| Wi-Fi | 50-100 м | 50-300 Мбит/с | ★★★★★ (самый “прожорливый”) | Видео, большие данные, интернет |
| LoRa | 2-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 светодиода
- Макетная плата
Шаги:
Подключите светодиоды к пинам 12 и 14
Загрузите код:
#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(); }Подключитесь к Wi-Fi “RobotRemote” с паролем “12345678”
Откройте 192.168.4.1 в браузере
Нажимайте кнопки — светодиоды загораются!
Проверь себя
✅ Смогу ли я:
- Выбрать беспроводной протокол для дрона с камерой?
- Настроить Bluetooth для управления роботом с телефона?
- Объяснить, почему LoRa нельзя использовать для видео?
- Создать простой веб-интерфейс для робота на ESP32?
Если на все вопросы можете ответить — вы готовы делать беспроводных роботов!
Что дальше?
Разобрались с беспроводной связью? Теперь можно:
- MQTT и облака — как отправлять данные в интернет
- Безопасность связи — как защитить робота от взлома
- ROS 2 over Wi-Fi — как использовать профессиональные фреймворки
Совет: Начните с самого простого — Bluetooth управления. Потом сделайте Wi-Fi веб-интерфейс. Только потом пробуйте LoRa для действительно дальних проектов. Каждый протокол решает свою задачу — не пытайтесь одним решить всё.
