Робот на Mini2440+ArduinoДанное руководство я пишу как помощь людям, которые начинают или уже собирают робота на базе Mini2440. Надеюсь он им будет полезно. Кроме того, это отличная шпаргалка для меня, так как держать в голове всё сразу достаточно тяжело. Данная ветка будет периодически обновляться, дополняться и изменяться. Это далеко не конечная версия.
Концепт устройства был выбран следующий:
Вложение:
sch1.png [ 17.1 КиБ | Просмотров: 6240 ]
Суть его в двух слова такова: Mini2440 не в состоянии обрабатывать изображение, а, следовательно, не может быть основой для робота без привязки его в компьютеру.
Да и отлаживать логику робота на конечном устройстве в разы сложнее, чем программу на компе. Робот снимает состояние всех датчиков и камеры, передает на комп, а тот, в свою очередь, обрабатывает всю информацию, принимает решение и отправляет его обратно роботу для исполнения. Сама минька также не в состоянии работать с периферией на прямую, поэтому нужно исполнительное устройство. Хоть у меня есть большая база знаний по PIC-микроконтроллерам, я выбрал ныне модный Arduino контроллер, как исполнительно устройство к которому будет подключаться вся периферия. Arduino в настоящий момент имеет гигантскую библиотеку примеров для работу практически с любыми устройствами, так что в написании программы для него проблем быть не должно. Тем более, что она уже наполовину написана. В настоящий момент идет допил скелета для формирования протокола обмена информации между компом и Arduino.
Еще с института я ненавижу Visual Studio и считаю, что все решения, которые разработчики в него внедряют далеки от реальности. Еще тогда пытаясь написать проект для VS, я с ужасом увидел как один парень с потока написал такой-же проект под Builder C++ на порядок быстрее. Компоненты рулят! А MFC вообще страшный сон. Посему только Builder C++. К сожалению разработчики библиотеки OpenCV старательно обходят эту среду разработки стороной. Первый вопрос к народу:
я нашел собранные библиотеки OpenCV 2.0 для Builder C++. Но для более поздних версий (2.1 или 2.2) найти не могу. Помогите!Программное взаимодействие выбрано следующим:
Вложение:
sch2.png [ 33.76 КиБ | Просмотров: 6235 ]
На миньке устанавливается ser2net, которая передает реальный com порт по сети через wifi. На PC ставится программа HV Virtual Serial Port, которая формирует (виртуально) этот порт в компе. Фактически появляется порт, через который можно управлять Arduino совершенно абстрагируясь от того, что Arduino подключено не напрямую к компу, а через миньку и wifi связь.
Камера подключается непосредственно к миньке, да и скорости com порта явно не достаточно для передачи изображения. Я решил использовать mjpg-streamer, которая граббит изображение с камеры и формирует виртуальную web страницу, которую опять же по сети можно открыть с компа. И, а это пока не решено, грабить библиотекой OpenCV.
У кого-нибудь опыт в подобном есть?Фактически минька у меня получилась большим таким Wifi USB хабом. И я уже было начал думать, а покупке готового такого. а) Но таких нет б) Те, что есть стоят сумасшедшие деньги.
Самое сложное это, конечно, настроить миньку. Требования к настройке были таковы:
1. Уход от Qtopia и установка Debian. Во первых нет графики, а это плюс к производительности. Экран мне к миньке вообще для робота не нужен. Во вторых это система пакетов, которые ставить одно удовольствие. Решено, хотя есть вопросы и замечания.
2. Работа с USB Wifi брелоком. Который должен подключаться к точке через WPA.
Не решено!3. Связь с минькой через терминал по сети через putty. Отменная программа! Решено.
4. Установка и настройка mjpg-streamer для передачи видео-потока по сети.
Не решено. Моя USB камера не UVC. У кого есть наработки?5. Работа с SD флешкой. Дабы беречь встроенную. Решено для ext3, а она нисколько не бережет флешку.
Поставил пакеты:
- apt-get install mc (а как же без midnight commander-а? Через ssh putty он точь-в-точь как настоящий)
- wireless-tools (программы для wifi)
- ser2net (для расшаривания ком-порта по сетке. Суть мою уловили уже?)
- minicom (терминал, для того чтобы тестить связь с платой исполителя)
- moon-buggy (just for fun)
- wget (качалка с инета)
- udhcpc (DHCP)
- usbutils (в первую очередь для lsusb)
- bzip2 (распаковывать .tar.bz2)
- gcc (компилятор)
- build-essential (для работы make и остального)
Debian пашет. Всем доволен. Но столкнулся с вопросом, который меня остановил:
как правильно установить и настроить wifi-брелок TL-WN321G?
- ядро собирал сам, так как стандартное не держит ни одну ФС, а уменя ext3 на SD флешке
- распаковал linux-usb-wifi_linux-2.6.32.2_20100728.tgz в корень
- scan-wifi видит соседскую сетку каждый раз, а мой роутер 1 раз из 3-х. Почему?
- start-wifi подключает к wifi-роутеру, однако скорость подключения просто плачевная - 2-3 кб/с.
- всё утилиты пакета linux-usb-wifi_linux-2.6.32.2_20100728.tgz жалуются, что не могут загрузить
модуль ath9k_htc. Как я понимаю модуль не стандартный и ставится на ядро патчем compat-wireless-2.6.tar.bz2
Кто-нибудь знает как?
- iwconfig заставить работать не удалось.
Мой главный вопрос: Как заставить работать TL-WN321G под Debian?P.S. Есть ли у кого ядро на которое не ругается тот же scan-wifi? Нужна поддержка ext3 и здравость смысла
Для компьютера требования такие:
1. Builder C++. Есть, только вот с версией не определился.
2. OpenCV 2.1 или 2.2. для Builder C++.
Помогите пожалуйста.3. Захват потока mjpg-streamer посредством OpenCV.
Не решено, так как пока не купил камеру. У кого есть опыт в подобном?4. Виртуальный com порт, для управления Arduino. Решено.
Железо.
Концепт такой
Вложение:
sch3.png [ 84.18 КиБ | Просмотров: 6239 ]
Двойная литий-ионная батарея на 7.2В (для большей емкости) питает плату контроллера двигателей и импульсный блок питания, который формирует 5В 2А для всего остального робота. Плате контроллера двигателей 7,2В необходимо непосредственно для самих двигателей. Блок питания собрал на LM2576.
Вложение:
lm2576-5_0.jpg [ 20.97 КиБ | Просмотров: 6230 ]
5В подается на миньку (а ей нужен 1А!) и на Arduino. К Arduino подключены следующие устройства:
1. Контроллер двигателей на L298N. Плата управляет 4 двигателями через 2 канала: левый и правый. Двигатели спарена по два на каждый канал параллельно. Решено.
Сама схема взята от сюда
http://robozone.su/2008/04/16/modul-upravlenija-jelektrodvigateljami.html. За что им огромное спасибо.
Вложение:
dc-driver-l298n.gif [ 37.78 КиБ | Просмотров: 6306 ]
2. 6 штук ультразвуковых датчиков, которые должны располагаться на корпусе по кругу. Не решено, но на финишном пути.
3. Две сервомашинки для управления USB камерой по оси X и Y. Решено.
4. Цифровой компас. Не мыслю себе робота без компаса, но пока не определился с моделью. Один приобрел. Остался очень не доволен точностью!
Не решено. Может быть, кто подскажет проверенные компасы?5. Два енкодера вращения колес. По одному на каждый канал. Не решено, но в самом ближайшем будущем будет.
Вложение:
Wheel-Encoders-for-DFRobot-3PA-and-4WD-Rovers.jpg [ 9.18 КиБ | Просмотров: 9997 ]
Вложение:
encoder3.jpg [ 90.75 КиБ | Просмотров: 6238 ]
6. TTL конвертер уровней сигналов. Дело в том, что в миньке com порт на 3.3В, а в Arduino на 5В. Для этого я использовал конвертер уровне. Решено.
Вопрос успешно решен и проверен. Решив не рисковать портами процессора миньки я предпочел сделать конвертер уровней. Пятивольтовую сторону подключил к TX и RX Arduino (или любому другому пятивольтовому устройству), а 3.3-вольтовую сторону к TTL-Com порту миньки.
Я использовал BSS138 для двунаправленного конвертирования логических уровней.
Вот схема.
Вложение:
conv.jpg [ 14.74 КиБ | Просмотров: 6218 ]
7... пока больше нет идей.
Для основы робота приобрел на
http://www.ebay.com четырехколесную платформу Arduino 4WD с энкодерами в придачу. Вещь очень неплохая, хотя движки могли быть и по лучше и по качественнее.
Вложение:
4wd3.jpg [ 43.07 КиБ | Просмотров: 6216 ]
Вложение:
dfrobot-4wd-package-details.jpg [ 47.47 КиБ | Просмотров: 6232 ]
На платформу установил Arduino, блок питания и контроллер двигателей. Так же прикрутил две сервы через скобы Tilit&pan, к которым в последвите будет прикручена камера. Сверху разместил миньку и подключил ее к БП,а через конвертер уровней к com порту Arduino. Аккумуляторов пока нет. Закажу когда собиру железо окончательно и пойму сколько у меня есть места на аккумуляторы.
В свою очередь к миньке через USB хаб. Подключаю USB камеру и USB Wifi брелок.
Вложение:
robot1.jpg [ 149 КиБ | Просмотров: 6228 ]
Вложение:
robot2.jpg [ 140.54 КиБ | Просмотров: 6220 ]
Вложение:
robot3.jpg [ 133.61 КиБ | Просмотров: 6222 ]
Вложение:
robot4.jpg [ 111.04 КиБ | Просмотров: 6219 ]
Вложение:
robot5.jpg [ 125.87 КиБ | Просмотров: 6222 ]