Как устроен пульт дистанционного управления для игрушек

Обновлено: 19.05.2024

Система радиоуправления позволяет дистанционно управлять игрушкой на расстоянии до 10 метров.
Рабочая частота передатчика 27,12 мГц.
Мощность передатчика в пределах 4-10 мВт.
Потребление тока передатчиком не более 20 мА.
Вес передатчика с антенной и питанием не более 150 г.
Чувствительность приемника в рабочей полосе частот не хуже 100 мкВ.
Потребление тока приемником не более 20 мА.
Вес приемника не более 70 г.
Командоаппарат обеспечивает выполнение четырех различных команд, которые повторяются периодически.
Вес командоаппарата не более 70 г.
Питание приемника и передатчика производится от батарей "Крона-ВЦ".

Принцип работы

Передатчик состоит из модулятора и генератора высокой частоты (рис.1). Модулятором передатчика служит симметричный мультивибратор, собранный на низкочастотных транзисторах VT2 и VT3 типа МП40.

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

Приемник состоит из высокочастотного каскада, усилителя низкой частоты и электронного реле.

Высокочастотный каскад приемника представляет собой сверхрегенератор. Сверхрегенератор собран на высокочастотном транзисторе VT1 типа П416 (рис.2).

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

Командный сигнал передатчика выделяется контуром L1-С4, усиливается и детектируется сверхрегенератором. Фильтр R4-С8 пропускает сигнал команды низкой частоты на вход усилителя VT2, отделяя при этом частоту гашения более высокого порядка.

Электронное реле собрано на транзисторах VT3-VT4 типа МП40, п коллектор транзистора VT4 включено исполнительное реле КР типа РСМ-1.

Напряжение низкой частоты командного сигнала усиливается транзисторами VT3-VT4 и подается через конденсатор С13 на вы-прямительную ячейку УД1, УДЗ.

Выпрямленное напряжение через резистор R9 поступает на базу транзистора VT3. При этом эмиттерный ток транзистора VT3 резко увеличивается, транзистор VT4 открывается. Реле срабатывает, замыкая цепь питания двигателя командоаппарата.

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

Описание электрической схемы радиоуправляемой игрушки

На схеме (рис.3) показан один из вариантов электрооборудования радиоуправляемой игрушки.

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

Для приема сигналов команды от передатчика в игрушку вмонтированы приемник и Командоаппарат. Двигатель привода и командоаппарата, а также лампочки питаются от двух последовательно соединенных батарей типа 3336Л(У) (GB1). Для питания приемника служит батарея "Крона-ВЦ" (GB2). Для выключения батареи служит двухполюсный выключатель S. При поступлении сигнала команды от передатчика срабатывает реле КР, приемника и своими контактами включает электродвигатель командоаппарата (рис.4)МЗ.

Электродвигатель МЗ с помощью храпового механизма поворачивает программный диск на 30°, что соответствует переключению одной команды.

Программный диск через распределительные скользящие контакты включает электродвигатели привода и лампочки игрушки следующим образом:

В положении "вперед" замкнуты контакты 1, 2, 3, 4, при этом включены двигатели М1 и М2, а также лампочки Н1, Н2, НЗ, Н4.

В положении "направо" замкнуты контакты 1, 2, при этом включены двигатель М1 и лампочка НЗ.

В положении "стоп" все контакты разомкнуты.

В положении "налево" замкнуты контакты 1, 3, при этом включены двигатель М2 и лампочка Н4.

Команды меняются периодически. На схеме показана последовательность команд за один цикл.

Указания по монтажу и наладке системы

Размещение приемника в игрушке желательно производить на максимальном удалении от эл. двигателей и электромагнитов. Для защиты приемника от помех, создаваемых электродвигателями, рекомендуется включать параллельно электродвигателям электролитические конденсаторы 10-20 мкф рабочим напряжением 10-12 вольт, соблюдая полярность включения. К приемнику необходимо подключить антенну. В качестве антенны может быть использован штырь или провод диаметром 1,0-2,0 мм, длиной не менее 20 см. Антенну необходимо изолировать от корпуса игрушки. В качестве изоляторов можно использовать детали из керамики, фторопласта, оргстекла или полистирола. С увеличением длины антенны дальность управления увеличивается. Приемник необходимо закрыть крышкой из изоляционного материала для защиты от пыли и влаги. Расстояние от печатной платы до основания, на котором укреплен приемник, должно быть не менее 5 мм.
Расположение элементов на печатной плате показано на рис.5.

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

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

Все статьи цикла:

Приспособил старый смартфон под скрытую камеру в квартире за 10 минут: рассказываю, как это сделать (разбирать телефон не нужно)

Для смартфонов с ИК-портом

Как правило, инфракрасный порт или ИК-порт присутствует почти в каждой модели китайского смартфона, например, Xiaomi или Huawei. Чтобы определить, есть ли на вашем смартфоне ИК-порт, нужно изучить верхнюю часть корпуса — на ней должна быть красная «лампочка». Если найти ее не удалось, то есть второй вариант проверить это: скачайте и установите приложение AnyMote Universal Remote. Если все работает, значит ваш телефон оснащен инфракрасным портом.

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

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

Для смартфонов без ИК-порта

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

Своими руками

Универсальный ИК-пульт дистанционного управления можно сделать самостоятельно практически из любого смартфона. Все что нам нужно — это два инфракрасных светодиода и разъём TRS 3.5мм, который еще называют штекер «джек». ИК-светодиоды вы можете как купить отдельно, так и воспользоваться уже имеющимися из старых пультов.

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

image

Всем привет. Представляю на общее обозрение самодельный пульт радиоуправления для управления различными объектами на расстоянии. Это может быть машинка, танк, катер и т.д. изготовленное мной для “детского” радио кружка. С применением радио модуля NRF24L01 и микроконтроллера ATMEGA16.

Давно у меня лежала коробка одинаковых поломанных игровых джойстиков от приставок. Досталась от игрового заведения. Особого применения в неисправных игровых джойстиках я не видел, да и выкидывать или разбирать жалко. Вот и стояла коробка мертвым грузом пылилась. Идея применения игровых джойстиков, пришла, как только пообщался со своим приятелем. Приятель вел кружок для юных радиолюбителей в интернате, причем бесплатно по выходным, приобщал любознательных детишек к миру радиоэлектроники. Дети они ведь как губка, впитывают информацию. Так как я сам очень приветствую подобные кружки для детей, а тут еще и в таком месте. То и предложил идею, как задействовать нерабочие джойстики. Идея заключалась в следующем: создать самодельный радио дистанционный пульт управления моделями, собранными своими руками, который хотелось бы предложить детям для изучения проекта. Идея ему очень понравилась, учитывая, что финансирование детских учреждений мягко сказать не очень, да и мне был интересен данный проект. Пускай я тоже внесу свою лепту в развитие радио кружка.
Цель проекта создать законченное устройство не только как радио дистанционный пульт, но и ответную часть на радиоуправляемый объект. Учитывая, что пульт для детей то и подключение приёмной части на модель, также должно быть по возможности простым.

Сборка и комплектующие:

image

image

Разобрав игровой джойстик на составляющие, сразу стало ясно, нужно изготовить новую печатную плату, причем, весьма необычной формы. Сначала, хотел развести печатную плату на микроконтроллер ATMEGA48, но как оказалось портов микроконтроллера просто не хватает под все кнопки. Конечно, такое количество кнопок в принципе не нужно и можно было ограничиться только четырьмя портами микроконтроллера АЦП для двух джойстиков и два порта для тактовых кнопок, размещенных на джойстиках. Но мне захотелось по возможности максимально большое количество кнопок задействовать, кто знает, чего там детишки ещё захотят добавить. Так была рождена печатная плата под микроконтроллер ATMEGA16. Сами микроконтроллеры у меня были в наличии, остались от какого-то проекта.

Резинки на кнопках очень сильно были изношены, и восстановлению не подлежали. Но это не удивительно учитывая, где джойстики использовались. По этой причине применил тактовые кнопки. Пожалуй, к минусам тактовых кнопок можно отнести сильное щелканье, возникавшие в результате нажатия на кнопку. Но для данного проекта это весьма терпимо.
Плату с джойстиками не пришлось переделывать, оставил какая есть, что значительно сэкономило времени. Торцевые кнопки также сохранил в первоначальном виде.
В качестве приемопередатчика выбрал радиомодуль NRF24L01, так как цена весьма мала в Китае по цене 0.60$ за шт. купил. Несмотря на свою малую стоимость, радиомодуль обладает не малыми возможностями и конечно мне подходил. Следующей проблемой, с которой столкнулся, а собственно где радиомодуль разместить. Пространство в корпусе свободного маловато, по этой причине радио модуль разместил в одной из ручек корпуса джойстика. Даже фиксировать не пришлось, модуль плотно прижимался, когда собирался полностью корпус.

image

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

В процессе испытания радио модуль, свою заявленную дальность оправдал и уверенно работал по прямой видимости на расстоянии 50 метров, через стены дальность значительно уменьшилась. Также было в планах установить вибромотор, который реагировал, скажем на какие-то столкновения или другие действия в радиоуправляемой модели. В связи с этим предусмотрел на печатной плате транзисторный ключ для управления. Но дополнительные усложнения я оставил на потом сначала нужно обкатать программу, так как она ещё сыровата. Да и конструкция, учитывая, что это прототип требует мелких доработок. Вот так как говорится “с миру по нитке”, практически с минимальными вложениями был создан пульт радиоуправление.

image

Авиамоделизму, как хобби, десятки лет. И на рынке аппаратуры радиоуправления давно сформировались свои лидеры и стандарты. Мультикоптеры же стали смиренно использовать существующие пульты ДУ от самолетов и вертолетов.

Насколько безопасны такие полеты? И почему коптеру нужен собственный пульт?

Пост содержит инструкцию по изменению механической части RC-передатчика Futaba T8FG. С незначительными отступлениями, эта инструкция может быть применена к большинству передатчиков, имеющихся в продаже.

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

Рекомендую к прочтению, если:

1) Вы собираетесь сделать/приобрести мультикоптер
2) Вы летаете на мультикоптере, используя самолетный пульт
3) Хотите быть в курсе особенностей управления авиамоделями

Введение. Стандартный пульт ДУ.

Перед тем, как приступить к описанию проблемы, даю краткий обзор типового летного пульта. Стандартный пульт управления летающей моделью выглядит так:

image

Как видно, такой аппарат имеет две основные ручки (называются стики). Обычно, ручка управления газом и поворотом находится слева. Тянем вверх: подъем, вправо-влево: поворот. Ручка стремится занять центральное положение по горизонтали (снабжена пружиной). А вот по вертикали есть 2 решения: самолетное (с трещоткой на ручке газа) и вертолетное (без нее). Причем, в обоих случаях вертикальная пружина не используется. Да и, собственно, зачем?

Многие производители позаботились о том, чтобы владелец мог самостоятельно переделать самолетный вариант в вертолетный и наоборот. Также предусматривается возможность сменить управление Mode1/Mode2 (то есть поменять ручки местами, как руль в машине). Кстати, вторая ручка стремится занять центральное положение по обоим направлением (имеет горизонтальное и вертикальное подпружинивание) и управляет креном и тангажом, что одинаково хорошо подходит как самолетам и вертолетам, так и мультикоптерам. А вот с управлением каналом газа все не так однозначно.

Часть1. Погружение в проблему.

Функции полетного контроллера

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

Самой популярной из подходящих систем, пожалуй, является Naza от компании DJI Innovations. На ее примере мы и рассмотрим адаптацию пульта.

Проблема контроля высоты полета

После установки такого контроллера на мультикоптер ручка управления газом по-сути превращается в регулятор высоты полета, удерживающий аппарат на месте при среднем ее (ручки) положении. Тянем вверх — летим вверх, вернули в центр — остановка. Если вы используете стандартный пульт, то среднее положение ручки иногда приходится контролировать посматривая на нее и отвлекаясь от пилотирования.

Ситуация усложняется, когда вы начинаете FPV-полеты по камере. Например, нужно облететь объект по кругу несколько раз камерой в сторону объекта на высоте 25 метров при условии, что на пути есть деревья высотой 20 метров. При использовании дисплея еще можно переключить внимание на рукоятку или на модель, а вот в видеоочках остается только всматриваться в показатели высоты и вертикального ускорения, если система OSD, накладывающая полетную информацию на видео, у вас вообще установлена. Палец положения стика строго по вертикали не чувствует.

Повторюсь, эта проблема существует только у тех коптеров, которые имеют барометр и функцию удержания высоты. Если у вас такой функции нет, то и среднее положение стика вам ни к чему — аппарат все равно будет «плавать» по вертикали.

Проблема выключения моторов

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

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

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

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

Подпружинивание рукоятки газа

С одной стороны, хотелось бы иметь подпружинивание ручки газа, оставляющее ее в среднем положении аналогично управлению тангажом. Тем более, в большинстве пультов имеется возможность такой доработки. Тогда коптер, если отпустить ручки, всегда стабилизировался бы в воздухе. Идеальный аппарат, особенно при подключении GPS и включении 3-х мерной стабилизации! Но ведь это газ! На летательном аппарате! Мы никак не можем использовать пружину, поднимающую стик в центральное положение — это опасно.

Часть 2. Поиск решений.

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

1) Фиксация ручки в центральном положении со щелчком
2) Дополнительное усилие при снижении газа меньше 10%
3) Пружина на ручке, каким-то образом не снижающая безопасность использования пульта

Вот что у меня получилось:

image

На горизонтальной оси треугольниками отмечены те места, где ручка должна щелкать при перемещении. Сверху показано как должна работать пружина. Она доводит ручку до центрального положения только из состояния «выше центра». То есть, подлетая к препятствию, дергаем ручку вверх, ждем и отпускаем ее. Ручка возвращается в нормальное положение. Коптер, поднявшись вверх, продолжает движение на новой заданной высоте. Удобно. При снижении же пружина работать не должна, чтобы ручку газа можно было спокойно переместить вниз при завершении полета.

Часть 3. Механическая модернизация передатчика

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

  • Важно! Если вас беспокоит даже обратимое изменение конструкции легендарного пульта Futaba, не читайте дальше, это может нанести моральную травму.
  • Если вы используете пульт и для полетов на самолете, откажитесь от подпружинивания и нижнего щелчка. Наверняка, вы обладаете достаточным опытом для того, чтобы останавливать моторы тумблером. Средний щелчок, думаю, никак не помешает полетам на самолете.
  • Если вы используете пульт для полетов на вертолете, щелчки не получатся все равно, так как у вас, по-идее, должна стоять насадка на зубья.
  • Изменения обратимы конкретно для моей модели T8FG Super. На других моделях я, разумеется, не проверял, но должно все получиться.

Итак, снимаем крышку и трещотку с ручки газа:

image

В моем пульте оказалось (фото ниже), что площадка с трещоткой (1) одновременно блокировала и пружинки специальным пластиковым штырем (2). О чудо — без этой площадки газ стал пружиниться сам! Подергав ручку, я понял, что для ее подпружинивания только в верхнем положении нужно удалить указанный металлический штырь (3), предварительно открутив винты и удалив пластиковое крепление (4), чтобы оно не мешало вынимать штырь щипцами. Результат (5) видно на крайнем правом изображении. Металлический штырь приклейте скотчем к крышке пульта со внутренней стороны, он может пригодиться при откате изменений. Вернув крепление (4) на место и отщепив кусачками кусок пластикового штыря (2), с проблемой пружин было покончено.

image

Как ни крутил я площадку с трещоткой (1), мне не удалось избежать откусывания пластикого штыря (2). Производитель предусмотрел возможность ее (площадки целиком) крепления под углом 90 градусов, но тогда вместе со штырем перемещается и трещотка. Оставить трещотку на месте, а штырек переместить, не представляется возможным. Может, в вашем пульте реализовано более гибко. В конечном счете это совсем не страшно. Можно приклеить этот штырек обратно при откате изменений, нагрузки и трения на нем нет. Можно поступить проще и отсоединить вертикальную пружинку, тогда штырек вообще не понадобится. Закрепите его на всякий случай скотчем на крышке от пульта, может, пригодится.

Теперь о том, как сделать фиксацию ручки и щелчки. Трещотка цепляет полукруглую пластинку с зубьями, движущуюся вместе с ручкой. На этой пластинке нужно поглубже выпилить один проем между зубьями в центральном положении ручки и второй ближе к нижнему положении ручки (я выпилил проем между 2-м и 3-м зубьями) по ходу движения стика (ручки). В качестве пилы использовался обыкновенный нож для сыра. Самый ответственный момент здесь — правильно найти проем центрального положения ручки. Сомневаетесь — сразу сильно не пилите.

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

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

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

Заходим в меню аппаратуры и корректируем экспоненту газа (Futaba T8FG: Model menu > THR curve). Проверяем все несколько раз на мониторе движения серв (Futaba T8FG: Model menu > Servo). У меня получилось 12% газа при нижнем щелчке с такими настройками:

image

Заключение

Вот и все. Теперь можно комфортно летать на заданной высоте, просто забыв об управлении газом. Это позволит сосредоточиться на съемке объектов, например. А можно улететь в облака и контролировать выключение моторов на спуске. Получилось весьма удобно. Стик в начальном положении как будто имеет тумблер включения, имеющий короткий ход. Это совсем несущественно сокращает ход стика от централи до нижней границы (по-крайней мере, я вообще не ощутил изменений) а в среднем положении легкий, но ощутимый фиксатор, который не влияет на точность вертикального позиционирования стика. Фиксацию хорошо дополняет верхнее подпружинивание. Без него, на холоде, например, когда руки менее чувствительны, можно протянуть стик и мимо, так что самолетчикам, видимо, не помешает.

Костыль ли это? Хороший вопрос. Смотря что считать костылем. По крайней мере, это — костыль механический. Остальное, типа тумблеров блокировки 50%-го положения газа, будет функциональным костылем, который обеспечит результат с побочными и весьма ощутимыми эффектами. Думаю, что время мультикоптеров еще не настало, и именитые производители просто не включают в комплект адаптер для коптеров, заостряя внимание на вертолетно-самолетных и Mode 1-2 адаптациях своего оборудования. Специальные коптерные пульты начинают постепенно оснащать похожими механизмами, как например пульт от второй версии Phantom от DJI.

Надеюсь, не зря потратил полдня, и кому-то этот пост пригодится. Удачных полетов!)



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

В свою бытность, я также как и многие, прошёл путь по созданию разных устройств, базирующихся на модулях HC-05, HC-06:

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

Такая связка была бы целесообразной в начале 2010-х годов, но в настоящее время стоит использовать более современный подход. А если более конкретно, то в качестве микроконтроллера мы возьмём esp32, управлять которым будем с экрана своего смартфона.

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

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

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

С точки зрения соединения, мы будем подключаться к микроконтроллеру по wifi, где точкой доступа будет выступать наш смартфон (то есть и пультом управления — он же, а управлять будем, соответственно, — машинкой). Поэтому изначально необходимо сконфигурировать и запустить точку доступа на смартфоне, после чего ввести в скетч параметры доступа к ней:


Далее запускаем асинхронный веб-сервер на 80 порту и создаём объект, который будет обрабатывать websocket-ы:


Далее нам необходимо создать веб-страницу, которая будет отображаться у пользователя. Эту страницу мы помещаем в массив index_html.

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

Там же отдельными классами прописываются кнопки:

Для обработки нажатий используется JavaScript код, в котором происходит настройка websocket-ов, а также прописывается реакция на происходящие события:


Кроме того, инициализируется обработчики нажатий кнопок:


и прописывается конкретный сценарий, который будет происходить при начале касания и его окончании (будет вызвана соответствующая функция):

Именно здесь, чтобы понимать, что происходит в данный момент, и требуется считывать состояние переменной state:

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


Для инициализации протокола websockets создана специальная функция:


Как мы говорили уже ранее, в рамках нашей системы смартфон выступает в качестве точки доступа, а esp32 — в роли клиента. Запустим монитор COM порта, точку доступа на смартфоне и посмотрим, что из этого получится. Мы видим, что esp32 подключилась к смартфону и получила IP адрес, и отчёт вывелся в COM порт:



В свою очередь, при загрузке, пульт управления будет таким:


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

Кстати сказать, при таком способе управления, мы будем ограничены дальностью действия wi-fi. Если же вам потребуется управлять устройством с больших расстояний, то нужно будет изменить схему подключения с такой:



Для этого придётся использовать радиомодули nrf. Использование их совместно с esp32 таит свои трудности, в частности, придётся использовать видоизменённую библиотеку RF24, с целью дать возможность программе использовать программную реализацию SPI, вместо аппаратной. Об этом неплохо рассказано вот здесь.

Ну вот собственно и всё! Код для работы через websockets протестирован и работает. Остаётся только прописать свою реализацию, для нужного типа двигателя/лей.

Читайте также: