roboforum.ru

Технический форум по робототехнике.

Робот на Mini2440+Arduino

Робот на Mini2440+Arduino

Сообщение Tsi329 » 25 май 2011, 01:51

Робот на Mini2440+Arduino

Данное руководство я пишу как помощь людям, которые начинают или уже собирают робота на базе Mini2440. Надеюсь он им будет полезно. Кроме того, это отличная шпаргалка для меня, так как держать в голове всё сразу достаточно тяжело. Данная ветка будет периодически обновляться, дополняться и изменяться. Это далеко не конечная версия.

Концепт устройства был выбран следующий:
sch1.png

Суть его в двух слова такова: 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

На миньке устанавливается 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

Двойная литий-ионная батарея на 7.2В (для большей емкости) питает плату контроллера двигателей и импульсный блок питания, который формирует 5В 2А для всего остального робота. Плате контроллера двигателей 7,2В необходимо непосредственно для самих двигателей. Блок питания собрал на LM2576.
lm2576-5_0.jpg

5В подается на миньку (а ей нужен 1А!) и на Arduino. К Arduino подключены следующие устройства:
1. Контроллер двигателей на L298N. Плата управляет 4 двигателями через 2 канала: левый и правый. Двигатели спарена по два на каждый канал параллельно. Решено.
Сама схема взята от сюда http://robozone.su/2008/04/16/modul-upravlenija-jelektrodvigateljami.html. За что им огромное спасибо.
dc-driver-l298n.gif

2. 6 штук ультразвуковых датчиков, которые должны располагаться на корпусе по кругу. Не решено, но на финишном пути.
3. Две сервомашинки для управления USB камерой по оси X и Y. Решено.
4. Цифровой компас. Не мыслю себе робота без компаса, но пока не определился с моделью. Один приобрел. Остался очень не доволен точностью! Не решено. Может быть, кто подскажет проверенные компасы?
5. Два енкодера вращения колес. По одному на каждый канал. Не решено, но в самом ближайшем будущем будет.
Wheel-Encoders-for-DFRobot-3PA-and-4WD-Rovers.jpg
Wheel-Encoders-for-DFRobot-3PA-and-4WD-Rovers.jpg (9.18 КиБ) Просмотров: 9977

encoder3.jpg

6. TTL конвертер уровней сигналов. Дело в том, что в миньке com порт на 3.3В, а в Arduino на 5В. Для этого я использовал конвертер уровне. Решено.
Вопрос успешно решен и проверен. Решив не рисковать портами процессора миньки я предпочел сделать конвертер уровней. Пятивольтовую сторону подключил к TX и RX Arduino (или любому другому пятивольтовому устройству), а 3.3-вольтовую сторону к TTL-Com порту миньки.
Я использовал BSS138 для двунаправленного конвертирования логических уровней.
Вот схема.
conv.jpg

7... пока больше нет идей.
Для основы робота приобрел на http://www.ebay.com четырехколесную платформу Arduino 4WD с энкодерами в придачу. Вещь очень неплохая, хотя движки могли быть и по лучше и по качественнее.
4wd3.jpg

dfrobot-4wd-package-details.jpg

На платформу установил Arduino, блок питания и контроллер двигателей. Так же прикрутил две сервы через скобы Tilit&pan, к которым в последвите будет прикручена камера. Сверху разместил миньку и подключил ее к БП,а через конвертер уровней к com порту Arduino. Аккумуляторов пока нет. Закажу когда собиру железо окончательно и пойму сколько у меня есть места на аккумуляторы.

В свою очередь к миньке через USB хаб. Подключаю USB камеру и USB Wifi брелок.
robot1.jpg

robot2.jpg

robot3.jpg

robot4.jpg

robot5.jpg
Tsi329
 
Сообщения: 135
Зарегистрирован: 24 авг 2010, 11:48
Откуда: Минск
прог. языки: C++,C,Asm

Re: Робот на Mini2440+Arduino

Сообщение =DeaD= » 25 май 2011, 07:21

Отличный проект, только не совсем ясно зачем тут mini2440, проброску видео и уарта через WiFi можно сделать через намного более дешевый DIR-320 и сразу с WiFi на борту. :oops:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Робот на Mini2440+Arduino

Сообщение Tsi329 » 25 май 2011, 09:19

=DeaD=, спасибо и за отзыв и за совет.
Я раньше как-то недооценивал роутеры в целом и D-Link DIR-320 в частности, но сегодня утром столкнулся со статьей:
http://roboforum.ru/wiki/DIR-320
которая меня заставила посмотреть на вещи по иному.
Требования, которые мне необходимы для реализации роутера в проекте:
1. Габариты. Они 113х147х32. С натягом подходит.
2. Питание. У него 5V на 2А. Многовато, конечно. Минька тянет только 1А. Как следствие аккумулятора будет хватать на меньшее время.
3. Связь с Arduino. Тут возможны два пути:
- через Ethernet shield для Arduino. Кто-нибудь пробовал? Но он, мне почему-то не нравится. Хотя? ;)
- через USB порт роутера. Можно ли его использовать для этих целей? Было бы очень удобно по wifi обновлять прошивку Arduino. Подскажите
4. Подключение USB web камеры. Опять же только UVC. Если возможно использовать встроенный USB порт роутера, то всё просто супер. IP камеру не хочу использовать по трем причинам: габариты, вес и потребеление (2А).
Последний раз редактировалось Tsi329 25 май 2011, 10:30, всего редактировалось 1 раз.
Tsi329
 
Сообщения: 135
Зарегистрирован: 24 авг 2010, 11:48
Откуда: Минск
прог. языки: C++,C,Asm

Re: Робот на Mini2440+Arduino

Сообщение =DeaD= » 25 май 2011, 09:27

Tsi329 писал(а):3. Связь с Arduino.
4. Подключение USB web камеры.


3. Внутри DIR-320 есть обычный UART порт с уровнями 3.3V в статье в робовики всё указано, включая распиновку;
4. Да, вебкамера просто включается в USB-порт роутера. Ограничение только на UVC конечно неприятно, но вроде это разумная плата за такую кучу удовольствия всего за 1.5тр :)

PS: Питание конечно немалое, но не думаю что реально 2А хавает, это же с запасом, рабочий ток наверное 1А. А у вас получается WiFi-Донгл и USB-хаб еще будут хавать в добавок к этому 1А миньки, так что еще не очень ясно кто реально больше поедать будет энергии. Но это просто размышления, я пока не замерял ни там ни там ток.

PPS: Про габариты - у миньки еще получается во все стороны разъемы выходят - это увеличивает реальные габариты устройства от её исходных размеров.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Робот на Mini2440+Arduino

Сообщение noonv » 25 май 2011, 10:37

Builder удобен только из-за своей VCL - т.е. чтобы не морочиться с интерфейсами.
последних версий OpenCV под Builder не встречал :D
удалось получать видео с помощью OpenCV?

как, кстати, решили проблему работы Linux на флешке?
с целью продления срока службы? я монтировал rootfs с опцией noatime
и в fstab-е прописал монтировать /var/log и /var/tmp в tmpfs
а что ещё нужно отключить чтобы на rootfs ничего не писалось?
Аватара пользователя
noonv
 
Сообщения: 600
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

Re: Робот на Mini2440+Arduino

Сообщение dccharacter » 26 май 2011, 15:44

600ма жрет asus wl500gp без подключенной USB-периферии
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Робот на Mini2440+Arduino

Сообщение Tsi329 » 27 май 2011, 08:16

Я купил DIR-320 для исследований! :Yahoo!:
=DeaD= писал(а):3. Внутри DIR-320 есть обычный UART порт с уровнями 3.3V в статье в робовики всё указано, включая распиновку;

Да, спасибо. Прочитал, разобрался. У меня вот какой вопрос. Я хочу через usb-hub подключить и камеру, и Arduino к DIR-320. И на это есть две причины: 1. Не хочу вскрывать пока DIR-320 пока на нее есть гарантия. Хотя через через встроеный com-порт самый простой вариант. 2. Если подключусь к Arduino через USB, то я буду иметь возможность прошивать его через wifi. Вот главная причина из причин. Т.е. подключил Arduino к DIR-320 через USB. В Arduino появился ком порт (например /dev/ttyS1) и я его при помощи suart через wifi перебрасываю на комп. Идея очень соблазнительна. Подскажи, если не трудно как реализовать.
=DeaD= писал(а):4. Да, вебкамера просто включается в USB-порт роутера. Ограничение только на UVC конечно неприятно, но вроде это разумная плата за такую кучу удовольствия всего за 1.5тр :)

С тем, что придется брать UVC камеру я уже смирился как с минькой, так и здесь ;)

Добавлено спустя 6 минут 45 секунд:
noonv писал(а):Builder удобен только из-за своей VCL - т.е. чтобы не морочиться с интерфейсами.
последних версий OpenCV под Builder не встречал :D

Он значительно упрощает жизнь в целом. Как с интерфейсами, так и с компонентами, так и в реализации самый смелых идей. В VS2010 сделано всё, чтобы не допустить этого. А если необходимо отойти от стандартного интерфейса хотя бы на шаг, начинается такой свистопляс, что ну его ;)
noonv писал(а):удалось получать видео с помощью OpenCV?

Вопроса не понял, но в связке VS2008+OPENCV2.1 да.

noonv писал(а):как, кстати, решили проблему работы Linux на флешке?
с целью продления срока службы? я монтировал rootfs с опцией noatime
и в fstab-е прописал монтировать /var/log и /var/tmp в tmpfs
а что ещё нужно отключить чтобы на rootfs ничего не писалось?

Спасибо за идею, но я пока не работаю в этом направлении. Мне бы разобраться в самой приоритетной задаче. Менять ли миньку на DIR-320 в роботе. И пока я склонен менять на все 100.

dccharacter писал(а):600ма жрет asus wl500gp без подключенной USB-периферии


Спасибо. Это очень ценно и обнадеживающе для меня.
Tsi329
 
Сообщения: 135
Зарегистрирован: 24 авг 2010, 11:48
Откуда: Минск
прог. языки: C++,C,Asm

Re: Робот на Mini2440+Arduino

Сообщение =DeaD= » 27 май 2011, 08:26

Я извиняюсь, а зачем вам постоянно перепрошивать Arduino?

И по поводу перепрошивки - сейчас avrdude и другие программы-программаторы не смогут скорее всего использовать этот проброшенный COM-порт, т.к. на ПК он не представлен в качестве COM-порта. Кроме того suart не даёт дергать линию DTR, т.е. придётся рукой нажимать сброс на МК.

Если у вас на роботе стоит такой мощный девайс, как DIR-320 - скорее всего вам от Arduino надо тупое выполнение поступающих через UART команд, а это надо взять нашу ORFA и портировать на Arduino, либо взять уже что-то готовое для Arduino, позволяющее на нём выполнять UART-команды.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Робот на Mini2440+Arduino

Сообщение noonv » 27 май 2011, 09:04

=DeaD= писал(а):Если у вас на роботе стоит такой мощный девайс, как DIR-320 - скорее всего вам от Arduino надо тупое выполнение поступающих через UART команд, а это надо взять нашу ORFA и портировать на Arduino, либо взять уже что-то готовое для Arduino, позволяющее на нём выполнять UART-команды.

тут или свой протокол использовать или, например, воспользоваться готовым протоколом Firmata
Аватара пользователя
noonv
 
Сообщения: 600
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

Re: Робот на Mini2440+Arduino

Сообщение =DeaD= » 27 май 2011, 09:05

Кстати, а эта Firmata делает проброску i2c? Куча датчиков цифровых просто под ним...
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Робот на Mini2440+Arduino

Сообщение noonv » 27 май 2011, 09:10

нужно посмотреть :)
Последний раз редактировалось EdGull 27 май 2011, 09:15, всего редактировалось 1 раз.
Причина: Устное предупреждение за излишнее цитирование! В следующий раз сразу бан.
Аватара пользователя
noonv
 
Сообщения: 600
Зарегистрирован: 21 май 2007, 22:57
Откуда: Калининград
прог. языки: C++

Re: Робот на Mini2440+Arduino

Сообщение Tsi329 » 31 май 2011, 13:47

=DeaD= и все, кто этим занимался, какую UVC камеру выбрать для работы с DIR-320???
Я так понимаю, что требования мои должны быть такими: 640x480x30FPS. Заранее спасибо!
Tsi329
 
Сообщения: 135
Зарегистрирован: 24 авг 2010, 11:48
Откуда: Минск
прог. языки: C++,C,Asm

Re: Робот на Mini2440+Arduino

Сообщение =DeaD= » 31 май 2011, 13:57

У меня хорошо работала Logitech HD C270

Добавлено спустя 2 минуты 28 секунд:
Еще вроде хороши Logitech Webcam C310.

Не советую Logitech Webcam C200 - качество не очень, A4Tech PK-635K - она YUV, тормозит всё очень из-за перекодировки.

http://www.ideasonboard.org/uvc/ - тут в целом список совместимых с UVC, но нету информации, является ли камера YUV.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Робот на Mini2440+Arduino

Сообщение Tsi329 » 02 июн 2011, 19:25

=DeaD= писал(а):У меня хорошо работала Logitech HD C270


Спасибо. Заказал C270.

Есть несколько вопросов:
1. Прошился WL500gpv2-1.9.2.7-rtn-r3015M.trx. Всё запустилось вроде. Что делать с файлом папкой Modules ?
2. Как подключится не через telnet, а через ssh? Есть ли смысл?
3. Как посмотреть логи? Где они хранятся? Я не теряю надежду настроить Arduino через USB интерфейс (уж очень не хочется вскрывать новенький DIR-320). Втыкаю Arduino в DIR-320 и ничего. Где узнать как отреагировал Линукс?

Заранее спасибо.
Tsi329
 
Сообщения: 135
Зарегистрирован: 24 авг 2010, 11:48
Откуда: Минск
прог. языки: C++,C,Asm

Re: Робот на Mini2440+Arduino

Сообщение Tsi329 » 04 июн 2011, 05:17

Tsi329 писал(а):Есть несколько вопросов:
1. Прошился WL500gpv2-1.9.2.7-rtn-r3015M.trx. Всё запустилось вроде. Что делать с файлом папкой Modules ?

Это модули ядра. Их можно грузить. insmod ftdi_sio например позволяет подключать Arduino.

Tsi329 писал(а):3. Как посмотреть логи? Где они хранятся? Я не теряю надежду настроить Arduino через USB интерфейс (уж очень не хочется вскрывать новенький DIR-320). Втыкаю Arduino в DIR-320 и ничего. Где узнать как отреагировал Линукс?

Либо через web-интерфейс. Либо через команду dmesg.
Tsi329
 
Сообщения: 135
Зарегистрирован: 24 авг 2010, 11:48
Откуда: Минск
прог. языки: C++,C,Asm

След.

Вернуться в mini2440

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4