Главная » Радиоуправление
Призовой фонд
на сентябрь 2017 г.
1. 1000 руб
PCBWay
2. Осциллограф DSO138
Паяльник
3. Тестер компонентов MG328
Паяльник
4. 100 руб.
От пользователей

CxemCAR 2 - управление роботом и просмотр real-time видео с Android-смартфона

CxemCAR2

В интернете существует масса статей по использованию мобильных платформ совестно с IP или Web-камерой. Но в большинстве из них используются ноутбук, либо внутренности маршрутизатора с перепрошивкой на Open-WRT или DD-WRT. Просмотр видео и управление платформой в таких проектах как правило осуществляется с компьютера/ноутбука. В данном проекте реализована система управления мобильной гусеничной платформой с любого Android-устройства (планшет, смартфон и т.п.), а также просмотр real-time видео и управление поворотом IP-камеры. Вся электронная начинка осталась практически в неизменном видео с первого проекта CxemCAR, изменения коснулись Android-приложения для работы с IP камерой.

Проект построен на платформе Arduino. Управление гусеничной платформой осуществляется по Bluetooth каналу. В качестве IP камеры я использовал популярную модель Foscam FI8918, процесс покупки которой я подробно расписывал в данной статье. На сегодняшний день (август 2013) оригинальная Foscam FI8918 на AliExpress стоит 90$. Появилось много аналогов по цене 30-40$, с такими же функциями, но не известно управляются ли они также сриптами (об этом чуть ниже) через web.

Как видно на вышеприведенном рисунке, взаимодействие между смартфоном и гусеничной платформой осуществляется напрямую по Bluetooth-каналу, а взаимодействие с камерой осуществляется по Wi-Fi каналу, но через маршрутизатор. И это большой минус - т.к. без маршрутизатора все операции с камерой работать не будут, к примеру на улице или где-нибудь за городом. Я пытался сделать прямое управление через Wi-Fi, включив на Android'е режим Host Wi-Fi, но ничего не получилось, до камеры не удается достучаться, но работать в этом направлении продолжаю, и возможно что в дальнейшем получиться сделать прямое взаимодействие без маршрутизатора. Есть предположение, что для этого необходима камера с поддержкой технологии W-Fi Direct.

IP-камера

IP-камера Foscam FI8918 выдает видеопоток в формате MJPEG (Motion JPEG), в котором каждый кадр сжимается при помощи популярного алгоритма сжатия изображения JPEG. При разрешении потока 320x240, количество кадров в секунду (FPS) составляет 25-30. Если разрешение видеопотока увеличить до 640х480, то FPS падает примерно в 2 раза. Для Android на просторах сети интернет был найден соответствующий MJPEG класс для обработки и вывода данных в activity приложения.

IP-камера Foscam FI8918

Модель FI8918 имеет функцию вращения и наклона камеры через web-интерфейс. В данном проекте эта функция также реализована. Функциональные возможности камер Foscam хорошо документированы (см. файл IPCAM CGI SDK V1.7). Просмотр потока, управление, настройки осуществляются через CGI скрипты. Просмотр потока осуществляется путем вызова videostream.cgi с соответствующими параметрами, например:
http://192.168.1.10:8081/videostream.cgi?user=cxemcar&pwd=cxemcar&resolution=8
где user - имя пользователя, pwd - пароль, resolution - разрешение видеопотока (8 - 320x240, 16 - 640x480)

Для управления движением камерой (функция pan/tilt) используется скрипт decoder_control.cgi, а параметром command задаются команды:
0 - движение камеры вверх
1 - остановка движения вверх
2 - движение вниз
3 - остановка движения вниз
4 - поворот влево
5 - остановка поворота влево
6 - поворот вправо
7 - остановка поворота вправо
25 - установка по центру
26 - вертикальное "патрулирование"
27 - остановка вертикального "патрулирования"
28 - горизонтальное "патрулирование"
29 - остановка горизонтального "патрулирования"

В Android приложении я использовал обращение только к этим двум скриптам, но как уже сказано выше через соответствующие CGI скрипты можно делать очень многое (подробнее смотрите прикрепленный внизу PDF файлик IPCAM CGI SDK V1_7.pdf), например:
get_camera_params.cgi - получить текущие параметры камеры. Скрипт возвращает разрешение, яркость, контрастность, режим 50/60 Гц, режим Flip.
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 - установка настроек для работы MAIL.
И др.

Камера настроена на работу со статическим IP-адресом. Чтобы к ней можно было обратиться из приложения. Хотя Foscam поддерживает и DDNS сервисы, поэтому можно использовать и динамический IP при условии использования Dynamic DNS.

Шасси

Т.к. IP-камера представляет из себя довольно таки массивную конструкцию, то и платформа должна быть соответствующих размеров. В качестве шасси, я использовал широко распространенную гусеничную платформу Rover 5. Стоимость на это шасси варьируется в зависимости от количества двигателей (2 или 4), а также наличия энкодеров.

Шасси Rover 5

Платформа поставляется без верхней крышки, в точно таком же виде, как на фото выше.

Верхняя крышка

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

Стойки

Вид с установленной крышкой:

В платформе Rover 5 было вырезано отверстие для установки сдвоенного трехпозиционного переключателя питания/зарядки.

Переключатель питания

Аккумуляторы и плата преобразователя были расположены внутри корпуса шасси. В крышке были вырезаны отверстия для вывода проводов к плате управления, камере и драйверу двигателей. Для зарядки аккумуляторов были выведены 2 разъема.

 

IP-камера, контроллер Arduino, Bluetooth-модуль и драйвер двигателей были установлены на крышку шасси.

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

Аппаратная часть

Эта часть проекта практически полностью идентична CxemCAR 1.0 на Arduino. Единственное, что добавилась камера и т.к. она требует 5В источника постоянного тока, то был добавлен step-down преобразователь напряжения на микросхеме LM2596.

Схема же управления шасси осталась неизменной:

В качестве контроллера используется Arduino Nano V3. В качестве Bluetooth модуля используется HC-06. А для управления двигателем применена плата с микросхемой L298N.

Если будете питать плату Arduino от 4В и выше, то между выводами RX (модуля HC-06) и TX (платы Arduino) необходимо поставить делитель напряжения, т.к. логические уровни у модуля 3.3В. А еще лучше использовать специализированную микросхему, например MAX232.

Скетч для Arduino остался таким же, и выложен на GitHub'е (ссылка внизу страницы).

Программная часть

Весь софт написан в свободно-распространяемой среде Eclipse. Структура проекта:

Структура проекта в Eclipse

Проект содержит 4 активити: главное, о программе, работа с Flash и основное активити для управления шасси и просмотра видео.

За работу с MJPEG потоком отвечает 2 класса: MjpegInputStream и MjpegView.

Проект на 2-языках: английский и русский. В папке ресурсов для русского языка задействуются 2 вложенные папки: values-ru и xml-ru. В папках values и xml по умолчанию содержаться английские версии этих файлов.

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

Настройки подробно расписывать не буду, тут думаю все понятно.

Окно управления выглядит следующим образом:

Слева расположены кнопки управления платформой, по центру отображается видеопоток с камеры, а справа расположены кнопки управления камерой.

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

Проект для Android (GitHub)
Проект для Arduino (GitHub)

Тема поддержки на форуме

Прикрепленные файлы:

Теги:

Опубликована: 15.08.2013 0 1
Я собрал 0 5
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 4.9 Проголосовало: 5 чел.

Комментарии (12) | Я собрал (0) | Подписаться

0
Alex #
А зачем роботу, который дальше 10 метров (BT) не уедет - камера? Его и так прекрасно видно. Вот если бы добавить Wi-Fi управление шасси, было бы дело. А еще лучше по 3G и управление и видео, чтобы за километров 20 его отогнать... там на зарядочку от СБ и назад.
Ответить
0

[Автор]
talibanich #
Данный проект создавался на базе старой платформы, здесь лишь добавилась камера. Здесь был больше софтовый интерес реализации просмотра видео на экране Android-телефона. Т.к. подобного ПО я до этого нигде не встречал.
А практическая цель платформы - тут с Вами согласен, из-за радиуса действия бесполезная. Хотя конечно можно воткнуть 100м блютуз донгл и радиус будет до 100м.
По поводу Wi-Fi, сделать можно, но опять таки через маршрутизатор (я об этом писал в статье). Логичнее заюзать технологию Wi-Fi Direct, вот только пока что у меня ничего не получается в этом направлении, да и времени мало.
По поводу 3G - в наших краях он еле еле страницы открывает, что уже говорить о потоковой передачи real-time видео и управлении. Может быть через лет 5 и до нас дойдут выские скоростя через мобильные сети, тогда можно будет копать и в этом направлении
Ответить
0
Владислав #
А как Вы запитали Arduino от 3,7-5В, если по спецификации она запитывается как минимум от 5В, причем микросхема FTDI FT232RL получает запитку только от USB, иначе она не выдаст 3,3В?
Ответить
0
Alex #
Выдает ошибку "Socked failed". Подскажите в чем проблема?
Ответить
0

[Автор]
talibanich #
Поставьте LogCat и смотрите что в логах. Причин может быть множество
Ответить
0
1lich #
При запуске программы, БТ не переходит в режим ожидания. В чем может быть проблема? В коде проги?
Ответить
0
1lich #
А что означают PIO1 и 3V3 на blutooth HC-06 на схеме? Просто у меня на модуле HC-06 нет этого
Ответить
0

[Автор]
talibanich #
PIO1 - индикатор рабочего режима. Если соединение не установлено - то светодиод мигает, если установлено, то постоянно горит.
3V3 - питание 3.3В.
Почитайте эту статью, тогда многие вопросы по подключение к Bluetooth модулю отпадут: Arduino и Bluetooth
Ответить
0
1lich #
А ПО работает только с Foscam FI8918 камерой или другие варианты подойдут? (другой фирмы)
Ответить
0

[Автор]
talibanich #
Без разницы, с любой IP лишь бы можно было при помощи GET или POST запросов обращаться к ней для управления (в статье есть пример) и можно было видеопоток с нее снять. Это умеют практически все нормальные китайские камеры
Ответить
0
1lich #
Можно пожалуйста по подробнее как подключить камеру?
Ответить
0
1lich #
Как обеспечить питание камеры? Точнее какие аккумуляторы нужны?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Набор 4WD Kit Bluetooth
Набор 4WD Kit Bluetooth
Осциллограф DSO138 Регулятор мощности 2 кВт
вверх