WiDC: Wi‑Fi FPV-робот — дистанционное управление с видео в реальном времени
Компоненты и материалы
| Arduino UNO | ×1 |
| ESP8266 ESP-01 (Espressif) | ×1 |
| Arduino Proto Shield | ×1 |
| DC-мотор с колесом | ×1 |
| H-мост (драйвер двигателей) | ×1 |
Приложения и онлайн-сервисы
- Autodesk Fusion 360 — для 3D-моделирования корпуса
- Arduino IDE — для написания и загрузки кода
О проекте
Хотите использовать радиоуправляемого робота для исследования окружающей среды, доступа к труднодоступным местам, видеонаблюдения, съемки фото/видео или трансляции видео? Это руководство покажет, как собрать недорогого робота для всех этих задач!
Это улучшенная версия моего предыдущего урока (Wi-Fi Controlled FPV Rover Robot with Arduino ESP8), в которой представлен более быстрый самодельный робот. Руководство демонстрирует, как спроектировать и собрать двухколесного робота с дистанционным управлением по Wi-Fi, используя два DC-мотора, Arduino Uno и модуль ESP8266.
Управление роботом осуществляется через обычный браузер с помощью HTML-интерфейса. Android-смартфон, установленный на роботе, передает видео и аудио на панель управления.
Как и в предыдущем уроке, показано, как спроектировать и собрать недорогую раму для робота, используя только обычные инструменты (без 3D-принтера, лазерного резака или ЧПУ-станка).
Примечание: Используемые компоненты могут быть не оптимальны. Например, вместо связки Arduino + ESP8266 можно использовать NodeMCU. Raspberry Pi с камерой заменил бы смартфон и управлял бы моторами. Даже сам смартфон может стать «мозгом» робота. Однако в этом уроке выбрана доступная и простая для всех платформа Arduino Uno, так как проект основан на другом проекте — Joy Robot (Hackaday / Hackster), где использовалось то же железо для простоты. В оригинальном проекте также управлялись сервоприводы и LED-матрицы.
Связанные руководства:
- Управление LED-матрицей с Arduino Uno
- Wi-Fi браузерное управление сервоприводами
- Wi-Fi робот на WeMos D1 и Blynk
Шаг 1: Инструменты
Для сборки прототипа использовались:
- Ручная пила (для резки акрила)
- Отвертка (для болтов и гайок)
- Линейка (для измерений)
- Строительный нож (для резки и сверления отверстий)
- Дрель (для сверления акрила)
- Наждачная бумага (для зачистки кромок)
- Паяльник (для пайки клемм моторов)
- Компьютер (для компиляции и загрузки кода)
Некоторые инструменты не понадобятся, если вы купите готовый корпус. Можно также использовать 3D-принтер или лазерный резак, если они доступны.
Шаг 2: Механическая структура и материалы
Материалы:
- Акриловый лист 2 мм
- DC-редуктор с колесом (×2)
- Колесо-опора 30 мм (×1)
- Винты M2×10 мм (×5), гайки M2×1,5 мм (×5)
- Винты M3×10 мм (×9), гайки M3×1,5 мм (×12)
- Винты M3×40 мм (×4)
- Винты 5/32″×1″ (×4), гайки 5/32″ (×12)
- Универсальный держатель для телефона
- Стальные уголки L-образные 30×30 мм (×4)
Шаг 3: Электронные компоненты
- Arduino Uno
- ESP8266
- ProtoShield (или макетная плата)
- Резисторы 1 кОм (×2), 10 кОм (×1)
- DC-редуктор с колесом (×2)
- Модуль H-моста
- Перемычки
- Power Bank 5V (USB)
Все компоненты легко найти в интернет-магазинах. Выбор компонентов обусловлен исходным проектом Joy Robot и может быть оптимизирован (например, использование другого микроконтроллера).
Шаг 4: Проектирование структуры
Сначала создавалась 3D-модель основных компонентов в Fusion 360 для определения компоновки. Модели некоторых деталей скачаны из библиотеки GrabCAD:
- Arduino Uno
- Редуктор
- H-мост
- Power Bank
- Универсальный держатель телефона
Компоненты размещались в плоскости для определения габаритов. Затем выбирались позиции моторов и колес для устойчивой конструкции. Основная структура состоит из трех пластин (основания и двух боковых), соединенных уголками.
Доступны файлы чертежей: base.pdf, base.svg.
Шаг 5: Изготовление и сборка структуры
1. Резка основания из акрила по чертежу: Можно использовать лазерный резак или обычные инструменты. Размеры переносятся на акрил через распечатанную на клейкой бумаге маску. Ножом по линейке делаются надрезы, затем акрил ломается по линии надреза. Кромки зашкуриваются.
2. Сверление отверстий: По меткам на маске сверлятся отверстия дрелью (или вручную острым инструментом). Маска снимается.
3. Монтаж компонентов: Детали крепятся винтами и гайками согласно 3D-модели и видео. M3 — для уголков и моторов, M2 — для электроники, 5/32″ — для переднего колеса и держателя телефона.
Доступен файл: base.pdf.
Шаг 6: Сборка электроники
Схема: Arduino Uno — главный контроллер, общается с ESP8266 по Wi-Fi. Arduino управляет DC-моторами через H-мост (до двух моторов независимо в обе стороны). Питание — Power Bank через USB порт Arduino (удобно заряжать, заменить, дает стабильные 5В).
Соединяйте компоненты по схеме. ESP8266-01 не подходит для макетной платы — подключается перемычками, но не крепится к конструкции. Используйте ProtoShield, макетную плату или собственный щит.
Доступны файлы: wiDC_Esquemático.pdf, wiDC.fzz, wiDC_bb.pdf.
Шаг 7: Код для Arduino
Установите последнюю Arduino IDE. Библиотеки не требуются. Проверьте бодрейт вашего ESP8266 и установите его в коде (по умолчанию часто 115200, но SoftwareSerial не работает на такой скорости, в коде используется 9600).
Скачайте WiDC.ino, замените XXXXX на SSID вашего роутера, YYYYY — на пароль. Подключите Arduino к USB и загрузите код.
Разбор кода:
Используется SoftwareSerial на пинах 2 (TX) и 3 (RX) для связи с ESP8266, аппаратный Serial — для отладки на компьютере.
В setup() инициализируются пины моторов, запускаются оба Serial-порта, настраивается ESP8266 AT-командами:
AT+RST— сброс модуляAT+CWMODE=1— режим станции (клиента)AT+CWJAP— подключение к Wi-Fi (SSID/пароль)AT+CIFSR— показ IP-адресаAT+CIPMUX=1— множественные соединенияAT+CIPSERVER=1,80— запуск веб-сервера на порту 80
Функция sendData() отправляет команды, ждет ответа и выводит в Serial Monitor.
В loop() проверяются входящие данные от ESP8266. При получении сообщения +IPD, извлекается команда (первые 3 символа после ?):
cm1— вперед (state=1)cm2— назад (state=2)cm3— вправо (state=3)cm4— влево (state=4)cm5— стоп (state=5)
Состояние удерживается до получения новой команды. Для каждого состояния задаются сигналы на пинах моторов через PWM (analogWrite) для регулировки скорости (motorSpeed = 150). Моторы работают от 3–6В, при питании 5В ШИМ позволяет менять среднее напряжение и скорость.
Доступен файл: WiDC.ino.
Шаг 8: Веб-интерфейс управления
Скачайте interface.rar, распакуйте, откройте в Firefox. Интерфейс имеет две зоны:
- Видео/аудио — форма для ввода IP-адреса сервера IP Webcam (Android-приложение), загрузка видео и аудио в
<object>элементы. - Управление — форма для ввода IP-адреса ESP8266, кнопка Test (крутит робота), клавиши стрелок для движения.
JavaScript (myscript.js + jQuery) обрабатывает нажатия клавиш: при нажатии стрелки отправляется HTTP GET запрос на IP ESP8266 с командой cm1–cm4. Функция-защелка (latch) предотвращает повторы. При отпускании клавиши через 200 мс отправляется cm5 (стоп) и сбрасывается защелка.
Android-приложение IP Webcam (Google Play) транслирует видео/аудио с камеры смартфона.
Доступен файл: interface.rar.
Шаг 9: Использование
- При перезагрузке Arduino автоматически подключается к Wi-Fi. Проверьте Serial Monitor — есть ли подключение и какой IP выдал роутер ESP8266.
- Откройте HTML-файл в браузере (Firefox), введите IP ESP8266 в поле ввода.
- Отключите Arduino от ПК, подключите к Power Bank. Дождитесь переподключения.
- Запустите IP Webcam на смартфоне на роботе. Введите IP видео/аудио в интерфейсе управления и подключитесь.
- При необходимости снизьте разрешение видео в приложении для уменьшения задержки.
- Зажимайте стрелки клавиатуры для движения робота.
Важно: Робот работает в открытом цикле — ехать строго прямо сложно (разница моторов, выравнивание вызывают накопление ошибок). Иногда ESP8266 теряет пакеты: если потеряется команда cm5, робот продолжит ехать после отпускания клавиши. Проблема известна, можете изменить логику команд для устранения.
Производственный процесс
- Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
- Автономный линий-следующий робот на Arduino UNO
- Голосовой робот на Arduino Nano: Управление речью через Bluetooth
- MobBob: Самостоятельная сборка Arduino-робота под управлением Android-смартфона
- Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
- Магнитная левитация на отталкивании с Arduino: Простая схема и DIY-руководство
- PiBot: Робот-пианист на Arduino для точного исполнения музыки
- Автономный домашний помощник-робот: полный список деталей и руководство по настройке (ROS, Alexa, MoveIt)