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

в 7:58, , рубрики: diy или сделай сам, embedded, linux, Программинг микроконтроллеров, робототехника, сделай сам, метки: , , ,

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

При создании бота ставились следующие задачи:

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

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

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

Первая проверка внутреннего USB host-а:
Самодельный бот с камерой и управлением по wifi

Окончательный вид установленного USB host-а:
Самодельный бот с камерой и управлением по wifi

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

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

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

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

Изначально платформа 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, который не давал ей закрыться:
Самодельный бот с камерой и управлением по wifi

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

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

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

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

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

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

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

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

Ссылки

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

Автор: sashz

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js