Простая схема радиоуправления своими руками. Радиоуправление своими руками

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

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

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

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

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

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

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

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

Как и чем управлять

Нормальные люди берут приемник, втыкают в него сервомашинки, регулятор скорости, двигают рычажки на пульте и радуются жизни не задаваясь принципами работы и не углубляясь в подробности. В нашем случае такое не пройдет. Первой задачей стало узнать каким макаром управляются сервомашинки. Все оказывается достаточно просто, у привода есть три провода: + питания, - питания и сигнальный. На сигнальном проводе прямоугольные импульсы изменяемой скважности. Чтобы понять что это такое смотрим картинку:

Итак, если мы хотим установить привод в крайнее левое положение нужно слать импульсы длительностью 0,9мс с интервалом 20мс, если в крайнее правое - длительность 2,1мс, интервал тот же, ну со средними положениями аналогично. Как оказалось, регуляторы скорости управляются аналогично. Те, кто в теме скажут что это обычный ШИМ , который реализовать на любом микроконтроллере - плевое дело. Вот и я так решил, купил в местном магазине сервомашинку и склепал на макетке для нее так называемый сервотестер на ATtiny13. И тут оказалось, что ШИМ не совсем простой, а с подводными камнями. Как видно из вышеприведенной диаграммы, скважность (отношение длительности импульса к длительности периода) от 5% до 10% (в дальнейшем я за крайние положения принимаю импульсы длительностью 1,0мс и 2,0мс) для 256-значного ШИМ счетчика ATtiny13 это соответствует значениям от 25 до 50. Но это при условии, что на заполнение счетчика уйдет 20мс, а на деле так не получится и для частоты 9,6МГц и предделителя 1024 нужно ограничить счетчик значением 187(ТОР), в таком случае у нас получится частота 50,134Гц. В большинстве (если не во всех) сервомашинок нету точного генератора опорной частоты и поэтому частота управляющего сигнала может немного плавать. Если оставить ТОР счетчика 255, то частота управляющего сигнала будет 36,76Гц - на некоторых приводах оно будет работать (возможно с глюками), но далеко не на всех. Итак, теперь у нас 187-значный счетчик, для него 5-10% соответствуют значениям от 10 до 20 - всего 10 значений, немного дискретно получится. Если думаете поиграть с тактовой частотой и предделителем ниже привожу сравнительную табличку для 8-битного ШИМа:

Но ведь у большинства микроконтроллеров есть 16-битный (и больше) таймер для генерации ШИМ. Здесь проблема с дискретностью сразу пропадет еще и частоту можно точно выставить. Долго расписывать не буду, сразу даю табличку:

Я не думаю, что для китайской сервомашинки есть существенная разница в 600 и 1200 значений, поэтому вопрос с точностью позиционирования можно считать закрытым.

Многоканальное управление

С одной сервомашинкой разобрались, но для самолета их нужно минимум три и еще регулятор скорости. Решение «в лоб» - взять микроконтроллер с четырьмя каналами 16-битного ШИМ, но такой контроллер будет стоять дорого и, скорее всего, займет много места на плате. Второй вариант - запилить программный ШИМ, но занимать процессорное время - это тоже не вариант. Если снова посмотреть на диаграммы сигнала, то 80% времени он не несет никакой информации, поэтому рациональнее было бы ШИМом задавать только сам импульс 1-2мс. Почему скважность изменяется в таких узких пределах, ведь проще было бы и формировать и считывать импульсы со скважностью хотя бы 10-90%? Зачем нужен тот неинформативный кусок сигнала занимающий 80% времени? Я заподозрил, что, возможно, эти 80% могут занимать импульсы для других исполнительных механизмов, а потом этот сигнал разделяется на несколько разных. То есть, в периоде длительностью 20мс могут уместится 10 импульсов длительностью 1-2мс, затем этот сигнал каким-то демультиплексором разделяется на 10 различных с длительностью периода как раз 20мс. Сказано - сделано, нарисовал в PROTEUS такую схемку:


В роли демультиплексора - 74HC238, на его вход E подаются импульсы с выхода микроконтроллера. Эти импульсы - ШИМ с периодом 2мс (500Гц) и скважностью 50-100%. У каждого импульса своя скважность, обозначающая состояние каждого канала. Вот так выглядит сигнал на входе Е:


Для того, чтобы 74HC238 знал на какой выход подать текущий сигнал используем PORTC микроконтроллера и входы A, B, C демультиплексора. В результате на выходах получаем такие сигналы:


Сигналы на выходе получаются правильной частоты (50Гц) и скважности (5-10%). Итак, нужно генерировать ШИМ частотой 500Гц и заполнением 50-100%, вот табличка для настройки предделителя и ТОР 16-битного счетчика:


Интересно, что возможное количество значений ШИМа ровно в 1000 раз меньше частоты таймера.
Программная реализация
Для ATmega8 с тактовой частотой 16МГц в AtmelStudio6 все реализуется следующим образом: вначале задефайним значения счетчика для крайних положений сервомашинок:
#define LOW 16000U #define HIGH 32000U
затем инициализируем генератор ШИМа на таймере/счетчике1:
OCR1A = HIGH; //Устанавливаем ТОР TCCR1A = 0< Остается реализовать прерывания:
ISR(TIMER1_COMPA_vect) //прерывание по достижению верхнего значения счетчика, непосредственно перед началом следующего импульса { //c_num- переменная, обозначающая номер текущего канала, channels - массив значений каналов if (c_num <= 7) { OCR1B = channels; } else { OCR1B = 0; //отключаем ШИМогенератор для несуществующих в демультиплексоре 8 и 9 канала } } ISR(TIMER1_COMPB_vect, ISR_NOBLOCK)// прерывание возникающее в конце импульса { if (c_num <= 7) { PORTC = c_num; //для каналов 0-7 выводим номер канала на PORTC } //и изменяем значение счетчика от 0 до 9 if (c_num >= 9) { c_num = 0; } else { c_num++; } }
Глобально разрешаем прерывания и готово, забивая в channels значения от LOW до HIGH изменяем значения на каналах.

Реализация в железе

Ну с теорией разобрались, пришло время все это реализовать. Мозгом системы выбран микроконтроллер ATmega8A, тактируется от кварца на 16МГц (не потому, что я захотел 16000 позиций сервомашинки, а потому, что у меня такие валялись). Управляющий сигнал для МК будет поступать через UART. В результате получилась вот такая схемка:


Спустя некоторое время появилась вот такая платка:




Два трехштыревых разъема я не припаял потому, что они мне не нужны, а не подряд они впаяны поскольку у меня нету металлизации отверстий, а в нижнем разъеме дорожки с двух сторон, можно было бы заменить проволочкой, но программно нету проблемы выводить сигнал на любой разъем. Также отсутствует 78L05 ибо в моем регуляторе двигателя есть встроенный стабилизатор (ВЕС).
Для получения данных к плате подключается радиомодуль HM-R868:


Изначально думал втыкать его прямо в плату, но эта конструкция не помещалась в самолетик, пришлось сделать через шлейф. Если изменить прошивку, то контакты разъема для программирования можно использовать для включения/отключения каких-нибудь системам (бортовые огни и т.п.)
Плата обошлась примерно в 20грн = $2.50, приемник - 30грн = $3,75.

Передающая часть

Самолетная часть есть, осталось разобраться с наземной аппаратурой. Как уже писалось ранее, данные передаются по UART, на каждый канал по одному байту. Вначале подключал свою систему проводом через переходник к компьютеру и команды слал через терминал. Чтобы дешифратор определял начало посылки, а в будущем выделял посылки адресуемые именно ему, вначале шлется байт-идентификатор, затем 8 байт определяющих состояние каналов. Позже стал использовать радиомодули, при отключении передатчика все моторчики начинали дико дергаться. Дабы отфильтровать сигнал от шумов, десятым байтом шлю XOR всех 9 предыдущих байт. Помогло, но слабо, добавил еще проверку на таймаут между байтами, если он превышается - вся посылка игнорится и прием начинается заново, с ожидания байта-идентификатора. С добавлением контрольной суммы в виде XOR слать команды с терминала стало напряжным, поэтому я побыстрому наклепал вот такую программку с ползунками:


Число в нижнем левом углу - контрольная сумма. Передвигая ползунки на компе двигались рули на самолете! Вообщем отладил я все это и стал думать о пульте ДУ, купил для него вот такие джойстики:

Но потом меня посетила одна мысль. В свое время я тащился от всяких авиасимуляторов: «Ил-2 Штурмовик», «Lock On», «MSFSX», «Ка-50 Черная Акула» и др. Соответственно был у меня джойстик Genius F-23 и решил я прикрутить его к вышеописанной проге с ползунками. Погуглил как это реализовать, нашел этот пост и получилось! Управлять самолетиком с помощью полноценного джойстика, мне кажется, гораздо круче, чем маленькой палочкой на пульте. Вообщем все вместе изображено на первой фотке - это нетбук, джойстик, преобразователь на FT232, и подключенный к нему передатчик HM-T868. Преобразователь подключается 2м кабелем от принтера, что позволяет закрепить его на каком нибудь дереве или чем-то подобном.

Пуск!

Итак, есть самолетик, есть радиоуправление - Поехали!(с) Первый полет производился над асфальтом, результат - сломанный пополам фюзеляж и полувырванный двигатель. Второй полет производился над более мягкой поверхностью:

Последующие полетов 10 были тоже не особо удачными. Основной причиной я считаю сильную дискретность джойстика - по крену он выдавал только 16 значений (вместо возможных 256), с осью тангажа - не лучше. Но так как в результате испытаний самолет был значительно поврежден и не подлежит ремонту:


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

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

Самые любимые и вместе с тем трудновыполнимые электронные игрушки для юных радиолюбителей.

Управление моделями по радио

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

Выбор модели и системы управления

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

Передатчик

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

Однокомандное приемное устройство

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

Двухканальное четырехкомандное приемное устройство

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

Выбор модели дискретно-пропорционального управления

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

Передатчик для управления летающими моделями

Управление летающими моделями (самолетами) очень увлекательное занятие для детворы. До сих пор где-нибудь проводятся соревнования по боям на кордовых моделях. А вот модель, оборудованная радиосистемой телеуправления — вообще предел мечтаний любого мальчишки. В предлагаемой статье рассказывается о том, как из дискретно-пропорциональной аппаратуры сделать двухканальную систему управления летающими моделями.

Уважаемый 4uvak. Собрал на днях сие чудо на 4 канала. Использовал радио модуль FS1000A, Пашет конечно же все как и написано, за исключением дальности, но думаю это радио модуль просто не фонтан, от того и стоит он 1,5$.
Но собрал я его для того что бы привязать его к broadlink rm2 pro и тут у меня нифига не получилось. Broadlink rm2 pro его увидел, считал его команду и сохранил в себе, но когда он отсылает команду на декодер, последний ни как не реагирует. Broadlink rm2 pro рассчитан по заявленным характеристикам на работу в диапазоне 315/433 МГц, но сие чудо он не принял в свои ряды. Далее последовали танцы с бубном..... В broadlink rm2 pro есть функция как таймер на несколько команд и я решил поставить broadlink rm2 pro задачу на отправку одной и той же команды несколько раз с интервалом 0 секунд, НО!!! Записав одну команду дальше записывать он отказался мотивируя тем, что нет больше места в памяти для сохранения команд. Следом я попробовал сделать ту же операцию с командами от телевизора и он записал 5 команд без проблем. Отсюда я сделал вывод, что в написанной вами программе очень информативные и большие по объему команды отсылаемые кодером на декодер.

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

Теперь вопрос:

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

Я понимаю, что любой не оплачиваемый труд считается за рабство:))))) , а посему готов оплатить ваш труд. Я конечно же не знаю, сколько это будет стоить, но думаю цена будет адекватной проделанной работе. Я хотел вам перечислить деньги но там где было написано, там в рублях и непонятно куда отправлять. Я не резидент РФ и живу в Кыргызстане. У меня мастер кард $. Если есть вариант отправить вам деньги на вашу карту то будет хорошо. В рублях я даже не знаю как это делать. Возможно есть и другие легкие варианты.

Задумал я это потому, что после того как приобрел broadlink rm2 pro подключил тв и кондиционер за бесплатно, а вот остальные радио штучки у нас какие то не дешевые. В доме 19 выключателей на свет, по 3-4-5 штук на комнату и покупать на все выходит очень накладно. Да и розетки хотелось бы переделать на управлении, иначе какой же это умный дом получается.

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

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

Жду вашего ответа.

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

В Китае был куплен вот такой модуль дистанционного управления четырьмя нагрузками + два пульта.

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

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

Первая проблемой с которой я столкнулся, это было осуществление реверса. Разобраться мне в этом помог видео-ролик, где автор ОЧЕНЬ подробно рассказывает как собрать схему реверса и как ее подключить. К сожалению, схема не совсем проста для того, чтобы я смог ее нарисовать, но она проста в понимании и сборке.

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

Из электродвигателя выходят четыре провода А, Б, Ц и Д. Тестером мы легко находим концы двух обмоток, но дальше встает вопрос, какая обмотка рабочая, а какая пусковая. Как я выяснил, рабочая обмотка ВСЕГДА будет иметь меньшее сопротивление. Теперь обратите внимание как я подключил ее. Конец Д всегда соединен с нулем питания. Так как в схематике реверс, работает только один пускатель при вращении в одну сторону, а при вращении в другую работает второй пускатель, то колодки 1 и 3 обеих пускателей были запараллелены и подключены с одной стороны к фазе питания, а другой к выводу Ц рабочей обмотки.

Реверс пусковой обмотки прост. Во входной части пускателей соединяем одинаковые клеммы 2 с 2 и 3 с 1 и подаем на них питание. На выходной стороне соединяем 2 с 1 и 3 с 2 и подключаем выходы Aи Б пусковой обмотки.

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

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