Цель повествования – изложить в одном месте информацию, которую мне по крупицам пришлось собирать из разных источников, дабы облегчить жизнь таким же, как я, ищущим, но мало сведущим. Поэтому, думаю, что эта информацию будет полезна прежде всего тем, кто активно интересуется этой темой, хотел бы сделать своими руками такого WiFi робота, но мало разбирается в программировании, радиолюбительском деле, линуксе, как по отдельности в каждом предмете, так и в целом. Я, например, ни в одной из этих областей не специалист. Для таких же и пишу о том, что и как получилось.
Начало
Итак, началось все с того, что идея управления игрушечными устройствами от первого лица (т.н. FPV) мне показалась чрезвычайно интересной с точки зрения собственно процесса игры. Ведь мы можем таким образом реализовать свое присутствие, не в виртуальном мире, а в реальном, через консоль, т.е. получается некая «реальная виртуальность», где поведение в игре объектов подчиняется настоящим физическим законам.
Проще и быстрее всего применить эту идею на игрушечных или модельных автомобилях. Текущие технологии должны давать такую возможность и мне подумалось, что промышленность, должно быть, предлагает массу подобных вещей.
Однако, гугление этой темы показало, что с ready-to-use комплектами проблема – нашел один, за 11 тыс.руб., но, я так понял, он работает на BlueTooth (
Выбор платформы
Стало понятно, что придется делать его самому. К этому времени я пришел к выводу, что есть смысл рассматривать строительство робота только с использованием WiFi в качестве радио, как для видео, так и для команд управления. Идея использования каких-либо радиоразработок для передачи видео и управления из сферы RC мной сразу отметалась, так как сформировалось второе требование к роботу: меньше сложностей и дешевле, кроме того, идея была в управлении через компьютер, а не пульт. Не подходил и Bluetooth, в силу своей маломощности в смысле дальности связи и нагрузки на такую сеть. Если использовать такого робота на открытой площадке, то теоретически дальности WiFi должно быть достаточно для достаточно продолжительной трассы.
Погуглил на тему, кто уже что собирал. Информации оказалось настолько мало, что я поразился. Второй удивительный факт – отписывались в основном иностранчеги.
Чтоб дальше было понятно, сразу приведу типовую схему встречающихся проектов:
По результатам ресерча я разделил попавшиеся реализованные проекты на части:
1) робот на базе настоящего PC (ноутбук или усеченная материнка). Отметаются, как не изящные и дорогие решения.
2) экзотические варианты, платформы, о которых я никогда не слышал, типа gumstix – это одноплатный комп, к нему можно подключать модули расширения, в т.ч. WiFi. Отметается, т.к. дорого и геморно.
3) роботы на базе WiFi роутера. Их можно подразделить на виды, где:
А) роутер работает в режиме точки доступа, к ней присоединены IP модули-части машинки (камера, микропроцессор). Типичный, если не единственный проект -
К CUBLOCу по COM-порту прицеплен крошечный веб-сервер MaxPort, а уже разъем веб-сервера прицеплен к роутеру. Т.о. с точки зрения роутера вся эта связка (CUBLOC+MAXPORT) представляет собой компьютер с IP, или по-другому – CUBLOC имеет свой IP. При такой архитектуре проще коммуницировать с микропроцессором, т.к. роутер будет заниматься тем, для чего его изготовили и не нужно с ним извращаться. Однако, веб-сервер типа MaxPorta стоит 70-110 usd. Сам CUBLOC – баксов 30-45, еще к нему нужна базовая плата и плата управления движками (еще баксов 100). Проект Дэвида Шелато получается дороговатым. Но мне кажется, что это самый простой путь для новичка и самый изящный. Больше готовых компонентов, меньше сложного программирования и пайки. Кстати, сам проект CUBLOC, несмотря на внешние прелести, видимо не особо популярен в штатах, например, на сайте кьюблока присутствуют фото с сайта Шелато, его автомобильчика, построенного на базе CUBLOCа, что видимо должно подчеркнуть юзабельность продукта, но подчеркивает лишь то, что такой частный проект с CUBLOC – один. Что касается камеры, в проекте она также IP, т.е. со встроенным сервером. Как и говорилось, соединив все это (микропроцессор, камеру) к роутеру, дальше остается организовать доступ к самому роутеру, и все.
Б) Вот где оказалась собака порыта! (с) Многие роутеры работают под управлением операционных систем основанных на линуксе. Это дало почву для развития альтернативных прошивок, в результате заливки которой роутер мало чем отличается от настоящего компа с ОС Линукс, но разумеется, маломощного (проц все-таки 200-300 Мгц). Это дает возможность, использовать роутер не по назначению, а по фантазии. После обязательных танцев с бубном, всякие продвинутые чуваки цепляют к ним торренто-качалки/раздавалки, 3G модемы, хранилища данных, видеокамеры и еще чего-то. В отношении проекта WiFiавторобота это дает отличную возможность удешевить робота – ибо как к компу можно цеплять по COM-порту и USB порту все, что душе угодно, так и здесь – не надо огород городить с подключением к роутеру только IP Устройств, можно подключать по имеющимся физическим портам. При этом роутер тоже внешне используется как точка доступа, но помимо точки доступа предоставляет функционал компьютера.
Самым документированным и полезным проектом, основанном на таком подходе, найденным мной в инете является - Wifi Robot - JBProjects.net. В этом проекте в роутере используется прошивка OpenWRT, как я говорил, это - одна из разновидностей Линукса для встраиваемых, компактных систем. Кстати, в комментах к проекту часто встречается «great tutorial», так и есть – это великолепное пособие для начинающих, несмотря на возраст автора – 23 года, студент (в 2008 г). Внимательно изучив проект, я решил делать свой на его основе. Был еще один подобный, но там автор микропроцессорную часть построил аж на 2х PICах (микропроцессоры такие) с использованием протокола I2C. «Ужос» - решил я, и закрыл ту страницу, потеряв ее навсегда.
Закончив на этом исследования предмета, далее начнем собирать автомобильчик, имея под рукой руководство Джонатана.
Общий обзор схемы работы оборудования и программ
Вначале пробежимся по схеме, рассмотрим крупноблочную теоретическую часть.
Схема 2. Крупноблочная схема реализации проекта на базе WiFi роутера
Программ четыре: на PC, на роутере (сервер управления и видеопоток), и в микропроцессоре.
Схема работы: соединяем настольный компьютер (ноутбук, далее - PC) с роутером по WiFi. На роутере при его включении автоматически загружаются 2е программы:
1) сервер. Эта программа открывает сокет (соединение) на определенном порту и ждет, когда по этому порту с ней соединится клиент (любая прога, которая постучит в этот порт и также, особым образом скажет серверу, что она пришла работать через открытый сокет). Далее, после установки соединения, все что придет от клиента, будет перенаправлено по определенному пути, для нас это COM-порт, на этом порту подключен микропроцессор. И наоборот, все что придет со стороны COM-порта, будет переслано клиенту.
2) программа обработки видео, захватывает его с usb камеры и шлет на определенный порт. Для его просмотра нужно всего лишь иметь соединение с роутером на этом порту.
После того, как между компом и роутером установлено WiFi-соединение, запускаем на PC программу для управления роботом (тот самый клиент), эта программа соединяется с программой-сервером на роутере. Эта же или другая программа транслирует видео с WiFi роутера.
Далее, юзер может управлять автомобильчиком и нажимает, например, кнопку «вперед». Программа на PC, отсылает команду «вперед» прямо на роутер, на его IP, но на определенный порт. На роутере, эта команда поступает в программу-сервер, т.к. выслана она на его порт и в рамках открытого для этого дела сокета. Программа-сервер, ничего не делая с этой командой, просто отправляет её в COM-порт. Таким образом, команда «вперед» оказывается в микропроцессоре, который в ответ на нее, дает сигнал «вперед» на один из своих выводов. К таким выводам процессора подсоединена схема управления двигателями, т.к. сам микропроцессор управлять движками не может в силу своей маломощности.
Управлять исполнительным устройством через роутер, без микропроцессора не получится, т.к. микропроцессор может формировать сигналы «1» (напряжение >2,5v) или «0» (меньше обозначенного) на любом из десятка-другого своих выводов. У роутера же выводов нет, есть только порты ввода/вывода, типа USB или COM (serial), в которых по 2-3 проводочка.
Теперь часть практическая. Заранее скажу, что несмотря на кажущиеся сложности, все на самом деле просто, если речь идет о простом копировании этого проекта – ведь все уже сделано и работает. Нужно просто выполнить в точности эту инструкцию.
Машинка
Интересны два момента. Джо пишет, что купил на пробу 20 машинок по
Разобрал, предвкушая быстрый результат, и вижу:
Микросхема то есть, только во-первых, это не реалтек, во-вторых не DIP корпус (пластиковый,большой), и вообще я ее идентифицировать через инет не смог. Где там, «вперед», «назад»- пойди разбери. Я попытался было измерять напряжение на каждом выводе при подаче команды с пульта, но бросил это занятие, не найдя в нем надежной и понятной мне логики, ибо на разных контактах присутствует как + так и – 3,3в. Еще раз оглядев платку я добавил, что все равно не смог бы напаяться на нее – для меня это слишком ювелирно. В общем плату выкидываем, записав на ум, что тебе придется самому сваять нечто подобное.
На второй стороне платы мы видим то, что Джо по своей канадской наивности, не тронутой передовыми китайскими решениями, называет «steering circuit» - цепь управления рулевкой и призывает ее беречь, имея в виду, что рулевка выполнена на сервомоторе, который, в отличие мотора колес, имеет обратную связь. Могу сразу сказать, что в данном автомобиле ничего подобного, к сожалению, нет, а поворот колес выполнен чудовищно – на валу передних колес нечто вроде рулевой рейки, на нее, через Г-образную передачу идет момент от простого (не серво) моторчика. Так вот, чтобы повернуть надо подать напряжение на моторчик, а при крайнем угле поворота этот моторчик находится под напряжением и в заблокированном состоянии и естественно потребляет 1,0-1,2 Ампер, что мало того, что сажает батарейки, так и забирает почти всю мощь батареек на себя, лишая энергии моторы колес. Проблема в том, что крайний угол – достигается сразу и всегда, стоит только нажать на кнопки поворота.
Автомобильчик полноприводный – имеет 2 моста со своим движком на каждом. Однако после установки всего нового хозяйства (роутер, микропроцессор, камера, доп.батареи) на машинку, стало понятно, что моторчики полное г… Машина не едет, не смотря на наличие двух ходовых моторов…
Разобрав переднюю ось:
Внутри обнаруживаем 2 моторчика, один – ходовой (PF-130 SV 16140-38CB), один – для поворота (FP130-CN/14135/DU).
На моторчики удалось найти даташиты, из них выяснилось, что ходовые PF-130 очень слабые, как по мощности (грамм на см), так и по скорости (обороты в минуту). Поворотный моторчик FP-130 в два раза сильнее ходового.
На задней оси удалось поменять моторчик на более мощный, единственное, что было в наличии, это f280:
На фото – сравнение старого и нового моторчиков.
Поскольку моторчик f280 в три раза мощнее и в два раза быстрее моторчиков pf-130, то машинка даже с одним более мощным мотором начала ехать. Но пришлось основательно помучаться с напильником, увеличивая нишу для более крупного мотора.
Итак, недостатка в таком автомобильчике аж три:
- маломощные, не эффективные моторы;
- не продуманная система поворота колес;
- невозможно или трудно использовать электронику.
Плюсов не нашел.
Резюме по автомобильчику:
Самый лучший вариант – использовать не игрушечную, а модельную машинку. Не получается – тогда ищите побольше, помощней, скорость должна казаться высокой не только в помещении, но и на улице. Поворотный механизм желательно на сервоприводе. Я так понимаю, что на игрушечные и более-менее подходящие машинки цена начинается от 2,5 т.р. Но такой автомобильчик, как использовал я, брать точно не нужно – придется менять ходовой мотор. Кстати в переднем мосту поменять моторы удастся, только на моторы такого же размера (другие не влезут), а моторчик такого же размера вряд ли будет мощнее.
Радиоэлектроника
Поскольку с идеей без вмешательства в электронику авто пришлось расстаться, встал вопрос хоть какого-то ликбеза. Полазив по сайтам, везде натыкался на одно и то же – сначала все понятно, потом, при рассмотрении новой темы уже ничего не понятно, в комментах пишут – «как все клево, все понятно». Видимо это только у меня какие-то проблемы с восприятием. В общем, решил почитать литературу. Перебрав кучу книг, остановился на одной - «Электроника шаг за шагом», автор Скворень Р.А. Нигде больше так не разжевывают, аж на атомарном уровне. Чайникам, себе подобным рекомендую, про всякие там «Искусство схемотехники» я в курсе, но извините, на второй странице спать уже хочу. По прочтению книги будет многое понятно. Вот теперь для закрепления можно полазить по сайтам этой тематики, рекомендую
Это нужно не для того, чтобы строить какие-то свои сложные схемы, наша цель не в этом. Просто знать закон Ома (например, для подбора источника и стабилизатора питания, исходя из энергоемкости цепи), а также функции электронных компонентов.
Далее, практическая часть. В этом проекте пришлось паять три платы (к счастью все примитивные и маленькие). Здесь можно пойти двумя пути: заказать их другу-специалисту либо изготовить самому. Во втором случае придется покупать инвентарь, минимально: паяльник, припой, бокорезы. Более качественные советы на этот счет можно найти в инете, например, на сайте, обозначенном выше, там же – уроки пайки, паять тоже надо уметь, да. Сложного ничего нет.
Поехали дальше.
Энергопотребление
Я и не подозревал, что тема энергопотребления поглотит у меня столько времени! А все из-за того, что я не придал ей изначально достойного внимания - подумаешь, какие-то там батарейки! Хотя на самом деле основную часть времени поглотило тестирование аккумуляторов.
По аналогии с проектом Джо приведем общую таблицу напряжения, ампеража и как этот вольтаж достигается:
Таблица 1. Общие сведения о напряжении и потреблении тока.
Как говорилось выше, выбор отличного от Джо роутера и отказ от сетевой камеры повлекло за собой внесение ряда изменений. В числе положительных: более низкое энергопотребление и меньше видов напряжения – роутер, камера Freeduino – все потребляет по 5 вольт.
Теперь таблица токопотребления:
Таблица токопотребления нужна, чтобы: 1) сделать правильный подбор по мощности электронных компонентов (драйвер двигателей и стабилизатор напряжения для роутера); 2) понимать поведение компонентов при разных режимах потребления (таких, как блокировка всех моторов); 3) выполнить оптимальный подбор источников питания, имея в виду продолжительность беспрерывной работы всего хозяйства.
Раздельные цепи.
Питание полностью раздельное – роутер и Freeduino на одном источнике (8 шт аккумов по 1,2в = 9,6в), моторы – на 6 шт.батарей 1,5 в. (9в). У Джо все вместе, но там и вольтаж больше. Мне же показалось, что такая схема более удобна, да и роутер капризен к стабильности питания – бросок вниз из-за блокировки всех движков его может легко подвергнуть перезагрузке. Кроме того, если бы все это было в одной цепи, то роутер отказался бы запускаться при напряжении в ней ниже 7,5 в (подробнее об этом ниже), а моторы работать еще могут. Т.е. из-за приколов с энергопотреблением роутера пришлось бы менять еще вполне рабочие батарейки.
Преобразователи или стабилизаторы
Как видно из первой таблицы, два устройства требуют питания 5 вольт. На Freeduino стоит собственный стабилизатор питания L7805, он и преобразует питание до нужных ему 5 вольт. Для роутера стабилизатор придется делать самому. Вариантов – минимум 3, у меня сделано на обычном линейном стабилизаторе питания КРЕН (К142ЕН5А), обошлось в 29 руб.
Фото стабилизатора питания роутера
На фото видно, что помимо стабилизатора, на плате расположены так же светодиоды. Это сделано из-за лени, более разумно было бы расположить светодиоды в каком-то отдельном и красивом месте, да и стабилизатор стоило бы куда упрятать, а не держать на виду.
КРЕН - это аналог L7805, но помощнее – до 2х Ампер, и роутер максимально может потреблять 2 А, поэтому я не стал ставить L7805, где максимальный ток потребления – 1,5А. Схема простая, если не примитивная – одна микросхема о трёх ногах и 2 кондера, схема приведена из даташита.
Но, есть два но. Первое - это всё (и кренка и 7805) - линейные стабилизаторы, т.е. получая от источника питания, скажем, 9 вольт они 5 вольт отдают потребителю, а 4 вольта разницы сжигают на своем корпусе. Это плохо, т.к. поэтому КПД у них низкий и по отношению к источнику питания это не экологично. На фото видно, что стабилизатор снабжен радиатором. Это нужно, чтобы сжигаемая мощность быстренько покидала корпус, рассеивалась. Но даже с радиатором нельзя рассеять более 15ватт – т.е. при токе в цепи 2А и напряжении в ней 5 вольт, максимальное входное напряжение может быть не более 12,5 вольт, если будет выше – радиатор не поможет, КРЕН отрубится из-за перегрева. Второе. Обе микросхемы требуют разницы между входом и выходом в 2,5 вольта. Значит ни роутер, ни микропроцессор не смогут работать окажись у нас на входе ниже 7,5 вольт. Проблема 2,5 вольт решилась бы применением такой же микрухи, как у Джо – для нас это было бы LT1085-5. Ее прелесть в том, что она на 3А (есть на 5 и 7,5) и она LOW-DROP, т.е. там низкая разница между входом и выходом – 1,5 вольт. Но в нашем совхозе ее не сыскать. И для аккумуляторов она не совсем подходит, т.к. нижний ее порог работы – 6,5 вольт, губителен для аккумулятора (6,5 в поделить на 8 шт. аккумов = 0,81 вольт на один). Считается, что NiMh аккумулятор можно разряжать только до 0,9 вольт.
Если же подойти радикально, то лучше сразу делать импульсный стабилизатор на микросхеме, скажем, LM7576 на 3А или LT1074/1075 (на 5А и 2А соответственно). Преимущество импульсного стабилизатора – в высоком КПД до 80-90%, его минус – в более сложной схеме. Но этих чудо-девайсов в нашем местном магазе
Источник питания
Первоначально роутер и микропроцессор я запитал от 9в (6шт. батареек АА). И думал, что все это будет работать достаточно долго. Однако роутер перегрузился уже минут через 10, а потом и вовсе отказался включаться. Что я выяснил, потеряв кучу времени – согласно тесту батареек
Поэтому я решил сделать так - собрать источник из 8ми аккумуляторов типоразмера АА по 1,2 вольт = 9,6 вольт. Теперь пороговое значение 7,5 вольт поделим на 8 аккумов = 0,93 вольта. Это уже дохлое состояние и предел для NiMh аккумуляторов. Смотрим тест аккумуляторов -
Несмотря на этот тест, аккумуляторы я выбрал GP2500, о чем потом пожалел. Аккумуляторы, приобретенные в комплекте с зарядкой, оказались бракованными. Понятно это стало после серии тестов – первоначально я посчитал, что аккумуляторы просто долго пролежали на полке и не могут придти в себя после этой спячки. Однако в процессе тестов выяснилось, что через 30-60 минут работы (на токе 500mA) они один за другим резко теряли напряжение с 1,1 вольт до 0,3 вольт, очень резко. К счастью, магазин
Вторая неприятная особенность GP2500 – реальная емкость, об этом ниже.
Третья – тоже емкость, но другого порядка. Указанная крупным шрифтом на корпусе емкость (2500mA) имеет дублера, или уточнение, чуть ниже и уже мелким шрифтом – 2450mA. Для аккумуляторов 2700mA мелким шрифтом указано уже 2600mA. На мой взгляд, это просто свинство.
Разряд - тест
Ниже приведен график, иллюстрирующий, насколько долго выбранные аккумуляторы GP2500 могут питать цепь управления. Тест проведен в «тепличных» условиях, без движения, роутер находился в 1 м от связанного с ним по WiFi ноутбука. Ток потребления цепи примерно 500 mA.
График 1. Напряжение в цепи управления.
ПРОДОЛЖЕНИЕ НИЖЕ.