11 April 2013

Самодельный бот с камерой и управлением по wifi

Configuring Linux
Sandbox
Прочитав опубликованную статью Однажды фанера, atmega, да малина, я решил поделиться своей поделкой, которая доступна (не сложна) для повторения.

При создании бота ставились следующие задачи:
  • Управление ботом по беспроводной сети
  • Наличие онлайн камеры
  • Удобство программирования


Бортовой компьютер


Для бортового компьютера был выбрал двухъядерный андроидный миникомпьютер UG-802, который имелся под рукой. В качестве операционной системы — полноценный линукс дистрибутив, сборка Ubuntu от Linaro.



Для начала нужно было чтото сделать с проблемным встроенным wifi адаптером, который упорно не желал запускаться под пересобранным ядром. Кардинальным решением было выпаять его и установить второй USB хост коннектор, в который можно будет воткнуть нормальный usb wifi (или даже 3G модем). Сказано — сделано, плата встроенного wifi была отпаяна и вместо нее напаян второй хост.

Первая проверка внутреннего USB host-а:


Окончательный вид установленного USB host-а:


Колесная платформа


Когда-то я заказывал платформу Ardubot и колеса с моторами к ней, но руки до нее не доходили. Не долго думая, было решено ей воспользоваться. На нее была смонтирована плата преобразователя с 12 в 5 вольт, выдранная из специально купленной в магазине автомобильной зарядки (используемая в ней микросхема имеет более широкий диапазон входного напряжения). Литий-полимерный аккумулятор на 11.1В/1250мА уже имелся от разбитой, в прошлом, модели самолета. Плату Ardubot-а пришлось подвергнуть легкой модификации из-за особенностей платы управления (дорожка отрезана от D9 и запаяна на D7). Так же был установлен усб разъем, на который выведено только 5 вольтовое питание:


Сзади видны провода идущие от энкодеров колес:


Управление двигателями, светом


Изначально платформа Ardubot была расчитана на совместное использование с Arduino, почему бы этим не воспользоваться. Вместо Ардуино я взял OLIMEX PIC32-PINGUINO-MX220, совместимый по разъемам. Выяснилась неприятная мелочь — один из пинов управления мотором был использован для светодиода на плате PINGUINO. Все бы ничего, но этот светодиод мигал в режиме загрузки фирмвари, заодно проворачивая колесо. Поэтому пришлось перепаять дорожку, о чем было написано выше.

Для простоты отладки и универсальности, плата управления подключается через USB. Прошивка PINGUINO эмулирует CDC-ACM устройство, видимое для пользователя как последовательный порт /dev/ttyACM0. Отправляемые команды управления выглядят так:
MOTOR X Y X — номер мотора, Y — состояние
LIGHT X Y X — номер лампы, Y — состояние
CLEAR сбросить все в состояние по умолчанию
COMMIT Применить


Нумерация моторов: 0 — левый, 1 — правый.
Состояния: 0 — остановлен, 1 — вперед, -1 — назад.

Например, чтобы включить задний светодиод на платформе, достаточно из консоли отправить команды:
echo "LIGHT 1 1" > /dev/ttyACM0
echo "COMMIT" > /dev/ttyACM0


Чтобы поехать вперед:
echo "MOTOR 0 1" > /dev/ttyACM0
echo "MOTOR 1 1" > /dev/ttyACM0
echo "COMMIT" > /dev/ttyACM0


Камера и хаб


Один USB порт бортового (ботового) компьютера используется wifi адаптером, в другой плата управления платформой. Куда подключить камеру? Выход есть — использовать хаб. В одном из компьютерных магазинов была куплена одна из самых дешевых веб камер и USB хаб подозрительного вида.

Размещение электроники


В процессе поиска из чего слепить бота, была удачно найдена пластиковая коробочка-упаковка из под IPOD TOUCH, в которую идеально влазил UG802 и разобранный USB хаб. Для трех коннекторов хаба в боку был сделан вырез. В четвертый (внутренний) коннектор воткнулась камера (с предварительно укороченным кабелем). В крышке также был сделан вырез под разъем USB на UG802, который не давал ей закрыться:


Все это дело прикрутилось сверху над PINGUINO-MX220 — платой управления платформой:


Окончательная сборка и тестирование


Наступило время собрать все в одно целое:


Все проводки были воткнуты куда им положено — PINGUINO в хаб, UG802 питание в USB коннектор на Ардуботе:


Бортовой компьютер настроен для доступа по ssh, весь нужный инструментарий для работы (компилятор, библиотеки, mc) установлены из репозитория Linaro. Заходи, пиши, компилируй и отлаживай прямо на нем. Красота!

Для тестирования разработана консоль управления, которая показывает онлайн изображение с камеры бота и отправляет ему команды куда ехать, какие лампы включить-выключить. Софт бота принимает команды и отправляет онлайн видео на консоль управления. Текущий статус — глубокая бета. Однако пользоваться системой уже можно!

Видео демонстрация




Рекомендации

Необязательно использовать спаркфановский ардубот, есть более дешевые и лучшие варианты.
UG802 можно также заменить дешевыми аналогами (MK802, CX-01), но нужно смотреть, чтобы были доступны исходники ядра, работающие на конкретном девайсе-клоне. Иначе установка полноценного линукса будет проблематична либо вообще невозможна.

Ссылки

Проект на гугол коде (исходники)
Linaro
PIC32-PINGUINO-MX220 на сайте OLIMEX
Ardubot на Sparkfun

Tags:робототехникасделай самlinuxembedded
Hubs: Configuring Linux
+40
45.1k 220
Comments 23
Top of the last 24 hours