CxemCAR 2 – Управление на радио модел (автомобил) през Android с видео излъчване в реално време (Bluetooth & Wi-Fi)

Източник:  english.cxem.net

Автор: Koltykov A.V.

Превод: Т. Б.

В интернет съществуват много статии относно използването на радио управляемите модели на автомобили с IP или Web-базирана камера. Но повечето от тях използват лаптоп или интернет рутер с Open-WRT или DD-WRT фърмуейр. Показването на видео сигнала и управлението на RC автомобила в такива проекти обикновенно се реализира с PC или Лаптоп. В тази статия се описва управлението верижна платформа от всяко едно Android-устройство(таблет, смартфон, и.т.н), както и показването на видео сигнал в реално време и управлението над завъртането и/или наклона на IP-Камерата. Всички необходими части са останали напрактика непроменени в първият проект на CxemCAR, направени са промени, за да работят Android приложенията с Wi-Fi IP камерата.

Този проект е изграден на базата на Arduino. За да управляваме автомобила използваме Bluetooth канал. Като IP камера използвах популярният модел Foscam FI8918 (80-100$).

Както се вижда и на фигурата отгоре, взаимодействието между смартфона и следената платформа се реализира директно върху Bluetooth-канал, а взаимодействието с камерата се реализира върху Wi-Fi канал, но през рутера. А това е голям недостатък – тъй като без рутера, всички действия с камерата няма да функционират, например на улицата или някъде другаде в града. Опитах се да направя директно управление посредтвом Wi-Fi, включвайки Host режима на Wi-Fi адаптера на Android устройството. Но нищо не се получи. Ще се опитам на направя директно взаимодействие без рутера. Има някакво предположение, че това ще изисква камера с поддържана функция Wi-Fi Direct.

IP-Camera

IP-камерата Foscam FI8918 осигурява видео поток във формат MJPEG (Motion JPEG), при който всеки кадър се компресира посредством популярния JPEG алгоритъм за компресия на изображения. При разделителна способност на видео потока 320×240, FPS е 25-30. Ако разделителната способност на видеото е 640×480, честотата FPS пада около 2 пъти. За Android през интернет съществува MJPEG клас за обработка и визуализация на информацията при активност.

Моделът FI8918 притежава функция на завъртане и накланяне на камерата посредством уеб-интерфейса. В този проект, тази възможност също е реализирана. Функциите на Foscam камерите са добре документирани (погледнете файла IPCAM CGI SDK V1.7). Покажете видео потока на адрес „http://192.168.1.10:8081/videostream.cgi?user=cxemcar&pwd=cxemcar&resolution=8“, където user- е потребителското име, pwd- е паролата, resolution- видео разделителната способност (8 – 320x240px, 16 – 640x480px)

За да управляваме движенията на камерата (функцията завъртане/ накланяне) се използва скрипта
decoder_control.cgi, а параметъра „command“ задава следните команди:
0 – движение на камерата нагоре
1 – спри движението нагоре
2 – движение надолу
3 – спри движение надолу
4 – движение наляво
5 – спри движението наляво
6 – движение надясно
7 – спри движението надясно
25 – установи във средата
26 – вертикален „патрул“
27 – Спри вертикален „патрул“
28 – хоризонтален „патрул“
29 – Спри хоризонтален „патрул“

В Android приложението използвах само взаимодействие с два скрипта , но както бе отбелязано отгоре, посредством CGI скриптовете могат да се правят много неща:
get_camera_params.cgi – получава текущите настройки на камерата. Скрипта връща разделителната способност, осветеноста, контраста, режима на работа 50/60 Hz, завъртане на изображението.
camera_control.cgi – настройки на камерата.
reboot.cgi – рестартиране на камерата.
restore_factory.cgi – връщане на първоначалните настройки на камерата.
get_params.cgi – информазия относно камерата и много нейни параметри.
set_datetime.cgi – за настройка на часа и датата.
set_network.cgi – мрежови настройки.
set_wifi.cgi – Wi-Fi мрежа.
set_ddns.cgi – настройка над параметрите за Dynamic DNS.
set_ftp.cgi – настройка на FTP връзката.
set_mail.cgi – настройка за ПОЩА.
И.т.н.

Камерата се конфигурира за работа с статичен IP адрес. За да може да бъде достъпна през Android приложение. Въпреки, че Foscam поддържа DDNS услуги, вие може да използвате и динамичен IP адрес.

Шаси

Тъй като IP-камерата представлява масивна конструкция, то и платформата трябва да бъде с подходящ размер. Като шаси използвах широко разпространената ходова част „Rover 5“.

платформата идва с горен капак

Капакът е изрязан от пластмасата и монтиран върху малък рафт, за да се поставят батериите захранващи камерата и моторите, батерията захранваща Arduino и 5V преобразувател на напрежение захранващ камерата.

с прикрепен капак:

с промяна за ключа за включване/ зареждане:

Батериите и платката на преобразувателя са поставени в шасито. Капака е изрязан с отвори за проводниците, за да се управлява платката, камерата и драйвера за мотора. За да зареждате батериите поставихме 2 конектора.

IP-camera, Arduino, Bluetooth-модул и драйвера за мотора са монтирани върху капака на шасито.

За електронните компоненти са изрязани пластмасови амортисьори и малък капак закрепен с болтове, който може да бъде премахнат ако е необходимо.

Хардуер

Необходимите компоненти са почти идентични с тези от проекта Arduino RC car. но е добавена камера, и се изисква 5V захранване. Затова беше добавен понижаващ регулатор на напрежение чрез чипа LM2596.

Използвани от: Bluetooth модул HC-06, Arduino Nano v3 и драйвер за моторите L298N. Ако захранвате Arduino платката от 4V и нагоре, между изводите RX (Модула HC-06) с TX(платката Arduino) е необходимо да поставите делител на напрежение, тъй като логическото ниво на HC-06 е 3.3V. Още по-добре е, ако използвате специализиран чип, като например MAX232.

Скиците за Arduino са останали същите, и са публикувани на страницата на GitHub’e (хипервръзката отдолу).

Софтуер

Софтуера е написан в open-source средата IDE Eclipse. Структурата на проекта:

Проектът съдържа 4 дейности: основна, относно програмата, работеща с Flash и основната дейност за управлението на шасито и показването на видео потока. За да се работи с MJPEG видео потока, съществуват следните 2 клака: MjpegInputStream and MjpegView.

Програмата съдържа меню със следните настройки:

Дейности по управлението, както следва:

От ляво са разположени ботоните за управление на платформата, в средата е визуализиран видео потока от камерата, а от дясно са бутоните са управление на завъртането и наклона на камерата.

Ако сте запознати с програмирането на PC, вие бихте могли да реализирате управление на платформата от вашия компютър през интернет и други среди.

Project for Android (GitHub)
Project for Arduino (GitHub)