Гусеничная платформа на Arduino, управляемая с Android-смартфона

Я никогда не имел опыта в программировании микроконтроллеров, по этому давно хотел сделать какую-нибудь поделку на Arduino. Ардуино — это очень простая в освоении платформа, к которой легко подключить внешние датчики (дальномеры, гироскопы, акселерометры, датчики температуры и освещенности и т.п.) и устройства: моторчики/сервоприводы и т.п.

Профессионалы электронщики не любят эту платформу, так как она во-первых слишком дорогая: зачастую устройство собранное на Ардуино, можно пересобрать на других компонентах и в разы его таким образом удешевить. Во вторых, она дает слишком высокий уровень абстракции от используемых микросхем и затем перейти к изучению более низкоуровневых компонент становится очень сложно. Тем не менее, для хобби-проекта для людей с нулевым опытом в области работы с железом эта платформа, по моему мнению, подходит идеально.

Катализатором, который заставил меня перейти от мыслей к делу стала вот эта серия статей на Хабре: http://habrahabr.ru/post/133414/, http://habrahabr.ru/blogs/DIY/135371/, http://habrahabr.ru/post/136224/. Я решил собрать аналогичную платформу, только управляемую не джойстиком, а Python-приложением с компьютера и с Android-смартфона. В дальнейшем хочу дописать серверный софт, который позволит управлять платформой через браузер и видеть в нем изображение с камеры. Именно для этого первая версия приложения для компа пишется на Питоне, чтобы проще было перенести код в веб.

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

Результат

Это самая первая версия под кодовым названием “На соплях, резинках и двустороннем скотче”. Пока нет ни камеры, ни аккумулятора, платформа разваливается на ходу :) Но уже управляется с компьютера. Впервые я написал программу, которая манипулирует не какими-то данными и пикселями, а объектами в реальном мире. Чувствовал себя покорителем космоса :)

На втором этапе я докупил деталек для платформы, теперь она уже не дребезжит и не разваливается на части. Кроме того, я написал управляющую платформой софтину для Андроида. Это был мой первый опыт разработки под Андроид, на разработку приложения и отладку ушло вечеров пять, которые растянулись на 2 недели. Приложение получилось не очень юзер-френдли, но вполне работоспособным.

И вот последняя версия. Теперь уже с камерой.

На данном этапе дальнейшую разработку проекта я заморозил (немного устал я от него), но надеюсь вернуться к нему через некоторое время и доделать самую интересную часть: управление платформой через интернет и стриминг виде с камеры в есть.

Железо

Несколько слов о железе. Платформа состоит из двух этажей. На первом стоят аккумуляторы, моторчики с редуктором и гусеницы. На втором — Ардуино, Моторшилд (управляет моторчиками) и Сенсоршилд (управляет сервоприводами и bluetooth-адаптером), а также камера, на подвесе управляемым сервоприводами и передатчик.

Несмотря на подробное описание на Хабре мне пришлось помучиться с подбором некоторых устройств: пришлось купить 2 разных bluetooth-адаптера и 3 разных приемника-передатчика для камеры, прежде чем я подобрал нужные компоненты. Все дело в том, что на Ибее разные китайские устройства, типа тех же приемников, имеют одинаковые на вид коробки и фотографии, но отличаются по параметрам и комплектацией, по этому перед заказом нужно очень внимательно вчитываться в спецификации товара.

Ниже список использованных мною компонент.

Механика:

Исходя из полученного в процессе работы опыта, сейчас я бы не стал собирать платформу вручную, а купил бы готовую, например такую: http://www.dfrobot.com/index.php?route=product/category&path=37_111. Да это дороже, но зато позволяет одним махом решить проблемы со слетающими гусеницами, креплением устройств и т.п. А также это сильно экономит время и сразу позволяет перейти к самой интересной части работы — программированию Ардуино.

Электроника:

  • Arduino Uno,
  • Motorshield,
  • SensorShield,
  • Блютус-адапетер, обязательно работающий в режиме slave, а не master!!!
  • Камера. Я брал отдельно камеру и приемник/передатчик для нее, проще, конечно, сразу купить камеру с беспроводными приемником-передатчиком,

Разное:

  • Сервоприводы, будут использоваться для управления подвесом камеры,
  • два аккумулятора: один для Ардуино, второй для камеры.
  • Беспроводной приемник-передатчик видеосигнала JMK WF-007SK. Дешевый, но не очень качественный, уже на нескольких метрах между приемником и передатчиком видео передается с помехами.
  • USB-устройство для видеозахвата (для того чтобы сигнал с приемника можно было увидеть на компьютере) EasyCap USB Video Capture Adapter
  • Зарядное устройство для литий-полимерных (Li-Poly) аккумуляторов, любое из этих: http://www.hobbyking.com/hobbyking/store/__216__408__Battery_Chargers_Acc_-Battery_Chargers.html, к нему понадобится блок питания и пачка проводов-переходников, так как коннекторы у аккумуляторов бывают очень разными.

Вроде бы ничего не забыл.

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

Upd 29.12.2013 Исходники скетча для Ардуино, Андроид/десктоп-приложения выложил на Гитхаб: https://github.com/romka/arduino-bluetooth-crawler.