30 июня 2013
Простой wifi бот для мониторинга помещений или «кухонное» роботостроение
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/c2e6a5e7e6.jpg)
Сегодня у каждого из нас дома присутствует выделенная линия с весьма «толстым» каналом. Так же у большинства есть wifi роутер, и опять таки большинство из нас не заботится о его отключении когда уходим из дома. И действительно зачем? Протоколы защиты wifi весьма надежны, потребление роутера ничтожно. Следовательно ваш дом часто или всегда on-line. Но что это нам дает? Торентокачалки, личные разнообразные сервера и т.д.
Особо продвинутые из нас имеют умный дом с разнообразными «плюшками» и дистанционным мониторингом посредством интернета. Это правильное, но дорогое решение. Но все это есть смысл устанавливать только в своем жилье. В случае со съемным это абсурд.
Тем не менее обострения паранойи, гиперответственность или схожие факторы (вспомним классическую ситуацию – «А выключил ли я утюг?») создают нам определенный дискомфорт когда мы оставляем свое жилище. Особенно на длительный срок. Возникает вопрос – как так получается что квартира все время on-line, а я ничего не вижу и не контролирую. Странно.
Самое бюджетное решение вопросы поставить просто вебкамеру. Но одной будет мало, а развитая сеть видеонаблюдения это уже серьезная инфраструктура и весьма не дешевая. Были рассмотрены разные варианты и взвешены все плюсы и минусы. Оказалось что проще всего взять все-таки одну вебкамеру, но приделать к ней колеса (или гусеницы).
Я хорошо отдаю себе отчет что в этом месте мнения читателей разделятся на две большие группы. Первая будет утверждать что подобных проектов море в том числе и тут, а вторая группа будет утверждать что для реализации подобного нужно дружить с паяльником.
Вот так мы и подошли к основной цели этого материала – как реализовать этот проект максимально дешево и на уровне доступном многим без погружения в дебри электроники.
Забегая в перед могу сказать что бюджет минимален от 70$ и до пределов здравого смысла. И он сильно зависит от того насколько доступны составляющие и насколько запаслив конкретный человек. Этот ценник сформировался в Донецке (Украина), городе хоть и прогрессивном, но где достать определенные вещи все еще проблема.
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/003dbfd7f1.jpg)
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/7255525401.jpg)
Компоненты.
Все компоненты нашего wifi-бота подбирались исходя из отношения цена \ доступность. Готовые дорогие пластмасски для любителей рафинированного Arduino-строения были отметены сразу. Иначе бюджет был бы равен половине бюджета лунохода.
1. Шасси. Тут все просто – берем первый понравившийся «джип» на радио управлении (его мы выкинем поэтому можно и сломанный). Там, как правило, уже есть маршевый двигатель (который толкает вперед) и поворотный двигатель на переднем «мосте». Смело выдираем схему РУ (радио управления) оставив только провода к двигателями и провода из отсека с батарейками. Можно для общего развития потыкать батарейкой в моторы и посмотреть куда они крутятся при конкретной полярности. Вот таким образом наша тележка и будет перемещается.
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/70bb22a078.jpg)
Рис. 1 Шасси.
2. Мозги. Устройство для трансляции видеопотока и команд нашему шасси. Нам нужно устройство с wifi и портом для управления шасси. И поскольку малинки (Raspberry Pi) еще доступны далеко не всем остановимся на роутерах. На них лепят подобное потому что там есть Wifi, USB и возможность кастомизации благодаря кастомным прошивкам. Тут много издевались над D-link DIR-320, чем он только не трудился, но тут речь пойдет не о нем. Пора ему на пенсию. Прогресс не стоит на месте и теперь функции «пенсионера» на свои плечи может взвалить малыш TP-LINK TL-MR3020, хотя не факт что когда вы это прочтете будет более удачный вариант. Преимущества этой модели прежде всего в размере, во вторых он более шустрый. Также надо упомянут что вам не придется долго и нудно пилить прошивку, все уже сделано вот тут roboforum.ru/wiki/OR-WRT. Огромное спасибо ребятам с roboforum.ru за огромный вклад в домашнее роботостроение. Поэтому все что придется сделать это прошить роутер и немного сконфигурировать под ваши конкретные условия.
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/89958e9659.jpg)
Рис. 2 Роутер TP-LINK TL-MR3020.
3. Всевидящее око. Вебкамера подойдет не любая, но этот тернистый пусть выбора уже пройден не единожды. Во первых она должна поддерживать UVC ( USB Video Class) вот тут www.ideasonboard.org/uvc/ есть список. И во вторых хорошо если она сама будет сжимать поток. Оптимальной является Logitech Webcam C100, дешево и качественно. С самой камерой ничего делать не надо, просто установить и подключить к USB роутера.
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/94f8895d41.jpg)
Рис. 3 Logitech Webcam C100
4. Драйвер управления двигателями L293D. Это схема с 16 ногами. Делает она следующее – если на один вход подать напряжение то моторчик крутится в одну сторону, а если на второй то в другую. Схема поддерживает как раз два моторчика. Если ее не использовать то придется заморачиваться с Н-мостами, но я обещал вас не грузить электроникой. Стоит она копейки, а головной боли на себя берет прилично.
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/2ad8f59a50.jpg)
Рис. 4 Драйвер управления двигателями L293D.
5. Микроконтроллер. Можно использовать любой который вы уже освоили. Главное чтоб он мог принять пару байт через UART и в зависимости от них выставить 0 или 1 на соответствующих ногах. Я использовал Arduino Mini Pro китайского разлива (прошу не бить ногами). Просто для начинающих это проще всего.
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/3577ad0b49.jpg)
Рис 5. Микроконтроллер.
6. И последнее – аккумуляторы. Много ломал голову над питанием и пришел к выводу что проще всего взять четыре аккумулятора AA NiMh. Они достигают емкости 2500mAh, стоят дешево и не боятся перезаряда. Последнее нам важно потому что наш бот должен уметь дозаряжаться так как заряжать его может быть просто некому. Проще всего это организовать подключив аккумулятор напрямую к БП у которого нужное напряжение (6.4В) и который может обеспечивать ток равный потреблению всей тележки + еще 50-100мА для неспешной зарядки аккумулятора. Таким образом тележка будет кушать ток от БП, а излишек будет «стикать» в аккумулятор. И никакие схемы заряда тут не применяются! Да, матерые электронщики уже точат клинки, но все это работает уже несколько месяцев без видимого ущерба. Главное подобрать правильный БП. Ток можно ограничить резистором. Также я поставил диод и избавился от вероятного КЗ или переплюсовки (если какой-то Шумахер воткнется в зарядку в верх ногами). Такое возможно из-за особенностей конструкции, например можно просто упереться контактами в железную дверь. Вот тут peugeot-citroen.net/viewtopic.php?f=11&t=7332&p=104602 человек сделал исчерпывающий тест аккумуляторов за что ему отдельное спасибо.
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/61deee93be.jpg)
Рис. 6. Зарядка.
Сборка.
На шасси устанавливаются аккумуляторы и для простоты монтажа делаем две длинные шины из жести которые проходят вдоль шасси. (Жесть от кофейных банок просто восхитительно паяется.) К одной подключаем «+» аккумуляторов через тумблер, которым будем обесточивать всю конструкцию. Минус естественно подключаем ко второй шине. Таким образом всех потребителей легко можно припаивать к шинам и не устраивать вакханалию проводных соединений. К этим же шинам припаиваем упругие контакты чтобы «упираться» в зарядку.
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/7f54f72d89.jpg)
Рис. 7 Контакты для дозарядки.
Далее допиливаем роутер. Нам надо его внутренний UART вывести наружу и сделать так чтоб было легко туда подключать микроконтроллер. Припаивать намертво не советую потому что программировать микроконтроллер вы будете несколько раз пока не удовлетворитесь результатом. Подключать надо так: землю к земле, плюс питания к плюсу, RX к TX и TX к RX. Распиновка есть тут wiki.openwrt.org/toh/tp-link/tl-mr3020 Далее заливаем туда прошивку OR-WRT, подробнейшая инструкция есть по ссылке на wiki выше, и настраиваем ее под свою сеть. С роутером покончили.
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/1e2e2c3f88.jpg)
Рис. 8 Подключение ардуины к роутеру.
Теперь инсталлируем драйвер двигателей. Четыре ноги к плюсу и 4 к минусу и еще 4 провода которые уже припаяем к ногам микроконтроллера («RA0», «RA1», «RA2», «RA3»), а к оставшимся припаиваем наши двигатели.
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/b688a74c39.jpg)
Рис. 9 Подключение L293D.
Это будет работать следующим образом если микроконтроллер устанавливает высокий уровень например на ноге к которой припаян провод RA0 мотор №1 крутится например в лево, а если RA1 то в право. Опережу вопрос что будет если установить две единицы – ничего страшного не случится, мотор будет крутится в обе стороны одновременно. Шутка. Двигатель не будет крутится. В случае с Н-мостом это было бы КЗ, но наша схема этого не боится, она дуракоупорная.
Микроконтроллер должен в непрерывном цикле просто устанавливать высокий уровень на ногах в соответствии с полученным байтом. И все.
Вот программа для микроконтроллера Arduino Mini Pro.
HomeBot1_min.pde
Для его прошивки нужен обычный UART адаптер для компа (не путать с RS232, это тоже самое но тут напряжения другие), я использую вообще старый дата кабель от телефонов сименс. Назначение контактов теже что и при подключении к роутеру но нам надо еще один контакт DTR из разъема RS232, он подключается к пину «GREEN» на микроконтроллере и когда начинается прошивка устанавливается в «0», благодаря чему контроллер понимает что его щас будут прошивать. Если этот контакт взять не откуда можно вовремя просто нажать на Reset самого МК, у меня это так и не получилось, но в интернетах есть живые очевидцы.
Главное следите что пины в программе совпадали с пинами физически. Если мотор не крутится или крутится не туда то просто проверите пайку, скорее всего перепутали. Протестировать можно это все очень просто – после прошивки не отключать МК от компа и просто посылать нужные байты в соответствующий порт.
Сам процесс прошивки прост до безобразия. Открываем скетч в Arduino IDE, в меню выбираем соответствующий порт и версию платы МК. Жмем кнопку Upload и все. Не буду на этом останавливаться подробнее потому как тут полно статей на тему Arduino.
Итак на этом этапе у нас уже есть шасси которое ворочает моторами по приказам от МК который? в свою очередь? получает команды по UART. B у нас есть роутер который прошит и настроен на подключение к домашней сети по wifi.
Теперь надо немного изменить веб интерфейс сделать так чтоб команды с него отправлялись прямиком во внутренний UART роутера. Ну а из него соответственно в МК.
Я не стал заморачиваться и назначил для управления всем нам известные кнопки “A”,”S”,”D”,”W”, то есть если например МК получает байт «W» (0x57) он установит единицу на ноге к которой припаян провод отвечающий за движение вперед и т.д.
Необходимые файл:
index.html
serial.cgi
Или все вместе
Изменено там только то что ява скрипты обрабатывающие нажатие кнопок в вебинтерфейсе теперь посылают “A”,”S”,”D”,”W” в зависимости от нажатой кнопки. А сам скрипт который занимается отправкой перенаправлен на внутренний UART роутера. Файлами нужно заменить оригинальные файлы в директории WWW.
Проще всего это сделать с помощью замечательной программы winSCP winscp.net/eng/docs/lang:ru по SSH.
Вот пожалуй и все. Получив wifi бота вы можете доработать его по своему усмотрению. Добавить разное оборудование. Например заменить поворотный двигатель на сервопривод. Это поможет держать колеса повернутыми без затраты энергии, но можно обойтись и без этого.
![](http://popurama.ru/uploads/images/02/23/27/2013/06/30/181ec1cc7f.jpg)
Рис. 10 Сервопривод.
Зарядка выполнена и обычного трансформатора и выпрямителя. В качестве каркаса используется старая видеокассета, а контакты сделаны из «кофейной жести». Все что надо сделать это вырулить и упереться контактами в зарядку. Даже при перезаряде лишнее будет уходить через тепло.
Понимаю что все охватить все равно не смог и если будет достаточно вопросов могу сделать расширенную статью.
Напоследок немного видео.
Комментарии 0