Вездеход на гусеницах на ESP-32 Cam с управлением через Wi-fi и по интернету
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Статья относится к принтерам:
ESP-32 Cam — это недорогой микроконтроллер со встроенным Wi-fi модулем, а также простой камерой. Благодаря этим свойствам, с его помощью можно создавать проекты с удалённым доступом к камере и всеми сопутствующими возможностями микроконтроллера. В этом обзоре я покажу вам вездеход на гусеницах, который работает на ESP-32 Cam.
- Функции у этого вездехода такие:
- возможность управления по Wi-fi;
- возможность управления через интернет из любой точки мира;
- управление с любого устройства, где есть браузер;
- доступ к бортовой камере и возможность смотреть через неё, куда он едет.
Комплектующие
Электроника
- микроконтроллер ESP-32 Cam;
- драйвер моторов L298N;
- моторы постоянного тока с редуктором — 2 шт;
- сервомотор SG-90;
- аккумуляторы 18650;
- отсек для одного аккумулятора 18650 — 2 шт;
- выключатель;
- провода дюпоны;
Электроника обошлась мне примерно в 25$.
Прочие мелочи
- болты М3 х 5 — 21 шт.
- болты М3 х 10 — 4 шт.
- болты М3 х 18 — 4 шт.
- болты М3 х 25 — 4 шт.
- гайки M3 — 33 шт.
- болты М5 х 30 — 6шт.
- гайки М5 х 12 шт.
- подшипники 625-2RS (5х16х5мм) — 6 шт.
Схема подключения
Схема проста и понятна, будьте внимательны при подключении.
В видео выше видно, что я использую три аккумулятора 18650, но позже практика показала, что это много, и нужно использовать только два. Поэтому сделайте, как на схеме — два аккумулятора. Я использовал по 3 400 мА/ч, это позволяет работать вездеходу долгое время без зарядки, но можно использовать и меньшей ёмкости.
Питание микроконтроллера должно быть строго 5 вольт, но в схеме используется два аккумулятора 18650 по 3,7 вольт. Поэтому ESP-32 Cam питается от 5-ти вольтового выхода драйвера моторов L298N. Если драйвер моторов запитывать в 12-ти вольтовый вход, то 5-ти вольтовый работает как понижающий преобразователь и даёт нам стабильные 5 вольт. Перед включением убедитесь в правильной полярности питания ESP-32 Cam, иначе можно вывести его из строя.
Сервомотор нельзя запитывать на 5-ти вольтовый выход драйвера, иначе ESP-32 Cam перезагружается при повороте вала сервы. Поэтому сервомотор приходится подключать к 12-ти вольтовому выходу и питать непосредственно от двух аккумуляторов, то есть от 7,4 вольт, что немного больше максимально допустимых для SG-90 5 вольт, но на практике на качестве его работы это не сказывается.
Если после сборки моторы вращаются не в ту сторону, куда нужно, то поменяйте их полярности подключения к драйверу.
Скетч
Нет смысла долго рассказывать о том, как прошивать ESP-32 Cam, так как в интернете есть большое количество качественных материалов по этому поводу. Найдёте сами. Я прошивал через Arduino IDE — это самый простой способ. IDE потребует определённой несложной настройки для прошивки — найдёте в интернете, что именно и как настроить.
Для прошивки вам понадобится программатор с поддержкой UART. Микроконтроллер для загрузки скетча нужно подключить как на схеме ниже.
Если всё подключили правильно, то гребёнка ESP-32 Cam, которая нужна для прошивки, будет полностью свободной и можно будет прошивать, не вынимая микроконтроллер из корпуса.
Саму прошивку и сопутствующие файлы можно скачать на Github. Имеется четыре версии прошивки:
- Car_AP_ENG — вездеход становится точкой доступа и раздаёт Wi-fi, интерфейс панели управления на английском языке.
- Car_AP_RUS — вездеход становится точкой доступа и раздаёт Wi-fi, интерфейс панели управления на русском языке.
- Car_WS_ENG — вездеход подключается к вашей домашней точке доступа, интерфейс панели управления на английском языке.
- Car_WS_RUS- вездеход подключается к вашей домашней точке доступа, интерфейс панели управления на русском языке.
В каждой прошивке имеется по два файла. Открывайте через Arduino IDE файл с расширением .ino, тогда во второй вкладке появится и второй файл.
Прошивка, при которой ESP-32 Cam становится точкой доступа, позволяет подключиться к вездеходу по Wi-fi с помощью любого устройства и управлять им через браузер. Удобно, если поблизости нет работающей точки доступа. В этой прошивке в файле Car_AP_***.ino в строках 3 и 4 указаны SSID и пароль от сети, которую создаст ESP-32 Cam.
const char* password = «123456789»;
К ней и нужно будет подключиться, а затем перейти в браузере на IP 192.68.4.1.
Прошивка, при которой ESP-32 Cam подключается к имеющей точке доступа, позволяет управлять вездеходом через любое устройство, которое подключено к этой же сети, а также через интернет (но об этом ниже, так как требуется дополнительная настройка). В файле Car_WS_***.ino в строках 3 и 4 укажите вместо звёздочек SSID и пароль от сети Wi-fi, к которой вездеход должен подключиться.
const char* password = «*************»;
У каждого будет свой IP для доступа к панели управления через браузер. Чтобы его выяснить, отключите после прошивки ESP-32 Cam от компьютера и отключите перемычку между контактами IO0 и GND, затем подключите к компьютеру через программатор заново. В Arduino IDE откройте монитор порта и увидите IP. Если не увидели, то не отключая микроконтроллер от компьютера, перезагрузите его, нажав на маленькую кнопку Reset на плате. По увиденному в мониторе порта IP, нужно переходить, чтобы попасть в панель управления.
Во всех четырёх прошивках в файле app_httpd.cpp есть возможность откалибровать скорость вращения моторов. Эти китайские моторы с редуктором могут давать разные обороты при одинаковом напряжении. Из-за этого вездеход может при движении отклоняться влево или вправо, вместо того, чтобы ехать строго прямо. Строки 4 и 5 позволяют настроить обороты.
int speedBalansR = 0; // Если автомобиль отклоняется влево, уменьшите скорость правого мотора.
int speedBalansL = 0; // Если автомобиль отклоняется вправо, уменьшите скорость левого мотора.
Переменные speedBalansR и speedBalansL управляют скоростью правого и левого моторов, соответственно. Эти переменные могут обретать значения от 0 до 250. Чем меньше значение, тем выше скорость мотора. 0 — максимальная скорость, установлено по умолчанию.
Если вездеход у вас отклоняется влево или вправо, то уменьшите скорость правого или левого моторов, увеличивая нужную переменную с шагом, например, в 5 единиц, и загружая прошивку после каждого увеличения. После каждой загрузки прошивки проверяйте, насколько скорректировалось направление при езде и добейтесь строго прямого движения.
Например, мне пришлось установить speedBalansL на 15. Но у всех будет по разному, некоторым повезёт, и моторы будут работать одинаково, тогда не надо ничего здесь менять.
Если вы ничего не поняли по калибровке моторов, то просто не делайте это. Это не обязательный шаг.
Больше ничего в прошивке корректировать не обязательно.
Веб-интерфейс для управления
Панель управления задаётся веб-интерфейсом прямо в прошивке, поэтому не придётся устанавливать никаких приложений. И это позволяет управлять вездеходом из любого устройства, в котором есть браузер и Wi-fi-модуль.
Если вы управляете вездеходом с компьютера, то можете пользоваться клавишами W, A, S, D для того чтобы задать направление движения и P — для остановки. Клавиша L — включает подсветку, а K — выключает.
Если не включить галочку «Без ост.» («No stop»), то вездеход будет ехать рывками при нажатии на ту или иную кнопку направления. Если включить эту галочку, то он будет ехать беспрерывно, пока не нажать на кнопку «Стоп».
Также в панели управления имеются бегунки для управления скоростью моторов и поворотом сервопривода, который поворачивает камеру вверх и вниз.
Если получаете дёрганное видео при стриме с бортовой камеры, то попробуйте уменьшить разрешение и качество видео. Но ESP-32 Cam действительно хорошее видео не даст — камера всего 2 Мп, и процессор не достаточно мощен.
Как получить доступ к веб-интерфейсу ESP-32 Cam через интернет
Это наверное самая интересная функция, которая есть у вездехода — можно настроить всё так, что управлять им можно будет из любой точки мира, где есть интернет. Сделать это легко.
Для управления через интернет подойдёт только прошивка CAR_WS_***, то есть та, когда ESP-32 Cam подключается к существующей точке доступа. У этой точки доступа обязательно должен быть выход в интернет.
Загрузите в вездеход скетч CAR_WS_*** на русском или английском языке и выясните IP, который он получил в вашей сети. Затем зайдите в настройки вашего роутера, и в опции Хост DMZ задайте этот IP.
Теперь ваш вездеход всегда будет иметь этот IP, даже если вы перезагрузите роутер.
Затем зайдите в настройки «DDNS» и зарегистрируйтесь в одном из поставщиков услуг. На нём вы будете регистрировать бесплатное доменное имя (третьего уровня), с помощью которого можно будет достучаться до ESP-32 Cam через интернет.
Я рекомендую поставщика услуг No-IP. В бесплатном тарифе домен в этом сервисе нужно будет продлевать каждые три месяца. Зарегистрируйтесь в No-IP, зарегистрируйте там себе доменное имя. И в настройках роутера в разделе «DDNS» введите логин и пароль от No-IP и доменное имя.
Убедитесь, что роутер соединился с No-IP и появился статус «Подключен». Теперь вы можете получить доступ к веб-интерфейсу ESP-32 Cam через интернет, введя в адресной строке браузера зарегистрированное доменное имя.
Доменное имя в No-IP имеет IP, который был выдан вам провайдером на данный сеанс подключения.
У большинства пользователей IP динамический и если вы перезагрузите роутер, то он изменится, соответственно связь с ESP-32 Cam нарушится. Чтобы этого не происходило, скачайте приложение DUC, которое будет автоматически менять IP вашего домена, каждый раз, когда меняется IP, выданный вам провайдером. DUC нужно установить на любой компьютер, который постоянно подключен к той же сети Wi-fi, что и вездеход. Поддерживаются системы Windows, MAC и Linux. DUC потребует простых настроек — необходимо авторизоваться в приложении и выбрать нужное доменное имя.
Также для работы DDNS вам понадобится белый IP. Некоторые провайдеры выдают своим абонентам серые IP. Если ваш IP подходит под одну из следующих масок, то у вас серый IP:
Если у вас серый IP, то для получения белого вам следует приобрести его вашего провайдера. Стоит недорого, порядка 1$, но платить придётся каждый месяц. За подробностями обратитесь в поддержку вашего провайдера.
Сборка
Модель для 3D принтера можете скачать с Thingiverse. Все детали печатайте пластиком PLA, кроме держателя для ESP-32 Cam. Сам микроконтроллер нагревается во время работы, а если длительно светить светодиодом, то нагревается достаточно сильно, чтобы деформировать PLA. Поэтому держатель микроконтроллера печатайте пластиком ABS или другим термостойким пластиком. Температура микроконтроллера при включённой подсветке может быть где-то до 80 градусов C. Заполнение 20%, разрешение 0,2.
В идеале, колёса и траки гусеницы тоже нужно было печатать ABS или другим пластиком, стойким к износу. Но я напечатал на PLA. Признаков износа пока не вижу.
При сборке вам придётся запрессовывать гайки в подшипники в посадочные места. Будьте аккуратны, чтобы не сломать детали. Убедитесь, что в посадочных местах нет остатков пластика и другого мусора. Не используйте грубый инструмент для запрессовки, обычно хватает силы рук.
Самая долгая и нудная работа — это сборка гусеницы. На каждую гусеницу нужно по 34 трака. Они соединяются друг с другом с помощью нити филамента, диаметром 1,75 мм. Перед соединением очистите отверстия в траках шилом или сверлом, а затем обрежьте нить филамента под углом, чтобы образовался острый конец. Аккуратно вставьте его в отверстия, соединив траки, и обрежьте лишнее. Убедитесь в свободном движении звеньев гусеницы.
Сначала гусеница будет натянута, но со временем она немного растянется. Можно смазать подвижные части силиконовой смазкой.
В видео вначале обзора подробно показывается, как собрать вездеход из напечатанных деталей.
Если нет возможности печатать на 3D принтере, то соберите шасси из подручных материалов. Не обязательно даже делать гусеницы, нормально поедет и на обычных колёсах.
Фото
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.