В данном проекте описано создание Wi-Fi машинки с управлением моделькой автомобиля через интернет или при помощи ноутбука с Wi-Fi на расстоянии до 500м. На машинке установлена камера, работающая в реальном времени, что позволяет управлять машинкой глядя в экран ноутбука.
Некоторое время назад я нашел маршрутизатор Linksys WRT54GL. Он очень удобен для хака и модификации, т.к. он работает под управлением Linux. Для данного маршрутизатора была написана куча альтернативных прошивок. В этом проекте используется настраиваемая прошивка Linux Open-WRT. Кроме больших возможностей модификации программного обеспечения этого маршрутизатора, есть куча возможных аппаратных модификаций и хаков. То есть в моем распоряжении был дешевый и взламываемый маршрутизатор со встроенным Linux - я знал, что делать что-то с ним хорошо и удобно. Таким образом родилась идея Wi-Fi машинки.
Целью данной статьи является предоставить общий обзор проекта и показать некоторые особенности реализации программной и электронной части. Эта статья не является руководством по сборке машинки шаг за шагом, но имеет достаточно информации для людей с хорошей мотивацией и базовыми знаниями в электронике и программировании. Все программы написаны на условиях Открытого лицензионного соглашения GNU v2, так что код можно свободно использовать и улучшать.
Машинка
Добавление сетевой камеры, маршрутизатора, тяжелых батарей, дополнительных схем, и кучи проводов добавляют много лишнего веса, а большинство моделей для этого не предназначено. Поэтому из-за всех дополнений необходимо найти довольно большую радиоуправляемую машинку. В интернете можно найти б/у радиоуправляемые транспортные средства без пульта за 200-300 руб. Я купил несколько машинок для того, чтобы вытащить из них детали. Транспорт размера 1:10 или больше вполне подойдет, и вероятно вы не захотите меньше. Я купил эту машинку за 150 руб.
Я разобрал около 20 радиоуправляемых автомобилей. Почти в каждом из них используется чип Realtek RX2/TX2 или его полные аналоги с аналогичной цоколевкой. Документацию на них можно найти в интернете или по ссылкам. Это означает, что машинкой очень легко управлять при помощи штатной электроники без добавления собственных схем. Можно подключить микроконтроллер непосредственно к выводам (вперед, назад, влево, вправо) и управлять автомобилем. Возможность использования штатной электроники автомобиля экономит много сил и времени.
Я модифицировал свой WRT54GL так, что он имеет 2 последовательных порта и SD карту на 1Гб (работает как жесткий диск на 1 Гб). В этом проекте SD карта не используется, но используется один из последовательных портов. У моего маршрутизатора есть два последовательных порта: консольный порт и TTS/1, который мы и будем использовать. Для этого проекта я использую OpenWRT White Russian v0.9. Есть и более поздние версии, но для этого проекта нам они не нужны. В руководстве по компиляции программ (смотрите ниже), используется эта версия, поэтому я выбрал её.
Выбор микроконтроллера
Я оценил три различных микроконтроллера для этого проекта. Ниже показано краткое изложение оценки.
Микроконтроллер |
PIC16F628A |
Arduino (ATmega168)
|
AVR Butterfly (ATmega169) |
Цена. |
Очень прост в программировании (C со множеством встроенных библиотек). |
Легче для программирования, чем PIC. |
|
Против |
Труден для программирования (ассемблер). |
Ошибки загрузчика (см. ниже). |
Я выбирал PIC16F628A по нескольким причинам:
Arduino (Freeduino MaxSerial) стал моим вторым выбором, который мне очень понравился простотой сборки и запуска. Также есть хорошая поддержка сообщества, и простота использования.
Первоначально я использовал отладочную плату AVR Butterfly. Она работала хорошо, пока один раз не разрядились батарейки. В загрузчике AVR Butterfly существует ошибка, которая подробно описана тут. Она портит код и не позволяет перепрограммировать его другим загрузчиком. Машинка работала в один день, а на другой нет. Потребовалось некоторое время, чтобы найти проблему и совсем немного времени, чтобы исправить её, поэтому я не стал дальше использовать эту плату в качестве системы управления. Я также обнаружил, что выходное напряжение на выводах может быть непредсказуемыми, так как кроме управления периферийными устройствами, они управляют ЖК-экраном.
Ниже приведён исходный код для PIC и Arduino. Оба были протестированы, так что используйте то, в чем вы лучше разбираетесь и чувствуете себя комфортнее. Arduino (Freeduino MaxSerial) является наиболее оптимальным вариантом для быстрого старта. Я купил его.
Управляющая схема
На самом деле в моей машинке используется две управляющие платы. Так сделано потому, что я сжег управляющие транзисторы на штатной плате машинки. К счастью, я смог отпаять их и RX2 чип (который также сгорел) и сохранить схему управления. Большинство игрушечных радиоуправляемых машинок используют около 6 проводов для управления двигателем. Это так, потому что в собранной машинке есть металлический скользящий контакт, который движется с двигателем и дополнительные провода используются для реле. Каждая радиоуправляемая машинка имеет различные параметры этого контакта, так что намного лучше использовать штатную схему.
Я сжег транзисторы, подав напряжение питания 16В, вместо штатных 9.6В. Транзисторы рассчитаны на ток 5А, но вероятно я нагрузил их слишком сильно и они живописно задымились. Я взял плату из другой радиоуправляемой машинки и использовал транзисторы оттуда. Я запустил эту схему от 12В, и это не вызвало никаких проблем, хотя транзисторы довольно сильно грелись. Использование штатных плат машинки вместо изготовления собственного Н-моста экономит много времени и денег.
Этот проект использует мощные аккумуляторы. Я купил их для радиоуправляемых машинок высокого класса за $ 50 + доставка с eBay. Они имеют 3800 мАч и зарядное устройство 1,8А в комплекте. Их можно найти в поиске eBay. Одна батарея заряжается примерно 1.5 часа (от полного разряда). Их напряжение 7.2В, однако, когда они только заряженные их напряжение около 8.3В, а когда они полностью разряжены (уже не в состоянии питать машину) они дают примерно 7.1В.
Я заменил все разъемы на аккумуляторах на стандартные Molex ATX разъемы. Это сделано для того, чтобы использовать дешевые разъёмы которых у меня было много, которые позволяют легко сделать разветвитель для замера тока. Батареи соединённые последовательно дают около 16В при полной зарядке.
Линия 9.6В получена путем установки 4 диодов последовательно с шиной 12В берущейся с 7812. Падение напряжения на диоде около 0.7В. Поставив 4 диода в ряд, мы теряем около 2.8В, и получаем 9В для устройств, которым необходимо меньше 12В. После того как я сжег транзисторы, я решил питать схему более низким напряжением. 7812 рассчитан на 1А, а двигатели потребляют значительно больше. Digikey продает регулятор 7.5A 12В примерно за 14$, и я купил его. Я прикрепил его к радиатору, потому что думал, что он может греться. После некоторого времени работы он даже не нагрелся, поэтому радиатор не требуется.
Я не хочу рисковать схемой управления, поэтому я питаю его напряжением максимально приближены к штатному. Камера требует 9В, сигнал работает довольно тихо при питании от 5В, поэтому все эти устройства работают от линии 9.2В.
Вся силовая электроника собрана на макетной плате и находится в корпусе.
Arduino:
Подключение Arduino:
Вперед - Pin 8
Назад - Pin 9
Влево - Pin 10
Вправо - Pin 11
Зеленый LED - Pin 7
Красный LED - Pin 6
Сигнал - Pin 5
Последовательный порт Freeduino MaxSerial можно связать с последовательным портом маршрутизатора при помощи стандартного последовательного кабеля.
Freeduino MaxSerial использует последовательный вывод 4 - DTR (Data Terminal Ready) для сброса микроконтроллера и разрешения на загрузку нового кода. При нормальной работе с компьютером на этом выводе либо +10 В либо -10В в зависимости от того, подключен ли последовательный порт. Однако на последовательном порту маршрутизатора этот вывод заземлен и неактивен. Когда маршрутизатор начинает передачу данных через последовательный порт, MaxSerial сбрасывается. Это нам не подходит. Мы подтянем вывод DTR к +9В. Это простое изменение включает режим закрытой программы, то есть микроконтроллер не может быть перепрошит и сброшен по последовательному порту. Если необходимо перепрошить микроконтроллер, то достаточно просто щелкнуть выключателем.
Примечание: Если вы используете USB версию Arduino, вы можете просто подключить RX и TX контакты к MAX232A, а затем к последовательному порту маршрутизатора.
Одним из основных аспектов этого проекта является то, что машинкой можно управлять без прямой видимости при помощи сетевой камеры Panasonic BL-C1A. Это почти самая дешевая проводная сетевая камера с хорошими отзывами. Программное обеспечение есть только для Windows – это небольшой, но терпимый минус. Для просмотра изображения программное обеспечение не требуется. В более дорогих моделях есть панорамирование и возможность наклона, но они значительно дороже и их функциональность не нужна.
Камера имеет очень удобный веб-интерфейс, что делает её не только Windows устройством. Просмотреть изображение с камеры можно при помощи следующей команды:
http:///ImageViewer?Resolution=320x240?Quality=standard
Доступные разрешения 640x480, 320x120, 160x60. Доступное качество (сжатие) precision(качество), standard(стандартное), motion(движение).
Качество видео неплохое. Тем не менее, оно часто замирает на 1 секунду даже при хорошей связи. Я предполагаю, что электроника камеры недостаточно мощна, чтобы поддерживать постоянный прямой эфир с автофокусом. В целом я доволен ей.
Глядя на внутреннюю часть камеры, видно, что она работает на ARM процессоре 250 МГц. По информации с официального сайта она также имеет 64Мб оперативной памяти. Интересно, как трудно было бы заставить Linux работать на этом…
От машинки было использовано только шасси. Все декоративные и нефункциональные части были сняты. Камера была установлена на переднюю часть с небольшим изменением штатного крепления. Плата была установлена на переднюю часть машинки и прикручена с использованием пластиковых гаек и болтов во избежание замыкания.
Плата микроконтроллера PIC также надежно закреплена болтами на другой стороне. Все провода были умышленно взяты длиннее чем требуется, для их легкого перемещения во время сборки. После сборки лишние куски провода были собраны и связаны. Было очень много проводов, вероятно около 30, которые нужно было провести из/в переднюю и заднюю часть машинки, не считая Ethernet кабеля.
Все силовые цепи были размещены в корпусе в задней части машинки, за исключением LT1083 7.5A, который находится в нижней части автомобиля. Я не ставил его в корпус, потому что это было дополнение к проекту, и так его было проще всего добавить. Когда светодиод на задней стороне коробки светится красным, маршрутизатор загружается. Когда маршрутизатор загрузился, он посылает сигнал микроконтроллеру, загорается зеленый светодиод, и я знаю, что могу соединиться с машинкой. Этот индикатор был очень полезным при отладке.
Вся электроника была собрана на макетной плате пред пайкой и установкой машинку. Батареи прикреплены с помощью термоклея и кабельных стяжек. Маршрутизатор был слишком широкий, чтобы стать на машинку без дополнений. Я добавил два куска плексигласа, чтобы сделать машинку шире.
Для данного проекта необходимы 3 программы. Приложение-клиент VB6 Wifi_Robot на Windows, CarServer написанный на C и работающий на маршрутизаторе работающем под управлением OpenWRT WhiteRussian v0.9 (Linux), а также микропрограмма микроконтроллера. Я испытывал прошивки для микроконтроллера PIC16F628A и популярного Arduino (Freeduino MaxSerial). Все программное обеспечение распространяется на основе открытого лицензионного соглашения GNU v2.
Следующие инструкции предполагают, что у вас есть подключенный к интернету Linksys WRT54GL с установленный OpenWRT WhiteRussian v0.9. Руководстве по установке OpenWRT можно найти по ссылке .
Установка CarServer
Если вы хотите использовать программное обеспечение
Войдите по SSH в своем маршрутизатор, затем...
# cd /tmp
# wget http://www.jbprojects.net/projects/wifirobot/carserver_1_mipsel.ipk
# ipkg install ./carserver_1_mipsel.ipk
Компиляция и установка CarServer
Если вы хотите увидеть, как он работает или модифицировать его
Вам нужно будет скачать OpenWRT SDK (только для Linux) и следовать этому руководству по составлению программ: Написание и компиляция простой программы для OpenWRT от Eric Bishop (просто следуйте первой части)
Makefile находится в /OpenWrt-SDK-Linux-i686-1/package/carserver/
Makefile находится в /OpenWrt-SDK-Linux-i686-1/package/carserver/src
carserver.c находится в /OpenWrt-SDK-Linux-i686-1/package/carserver/src
Ваш скомпилированный ipkg будет отображаться в /OpenWrt-SDK-Linux-i686-1/bin/packages. Затем:
# scp carserver_1_mipsel.ipk root@:/tmp/.
для копирования в маршрутизатор. Войдите по SSH и установите
Есть бесплатная электронная книга посвящённая серии маршрутизаторов WRT54G которая называют Linksys WRT54G Максимальный взлом. Я считаю что она бесплатна. Её можно просмотреть в Google Books . Она также может быть загружена по ссылке. В этой книге рассказывается как добавить последовательный порт, настроить программное обеспечение, а также о многих других взломах и модификациях. Я связался с одним из авторов. Это не бесплатная электронная книга. Вы можете просмотреть её в Google Books, и поддержать авторов, купив её Amazon . Это отличная книга!
Получение рабочего последовательно порта
Мы используем TTS/1, так что если вы добавили один последовательный порт – убедитесь что это он. Если у вас установлен OpenWRT WhiteRussian v0.9 войдите в SSH. Инструкции в книге указанной выше немного устарела. Вот обновленная версия:
# ipkg update
# ipkg install setserial
# cd /usr/sbin
# wget http://www.jbprojects.net/projects/wifirobot/stty.tgz
# tar -zxvf stty.tgz
# chmod 755 stty
Добавьте следующие строки в /etc/init.d/custom-user-startup чтобы сделать последовательный порт рабочим при запуске и автоматического запуска CarServer.
/usr/sbin/setserial /dev/tts/1 irq 3
/usr/sbin/stty -F /dev/tts/1 raw speed 9600
/bin/carserver&
Запуск клиентского приложения Wifi_Robot
Этот файл содержит исходный код VB6 и скомпилированный EXE. Вы можете просто извлечь wifi_robot_client.exe и config.txt, если вы не хотите заниматься программированием. Вы можете открыть и компилировать VB6, если вы хотите изменить его. Эта программа - это просто слегка измененная программа проекта радиоуправляемая машинка, управляемая компьютером.
PIC
Вам понадобится программатор для PIC. Я использую P16PRO40, купленный на eBay. Есть много программаторов, которые можно купить или собрать самому. Вы можете самостоятельно скомпилировать HEX с помощью Microchip MPLAB или просто скачать и прошить готовый HEX файл. PIC asm базируется на этом тесте PIC16F628 UART.
Arduino (Freeduino MaxSerial)
Программу можно загрузить в Freeduino MaxSerial без дополнительного программатора.
Если вы используете Freeduino MaxSerial, убедитесь, что вы сделали небольшую модификацию оборудования, которая предотвратит сброс Freeduino каждый раз при получении данных от маршрутизатора через последовательный порт. См. выше для получения более подробной информации.
Максимальная скорость
Чтобы вычислить максимальную скорость я сделал две отметки на расстоянии 3м друг от друга и несколько раз снимал машинку. Камера записывает 30 кадров в секунду, так что возможная ошибка камеры +/- 3,3% и +/- 1% ошибка расстояния.
Автомобиль проезжает 3м за 0,7 секунды (21 из 30 кадров за 1 секунду).
Максимальная скорость:
4,3 м/с = 15.5 км/ч = 9.6 миль/ч
Расстояние
Я взял маршрутизатор в большое поле. Я смог подключится со своего ноутбука на расстоянии до 500 м (по 1Мбит). Дальше этого расстояния, я уже не смог подключиться. Альтернативные прошивки (OpenWRT) позволяют увеличить выходную мощность. Я пытался изменить это значение, но это не повлияло на расстояние. Возможно, мой ноутбук (Dell Inspiron 6000), который всегда имел хороший WiFi (лучше, чем 6400 моего друга), может быть ограничивающим фактором.
При создании бота ставились следующие задачи:
Для бортового компьютера был выбрал двухъядерный андроидный миникомпьютер UG-802, который имелся под рукой. В качестве операционной системы - полноценный линукс дистрибутив, сборка Ubuntu от Linaro.
Для начала нужно было чтото сделать с проблемным встроенным wifi адаптером, который упорно не желал запускаться под пересобранным ядром. Кардинальным решением было выпаять его и установить второй USB хост коннектор, в который можно будет воткнуть нормальный usb wifi (или даже 3G модем). Сказано - сделано, плата встроенного wifi была отпаяна и вместо нее напаян второй хост.
Первая проверка внутреннего USB host-а:
Окончательный вид установленного USB host-а:
Когда-то я заказывал платформу Ardubot и колеса с моторами к ней, но руки до нее не доходили. Не долго думая, было решено ей воспользоваться. На нее была смонтирована плата преобразователя с 12 в 5 вольт, выдранная из специально купленной в магазине автомобильной зарядки (используемая в ней микросхема имеет более широкий диапазон входного напряжения). Литий-полимерный аккумулятор на 11.1В/1250мА уже имелся от разбитой, в прошлом, модели самолета. Плату Ardubot-а пришлось подвергнуть легкой модификации из-за особенностей платы управления (дорожка отрезана от D9 и запаяна на D7). Так же был установлен усб разъем, на который выведено только 5 вольтовое питание:
Сзади видны провода идущие от энкодеров колес:
Изначально платформа Ardubot была расчитана на совместное использование с Arduino, почему бы этим не воспользоваться. Вместо Ардуино я взял OLIMEX PIC32-PINGUINO-MX220, совместимый по разъемам. Выяснилась неприятная мелочь - один из пинов управления мотором был использован для светодиода на плате PINGUINO. Все бы ничего, но этот светодиод мигал в режиме загрузки фирмвари, заодно проворачивая колесо. Поэтому пришлось перепаять дорожку, о чем было написано выше.
Для простоты отладки и универсальности, плата управления подключается через USB. Прошивка PINGUINO эмулирует CDC-ACM устройство, видимое для пользователя как последовательный порт /dev/ttyACM0. Отправляемые команды управления выглядят так:
Нумерация моторов: 0 - левый, 1 - правый.
Состояния: 0 - остановлен, 1 - вперед, -1 - назад.
Например, чтобы включить задний светодиод на платформе, достаточно из консоли отправить команды:
echo "LIGHT 1 1" > /dev/ttyACM0
echo "COMMIT" > /dev/ttyACM0
Чтобы поехать вперед:
echo "MOTOR 0 1" > /dev/ttyACM0
echo "MOTOR 1 1" > /dev/ttyACM0
echo "COMMIT" > /dev/ttyACM0
Один USB порт бортового (ботового) компьютера используется wifi адаптером, в другой плата управления платформой. Куда подключить камеру? Выход есть - использовать хаб. В одном из компьютерных магазинов была куплена одна из самых дешевых веб камер и USB хаб подозрительного вида.
В процессе поиска из чего слепить бота, была удачно найдена пластиковая коробочка-упаковка из под IPOD TOUCH, в которую идеально влазил UG802 и разобранный USB хаб. Для трех коннекторов хаба в боку был сделан вырез. В четвертый (внутренний) коннектор воткнулась камера (с предварительно укороченным кабелем). В крышке также был сделан вырез под разъем USB на UG802, который не давал ей закрыться:
Все это дело прикрутилось сверху над PINGUINO-MX220 - платой управления платформой:
Наступило время собрать все в одно целое:
Все проводки были воткнуты куда им положено - PINGUINO в хаб, UG802 питание в USB коннектор на Ардуботе:
Бортовой компьютер настроен для доступа по ssh, весь нужный инструментарий для работы (компилятор, библиотеки, mc) установлены из репозитория Linaro. Заходи, пиши, компилируй и отлаживай прямо на нем. Красота!
Для тестирования разработана консоль управления, которая показывает онлайн изображение с камеры бота и отправляет ему команды куда ехать, какие лампы включить-выключить. Софт бота принимает команды и отправляет онлайн видео на консоль управления. Текущий статус - глубокая бета. Однако пользоваться системой уже можно!
Необязательно использовать спаркфановский ардубот, есть более дешевые и лучшие варианты.
RC машинка может быть WiFi машинкой...?
RC машинка это хорошо, но дешевые RC машинки имеют ограниченный диапазон и управляются только определённым пультом поставляемым в комплекте.
Я купил RC джип 4х4 с гибкой подвеской и внедорожными шинами примерно за 30 долларов. Поигравшись с машинкой я решил, что её можно улучшить при помощи Wi-Fi и Android. Потратив немного времени, я полностью удалил плату из машинки. Я замерял напряжения на этой плате и разработал систему управления двигателем при помощи Arduino. Оригинальная система управления не использует ШИМ для контроля скорости. Машинка рассчитана на переезд через препятствия на очень низкой передаче, и как следствие очень медленно. В моей же схеме используется ШИМ.
Я использую Arduino уже несколько месяцев. Я также приобрел asynclabs WiFi Sheild для Duemilanoe Arduino, чтобы экспериментировать с WiFI. Он поставляется с библиотекой, устанавливаемой в Arduino IDE. Я смог сделать программу, которая позволяет управлять двигателями и направлением движения при помощи WiFi.
При помощи Visual Studio я разработал окно программы, которая подключается к серверу автомобиля и дает ему команды. Затем после нескольких попыток я написал приложение для Android, которое использует акселерометр для управления машинкой.
Это общий список инструментов и элементов, которые использовались в этом проекте. В документации Eagle указаны точные технические характеристики используемых компонентов.
Мультиметр
Паяльник
Припой
Отвертки
Раствор для травления плат
Фольгированый стеклотекстолит
Плоскогубцы
Arduino
AsyncLabs WiFi Sheild
Разъёмы RJ45
Драйвер двигателя с H-мостом
Конденсаторы
Используя Eagle, я разработал эту схему и сделал печатную плату для неё. Она функционирует как драйвер двигателей и регулятор их мощности для Arduino.
Это позволяет использовать стандартный 7.2В аккумулятор для питания основных и рулевых двигателей и Arduino.
В этой схеме используется двойной интегральный драйвер с Н-мостом SN754410 для управления двигателями. Выводы управления драйвера подсоединены к кабелю RJ45, который подключается к AsyncLabs WiFi Sheild.
Используя библиотеку SparkFun в Eagle я разработал Arduino Shield, через который будут проходить контакты с WiFi Shield и подключаться к драйверу двигателя через разъем RJ45 и 2 винтовые клеммы.
Цоколевка контактов RJ45 очень важна. Ошибка в подключении может привести к непредсказуемым результатам и придётся переделывать плату.
Эта тема была раскрыта много раз, и я не буду подробно описывать её.
Я использую , и он меня устраивает, а с опытом дает прекрасные результаты.
Для крепления платы к корпусу использовались липучки. Мне повезло, т.к. в моей машинке было много места для электроники под трубчатым каркасом.
Я забыл сфотографировать соединение платы драйвера двигателя с остальными платами, однако он хорошо стал и не занял много места в корпусе.
Мой код может быть не достаточно эффективен, но он работает.
Машинка
Мне удалось собрать CarServer на основе примера SocketServer, который я получил вместе с Wifi Sheild AsynLabs.
Вам необходимо будет ввести информацию о своей беспроводной сети в код Arduino. Когда машина включилась, дайте ей 15-45 секунд, чтобы установить соединение с маршрутизатором. Красный светодиод на WiFi Shield означает, что соединение установлено.
Я сделал эту программу при помощи C # и MS Visual Studio 2008. Я сделал хорошее окно, и автомобилем можно управлять стрелочками.
Почему бы не управлять машинкой с телефона?
Такая мысль появилась у меня примерно через неделю после покупки DroidX. Я начал экспериментировать и в конечном итоге использовал Android SDK. Я нашел аналогичные приложения, где для управления используется акселерометр. Смотря на эти приложения написал свое.
Вставить IP и порт, указанные в коде Arduino. Держите телефон горизонтально. Затем наклоните его от себя, чтобы ехать вперед и на себя, чтобы ехать назад. Используйте телефон как руль.
Это мое первое крупное приложение для Android. В нем до сих пор есть некоторые ошибки, но в основном оно работает нормально.
Я отлично провел время, создавая этот проект. Я получил много знаний и новых навыков, и теперь у меня есть машинка 4х4, которой можно управлять с телефона.
Мне нужна камера для установки за лобовым стеклом, чтобы смотреть куда ехать. Она должна быть с низким энергопотреблением, а также передавать видео сама по себе. (Я думаю, что Arduino справится с этим).
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот | |
---|---|---|---|---|---|---|---|
Драйвер двигателей | |||||||
IC1 | Микросхема | SN754410 | 1 | В блокнот | |||
Линейный регулятор | 5 В | 1 | В блокнот | ||||
Биполярный транзистор | 2N3904 | 1 | В блокнот | ||||
C1, C2 | Электролитический конденсатор | 2 | В блокнот | ||||
Разьем | 2 вывода | 7 | В блокнот | ||||
Разьем | 8 выводов | 1 | В блокнот | ||||
Arduino Shield | |||||||
U1 | Плата Arduino | 1 | В блокнот | ||||
Т1 | Биполярный транзистор | 2N3904 | 1 | В блокнот | |||
R1 | Резистор | 1 | В блокнот | ||||
U$3 | Подстроечный резистор | 1 | В блокнот | ||||
Разьем | 2 вывода | 2 |
Канал Science Vetal показал, как сделать машинку на управлении практически от любого андроид смартфона. При этом не будем использовать «Arduino», возьмем микроконтроллер от китайского производителя «Espressive» «esp 8266», штуковина представляет из себя «Arduino» плюс wi-fi модуль.
Все радиодетали и модули в этом китайском магазине .
Вы помните «Arduino uno», оно большое, а здесь маленькая такая штучка, в которой есть wi-fi, возможности «Arduino». К этому микроконтроллеру китайцы разработали такой shield. Он удобный: можно подключить 2 двигателя, или даже 4, при этом можно использовать 11 выводов. Так же возьмем 2 двигателя, 2 стандартных «Arduino» колеса.
Когда на «aliexpress» вводишь «Arduino» в поиск, открываются не только платы, но, сопутствующие товары. Интересные элементы, обязательно что-то интересное найдете, попробуйте.
Возьмём для питания 2 аккумулятора 18650, к ним бокс для 2-х акб, также возьмем 2 уголка, размеры около 5 дюймов, это не столь важно там плюс-минус полдюйма, дюйм. Дело в том, что конструкция может быть ваша, но представленная в ролике авторская удачна, проста.
Берем 2 уголка, при помощи винтов их необходимо соединить, чтобы сюда спокойно помещался shield. Сверлом, диаметр которого 3 мм, делаем 4 отверстия. Берем малюсенькие винты, зажимаем, соединяем эту конструкцию. Такая штуковина получается, прочности данного соединения для такой машинки, как делаем, предостаточно.
Сбоку для вала видео сверлим отверстие диаметром 8 мм, получается конструкция, но необходимо еще сделать 3 отверстия диаметром 3 мм: одно для этого выступа, для этих отверстий крепежных еще 2.
Берем, подставляем таким способом, закручиваем с помощью винтов. Один из идеальных случаев, машинка нравится, сюда нечего добавить, ее незачем переделывать. Делаем отверстия для крепления платы.
Ничего не меняем, кроме как тут, где стоит галочка, выбираем адрес к файлу, который будем заливать, затем выбираем нужный com port, нажимаем кнопочку start. Также под видео есть ссылка на программу, которую нужно установить на ваш любимый android.
Закрепил эту плату, вставляем микроконтроллер. Подключаем провода от двигателей, смотрим, если нижний будет «A-», то с этой стороны «B-» будет верхний. Настало время прикрепить колеса. Делается это легко, так как колёса двигателей – это комплект. В этом месте сверлим отверстие диаметром 4 мм, вставляем винт. Делаем такую нехитрую операцию, регулируем высоту, даже еще ниже можно, что-то получился винт, который сильно торчит. Это лишнее. Это получается, устройство дороже на копеечки, что нам, в общем-то, не нужно, как-то оно выглядит коряво.
Так посмотрим, как получается устройство, которое будет управляться андроидом на расстоянии через wifi. Конечно, получше штука. Отсек для аккумуляторов прикрепим термоклеем, машинка получается.
Вставляем аккумуляторы, необходимо быть внимательным, так как бывает часто так, что все вроде бы правильно собрал, вставил аккумуляторы, а устройство не работает. Оказывается, что эти черные пластиковые боксы. Они не дают акб встать на место.
Программа и скетч http://bbs.smartarduino.com/showthread.php?tid=2013
Приложение для управления https://play.google.com/store/apps/details?id=com.doit.carset
Схему рисовал давно. Теперь там все транзисторы полевые и нет резисторов.
Теперь о самом коде. У меня все довольно просто – есть 4 команды, у которых есть свой параметр размером 1 байт: