Путь сборкиНачальныйПослеобеднее время

Машинка-робот под управлением смартфона: Bluetooth или Wi-Fi

Машинка-робот, которой управляют со смартфона по Bluetooth или Wi-Fi и которая самостоятельно останавливается при обрыве связи, вместо того чтобы уезжать без управления.

Техническая схема: Машинка-робот под управлением смартфона: Bluetooth или Wi-FiCLEARANCE FIELD

Что вы собираете

Машинку-робота, которой управляют со смартфона — по Bluetooth с помощью HC-05 или по Wi-Fi с помощью ESP32, предоставляющего собственную страницу управления.

Это самый доступный робот на сайте: здесь нет теории управления, нет алгоритма, который необходимо реализовать правильно, а отказы видны, а не выражаются формулами. Это также робот, который даёт урок, необходимый каждому другому роботу: что делать, когда вы перестали управлять.

Два радиомодуля

HC-05 (Bluetooth) ESP32 (Wi-Fi)
Дополнительное оборудование Модуль и делитель на RX Нет — радиомодуль находится на контроллере
На смартфоне Приложение Bluetooth Serial Любой браузер
Дальность Примерно 10 m 30 m+ на открытом воздухе
Смартфон сохраняет интернет Да Нет в режиме точки доступа
Лучше всего подходит Для первой беспроводной сборки Для всего, чем нужно передать другому человеку

Ни один вариант не ошибочен. HC-05 — более короткий путь к движущемуся роботу; ESP32 даёт удобство после запуска, поскольку указание «подключитесь к этому Wi-Fi и откройте браузер» не требует пояснений.

Перечень компонентов

Есть два маршрута, и нужен только один. Соберите версию Bluetooth, если у вас уже есть Arduino; соберите версию Wi-Fi, если покупаете компоненты сегодня.

Компонент Маршрут Bluetooth Маршрут Wi-Fi Примерная стоимость
Контроллер Arduino Uno ESP32 $5–8
Радиомодуль Модуль HC-05 Встроенный $4 / $0
Преобразование уровня 1 kΩ + 2 kΩ на RX модуля Нужно для входов микроконтроллера, на которые поступает 5 V $0.10
Драйвер двигателей 1 1 $2–4
Редукторный двигатель TT 2 2 $4
Шасси 2WD 1 1 $6–10
Аккумулятор 1 1 $6
Нужно приложение на смартфоне Да — Bluetooth Serial Нет — любой браузер —

Итого: примерно $25–35 по любому маршруту.

Решающее различие состоит не в цене, а в интерфейсе управления. HC-05 предоставляет поток байтов, поэтому смартфону нужно приложение, способное отправлять байты. ESP32 предоставляет собственную веб-страницу, поэтому смартфону нужен только браузер, а значит, управлять роботом может кто угодно, открыв URL, без установки чего-либо. Для робота, которым хотите передать управление другому человеку, это огромная разница без дополнительных затрат.

Маршрут Bluetooth оправдан, если Arduino уже есть или если нужна максимально простая связь вообще без понятия о сетях. Один байт на входе и один байт на выходе.

Порядок сборки

1 — Заставьте его двигаться на рабочем столе. Двигатели, драйвер, аккумулятор, колёса оторваны от пола, никакого радиомодуля. Следуйте руководству управление двигателями постоянного тока (DC) с помощью PWM и H-моста и проверьте движение вперёд, назад и оба поворота жёстко заданными командами. Одновременная отладка радиосвязи и драйвера двигателей способна уничтожить целые послеобедия.

2 — Добавьте радиомодуль и эхо. Подключите HC-05 или запустите точку доступа ESP32 и обеспечьте передачу текста в обоих направлениях до подключения к чему-либо движущемуся.

3 — Объедините их протоколом. Одна буква и значение, завершённые символом новой строки. Считывайте до завершающего символа, а не после каждого байта, поскольку «пришли некоторые байты» не означает «сообщение пришло».

4 — Обеспечьте аварийную безопасность. Этот этап часто пропускают, хотя именно он важен.

Защитный тайм-аут

Беспроводной робот продолжает выполнять последнюю команду. Если это было «вперёд на полной скорости», а вы только что вышли за пределы дальности, робот не остановится и продолжит движение.

Временная диаграмма. Пока удерживается кнопка, каждые 100 мс поступают команды в виде импульсов, затем они прекращаются на пунктирной линии с отметкой «сигнал потерян». Ниже полоса без тайм-аута после потери сигнала остаётся красным и показывает неконтролируемое движение неограниченной длительности. Вторая полоса с защитным тайм-аутом 400 мс вскоре после последней команды меняет состояние на «остановлен».
Поток команд прекращается при обрыве связи, а не когда пользователь отпускает кнопку, — поэтому робот обязан самостоятельно сработать по тайм-ауту. Скачать SVG

Исправление состоит из двух частей, и нужны обе:

  • Контроллер повторяет команду. Смартфон отправляет удерживаемую команду каждые 100 ms, а не только при нажатии.
  • Робот ожидает команду. Если около 400 ms ничего не пришло, остановиться.
if (millis() - lastCommandAt > 400) stop();

Теперь отпускание кнопки, закрытие приложения, разрядка аккумулятора смартфона и выход за дальность приводят к одному результату. Вы никогда не полагаетесь на команду остановки, которая может не быть отправлена.

Используйте millis(), а не delay(). Любой вызов delay(200) в контуре означает 200 ms, в течение которых робот ничего не считывает и не проверяет.

Замечания по оборудованию

Обеспечьте радиомодулю стабильное питание. Оба модуля потребляют ток резкими всплесками при передаче. Общая просаживающаяся шина с двигателями вызывает перезагрузки, похожие на программные сбои: робот перестаёт реагировать посреди движения и возвращается через секунду. Питайте двигатели от аккумулятора через драйвер, а логику оставьте на отдельном источнике.

Схема подключения. Arduino Uno или Nano непосредственно соединяет линию TXD с выводом D10 модуля HC-05; подпись поясняет, что это безопасно, поскольку 3.3 вольта на выходе считывается как HIGH на 5-вольтовом входе. Обратный путь от D11 к выводу RXD модуля проходит через делитель напряжения 2 кОм и 3.3 кОм; предупреждение сообщает, что 5 вольт непосредственно на RXD частично повреждают модуль, поэтому он продолжает сопрягаться, но искажает передаваемые данные.
Три из четырёх проводов не требуют сложностей. Четвёртому нужен делитель, поскольку 5 V на RXD модуля повреждают его постепенно, а не очевидно. Скачать SVG

Следите за выводами 3.3 V. Вывод RX у HC-05 и GPIO ESP32 рассчитаны на 3.3 V. Передача от Arduino с 5 V требует делителя. Повреждение постепенное и частичное, поэтому его трудно диагностировать.

Здесь подойдёт L298N. Его падение напряжения важно для быстрого робота, следующего по линии; на машинке с ручным управлением его можно компенсировать настройкой скорости, поэтому более дешёвый и распространённый драйвер остаётся разумным выбором.

Как выглядит хороший результат

Измерение Bluetooth (HC-05) Wi-Fi (ESP32)
Задержка команды 20–60 ms 30–100 ms в локальной сети
Дальность при прямой видимости ~10 m ~50 m или в любой точке сети
Дальность через одну внутреннюю стену 3–5 m 15–25 m
Время до первого управления после включения ~2 s после сопряжения ~5 s для подключения к Wi-Fi
Повторное подключение после разрыва Вручную, обычно Автоматически
Удобный защитный тайм-аут 300–500 ms 300–500 ms

Защитный тайм-аут — значение, которое стоит тщательно настроить, и оно нужно обоим радиомодулям. Если он слишком велик, робот заметно долго движется после обрыва связи, что при 0.3 m/s и тайм-ауте 1 s даёт 30 cm неконтролируемого пути. Если слишком мал, обычный разброс задержки пакетов постоянно останавливает робота, и система кажется неисправной.

Для обоих вариантов пригоден диапазон 300–500 ms. Ниже примерно 250 ms его начинают вызывать обычные колебания задержки Wi-Fi; выше примерно 700 ms обрыв связи заметно проявляется как самопроизвольное движение.

Куда это ведёт дальше

Созданный слой команд не зависит от уровня поведения, и именно поэтому он является хорошей основой. Добавьте ультразвуковой датчик, и робот сможет отказаться въезжать в стену, даже когда вы удерживаете «вперёд», — это начало робота для обхода препятствий.

Такое сочетание — робот, которым можно управлять и который способен переопределить оператора — также самый простой способ разрабатывать автономные системы: можно точно установить робота там, где возникает ошибка, не подходя к нему и не поднимая.

Дорожная карта проекта

Путь сборки

Следуйте по дереву технологий от деталей к работающему роботу. Каждый узел открывается, когда выполнены его предварительные условия, а ваш прогресс сохраняется на этом устройстве.

0 / 14 выполнено

100%
Учебный путь

Управление двигателями

План обучения

Открыть путь
Сборка

Обеспечьте аварийную безопасность

Сборка

Цель

Управляйте им со смартфона

Цель

Компоненты

Руководства на этом пути

Часто задаваемые вопросы

Что лучше использовать для машинки-робота: Bluetooth или Wi-Fi?

Bluetooth с HC-05 проще запустить, а сопряжение выполняется один раз, но нужны приложение для последовательного терминала и дальность примерно десять метров. ESP32 по Wi-Fi вообще не требует приложения: он предоставляет собственную страницу управления любому браузеру и обеспечивает большую дальность, но при подключении к сети робота смартфон теряет подключение к интернету. Для первой сборки короче путь через Bluetooth; для любой демонстрации страница управления ESP32 без приложения стоит дополнительного часа.

Почему мой робот по Bluetooth продолжает движение после отпускания кнопки?

Потому что он не получил команду отпускания. Проводной робот останавливается, когда вы отпускаете кнопку, а беспроводной продолжает выполнять последнюю команду. Исправление двустороннее: смартфон должен повторять текущую команду каждые 100 ms, пока кнопка удерживается, а робот — останавливаться автоматически, если несколько сотен мс ничего не пришло. Тогда отпускание кнопки и потеря сигнала приводят к одному безопасному результату, и вам не приходится полагаться на команду остановки, которая может не прийти.

Можно ли повредить HC-05 при непосредственном подключении к Arduino?

Да, на одном выводе. Логика модуля рассчитана на 3.3 V, и его вывод RX не выдерживает 5 V, поэтому передача непосредственно от Arduino создаёт нагрузку на этот вход. Осложняет всё частичное повреждение: модуль обычно продолжает сопрягаться и передавать данные, но незаметно искажает или игнорирует команды. Защищают его два резистора делителя напряжения на этой линии.

Нужно ли приложение для управления роботом со смартфона?

Только для Bluetooth. HC-05 требует какого-либо приложения Bluetooth Serial на смартфоне, чтобы открыть порт. ESP32 не нужно ничего: он создаёт собственную сетью Wi-Fi и предоставляет HTML-страницу, поэтому достаточно подключиться и открыть браузер. Это самый убедительный практический аргумент в пользу ESP32 для робота, которым должны управлять другие люди.

Робот, управляемый со смартфона, может также ездить автономно?

Да, и это естественный следующий шаг. Слой команд, который вы создаёте здесь, отделён от уровня поведения, поэтому добавление датчиков позволяет роботу переопределить вашу команду и отказаться въезжать в стену, даже когда вы удерживаете «вперёд». Сначала создайте ручной слой: датчик гораздо легче отлаживать, если во время проверки можно вручную поставить робота в нужное место издалека.