Машинка на Arduino и ESP8266 с трансляцией видео и управлением через браузер.

Нет ответов
ORDAS
Offline
Зарегистрирован: 18.02.2017
 
 
Как и многие другие, кто только познакомился с Arduino, я жаждал сделать что нибудь интересное, пусть и не уникальное, но свое, собственными руками, благо порог вхождения этой платформы позволяет сделать это максимально легко. Первым моим проектом был "визуализированный спидометр" - RGB подсветка колеса велосипеда цвет которой зависит от скорости. Вышло вполне симпатично. Ну а следом захотелось осуществить свою детскую мечту об обладании машинкой с дистанционным управлением и камерой на борту. Удовлетваренный успехом первого проекта, я, полный энтузиазма, взялся за второй.
 
Техническая сторона вопроса
 
Первоначально мой взгляд упал на тандем YunShild + Uno R3 так как вычитал, что в такой связке эта платформы будет достаточно сильна что б потянуть передачу потокового видео с IP-камеры. Но тут я нашел один критичный для меня изъян - цена проекта. Если UNO R3  можно взять китайский за сносную сумму то YunShild стремился по цене к полутора тысячам деревянных и это не считая камеры которую тоже надо покупать.Проект был отложен до лучших, денежных, времен. Но так как руки чесались и хотелось сделать уже хоть что нибудь то я решил сделать просто машинку без камеры, на тот момент мной уже было вычитано о такой штуке как ESP8266, вот ее то я и решил использовать. Функционала ее хватало сполна для моего проекта, она достаточно дешевая, противовес этому - ее процессор слабоват для передачи потокового видео. Но, как было сказано, от идеи видео я отказался. Не надолго. Пока плата шла из поднебесной, я решил поискать другое решение для видеопередачи. Облазив кучу мест в интернете, прочитав не одну статью я нарвался на такую интересную вещь как "IP-webcam" - программа которая превращает телефон на OS андройд в ip-камеру - дешево и сердито и как раз то что мне нужно. С этой связкой, Android-Arduino-Esp, я и стал работать.
 
Первые шаги
 
Первоначально я скачал на телефон "IP-webcam" из GooglePlay, посмотрел как и что работает. Всю программу описывать не буду, ибо в интернете есть вся нужная информация, скажу лишь то, что для нормальной предачи картинки в настойках уменьшил разрешение видео до 640х480. Так же я выудил пару функций из нее, в частности включения фонаря и ссылки на видеопоток, для своего интерфейса. Следом взялся за изучение и программирование ESP-ешки. Для этого я использовал плату Uno как программатор. Разобраться в том как ее подключить мне помогла https://geektimes.ru/post/271078/ эта статья. За основу я взял уже готовую прошивку ESP-webserver с сайта http://esp8266-arduinoide.ru/step1-wifi подправив ее под свои нужды. 
 
Прошивка
 
Тут я поведаю, как прошить и собрать мой вариант arduino-car. Для корректной работы нужно докачать пару библиотек. Первая это основная библиотека для ESP-шки, кторая так и зовется esp8266, а втораядля обмена данными с сайтом-инткрфейсом с помощью JSON - ArduinoJson. Все это было закачено через менеджер плат поставляемый с ArduinoIDE. Так же для загрузки файлов на плату нужно докачать плагин esp8266fs https://github.com/esp8266/arduino-esp8266fs-plugin, и закинуть ее в /Arduino/tools/ESP8266FS/tool/. Если все сделано правильно то в меню "Инструменты" появится пункт "ESP8266 Scetch Data Upload". Для прошивки ESP-ишки надо выбрать в "Инструментах" плату "Generic ESP8266 Module", там же надо выбрать "Flach size", так как у меня всего 1Mb памяти, я выбрал для своих данных 512кб, остальная половина будет использоваться под скетч. Вы можете выбрать другой размер, в зависимости от вашей платы(хочу оговориться, что производители иногда в характеристиках к ESP пищу 8mb, так вот, они подразумевают 8 мегабит, а это равно мегабайту). Далее прошиваем нашу плату, для этого ее сначала надо отключить от сети и подключить GPIO0 к земле для перевода платы в режим программирования, запустить снова и снять с земли GPIO0. После прошивки, модуль перезагрузится(если не отключить GPIO0 от земли, снова перейдет в режим программирования). Для того чтобы закинуть файлы в модуль, нужно снова ввести его в режим програмирования и выбрать в меню "Инструменты" пункт "ESP8266 Scetch Data Upload". Если прошивка и заливка прошли успешно, то в списке обнаруженных Wi-Fi сетей появится сеть с имененм RIK. Подключившись к ней и перейдя по адресу 192.168.4.1 можно попасть на страницу-интерфейс машинки. В правом верхнем углу есть ссылка для перехода в настройки там можно подключать машинку к домашнему роутеру, так как в таком режиме модуль работает стабильнее. Слева вверху находится текстовое поле для ввода адреса "IP-Webcam". Чтоб проверить как это работает, нужно запустьть ip-webcam на телефоне, предварительно подключив его к сети RIK(либо к своей сети, если  модуль уже был переведен в режим клиента), после включения камеры в нижней части будет написан ее адрес - его и вбиваем в текстовое поле на странице. Как только будет нажата кнопка "Применить" на экране должно появится изображение с камеры телефона. Так же надо заметить что в мобильном браузере на экране будут кнопки управления, на PC-же машнка управляетя кнопками "WASD" (кнопка F включает фанарь). В принципе это все тонкости связанные с ESP-шкой. Далее просто заливаем скетч из папки RIK_UNO_R3(можно залить в любую ардуинку сменив в меню скетч) и можно приступать к сборке.
 
Сборка
 
Для своей поделки я использовал двух-колесое шасси с двумя моторчиками, которое купил на "али". Так же мне потребовался модуль управления двигателями на чипе L298N, DC–DC преобразователь LM2596 для питания ESP-модуля, Arduino Uno и ESP8266-01. Схему подключения приведу на картинке. Скажу только то, что ардуинку и ESP-шку я соединил между собой только одним проводом TX-RX соответственно, ибо от ардуинки мне никакой информации получать не надо, вот и было решено, что б не паять лишнего, а там надо было как то решать вопрос с делителем напряжения, так поступить. И немного о питании, для своего проекта я использовал 4 AA батарейки, что в сумме дает 6В, что маловато для стабильной работы, лучшим вариантом будет 9В.
 
 
ЗЫ
 
Проект, сразу признаюсь, сыроват. Очень многое, из того что хотелось реализовать, не реализовано в связи с сильной нехваткой времени. Но, как мне кажется, получилось не плохо, и этот проект может подойти как основа для желающих сделать подобную игрушку с видеотрансляцией на смартфон/компьютер.