Wi-fi машинка с камерой своими руками

wi-fi машинка с камерой своими руками

Введение

В данном проекте описано создание Wi-Fi машинки с управлением моделькой автомобиля через интернет или при помощи ноутбука с Wi-Fi на расстоянии до 500м. На машинке установлена камера, работающая в реальном времени, что позволяет управлять машинкой глядя в экран ноутбука.

Некоторое время назад я нашел маршрутизатор Linksys WRT54GL. Он очень удобен для хака и модификации, т.к. он работает под управлением Linux. Для данного маршрутизатора была написана куча альтернативных прошивок. В этом проекте используется настраиваемая прошивка Linux Open-WRT.

Кроме больших возможностей модификации программного обеспечения этого маршрутизатора, есть куча возможных аппаратных модификаций и хаков. То есть в моем распоряжении был дешевый и взламываемый маршрутизатор со встроенным Linux — я знал, что делать что-то с ним хорошо и удобно.

 Таким образом родилась идея Wi-Fi машинки.

Целью данной статьи является предоставить общий обзор проекта и показать некоторые особенности реализации программной и электронной части.

 Эта статья не является руководством по сборке машинки шаг за шагом, но имеет достаточно информации для людей с хорошей мотивацией и базовыми знаниями в электронике и программировании.

Все программы написаны на условиях Открытого лицензионного соглашения GNU v2, так что код можно свободно использовать и улучшать.

wi-fi машинка с камерой своими руками

Аппаратная часть

Машинка

Добавление сетевой камеры, маршрутизатора, тяжелых батарей, дополнительных схем, и кучи проводов добавляют много лишнего веса, а большинство моделей для этого не предназначено. Поэтому из-за всех дополнений необходимо найти довольно большую радиоуправляемую машинку.

 В интернете можно найти б/у радиоуправляемые транспортные средства без пульта за 200-300 руб. Я купил несколько машинок для того, чтобы вытащить из них детали. Транспорт размера 1:10 или больше вполне подойдет, и вероятно вы не захотите меньше.

Я купил эту машинку за 150 руб.

wi-fi машинка с камерой своими руками

Я разобрал около 20 радиоуправляемых автомобилей. Почти в каждом из них используется чип Realtek RX2/TX2 или его полные аналоги с аналогичной цоколевкой. Документацию на них можно найти в интернете или по ссылкам.

Это означает, что машинкой очень легко управлять при помощи штатной электроники без добавления собственных схем. Можно подключить микроконтроллер непосредственно к выводам (вперед, назад, влево, вправо) и управлять автомобилем.

Возможность использования штатной электроники автомобиля экономит  много сил и времени.

wi-fi машинка с камерой своими руками

Маршрутизатор

Я модифицировал свой WRT54GL так, что он имеет 2 последовательных порта и SD карту на 1Гб (работает как жесткий диск на 1 Гб). В этом проекте SD карта не используется, но используется один из последовательных портов.

У моего маршрутизатора есть два последовательных порта: консольный порт и TTS/1, который мы и будем использовать. Для этого проекта я использую OpenWRT White Russian v0.9. Есть и более поздние версии, но для этого проекта нам они не нужны.

 В руководстве по компиляции программ (смотрите ниже), используется эта версия, поэтому я выбрал её.

wi-fi машинка с камерой своими руками

Ниже в этой статье будут ссылки и информация, которая поможет вам подключить последовательный порт и заставить его работать.

wi-fi машинка с камерой своими руками

Выбор микроконтроллера

Я оценил три различных микроконтроллера для этого проекта. Ниже показано краткое изложение оценки.

Микроконтроллер PIC16F628A Arduino (ATmega168)Freeduino MaxSerial AVR Butterfly (ATmega169)
За Цена. Уровень программного управления. Очень прост в программировании (C со множеством встроенных библиотек). Интегрированный последовательный интерфейс.Готовый комплект разработчика, практически нет необходимости в пайке. Легче для программирования, чем PIC. Интегрированный последовательный интерфейс.Пайка необходима редко.
Против Труден для  программирования (ассемблер). Необходимо соединять цепи вручную. Необходимы дополнительные аппаратные средства(MAX232A).Требуется программатор. Цена. Ошибки загрузчика (см. ниже). Интегрированные периферийные устройства имеют странные выходные напряжения.Цена.

Я выбирал PIC16F628A по нескольким причинам:

  • У меня их было много.
  • Я имею небольшой опыт работы с ними.
  • Я хотел маленькую плату, и плата PIC оказалась самой маленькой из всех 3 вариантов.
  • Я хотел иметь полный контроль над действиями программы, и это вполне возможно при программировании на ассемблере.

Arduino (Freeduino MaxSerial) стал моим вторым выбором, который мне очень понравился простотой сборки и запуска. Также есть хорошая поддержка сообщества, и простота использования.

wi-fi машинка с камерой своими руками

Первоначально я использовал отладочную плату 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В.

wi-fi машинка с камерой своими руками

Я заменил все разъемы на аккумуляторах на стандартные Molex ATX разъемы. Это сделано для того, чтобы использовать дешевые разъёмы которых у меня было много, которые позволяют легко сделать разветвитель для замера тока.  Батареи соединённые последовательно дают около 16В при полной зарядке.

Питание

(7805 1A) 9.2В (из 12V от 7812) 12VВ (7812 1A) 12В (Регулятор LT1083 7.5A)
Микроконтроллер
  • Камера Сигнал
  • Плата управления
Wi-Fi Драйвер двигателя

Линия 9.6В получена путем установки 4 диодов последовательно с шиной 12В берущейся с 7812. Падение напряжения на диоде около 0.7В. Поставив 4 диода в ряд, мы теряем около 2.8В, и получаем 9В для устройств, которым необходимо меньше 12В.

После того как я сжег транзисторы, я решил питать схему более низким напряжением. 7812 рассчитан на 1А, а двигатели потребляют значительно больше. Digikey продает регулятор 7.5A 12В примерно за 14$, и я купил его.

Я прикрепил его к радиатору, потому что думал, что он может греться. После некоторого времени работы он даже не нагрелся, поэтому радиатор не требуется.
Я не хочу рисковать схемой управления, поэтому я питаю его напряжением максимально приближены к штатному.

Камера требует 9В, сигнал работает довольно тихо при питании от 5В, поэтому все эти устройства работают от линии 9.2В.

wi-fi машинка с камерой своими руками

Вся силовая электроника собрана на макетной плате и находится в корпусе.

wi-fi машинка с камерой своими руками

Схемы

  1. PIC:
  2. Arduino:
  3. Подключение Arduino:
    Вперед — Pin 8
    Назад — Pin 9
    Влево — Pin 10
    Вправо — Pin 11
    Зеленый LED — Pin 7
    Красный LED — Pin 6
  4. Сигнал — Pin 5
  5. Последовательный порт Freeduino MaxSerial можно связать с последовательным портом маршрутизатора при помощи стандартного последовательного кабеля.
  6. Последовательный порт 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=320×240?Quality=standard
Доступные разрешения 640×480, 320×120, 160×60. Доступное качество (сжатие) precision(качество), standard(стандартное), motion(движение ).

Качество видео неплохое. Тем не менее, оно часто замирает на 1 секунду даже при хорошей связи.  Я предполагаю, что электроника камеры недостаточно мощна, чтобы поддерживать постоянный прямой эфир с автофокусом. В целом я доволен ей.

Глядя на внутреннюю часть камеры, видно, что она работает на ARM процессоре 250 МГц. По информации с официального сайта она также имеет 64Мб оперативной памяти. Интересно, как трудно было бы заставить Linux работать на этом…

Сигнал

Я добавил забавную возможность сигналить людям. Это довольно просто. Я купил зуммер за 3$ и подключил его к микроконтроллеру через транзистор для увеличения мощности.

Сборка

От машинки было использовано только шасси. Все декоративные и нефункциональные части были сняты. Камера была установлена ​​на переднюю часть с небольшим изменением штатного крепления. Плата была установлена на переднюю часть машинки и прикручена с использованием пластиковых гаек и болтов во избежание замыкания.

Плата микроконтроллера 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 и установите

Источник: https://cxem.net/uprav/uprav34.php

Шпионский автомобиль MIXMOTOR с камерой и управлением по Wi-Fi

Пару лет назад я подсел на игрушки с управлением по Wi-Fi. Сначала эта тема меня привлекла не столько самими игрушками, сколько возможностью управлять ими с моего iPhone или iPad. Тогда это действительно казалось очень необычным и крутым, что я не мог отказать себе в удовольствие полетать на квадрокоптере или покататься на гусеничном танке.

Единственное, что иногда останавливало меня, так это высокая цена таких игрушек. Тогда все, что было так или иначе связано с iPhone стоило каких-то неразумных денег. Но время не стоит на месте, и сегодня цены на подобные игрушки стали более, чем доступны. Да и сами игрушки стали несколько интереснее. С одной из них я познакомлю вас в этом обзоре.

wi-fi машинка с камерой своими руками

Новинка получила название MIXMOTOR. Это, пожалуй, одна из самых интересных моделей гоночного автомобиля с управлением по Wi-Fi.

Благодаря своей необычной форме и конструкции она может использоваться как для игры на пересеченной местности, так и для шоссейных гонок и даже для домашнего дрифта на полу.

При этом она обладает всеми возможностями современных моделей с управлением по Wi-Fi, и стоит почти вдвое дешевле других похожих игрушек. Ниже я подробнее расскажу о всех особенностях MIXMOTOR, а пока давайте поговорим о плюсах и минусах управления по Wi-Fi.

Чем интересен Wi-Fi?

Использования Wi-Fi для управления игрушкой интересно, в первую, очередь, своей простотой, доступностью и возможностью одновременного управления и передачи аудио-видео потоков. Вам не нужно таскать с собой громоздкую и достаточно дорогую аппаратуру радиоуправления.

Достаточно установить на свой смартфон или планшет мобильное приложение и подключиться к Wi-Fi сети своей игрушки.

Для управления игрушкой вы можете выбирать экранные джойстики или использовать G-сенсор, при этом на экране мобильного устройства будет отображаться живая картинка с камеры игрушки, уровень заряда аккумулятора и другие параметры.

Чем Wi-Fi уступает традиционному радиоуправлению? Я вижу лишь один момент, а именно небольшая дальность, что может быть важно для летающих игрушек, но для машинки тех 50 метров, которые обеспечивает Wi-Fi на открытом пространстве, оказывается более, чем достаточно.

В остальтном , Wi-Fi ничем не уступает, в том числе и по скорости отклика на команду. При этом, в теории, можно организовать управление игрушкой через интернет. Правда, к MIXMOTOR это пока не относится.

Машинка является точкой доступа к которой подключается Wi-Fi клиент, в роли которого выступает ваш смартфон или планшет.

Но, возможно, в будущем кто-нибудь модифицирует софт и тогда игрушка превратится в очень полезный гаджет, который позволит удаленно прокатиться по своему дому и посмотреть все ли в порядке. В общем, Wi-Fi управление это здорово. Теперь давайте поближе рассмотрим саму игрушку.

Необычная, но очень практичная..

Нет, это не автомобиль Бэтмена. Его сложно сравнить его с чем-нибудь и ещё сложнее описать словами. Кажется, что в MIXMOTOR собрано все от самых разных классов радиоуправляемых моделей. Здесь и обтекаемый кузов, напоминающий шоссейные модели, и две независимые подвески с пружинными амортизаторами, делающими MIXMOTOR похожим на модель для трофи-рейдов.

wi-fi машинка с камерой своими руками

Основание игрушки выполнено из металла, что добавляет игрушке прочности и, что не менее важно, делает её более тяжёлой. Это очень важный момент, но об этом чуть позже. Верхняя часть игрушки сделана из ударопрочного пластика.

Здесь установлена камера, кнопка включения и скрытый светодиод, отображающий включение питания. Камера имеет разрешение 640×480 пикселей.

Этого вполне достаточно, чтобы получить картинку хорошего качества, не создавая большой нагрузки на Wi-Fi канал.

wi-fi машинка с камерой своими руками

Для красоты, MIXMOTOR оборудована передними и задними фарами, которые зажигаются во время движения в ту или другую сторону. В тыльной части корпуса расположен разъём MicroUSB, используемый для зарядки встроенного аккумулятора, ёмкостью 750 мАч.

wi-fi машинка с камерой своими руками

Посмотрим на нижнюю часть, где расположены две независимые подвески с пружинными амортизаторами. Они обеспечивают достаточно высокий клиренс, благодаря чему обеспечивается хорошая маневренность и проходимость даже на пересеченной местности.

wi-fi машинка с камерой своими руками

Четыре колёса выполнены из пластика с резиновыми шинами, на которых хорошо различим рисунок протектора. Сами диски колёс выполнены с высокой степенью детализации, позволяя разглядеть даже дисковые тормоза.

wi-fi машинка с камерой своими руками

Ведущими являются задние колёса. Передние колёса отвечают за направление движения. В MIXMOTOR используется хорошо знакомый механизм поворота, но, в отличие от совсем недорогих моделей, здесь есть возможность контролировать угол поворота колёс.

Мобильное приложение

Выше я отметил, что для управления MIXMOTOR необходимо установить одноименное мобильное приложение. Оно доступно как под iOS, так и для Android устройств.

wi-fi машинка с камерой своими руками

Приложение имеет очень простой интерфейс. Игрушка имеет возрастное ограничение 8+, и необходимо было сделать так, чтобы софт был понятен детям, но при этом не создавал у взрослого гаджетомана ощущения детской игрушки. На мой взгляд, разработчикам удалось решить эту задачу.

Главный экран мобильного приложения включает несколько больших кнопок. С их помощью пользователь может перейти в режим игры или посмотреть галерею отснятых фото и видеороликов.

wi-fi машинка с камерой своими руками

Экран управления MIXMOTOR выглядит так. В качестве фона используется живая картинка с камеры игрушки. Поверх расположены два джойстика. Левый джойстик отвечает за движение вперед/назад.

Правый джойстик поворачивает колеса и переключает скорость. В верхней строке отображаются иконки уровня сигнала и заряда батареи в игрушке.

В нижней строке отображается иконка для быстрой съемки фото или видео с камеры, а также индикатор текущей скорости.

Напомню, что управлять MIXMOTOR можно не только с помощью джойстиков, но и с помощью наклонов мобильного устройства. Выбор способа управления зависит от личных предпочтений, опыта и условий, в которых запускается машинка.

Впечатление…

Прежде всего необходимо подключиться к Wi-Fi точке доступа MIXMOTOR. Делается это точно также как и в случае любой другой точки доступа. С точки зрения скорости инициализации, MIXMOTOR меня приятно удивила. В то время как другие игрушки с Wi-Fi управлением требовали несколько десятков секунд на включения, здесь играть можно уже через 5 секунд.

Машинка MIXMOTOR оборудована достаточно мощным мотором. Даже на первой передаче машинка оказывается очень резвой. Здесь очень кстати оказалось тяжелое металлическое основание. Оно несколько компенсирует высокую мощность мотора, позволяя нормально управлять машинкой даже на пересеченной местности. Отдельно хочется отметить возможность плавного управления поворотами.

MIXMOTOR имеет три скорости движения. Выбор скорости зависит от условий, в которых используется машинка. Например, для аккуратного вождения в домашних условиях рекомендую использовать первую скорость.

если же вы попробуете запускать машинку на второй скорости на скользкой поверхности пола, то сможете выполнить очень интересные трюки, напоминающие дрифт и резкие развороты на 180 градусов. На улице использовать первую скорость скучно.

Более того, если вы захотите покататься по пересеченной местности, то на первой скорости будет явно не хватать. Здесь захочется переключиться сразу на третью скорость. Особое удовольствие можно получить при запуске машинки на больших асфальтированных площадках.

Здесь вы сможете в полной мере оценить ее мощность и плавность управления поворотами, а после того, как наберетесь опыта, сможете попробовать выполнить фигурное вождение и даже простейшие трюки на трамплинах. Здесь очень кстати оказались жесткие пружинные амортизаторы.

Все это хорошо дополняется возможностью видеть живую картинку с камеры. Картинка передается без задержек и помех даже, когда машинка находиться на приличном удалении от игрока. Она позволяет лучше ориентироваться в пространстве и записывать красивые видеоролики, которыми потом можно похвастаться перед друзьями.

Важный вопрос – время автономной работы. Здесь MIXMOTOR не лучше и не хуже любых других игрушек с управлением по Wi-Fi. Одной полной зарядки аккумулятора хватает на 10 минут непрерывных гонок. При этом зарядка аккумулятора занимает около часа. Для нее можно использовать любой источник питания с USB портом и током зарядки 1А.

В общем, в MIXMOTOR есть все для того, чтобы было не скучно. Ее возможности столь безграничны, что кажется, что она никогда не надоест, и со временем вы или ваш ребенок сможете только совершенствовать свои навыки для того, чтобы постепенно перейти к более серьезным, профессиональным моделям.

Последний вопрос, который мне хотелось бы поднять в рамках этого обзора, во сколько обойдется MIXMOTOR? В среднем, цены на игрушки с управлением по Wi-Fi, находятся на уровне 6000-10000 рублей. MIXMOTOR обойдется в 3990 рублей.

Для меня это важно по ряду причин. Во-первых, это игрушка и она не должна быть дорогой. Во-вторых, мне интересно играть не одному, а в компании, когда можно устроить самые необычные турниры.

Так что за цену любой другой игрушки я куплю две машинки MIXMOTOR.

Источник: https://reviews.ru/article.html?id=4095

Радиоуправляемая Wi-Fi машинка с камерой

Летом появилась мысль сделать радиоуправляемую машинку, но не просто нечто похожее на творение китайской инженерной мысли, которое продается на каждом шагу, а машинку, управлять которой можно было бы с компьютера или телефона. Понято, что машинка, которой можно управлять через Wi-Fi в чистом виде, совершенно не интересна.

А вот если бы у нее была бы камера? А если еще и управление через 3G/EDGE/GPRS? Вот это – другое дело! Значит, управляющее устройство должно иметь USB и Wi-Fi (ну или только USB, можно купить USB Wi-Fi адаптер). Теперь нужно придумать, как управлять двигателями.

Изначально я хотел сделать это с помощью COM-порта и регистра сдвига (74HC595), но спалив 5 таких микросхем, от такого способа отказался. Позже мой взгляд пал на Arduino, а именно на Arduino Duemilanove.

Эта плата имеет 14 цифровых I/O портов, из них шесть – ШИМ (можно будет управлять напряжением на двигателе и повесить сервы для камеры), два можно использовать как Tx и Rx последовательного порта. Обнаружив в своем городе роутер D-Link DIR-320, у которого есть USB порт, сразу же его купил. Придя домой, узнал, что у этого роутера есть невыведенный UART-порт.

Читайте также:  Двухмоторный насос своими руками

Таким образом, у нас появляется канал связи между роутером и ардуиной.

Для роутера я выбрал прошивку OpenWrt. Можно скачать готовую прошивку с OpenWrt для DIR-320 это здесь. Уже не помню почему, но я решил собрать прошивку сам (подробно описано тут). Для этого понадобится Linux (я собирал на Ubuntu 11.10). Для начала, скачаем исходники прошивки и соберем все, что нужно:

svn co svn://svn.openwrt.org/openwrt/branches/backfire dir320
cd dir320
./scripts/feeds update -a && ./scripts/feeds install –a
make prereq && make tools/install && make toolchain/install Конфигурирование прошивкиmake menuconfig Выбираем следующие пакеты:

  • Target System —> Broadcom BCM947xx/953xx – ядро 2.6
  • Image configuration —> LAN IP Address —> – [не обязательно] Можно выбрать IP-адрес, который будет у роутера после загрузки ядра и всех модулей
  • Kernel modules —> Filesystems —> kmod-fs-ext3 — Об этом позже
  • Utilities —> Filesystem —> e2fsprogs – И об этом
  • Utilities —> disc —> block-extroot – И об этом тоже
  • Kernel modules —> USB Support —> kmod-usb-core – поддержка USB
  • Kernel modules —> USB Support —> kmod-usb-ohci – для USB-хаба. Зачем он? Об этом тоже позже
  • Kernel modules —> USB Support —> kmod-usb-storage – поддержка USB-флешек
  • Kernel modules —> USB Support —> kmod-usb2 – USB 2.0
  • Administration —> webif —> webif-applications – админка
  • Kernel modules —> Video Support —> kmod-usb-video-core – поддержка USB-video
  • Kernel modules —> Video Support —> kmod-usb-video-uvc – поддержка UVC-веб камер

Последний пункт выбирайте сами, у меня была UVC веб камера. Так зачем же мы выбрали те пакеты, назначение которых я не объяснил? Проблема в том, что объём флэш-памяти установленной в роутере — 4МБ, что может помешать дальнейшей нашей работе. Мы же перенесем rootfs на флешку, и роутер будет грузиться с нее. Кстати, про флэш-память: нужно не забыть следующее:

make kernel_menuconfig

  • Device Drivers —> Memory Technology Device (MTD) support —> RAM/ROM/Flash chip drivers —> [*] Flash chip driver advanced configuration options —> [*] Specific CFI Flash geometry selection —> [*] Support 8-bit buswidth
  • Device Drivers —> Memory Technology Device (MTD) support —> RAM/ROM/Flash chip drivers —> [*] Flash chip driver advanced configuration options —> [*] Specific CFI Flash geometry selection —> [*] Support 16-bit buswidth

И еще в Kernel Hacking’е нужно исправить console=/dev/ttyS0 на console=/dev/null, чтоб роутер не использовал этот порт как отладочный.

Компилируем и прошиваем

Компиляция прошивки:make V=99 -j2 Теперь нужно ее прошить:

Для bash’а:

#!/bin/bash
echo «==================================================================»
echo «This script will upload dd-wrt firmware (firmware.bin)»
echo «in the current directory to 192.168.0.1 »
echo «during the router's bootup. »
echo «»
echo «* Set your ethernet card's settings to: »
echo » IP: 192.168.0.10 »
echo » Mask: 255.255.255.0 »
echo » Gateway: 192.168.0.1 »
echo «* Unplug the router's power cable. »
echo «»
echo «Press Ctrl+C to abort or any other key to continue… »

read

echo «»
echo «* Re-plug the router's power cable. »
echo «»
echo «==================================================================»
echo «Waiting for the router… Press Ctrl+C to abort. »
echo «»

try(){
ping -c 1 -w 1 192.168.0.1
}
try
while [ «$?» != «0» ] ;
do
try
done
echo «*** Start Flashing **** »
atftp —no-source-port-checking -p -l firmware.bin 192.168.0.1
echo «Firmware successfully loaded!» Для винды: @echo off
echo ==================================================================
echo This batch file will upload dd-wrt firmware in the current directory to
echo 192.168.0.1 during the router's bootup.
echo.
echo * Set your ethernet card's settings to:
echo IP: 192.168.0.2
echo Mask: 255.255.255.0
echo Gateway: 192.168.0.1
echo * Unplug the router's power cable.
echo.
echo Press Ctrl+C to abort or any other key to continue…
pause > nul
echo.
echo * Re-plug the router's power cable.
echo.
echo ==================================================================
echo Waiting for the router… Press Ctrl+C to abort.
echo.
set FIND=%WINDIR%commandfind.exe
if exist %FIND% goto LPING
set FIND=%WINDIR%system32find.exe
if exist %FIND% goto LPING
set FIND=find
:LPING
ping -n 1 -w 50 192.168.0.1 | %FIND% «TTL=»
if errorlevel 1 goto LPING
echo *** Start Flashing ****
tftp -i 192.168.0.1 put firmware.bin
if errorlevel 1 goto LPING
set FIND=
echo.
echo ==================================================================
echo * WAIT for about 2 minutes while the firmware is being flashed.
echo * Reset your ethernet card's settings back to DHCP.
echo * The default router address will be at 192.168.1.1
echo.
Pause

Настройка загрузки с флешки

После первого включения заходим на веб-интерфейс роутера и изменяем пароль. Теперь подключаемся к нему через SSH. Нужно настроить загрузку с флешки, для этого сначала нужно ее разметить. У меня было два раздела: первый – ext3-раздел для rootfs, второй – swap. Открываем /etc/config/fstab в vim’е и пишем то, что соответствует нашей фелшке.

У меня так: config global automount
option from_fstab 1
option anon_mount 1

config global autoswap
option from_fstab 1
option anon_swap 0

config mount
option target /
option device /dev/sda1
option fstype ext3
option options rw,sync
option enabled 1
option enabled_fsck 1
option is_rootfs 1

config swap
option device /dev/sda2
option enabled 1 Сохраняем, перезагружаемся (reboot).

Демон

Управлять двигателями будет ардуина, поэтому напишем демон, который будет перенаправлять всё, что пришло на TCP порт 5554 в /dev/ttyS0.

Мой скомпилированный вариант демона искать в архиве (card) Компилируем с помощью gcc, который был собран в процессе подготовки к сборке прошивки:/dir320/staging_dir/toolchain-mipsel_gcc-4.3.

3+cs_uClibc-0.9.30.1/usr/bin/mipsel-openwrt-linux-uclibc-gcc-4.3.3 -o

Небольшое отступление об удобстве организации работы с роутером

  • После каждого включения мне приходилось писать opkg update, поэтому я его добавил в /etc/rc.local
  • Довольно удобно использовать FTP-сервер. Я поставил pure-ftpd. Для этого пишем: opkg install pure-ftpd Добавим его в /etc/rc.local:pure-ftpd -4 –B –M –l unix –U 000:000
  • Удобно будет сменить веб-интерфейс на luci, для этого пишем: opkg remove webif*
    opkg install luci

Демон [продолжение]

Заливаем на роутер наш демон, добавляем его в автозагрузку.

Теперь ставим mjpg-streamer:opkg install mjpg-streamer Пишем в /etc/config/mjpg-stramer следующие:config mjpg-streamer
option device “/dev/video0”
option resolution “640×480”
option fps “24”
option port “8080”
option enabled “true” Пробуем подключить камеру. Если все нормально, то можно будет увидеть изображение тут:

http:///?action=stream.

Arduino и соединение

Для начала определимся со схемой подключения двигателей. Так как я брал корпус от уже готовой машинки, то мне с двигателями повезло – они уже там были. Передний отвечал за повороты (влево, вправо, прямо), а задний за движение (мне пришлось его поменять на двигатель кнопки блокировки дверей какого-то ВАЗа).

Управлять нагрузками можно ардуиной с помощью полевых транзисторов (95N2LH5, но я использовал IRF 630, потому что и эти ели нашел в своём городе). Подключение такое: земля транзистора – к управляющему пину ардуины, source – к земле ардуины и минусу питания нагрузки, drain – к минусу нагрузки, плюс питания к плюсу нагрузки.

Но таким образом мы сможем ездить только вперед и поворачивать только в одну сторону. Для того чтобы справиться с проблемой, к нам на помощь спешит реле с двумя группами контактов. У меня один двигатель (передний) питался 6 вольтами, а другой 12.

При этом использовалось два 6 вольтовых аккумулятора (один из них — свинцово-кислотный от бесперебойника), учитывая, что минус роутера позже придется соединить с землей ардуины, то получить 6 вольт для роутера не получается (проверяйте сколько вольт подаёте на роутер — мне пришлось покупать еще один после того, как я подал на него 12 вольт).

Поэтому пришлось использовать еще одну релюшку для подачи/неподачи питания на передний двигатель.wi-fi машинка с камерой своими руками Схему рисовал давно. Теперь там все транзисторы полевые и нет резисторов. Теперь о самом коде. У меня все довольно просто – есть 4 команды, у которых есть свой параметр размером 1 байт:

  • m – Отвечает за напряжение, а, следовательно, и за скорость, на двигателе значение от 0 до 255
  • r – Отвечает за повороты. “1” – поворачивать, “0” – не поворачивать
  • n – “1” – ехать назад, “0” – ехать вперед
  • e – “1” – поворачивать в другую сторону

Вот мой код программы для ардуины:int inByte, val;

void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(7, OUTPUT);
}

void loop() {
if (Serial.available() > 0)
{
inByte = Serial.read();
if ((inByte=='n')||(inByte=='e')){
while (Serial.available()==0) {}
val=Serial.read();
if (inByte=='n'){
if (val=='1'){
digitalWrite(2, HIGH);
Serial.print(«Writing to 2 pin

«);
}
if (val=='0'){
digitalWrite(2, 0);
Serial.print(«Writing to 2 pin

«);
}
}
if (inByte=='e'){
if (val=='1'){
digitalWrite(4, HIGH);
Serial.print(«Writing to 4 pin

«);
}
if (val=='0'){
digitalWrite(4, LOW);
Serial.print(«Writing to 4 pin

«);
}
}
}
if ((inByte=='m')||(inByte=='r')){
while (Serial.available()==0) {}
val=Serial.read();
if (inByte=='m'){
if (val!='0')
analogWrite(3, val);
else
analogWrite(3, 0);
Serial.print(«Writing to 3 pin

«);
}
if (inByte=='r'){
if (val=='1'){
digitalWrite(7, HIGH);
Serial.print(«Writing to 7 pin

«);
}
if (val=='0'){
digitalWrite(7, LOW);
Serial.print(«Writing to 7 pin

«);
}
}
}
}
} Как видно, задний двигатель у меня подключен к 3 пину, передний – к 7, реле заднего – к 2 пину, переднего – к 4. Так как 3 – это ШИМ-пин, то используя analogWrite(3, val);, где val от 0 до 255, мы можем управлять напряжением на двигателе. Разбираем наш маршрутизатор. Видим UART порт. Соединяем его с ардуиной.wi-fi машинка с камерой своими руками Теперь смотрим, как это все работает. Подключаемся телнетом к нашему порту и проверяем:

  • n1 – щелкает реле
  • m — колёса начинают немного вращаться
  • n0 – колеса вращаются в другую сторону
  • m0 – колеса перестают вращаться
  • r1 – поворачивают передние колеса
  • e1 – колеса поворачивают в другую сторону
  • r0 – колеса становятся прямо
  • e0 – щелкает реле

Для отладки работы с ком портом на роутере можно использовать minicom (opkg install minicom).

Программная часть

В архиве моя программка для управления машинкой (rotate и power из архива нужно скопировать в /bin/ на роутере, card – мой демон). Работает только с джойстиком.

На вкладке планирование вы можете написать bash скрипт (не забудьте opkg install bash на роутере) для его выполнения с помощью демона cron. Так как этот демон нужно после изменения его настроек перезапускать, моя программа запускает скрипт по адресу http:///cron-restart. Поэтому нужно его создать (/www/cgi-bin/cron-restart) и не забыть сделать исполняемым. Код: #!/bin/bash
/etc/init.d/cron stop; /etc/init.d/cron start

Заключение

Вроде бэ ничего не забыл. А, ну, конечно же! Вот мой шедевр:

wi-fi машинка с камерой своими руками wi-fi машинка с камерой своими руками wi-fi машинка с камерой своими руками wi-fi машинка с камерой своими руками wi-fi машинка с камерой своими руками К такому девайсу можно присоединить Bluetooth (не пробовал, но драйвера есть), 3G-модем (интернет получить у меня получилось, но похоже провайдер не выдаёт каждому клиенту собственный внешний ip-адрес, поэтому придется использовать что-то типа back-connect’а или vpn), gps приёмник (проблем возникнуть не должно – ведь он должен определиться как последовательный порт).

Примечания

Если вдруг роутер перезагружается, то стоит убрать от него подальше все провода или все их экранировать. Экспериментальным путем я понял, что роутер может перезагрузиться от наводок, поэтому пришлось обмотать хаб несколькими слоями изоляции и алюминиевой фольги.

И вот еще. Вместо роутера можно использовать Raspberry Pi, а вместо транзисторов и реле — Arduino Motor Shield.

Читайте также:  Простецкая bluetooth-колонка своими руками (kit-набор)

Архив, о котором не раз я упоминал (зеркало).

Источник: https://habr.com/post/135790/

Автомобиль с видеокамерой. Управление через WiFi

Это небольшой рассказ о том, как построить робота в виде игрушечного автомобильчика с видео камерой, которым можно управлять с помощью компьютера или смартфона на ОС Android через WiFi. Устройство не имеет никакой автономности в смысле своего поведения (типа распознавания чего-либо), управление — только от человека, поэтому «робот» — это не совсем подходящее слово в названии.

Началось все с того, что идея управления игрушечными устройствами от первого лица (т.н. FPV) мне показалась чрезвычайно интересной с точки зрения собственно процесса. Ведь мы можем таким образом реализовать свое присутствие, не в виртуальном мире, а в реальном.Проще и быстрее всего применить эту идею на игрушечных или модельных автомобилях.

Текущие технологии должны давать такую возможность промышленности и предложить массу подобных вещей. Однако это предложение оказалось достаточно дорогим по сравнению тем что можно сделать самому. Так как это мой первый проект, я ни программировать, ни даже паять нормально не умел, и я решил сначала поискать в интернете единомышленников и их варианты решения данной задачи.

 Начав изучение вариантов, как можно осуществить эту идею, я нашел очень подробное описание подобного проекта здесь. A его автор с радостью помог мне разобраться в проблемах, возникших при создании робота.Так я впервые и узнал что такое …duino. Так как это был уже готовый вариант микроконтроллера, где не нужно было паять обвязку к нему, я выбрал именно его.

Также очень понравилось присутствие бутлоадера, позволяющего прошивать микроконтроллер без программаторов.

Для реализации данного проекта понадобится:

  • Микроконтроллер Arduino (любой: nano, uno, mega)
  • Аккумулятор 9,6вольт
  • Китайская машинка на радиоуправлении
  • Роутер dir320 (или любой другой поддерживающий OPEN-WRT прошивку)
  • Вебкамера Logitech c310 или любая другая с UVC потоком

Крупноблочная схема реализации проекта на базе WiFi роутера 

wi-fi машинка с камерой своими руками

Программ пять: на PC, на Android, на роутере (сервер управления и видеопоток), и в микропроцессоре.

Схема работы: соединяем настольный компьютер (ноутбук, далее — PC) с роутером по WiFi. На роутере при его включении автоматически загружаются 2е программы:1) сервер.

Эта программа открывает сокет (соединение) на определенном порту и ждет, когда по этому порту с ней соединится клиент (любая программа, которая обратится в этот порт и также, особым образом скажет серверу, что она готова работать через открытый сокет).

Далее, после установки соединения, все что придет от клиента, будет перенаправлено по определенному пути, для нас это COM-порт, на этом порту подключен микропроцессор. И наоборот, все что придет со стороны COM-порта, будет переслано клиенту.2) программа обработки видео, захватывает его с usb камеры и шлет на определенный порт.

Для его просмотра нужно всего лишь иметь соединение с роутером на этом порту.После того, как между компьютером и роутером установлено WiFi-соединение, запускаем на PC программу для управления роботом (тот самый клиент), эта программа соединяется с программой-сервером на роутере. Эта же или другая программа транслирует видео с WiFi роутера.

Далее, пользователь может управлять автомобильчиком и нажимает, например, кнопку «вперед». Программа на PC, отсылает команду «вперед» прямо на роутер, на его IP, но на определенный порт. На роутере, эта команда поступает в программу-сервер, т.к. выслана она на его порт, и в рамках открытого для этого сокета.

Программа-сервер, ничего не делая с этой командой, просто отправляет её в COM-порт. Таким образом, команда «вперед» оказывается в микропроцессоре, который в ответ на нее, дает сигнал «вперед» на один из своих выводов. К таким выводам процессора подсоединена схема управления двигателями, т.к. сам микропроцессор управлять ими не может в силу своей маломощности.

Управлять исполнительным устройством через роутер, без микропроцессора не получится, т.к. микропроцессор может формировать сигналы «1» (напряжение >2,5v) или «0» (меньше обозначенного) на любом из десятка-другого своих выводов. У роутера же выводов нет, есть только порты ввода/вывода, типа USB или COM (serial), в которых по 2-3 провода.Теперь часть практическая.

Заранее скажу, что несмотря на кажущиеся сложности, все на самом деле просто, если речь идет о простом копировании этого проекта – ведь все уже сделано и работает. Нужно просто выполнить в точности эту инструкцию.

Изначально микроконтроллером был freeduino maxserial у которого был com port, который был одним из немногих(как я тогда считал) для подключения к uart роутеру, для этого нужно было паять переходник с uarta на com чтобы соединить его с роутером. Его брать я не очень хотел, так как оригиналом есть все-таки Arduino, да и Freeduino в Украине нет.wi-fi машинка с камерой своими руками

Как я выяснил потом, все было это просто излишнее нагромождение схемы. Обойтись можно всего 1 проводком который будет идти от TX роутера(на рисунке) к RX (0 пин) микроконтроллера.

Непонятно почему но на фридуине оказалось для нормального подключения нужно tx на tx. Скорее всего просто неверно нанесено обозначение. (тут 0 пин tx) По этому лучше брать оригинальный Arduino.Машинку я купил хорошую, хоть и китайскую wi-fi машинка с камерой своими руками

Машинка оказалась очень мощная, 5 кг на ровной поверхности тянула очень уверено. Также у нее в комплекте шел аккумулятор на 6 вольт. Что касается электроники, то в машинке уже есть готовый драйвер двигателей, на который можно подать управляющие слаботочные выходы с микроконтроллера (если бы с машинкой не повезло — драйвер моторов можно было взять тоже от arduino )

Роутер требует прошивку openwrt и список пакетов указанных на рисунке. wi-fi машинка с камерой своими руками

Роутер можно настроить как точку доступа, которой могут подключится любые устройства, имеющие WiFi. И, даже если не будет программного обеспечения для управлении машинкой – использовать ее как беспроводную камеру видеонаблюдения.

Камера с310 просто подключается к порту usb на роутер и не требует пайки, требует небольших настроек в роутере. Проект имеет 2 цепи питания, 1 цепь питается от 9,6 вольт — роутер и микроконтроллер, 2 цепь питается от 6 вольт — привод и рулевое машинки. Можно обойтись всего 1 источником питания в 9,6 вольт, но более емкостным.

Роутер потребляет 2А, микроконтроллер потребляет почти незаметно, машинка 4А.Программа микроконтроллера обрабатывает сообщения, которые приходят с последовательного порта роутера, обработка происходит побайтово через portb arduino, например если пришло в роутер 2, то, переведя в двоичную систему получаем 00000010 – что соответствует 2 пину на portb.

Такое решение позволяет управлять одновременно несколькими пинами. Вот что получилось в итоге: wi-fi машинка с камерой своими руками

  • Приложение для андроид: 

wi-fi машинка с камерой своими руками

  1. Приложение для пк: 

wi-fi машинка с камерой своими руками

Данный проект еще не закончен и продолжает совершенствоваться.

В планах использовать arduino mega, роутер mr3020, вебакамеру оставить как есть(возможно добавить сферическую линзу для большего обзора), задействовать шим для плавного и точного управления, использовать сервопривод для поворотов, добавить дальномер. Добавить видео на Android. 

Собирайте arduino своими руками — полный каталог плат

Источник: https://arduino-kit.com.ua/avtomobil-s-videokameroy-arduino.html

Самодельная Wifi машинка на NodeMCU. Машина делает дрифт

В данной статье я расскажу вам про модификацию самодельной Wi-Fi машинки на NodeMCU. Как я сделал из нерабочей машинки на радио управлении, Wi fi машинку. Читайте и смотрите вот тут: Своимируками беспроводная Wifi машинка на NodeMCU и RemoteXY.

Как рассказываю в предыдущей статье, электроника машинки была подключена по вот такой схеме.

wi-fi машинка с камерой своими руками

И потаилась от 4 батареек формата АА. Так как постоянно покупать батарейки надоело, я решил переделать питание от аккумулятора 18650 . А так как у меня аккумуляторы из старой батареи ноутбука , они плохо держат заряд. По этой причине я решил сделать питание от двух аккумуляторов.

Но как показала практика, данные аккумуляторы оказались еще хуже чем я думал. Даже 2 не держат нагрузку и Wi-Fi постоянно отваливался. Как я разбирал батарею от ноутбука смотрите тут. Позднее я разобрал второй батарею от ноутбука. Аккумуляторы были розового цвета. И держат они нагрузку неплохо.

Даже один аккумулятор 18650 справлялся с нагрузкой без проблем.

Собрал я машинку на NodeMCU без изменения управляющей программы и был удивлен машинка постоянно дрифтовала, ее разворачивала постоянно. Для дрифта это отлично, но нормально поездить можно только на улице по асфальту. Поэтому я решил переделать управление рулем и управляющую программу.

wi-fi машинка с камерой своими руками

На схеме выше приведен принцип подключения аккумулятора через повышающий DC-DC преобразователя и контролера заряда. Благодаря данной схеме подключения можно заряжать аккумулятор не вынимая его из машинки, что достаточно удобно и практично.

Также по схеме видно что остался один двигатель и появился сервопривод. Сейчас управление поворотами происходит благодаря сервоприводу.

Скетч для NodeMCU в среде программирования Arduino IDE для приложения RemoteXY выглядит вот так:

//////////////////////////////////////////////
// RemoteXY include library //
//////////////////////////////////////////////
// определение режима соединения и подключение библиотеки RemoteXY
#define REMOTEXY_MODE__ESP8266WIFI_LIB_POINT
#include
#include
// настройки соединения
#define REMOTEXY_WIFI_SSID «PortalPk»
#define REMOTEXY_WIFI_PASSWORD «»
#define REMOTEXY_SERVER_PORT 6377
// конфигурация интерфейса
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255,3,0,0,0,25,0,6,5,2,
5,8,43,13,39,39,10,52,43,43,
2,3,131,13,12,14,37,10,18,45,
17,4 };
// структура определяет все переменные вашего интерфейса управления
struct {
// input variable
int8_t joystick_1_x; // =-100..100 координата x положения джойстика
int8_t joystick_1_y; // =-100..100 координата y положения джойстика
uint8_t select_1; // =0 если переключатель в положении A, =1 если в положении B, =2 если в положении C, …
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
/* определяем пины управления правым мотором */
#define MOTOR_RIGHT_UP D1
#define MOTOR_RIGHT_DN D2
/* определяем пины управления левым мотором
#define MOTOR_LEFT_UP D3
#define MOTOR_LEFT_DN D4*/
#include
#define PIN_SERVO D4
Servo servo;
//светодиоды
#define PIN_LED_STOP D0
#define PIN_LED_5 D5
#define PIN_LED_6 D6
#define PIN_LED_7 D7
#define PIN_LED_8 D8
// переменные
boolean status = true; // флаг, что активна левая
boolean open = true; // флаг, включения
int interval[6]={50, 120, 90, 240, 150, 50}; // интервал включения/выключения LED
long prestro1Millis = 0; // до мигания ( в целом переменная времени)
int x=0;
void setup()
{
RemoteXY_Init ();
pinMode (PIN_LED_STOP, OUTPUT);
pinMode (PIN_LED_5, OUTPUT);
pinMode (PIN_LED_6, OUTPUT);
pinMode (PIN_LED_7, OUTPUT);
pinMode (PIN_LED_8, OUTPUT);
servo.attach(PIN_SERVO);
}
void loop()
{
RemoteXY_Handler ();
// Положение селектора 0 и 2 ///
if (RemoteXY.select_1 == 2)
{
Migalka ();// Мигалка
}
if (RemoteXY.select_1 == 1)
{
digitalWrite(PIN_LED_STOP, HIGH); //
digitalWrite(PIN_LED_5, HIGH); //
digitalWrite(PIN_LED_6, HIGH); //
}
if (RemoteXY.select_1 == 0)
{
digitalWrite(PIN_LED_STOP, LOW); //
digitalWrite(PIN_LED_5, LOW); //
digitalWrite(PIN_LED_6, LOW); //
digitalWrite(PIN_LED_7, LOW); //
digitalWrite(PIN_LED_8, LOW); //
}
//END Положение селектора 0 и 2 ////
/* управляем мотором */
int y = RemoteXY.joystick_1_y;
if (y>100) y=100;
if (y20) {
analogWrite(MOTOR_RIGHT_UP, y*10.23);
digitalWrite(MOTOR_RIGHT_DN, LOW);
}
else if (y100) x=100;
if (x10) {
servo.writeMicroseconds(x*2.5+1600);
}
else if (x interval[x]) // проверяем интервал
{
if (open) // если true
digitalWrite(status ? PIN_LED_7 : PIN_LED_8, HIGH); //
else // иначе
digitalWrite(status ? PIN_LED_7 : PIN_LED_8, LOW); //
x++;
if (x == 6) // если последний проход по циклу
{
status = !status; // передаем слово (меняем текущий пин) меняем false на true и наоборот;
x=0;
}
open = !open; //меняем false на true и наоборот
prestro1Millis = curstro1Millis;
}
}

Повторить данную машинку может каждый желающий. Вам не нужно писать код или писать приложения для Android. Достаточно загрузить прошивку в NodeMCU. И на свое устройства установить приложение RemoteXY. Подключиться к Wi-fi сети с имением PortalPK. И ваше устройство станет пультом для машинки.

Источник: https://portal-pk.ru/news/120-samodelnaya-wifi-mashinka-na-nodemcu-mashina-delaet-drift.html

Ссылка на основную публикацию
Adblock
detector