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

  • Час 8-05-2015, 20:30
  • Автор admin
  • Коментарів 0 Комент.
  • Силка url

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

В інтернеті існує маса статей з використання мобільних платформ совісно з 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.

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

Як видно на вищенаведеному малюнку, взаємодія між смартфоном і гусеничної платформою здійснюється безпосередньо по Bluetooth-канал, а взаємодія з камерою здійснюється за допомогою Wi-Fi каналу, альо через маршрутизатор. І це великий мінус - тому без маршрутизатора всі операції з камерою працювати не будуть, приміром на вулиці або де-небудь за містом. Я намагався зробити пряме управління через Wi-Fi, включивши на На е режим Host Wi-Fi, але нічого не вийшло, до камери вдається достукатися, але працювати в цьому напрямку продовжую, і можливо що надалі вийти зробити пряму взаємодію без маршрутизатора . Є припущення, що для цього необхідна камера з підтримкою технології wi-Fi Direct.

IP-камера

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

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

Модель 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), а також наявності енкодерів.

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

Платформа поставляється без верхньої кришки, в точно такому ж вигляді, як на фото вище.

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

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

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

Вид з встановленою кришкою:

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

У платформі Rover 5 було вирізано отвір для установки здвоєного трипозиційного перемикача живлення / зарядки.

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

Акумулятори та плата перетворювача були розташовані всередині корпусу шасі. У кришці були вирізані відчини для виведення проводів до плати управління, камері і драйверу двигунів. Для зарядки акумуляторів були виведені 2 роз'ясненнями об'єми.

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

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

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

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

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

Апаратна частина

Ця частина проекту практично повністю ідентична CxemCAR 1.0 Arduino. Єдине, що додалася камера і тому вона вимагає 5В джерела постійного струму, то був доданий step-down перетворювач напруги на мікросхемі LM2596.

Схема ж управління шасі залишилася незмінною:

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

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

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

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

Програмна частина

Весь софт написаний у вільно-поширюваної середовищі Eclipse. Структура проекту:

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

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

За роботу з MJPEG потоком відповідає 2 класу: MjpegInputStream і MjpegView.

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

Додаток містить меню з налаштуваннями:

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

Налаштування детально розписувати не буду, тут думаю все зрозуміло.

Вікно управління виглядає наступним чином:

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

Зліва розташовані кнопки управління платформою, по центру відображається відеопотік з камери, а праворуч розташовані кнопки управління камерою.

При наявності навичок програмування на ПК, можна реалізувати керування гусеничної платформою з комп'ютера, через інтернет та ін. Способами.

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

Тема підтримки на форумах

Прикріплені файли:
  • IPCAM CGI SDK V1_7.pdf (152 Кб)
Tags

Коментарі до новини