РадиоКот :: “Поехали кататься!” или машинка на радиоуправлении

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении Роботы

Радиокот :: простейшее радиоуправление. специально для начинающих.

Простейшее радиоуправление. Специально для начинающих.

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

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

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

На TDA7000(70221) по моему и схема и настройка будет еще проще. В ней, при её простоте заложено довольно  много возможностей для целей радиоуправления.

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

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

Смотрите про коптеры:  Делаем радиоуправление для самолета / Хабр

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

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

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

Вот даже моя примитивная система на 225 мгц работает в пределах квартиры без всяких антенн. Частоту взял именно эту просто из за того, что вытащил кварц на 25 мгц из старой сетевой карточки и сделал на его основе передатчик. Справа там просто мультивибратор на логике, что бы сигнал передатчика промодулировать.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

А это приемник сверхрегенератор на частоту 225 мгц.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Монтаж на пятачках. Считаю, что для макетов идеальный способ. Расположение пятачком делается в процессе монтажа и заранее неизвестно. Прочитать об этом способе можно в книге  С.Г. Жутяев «Любительская УКВ радиостанция»

 https://www.cqham.ru/ftp/1-29.djvu

 С этим все. Начинаю со сверхрегенераторами на 27 мгц, а там как получится.

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 Как говорил, схема сверхрегенератора классическая. Катушка такая же, как и в передатчике. Транзистор КТ315Б

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

Подключил к УНЧ и антенну длиной 15 см. Покрутил R2 и добился шумов суперизации.

Взял книжку книжку Г. Миль «Электронное дистанционное управление моделями» Подцепил осциллограф к точке «1» на схеме и как подозревал картинка моя было и  близко на эту не похожа.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

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

Дроссель в эмиттере у меня был самодельный. Намотано 50 витков провода на резисторе 100 ком. От отчаяния взял и поставил фабричный дроссель ДПМ-01 и произошло чудо. Осциллограмма сразу приняла приличный вид и чувствительность улучшилась.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

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

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

Вот и у Г. Миля об этом написано.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

Такая привлекательная простая схема. Жалко, что на практике она очень нестабильно работает. Так и у меня в те годы получилось и решил я её добить. Может кому пригодится. Дело в том, что на выходе сверхрегенератора присутствует переменное напряжение суперизации, как видели оно порядка единиц вольт, хотя и частота у него намного больше напряжения шумов, но величина шумов всего лишь несколько милливольт и эффективно отделить их очень затруднительно. Конечно идеальный случай поставить НЧ трансформатор или  ФНЧ на LС элементах, но лень мотать тысячи витков. Хотя в давние времена люди были не такие ленивые и мотали такое.

Здесь нужно заметить, что если сверхрегенератор использовать для приема голоса, то сильное подавление частоты суперизации можно не делать. Просто не нужно будет подавать на УНЧ сильный сигнал, что бы не загонять его в режим отсечки этим напряжением суперизации. В нашем случае это напряжение нужно убрать как можно сильнее. На выходе сверхрегенератора стоит примитивный фильтр НЧ на R5, С7 но все, на что он способен, так получить на его выходе вот такое с амплитудой порядка 0,2 вольта, а шумов при таком на экране осциллографа еще и не видим, хотя они там точно есть. Амплитуда этих шумов совсем мала. Это картинка в точке «2»

Если присмотреться, то наши шумы чуть видны в верхней части этих импульсов.

 

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

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

Т.к. ни LC  фильтр мне не хочется, ни трансформатор ставить, то остается единственны путь, это поставить активный RС фильтр с частотой среза в несколько килогерц.

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

Если теперь посмотреть сигнал в точке «3» при отсутствии несущей, то видим только шум сверхрегенератора приличной амплитуды. Он то и является в нашем случае сигналом команды.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

Кстати макет базового блока так выглядит. Виден монтаж на пятачках. Конструкция довольно жесткая. Можно спокойно её бросать и ничего с ней не будет. Все сделано на выводах деталей обрезанных до размера 1 – 2 мм

Единственно желательно сердечник катушки закрепить.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

Теперь имея базовый блок делаем для начала простейшее однокомандное управление.

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

Это макет однокомандного управления так выглядит.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

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

В принципе можно сделать и без кварца. Для увеличения мощности в генераторе поставил два транзистора КТ315 в параллель, что тоже необязательно. Можно один или что то мощнее, например КТ603 или КТ3117

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

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

 Теперь, как и задумал элементарные принципы передачи нескольких команд. Я взял две команды, хотя по этому принципу можно сделать порядка четырех.

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

 Вот здесь схема с катушками из книги Г. Миля.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

Поэтому фильтры решил взять активные на RС. Схем много перепробовал, но не понравились. Больше понравился фильтр Мюллера Фогта. О нем тоже в книге Г. Миля написано.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

И наконец полная схема вместе с фильтрами и выходными ключами. Частоты я брал случайные. Первая получилась 1200 гц, вторая 750 гц. Желательно, что бы они не делились на целое число и не создавали в тракте гармоники, т.е. выбор 1200 гц и 600 гц был бы совсем не удачен в данном случае.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

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

 А это внешний вид макета.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

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

Модулятор по сути два мультивибратора работающих на разных частотах.

На схеме все понятно. Включаем или один мультивибратор или другой.

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

 

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

   

Все!

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

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



Файлы:
11.png

Все вопросы в
Форум.

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

Предисловие.

На фотографиях в этой статье будет немного (много) «колхоза».

Мне понадобилось:

  1. Три микроконтроллера Arduino Nano
  2. Два радиомодуля NRF24l01 с усилителем и внешней антенной
  3. Три односторонние печатные платы 50х70мм
  4. Четыре потенциометра на 10кОм
  5. Четыре ручки для них
  6. Около 22 тактовых кнопок
  7. Четыре тумблера ON-OFF-ON
  8. Два двухосевых джойстика (лучше использовать не для геймпадов)
  9. И пины-соединители
  10. Стабилизаторы питания LM1117-3.3, или аналоги, и другие радиодетали
  11. Всякая мелочёвка: провода, паяльные принадлежности, клеи, скотчи и др.

->>> Arduino Nano на Паркфлаере
Процесс изготовления.

Начну с изготовления

приёмника

. Отрезал два куска по 15 пинов «мама», подключил на них Ардуино. На пины А0-А7 и D2-D8 включительно припаял тройной разъём «папа», где один ряд – сигнальный с Ардуино (отдельный с каждого пина на Дуине), средний – 5В в параллель, крайний, который ближе к названию пина на Ардуино – земля (GND) в параллель.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

На пины D9-D13 включительно припаял радиомодуль по схеме, но питание впаял в стабилизатор напряжения, на выходе которого электролитический конденсатор 16В 100мкФ и керамический на 100нФ. На вход стабилизатора повесил керамический конденсатор 100нФ (пусть будет). Вход стабилизатора припаял к пину 5В (питаться приёмник будет от регуля напряжением 5В; его надо будет подключить на пин мотора).

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Приклеил радиомодуль к пинам и Ардуино на суперклей с пищевой содой, использованной в качестве отвердителя. Потом я всё залил горячими соплями (термоклеем) для надёжности.

Обратите внимание: пины D0 и D1 (RX и TX) свободны, на них я не паял пины для подключения электроники авиамодели (хотя туда можно подключать электронику). Сделал я это для того, чтобы можно было в далбнейшем подключить вторую Ардуину по Serial для увеличения количества пинов и расширения функционала.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Теперь принимаюсь за

передающую часть

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Потом изготовил пульт (корпус передатчика) из нескольких линеек по 20см. Начал с лицевой части. Супеклеем склеил 6 линеек торцами воедино, чтобы получилась досочка (можно было использовать фанеру, но у меня её не было). Просверлил по кругу несколько отверстий, выковырял центральную часть кусачками-бокорезами и канцелярским ножом, выровнял отверстия полукруглым надфилем. Укрепил швы суперклеем с содой в нескольких местах каждый.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Прикрепил боковые стенки и днище на термоклей:

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Далее спаял на макетной плате конструкцию, напоминающую приёмник, но с шлейфом проводов « 5В–TX–RX–GND» и выходом с пинами для подключения радиомодуля всё по той же схеме. Думал, что буду питать МК через повышающий до 7-8В модуль (бустер) от одного Li-Ion аккумулятора (3-4,2В), но потом увидите, чем я его заменил.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Спаял на третьей макетной плате конструкцию с 20 выходами (радиомодуль на эту Дуину не надо будет вешать, поэтому пины D9-D13 включительно освобождаются), шлейфом « 5В–RX–TX–GND» (!!!соединять Ардуины друг с другом надо так: TX одной идёт в RX другой, и наоборот; 5В и GND просто для питания) и штекером для питания, в параллель которому припаян керамический конденсатор на 100нФ (чтобы сглаживать скачки напряжения от бустера).

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Припаял к кнопочной площадке множество проводков, на каждую кнопку по одному, которые пойдут на сигнальные пины Ардуино; общий минус можно втыкать на любой крайний контакт. К светодиодам тоже припаял проводок на «плюс» со штекером «мама», «минус» соединён с общей шиной «минус».

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Нанёс визит к моему другану, рассказал ему о том, что я делаю, и он отдал мне старый пульт от сломанного вертолётика на радио со словами: «На, пригодится». И вправду, мне пригодились антенна (вертолётик был 2,4ГГц) и джойстики, причём газ уже был с фиксацией. Установил джойстики вместо тех с Алиэкспресса, на приёмник припаял отданную антенну (просто она была более длинной, т.к. там был 5см кусок коаксиального провода, который очень хорошо гнулся). На пульт нанёс надписи рядом с джойстиками, тумблерами, потенциометрами и кнопками.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Для питания использую холдер последовательного соединения для аккумуляторов формата 18650 с Li-Ion аккумуляторами. На холдер приклеил сложенный вдвое липкой стороной внутрь скотч для лёгкого вынимания аккумов, сам холдер держится за липучку, приклеенную на самого него и на корпус передатчика.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Далее приступил к

написанию прошивки для аппаратуры

в Arduino IDE. Писал три файла .ino: «Transmitter_1» для дуины с кнопками и светодиодами, «Transmitter_2» для дуины с радиомодулем, джойстиками, тумблерами и потенциометрами, «Receiver» для приёмника. В скетчах очень много комментариев для того, чтобы можно было разобраться что где происходит.

Разберём сначала код в файле «Transmitter_1». Для упрощения обработки нажатий на кнопки (или переключения тумблеров) я написал функцию, в параметр которой вписывается пин, с которого надо считывать сигнал, и которая возвращает 0 или 1 (можно было использовать тип данных boolean (8 бит), но потом могут возникнуть проблемы с передачей по Serial, поэтому выбрал byte (8 бит)):

byte bt(int pin){ //тип данных возвращаемого значения byte
pinMode(pin, INPUT_PULLUP);
boolean bt_state = !digitalRead(pin);
if(bt_state == 1){
return 1;
}else{
return 0;
}
}

Для простого зажигания зелёного светодиода написал эту функцию:

void ledon(){
pinMode(3, OUTPUT); //устанавливаем пин 3 как выход
digitalWrite(3, HIGH); //зажигаем
delay(150); //ждём
digitalWrite(3, LOW); //гасим
delay(200); //ждём
}

Эта функция ничего не возвращает, поэтому прописываем «void». Остальной код элементарный и ничего примечательного в нём нет.

Переходим к разбору кода файла «Transmitter_2». В нём используется библиотека «EEPROM» для запоминания значений триммеров. В функции bt() из кода «Transmitter_1» я изменил только тип возвращаемого значения с byte на boolean. Для перевода значений с потенциометров и джойстиков написана функция toservo(), которая принимает пин потенциометра, нижнее значение с потенциометра, верхнее значение с него же и диапазон возвращаемых значений. Функция возвращает значения типа byte.

byte toservo(int potpin, int low, int high, int range){
int lowr = (180 – range) / 2;
int highr = 180 – ((180 – range) / 2);
returnmap(analogRead(potpin), low, high, lowr, highr);
}

Для регулировки яркости всяческой подсветки и иллюминации написана функция toaw(), которая принимает в параметрах пин потенциометра, с которого надо считывать сигнал. Возвращает значения типа byte в диапазоне 0-255. Далее на приёмнике активируется функция analogWrite(), которая создаёт ШИМ на заданном пине.

byte toaw(int potpin2){
returnmap(analogRead(potpin2), 0, 1023, 0, 255);
}

Настройки радиомодуля с помощью библиотек «nRF24l01» и «RF24» спёрты у AlexGyver’а.

Настал черёд приёмника. В его коде ничего примечательного нет, кроме функции биндинга. Если тумблер 4 находится наверху (причём передатчик включен заранее) и включается приёмник, приходит сигнал состояния тумблера 4 и запускается функция биндинга:

boolean motor_flag = 0; //флаг биндинга регуля, по умолчанию опущен

if(recieved_data[8] == 1 && motor_flag == 0){ //если тумблер 4 поднят и флаг мотора опущен
bind(); //начать биндинг
}

void bind(){
//функция ничего не принимает и ничего не возвращает
servo_0.writeMicroseconds(2300);
delay(3000);
servo_0.writeMicroseconds(800);
delay(5000);
motor_flag = 1; //поднимаем флаг
}

Небольшой туториал:

  1. Если первый тумблер находится в верху, двигатель отключен. Если он находится в центральном положении, двигатель управляется потенциометром № 3. Если же он находится внизу, двигатель управляется левым (№ 1) джойстиком по вертикальной (Y) оси.
  2. Если третий тумблер находится вверху, выпускаются шасси и зажигаются посадочные огни. Если он внизу, то только выпускаются шасси.
  3. Для биндинга после включения передатчика надо перевести тумблер № 4 в верхнее положение, включить приёмник, подождать 8 секунд.
  4. Для регулировки яркости посадочных огней надо включить их третьим тумблером, поворачивать второй потенциометр.
  5. Для регулировки яркости иллюминации включить её четвёртым тумблером, поворачивать четвёртый потенциометр.
  6. Для регулировки угла выпуска закрылков, включить их с помощью второго тумблера, поворачивать первый потенциометр.
  7. Для триммировки использовать соответствующие кнопки на кнопочной площадке.
  8. Для сброса триммера определённой оси надо зажать кнопку «сброс триммеров», нажать любую из двух кнопок оси, триммер которой надо сбросить.
  9. Для выбора чувствительности зажать кнопку «чувствительность», нажать кнопку (0/1/2/3) желаемой чувствительности, где: 0 – самый лучший отклик, 3 – самый слабый отклик.

Результат:

Получилась многоканальная (до 32 аналоговых (или цифровых, как сами пожелаете)) аппаратура радиоуправления с несколькими «плюшками» на борту: есть триммеры осей управления (которые не сбрасываются при отключении и можно сбросить отдельно каждый), четыре (0/1/2/3) степени чувствительности (отклика), функция автоматического биндинга регулятора оборотов. В моём варианте аппы реализовано только 8 каналов, а это всего лишь ¼ всех возможных!!!

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Послесловие.
В дальнейших моих планах разработка прошивки с меню (придётся припаять проводки с термоусадкой на оставшиеся кнопки и подключить их на «Transmitter_1»), в котором можно будет настроить диапазон поворота сервопривода определенного канала, фейлсейф (приведение всех каналов в заданное заранее положение при потере сигнала), оповещение о разрядке аккумулятора на модели и др.

Прошивки лежат в архиве на Гугл Диске.
Распиновка (чё куда подключать) для версии прошивки 1.1 в виде таблицы лежит здесь.

О дальности сигнала есть видео у AlexGyver’a (включайте видео на 13 минут 29 секунд, именно в этом месте начинается “тест”):

Испытание самодельной аппаратуры радиоуправления*. #1:
*качалки было лень ставить

Испытание самодельной аппаратуры радиоуправления. #2:

Выражаю благодарность в содействии созданию этого устройства:

Родным за терпение,

Александру Майорову (AlexGyver’у) за предоставленные в описаниях к видео скетчи,

Ивану Хмелевскому за то, что выслушивал, когда я ему поведывал о каждом новом этапе создания аппы.

Всем, кто прочитал данную статью, огромное СПАСИБО!

P.S. Будут вопросы, пишите в комментариях к статье))

§

Предисловие.

На фотографиях в этой статье будет немного (много) «колхоза».

Мне понадобилось:

  1. Три микроконтроллера Arduino Nano
  2. Два радиомодуля NRF24l01 с усилителем и внешней антенной
  3. Три односторонние печатные платы 50х70мм
  4. Четыре потенциометра на 10кОм
  5. Четыре ручки для них
  6. Около 22 тактовых кнопок
  7. Четыре тумблера ON-OFF-ON
  8. Два двухосевых джойстика (лучше использовать не для геймпадов)
  9. И пины-соединители
  10. Стабилизаторы питания LM1117-3.3, или аналоги, и другие радиодетали
  11. Всякая мелочёвка: провода, паяльные принадлежности, клеи, скотчи и др.

->>> Arduino Nano на Паркфлаере
Процесс изготовления.

Начну с изготовления

приёмника

. Отрезал два куска по 15 пинов «мама», подключил на них Ардуино. На пины А0-А7 и D2-D8 включительно припаял тройной разъём «папа», где один ряд – сигнальный с Ардуино (отдельный с каждого пина на Дуине), средний – 5В в параллель, крайний, который ближе к названию пина на Ардуино – земля (GND) в параллель.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

На пины D9-D13 включительно припаял радиомодуль по схеме, но питание впаял в стабилизатор напряжения, на выходе которого электролитический конденсатор 16В 100мкФ и керамический на 100нФ. На вход стабилизатора повесил керамический конденсатор 100нФ (пусть будет). Вход стабилизатора припаял к пину 5В (питаться приёмник будет от регуля напряжением 5В; его надо будет подключить на пин мотора).

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Приклеил радиомодуль к пинам и Ардуино на суперклей с пищевой содой, использованной в качестве отвердителя. Потом я всё залил горячими соплями (термоклеем) для надёжности.

Обратите внимание: пины D0 и D1 (RX и TX) свободны, на них я не паял пины для подключения электроники авиамодели (хотя туда можно подключать электронику). Сделал я это для того, чтобы можно было в далбнейшем подключить вторую Ардуину по Serial для увеличения количества пинов и расширения функционала.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Теперь принимаюсь за

передающую часть

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Потом изготовил пульт (корпус передатчика) из нескольких линеек по 20см. Начал с лицевой части. Супеклеем склеил 6 линеек торцами воедино, чтобы получилась досочка (можно было использовать фанеру, но у меня её не было). Просверлил по кругу несколько отверстий, выковырял центральную часть кусачками-бокорезами и канцелярским ножом, выровнял отверстия полукруглым надфилем. Укрепил швы суперклеем с содой в нескольких местах каждый.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Прикрепил боковые стенки и днище на термоклей:

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Далее спаял на макетной плате конструкцию, напоминающую приёмник, но с шлейфом проводов « 5В–TX–RX–GND» и выходом с пинами для подключения радиомодуля всё по той же схеме. Думал, что буду питать МК через повышающий до 7-8В модуль (бустер) от одного Li-Ion аккумулятора (3-4,2В), но потом увидите, чем я его заменил.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Спаял на третьей макетной плате конструкцию с 20 выходами (радиомодуль на эту Дуину не надо будет вешать, поэтому пины D9-D13 включительно освобождаются), шлейфом « 5В–RX–TX–GND» (!!!соединять Ардуины друг с другом надо так: TX одной идёт в RX другой, и наоборот; 5В и GND просто для питания) и штекером для питания, в параллель которому припаян керамический конденсатор на 100нФ (чтобы сглаживать скачки напряжения от бустера).

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Припаял к кнопочной площадке множество проводков, на каждую кнопку по одному, которые пойдут на сигнальные пины Ардуино; общий минус можно втыкать на любой крайний контакт. К светодиодам тоже припаял проводок на «плюс» со штекером «мама», «минус» соединён с общей шиной «минус».

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Нанёс визит к моему другану, рассказал ему о том, что я делаю, и он отдал мне старый пульт от сломанного вертолётика на радио со словами: «На, пригодится». И вправду, мне пригодились антенна (вертолётик был 2,4ГГц) и джойстики, причём газ уже был с фиксацией. Установил джойстики вместо тех с Алиэкспресса, на приёмник припаял отданную антенну (просто она была более длинной, т.к. там был 5см кусок коаксиального провода, который очень хорошо гнулся). На пульт нанёс надписи рядом с джойстиками, тумблерами, потенциометрами и кнопками.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Для питания использую холдер последовательного соединения для аккумуляторов формата 18650 с Li-Ion аккумуляторами. На холдер приклеил сложенный вдвое липкой стороной внутрь скотч для лёгкого вынимания аккумов, сам холдер держится за липучку, приклеенную на самого него и на корпус передатчика.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Далее приступил к

написанию прошивки для аппаратуры

в Arduino IDE. Писал три файла .ino: «Transmitter_1» для дуины с кнопками и светодиодами, «Transmitter_2» для дуины с радиомодулем, джойстиками, тумблерами и потенциометрами, «Receiver» для приёмника. В скетчах очень много комментариев для того, чтобы можно было разобраться что где происходит.

Разберём сначала код в файле «Transmitter_1». Для упрощения обработки нажатий на кнопки (или переключения тумблеров) я написал функцию, в параметр которой вписывается пин, с которого надо считывать сигнал, и которая возвращает 0 или 1 (можно было использовать тип данных boolean (8 бит), но потом могут возникнуть проблемы с передачей по Serial, поэтому выбрал byte (8 бит)):

byte bt(int pin){ //тип данных возвращаемого значения byte
pinMode(pin, INPUT_PULLUP);
boolean bt_state = !digitalRead(pin);
if(bt_state == 1){
return 1;
}else{
return 0;
}
}

Для простого зажигания зелёного светодиода написал эту функцию:

void ledon(){
pinMode(3, OUTPUT); //устанавливаем пин 3 как выход
digitalWrite(3, HIGH); //зажигаем
delay(150); //ждём
digitalWrite(3, LOW); //гасим
delay(200); //ждём
}

Эта функция ничего не возвращает, поэтому прописываем «void». Остальной код элементарный и ничего примечательного в нём нет.

Переходим к разбору кода файла «Transmitter_2». В нём используется библиотека «EEPROM» для запоминания значений триммеров. В функции bt() из кода «Transmitter_1» я изменил только тип возвращаемого значения с byte на boolean. Для перевода значений с потенциометров и джойстиков написана функция toservo(), которая принимает пин потенциометра, нижнее значение с потенциометра, верхнее значение с него же и диапазон возвращаемых значений. Функция возвращает значения типа byte.

byte toservo(int potpin, int low, int high, int range){
int lowr = (180 – range) / 2;
int highr = 180 – ((180 – range) / 2);
returnmap(analogRead(potpin), low, high, lowr, highr);
}

Для регулировки яркости всяческой подсветки и иллюминации написана функция toaw(), которая принимает в параметрах пин потенциометра, с которого надо считывать сигнал. Возвращает значения типа byte в диапазоне 0-255. Далее на приёмнике активируется функция analogWrite(), которая создаёт ШИМ на заданном пине.

byte toaw(int potpin2){
returnmap(analogRead(potpin2), 0, 1023, 0, 255);
}

Настройки радиомодуля с помощью библиотек «nRF24l01» и «RF24» спёрты у AlexGyver’а.

Настал черёд приёмника. В его коде ничего примечательного нет, кроме функции биндинга. Если тумблер 4 находится наверху (причём передатчик включен заранее) и включается приёмник, приходит сигнал состояния тумблера 4 и запускается функция биндинга:

boolean motor_flag = 0; //флаг биндинга регуля, по умолчанию опущен

if(recieved_data[8] == 1 && motor_flag == 0){ //если тумблер 4 поднят и флаг мотора опущен
bind(); //начать биндинг
}

void bind(){
//функция ничего не принимает и ничего не возвращает
servo_0.writeMicroseconds(2300);
delay(3000);
servo_0.writeMicroseconds(800);
delay(5000);
motor_flag = 1; //поднимаем флаг
}

Небольшой туториал:

  1. Если первый тумблер находится в верху, двигатель отключен. Если он находится в центральном положении, двигатель управляется потенциометром № 3. Если же он находится внизу, двигатель управляется левым (№ 1) джойстиком по вертикальной (Y) оси.
  2. Если третий тумблер находится вверху, выпускаются шасси и зажигаются посадочные огни. Если он внизу, то только выпускаются шасси.
  3. Для биндинга после включения передатчика надо перевести тумблер № 4 в верхнее положение, включить приёмник, подождать 8 секунд.
  4. Для регулировки яркости посадочных огней надо включить их третьим тумблером, поворачивать второй потенциометр.
  5. Для регулировки яркости иллюминации включить её четвёртым тумблером, поворачивать четвёртый потенциометр.
  6. Для регулировки угла выпуска закрылков, включить их с помощью второго тумблера, поворачивать первый потенциометр.
  7. Для триммировки использовать соответствующие кнопки на кнопочной площадке.
  8. Для сброса триммера определённой оси надо зажать кнопку «сброс триммеров», нажать любую из двух кнопок оси, триммер которой надо сбросить.
  9. Для выбора чувствительности зажать кнопку «чувствительность», нажать кнопку (0/1/2/3) желаемой чувствительности, где: 0 – самый лучший отклик, 3 – самый слабый отклик.

Результат:

Получилась многоканальная (до 32 аналоговых (или цифровых, как сами пожелаете)) аппаратура радиоуправления с несколькими «плюшками» на борту: есть триммеры осей управления (которые не сбрасываются при отключении и можно сбросить отдельно каждый), четыре (0/1/2/3) степени чувствительности (отклика), функция автоматического биндинга регулятора оборотов. В моём варианте аппы реализовано только 8 каналов, а это всего лишь ¼ всех возможных!!!

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Послесловие.
В дальнейших моих планах разработка прошивки с меню (придётся припаять проводки с термоусадкой на оставшиеся кнопки и подключить их на «Transmitter_1»), в котором можно будет настроить диапазон поворота сервопривода определенного канала, фейлсейф (приведение всех каналов в заданное заранее положение при потере сигнала), оповещение о разрядке аккумулятора на модели и др.

Прошивки лежат в архиве на Гугл Диске.
Распиновка (чё куда подключать) для версии прошивки 1.1 в виде таблицы лежит здесь.

О дальности сигнала есть видео у AlexGyver’a (включайте видео на 13 минут 29 секунд, именно в этом месте начинается “тест”):

Испытание самодельной аппаратуры радиоуправления*. #1:
*качалки было лень ставить

Испытание самодельной аппаратуры радиоуправления. #2:

Выражаю благодарность в содействии созданию этого устройства:

Родным за терпение,

Александру Майорову (AlexGyver’у) за предоставленные в описаниях к видео скетчи,

Ивану Хмелевскому за то, что выслушивал, когда я ему поведывал о каждом новом этапе создания аппы.

Всем, кто прочитал данную статью, огромное СПАСИБО!

P.S. Будут вопросы, пишите в комментариях к статье))

§

Предисловие.

На фотографиях в этой статье будет немного (много) «колхоза».

Мне понадобилось:

  1. Три микроконтроллера Arduino Nano
  2. Два радиомодуля NRF24l01 с усилителем и внешней антенной
  3. Три односторонние печатные платы 50х70мм
  4. Четыре потенциометра на 10кОм
  5. Четыре ручки для них
  6. Около 22 тактовых кнопок
  7. Четыре тумблера ON-OFF-ON
  8. Два двухосевых джойстика (лучше использовать не для геймпадов)
  9. И пины-соединители
  10. Стабилизаторы питания LM1117-3.3, или аналоги, и другие радиодетали
  11. Всякая мелочёвка: провода, паяльные принадлежности, клеи, скотчи и др.

->>> Arduino Nano на Паркфлаере
Процесс изготовления.

Начну с изготовления

приёмника

. Отрезал два куска по 15 пинов «мама», подключил на них Ардуино. На пины А0-А7 и D2-D8 включительно припаял тройной разъём «папа», где один ряд – сигнальный с Ардуино (отдельный с каждого пина на Дуине), средний – 5В в параллель, крайний, который ближе к названию пина на Ардуино – земля (GND) в параллель.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

На пины D9-D13 включительно припаял радиомодуль по схеме, но питание впаял в стабилизатор напряжения, на выходе которого электролитический конденсатор 16В 100мкФ и керамический на 100нФ. На вход стабилизатора повесил керамический конденсатор 100нФ (пусть будет). Вход стабилизатора припаял к пину 5В (питаться приёмник будет от регуля напряжением 5В; его надо будет подключить на пин мотора).

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Приклеил радиомодуль к пинам и Ардуино на суперклей с пищевой содой, использованной в качестве отвердителя. Потом я всё залил горячими соплями (термоклеем) для надёжности.

Обратите внимание: пины D0 и D1 (RX и TX) свободны, на них я не паял пины для подключения электроники авиамодели (хотя туда можно подключать электронику). Сделал я это для того, чтобы можно было в далбнейшем подключить вторую Ардуину по Serial для увеличения количества пинов и расширения функционала.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Теперь принимаюсь за

передающую часть

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Потом изготовил пульт (корпус передатчика) из нескольких линеек по 20см. Начал с лицевой части. Супеклеем склеил 6 линеек торцами воедино, чтобы получилась досочка (можно было использовать фанеру, но у меня её не было). Просверлил по кругу несколько отверстий, выковырял центральную часть кусачками-бокорезами и канцелярским ножом, выровнял отверстия полукруглым надфилем. Укрепил швы суперклеем с содой в нескольких местах каждый.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Прикрепил боковые стенки и днище на термоклей:

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Далее спаял на макетной плате конструкцию, напоминающую приёмник, но с шлейфом проводов « 5В–TX–RX–GND» и выходом с пинами для подключения радиомодуля всё по той же схеме. Думал, что буду питать МК через повышающий до 7-8В модуль (бустер) от одного Li-Ion аккумулятора (3-4,2В), но потом увидите, чем я его заменил.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Спаял на третьей макетной плате конструкцию с 20 выходами (радиомодуль на эту Дуину не надо будет вешать, поэтому пины D9-D13 включительно освобождаются), шлейфом « 5В–RX–TX–GND» (!!!соединять Ардуины друг с другом надо так: TX одной идёт в RX другой, и наоборот; 5В и GND просто для питания) и штекером для питания, в параллель которому припаян керамический конденсатор на 100нФ (чтобы сглаживать скачки напряжения от бустера).

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Припаял к кнопочной площадке множество проводков, на каждую кнопку по одному, которые пойдут на сигнальные пины Ардуино; общий минус можно втыкать на любой крайний контакт. К светодиодам тоже припаял проводок на «плюс» со штекером «мама», «минус» соединён с общей шиной «минус».

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

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

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Нанёс визит к моему другану, рассказал ему о том, что я делаю, и он отдал мне старый пульт от сломанного вертолётика на радио со словами: «На, пригодится». И вправду, мне пригодились антенна (вертолётик был 2,4ГГц) и джойстики, причём газ уже был с фиксацией. Установил джойстики вместо тех с Алиэкспресса, на приёмник припаял отданную антенну (просто она была более длинной, т.к. там был 5см кусок коаксиального провода, который очень хорошо гнулся). На пульт нанёс надписи рядом с джойстиками, тумблерами, потенциометрами и кнопками.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Для питания использую холдер последовательного соединения для аккумуляторов формата 18650 с Li-Ion аккумуляторами. На холдер приклеил сложенный вдвое липкой стороной внутрь скотч для лёгкого вынимания аккумов, сам холдер держится за липучку, приклеенную на самого него и на корпус передатчика.

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Далее приступил к

написанию прошивки для аппаратуры

в Arduino IDE. Писал три файла .ino: «Transmitter_1» для дуины с кнопками и светодиодами, «Transmitter_2» для дуины с радиомодулем, джойстиками, тумблерами и потенциометрами, «Receiver» для приёмника. В скетчах очень много комментариев для того, чтобы можно было разобраться что где происходит.

Разберём сначала код в файле «Transmitter_1». Для упрощения обработки нажатий на кнопки (или переключения тумблеров) я написал функцию, в параметр которой вписывается пин, с которого надо считывать сигнал, и которая возвращает 0 или 1 (можно было использовать тип данных boolean (8 бит), но потом могут возникнуть проблемы с передачей по Serial, поэтому выбрал byte (8 бит)):

byte bt(int pin){ //тип данных возвращаемого значения byte
pinMode(pin, INPUT_PULLUP);
boolean bt_state = !digitalRead(pin);
if(bt_state == 1){
return 1;
}else{
return 0;
}
}

Для простого зажигания зелёного светодиода написал эту функцию:

void ledon(){
pinMode(3, OUTPUT); //устанавливаем пин 3 как выход
digitalWrite(3, HIGH); //зажигаем
delay(150); //ждём
digitalWrite(3, LOW); //гасим
delay(200); //ждём
}

Эта функция ничего не возвращает, поэтому прописываем «void». Остальной код элементарный и ничего примечательного в нём нет.

Переходим к разбору кода файла «Transmitter_2». В нём используется библиотека «EEPROM» для запоминания значений триммеров. В функции bt() из кода «Transmitter_1» я изменил только тип возвращаемого значения с byte на boolean. Для перевода значений с потенциометров и джойстиков написана функция toservo(), которая принимает пин потенциометра, нижнее значение с потенциометра, верхнее значение с него же и диапазон возвращаемых значений. Функция возвращает значения типа byte.

byte toservo(int potpin, int low, int high, int range){
int lowr = (180 – range) / 2;
int highr = 180 – ((180 – range) / 2);
returnmap(analogRead(potpin), low, high, lowr, highr);
}

Для регулировки яркости всяческой подсветки и иллюминации написана функция toaw(), которая принимает в параметрах пин потенциометра, с которого надо считывать сигнал. Возвращает значения типа byte в диапазоне 0-255. Далее на приёмнике активируется функция analogWrite(), которая создаёт ШИМ на заданном пине.

byte toaw(int potpin2){
returnmap(analogRead(potpin2), 0, 1023, 0, 255);
}

Настройки радиомодуля с помощью библиотек «nRF24l01» и «RF24» спёрты у AlexGyver’а.

Настал черёд приёмника. В его коде ничего примечательного нет, кроме функции биндинга. Если тумблер 4 находится наверху (причём передатчик включен заранее) и включается приёмник, приходит сигнал состояния тумблера 4 и запускается функция биндинга:

boolean motor_flag = 0; //флаг биндинга регуля, по умолчанию опущен

if(recieved_data[8] == 1 && motor_flag == 0){ //если тумблер 4 поднят и флаг мотора опущен
bind(); //начать биндинг
}

void bind(){
//функция ничего не принимает и ничего не возвращает
servo_0.writeMicroseconds(2300);
delay(3000);
servo_0.writeMicroseconds(800);
delay(5000);
motor_flag = 1; //поднимаем флаг
}

Небольшой туториал:

  1. Если первый тумблер находится в верху, двигатель отключен. Если он находится в центральном положении, двигатель управляется потенциометром № 3. Если же он находится внизу, двигатель управляется левым (№ 1) джойстиком по вертикальной (Y) оси.
  2. Если третий тумблер находится вверху, выпускаются шасси и зажигаются посадочные огни. Если он внизу, то только выпускаются шасси.
  3. Для биндинга после включения передатчика надо перевести тумблер № 4 в верхнее положение, включить приёмник, подождать 8 секунд.
  4. Для регулировки яркости посадочных огней надо включить их третьим тумблером, поворачивать второй потенциометр.
  5. Для регулировки яркости иллюминации включить её четвёртым тумблером, поворачивать четвёртый потенциометр.
  6. Для регулировки угла выпуска закрылков, включить их с помощью второго тумблера, поворачивать первый потенциометр.
  7. Для триммировки использовать соответствующие кнопки на кнопочной площадке.
  8. Для сброса триммера определённой оси надо зажать кнопку «сброс триммеров», нажать любую из двух кнопок оси, триммер которой надо сбросить.
  9. Для выбора чувствительности зажать кнопку «чувствительность», нажать кнопку (0/1/2/3) желаемой чувствительности, где: 0 – самый лучший отклик, 3 – самый слабый отклик.

Результат:

Получилась многоканальная (до 32 аналоговых (или цифровых, как сами пожелаете)) аппаратура радиоуправления с несколькими «плюшками» на борту: есть триммеры осей управления (которые не сбрасываются при отключении и можно сбросить отдельно каждый), четыре (0/1/2/3) степени чувствительности (отклика), функция автоматического биндинга регулятора оборотов. В моём варианте аппы реализовано только 8 каналов, а это всего лишь ¼ всех возможных!!!

РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении
РадиоКот :: "Поехали кататься!" или машинка на радиоуправлении

Послесловие.
В дальнейших моих планах разработка прошивки с меню (придётся припаять проводки с термоусадкой на оставшиеся кнопки и подключить их на «Transmitter_1»), в котором можно будет настроить диапазон поворота сервопривода определенного канала, фейлсейф (приведение всех каналов в заданное заранее положение при потере сигнала), оповещение о разрядке аккумулятора на модели и др.

Прошивки лежат в архиве на Гугл Диске.
Распиновка (чё куда подключать) для версии прошивки 1.1 в виде таблицы лежит здесь.

О дальности сигнала есть видео у AlexGyver’a (включайте видео на 13 минут 29 секунд, именно в этом месте начинается “тест”):

Испытание самодельной аппаратуры радиоуправления*. #1:
*качалки было лень ставить

Испытание самодельной аппаратуры радиоуправления. #2:

Выражаю благодарность в содействии созданию этого устройства:

Родным за терпение,

Александру Майорову (AlexGyver’у) за предоставленные в описаниях к видео скетчи,

Ивану Хмелевскому за то, что выслушивал, когда я ему поведывал о каждом новом этапе создания аппы.

Всем, кто прочитал данную статью, огромное СПАСИБО!

P.S. Будут вопросы, пишите в комментариях к статье))

Список радиоэлементов

ОбозначениеТипНоминалКоличествоПримечаниеМагазинМой блокнот
Рисунок 1.
VT1Биполярный транзистор

П416

1Поиск в магазине ОтронВ блокнот
VT2, VT3Биполярный транзистор

МП40

2Поиск в магазине ОтронВ блокнот
С1Конденсатор24 пФ1Поиск в магазине ОтронВ блокнот
С2Конденсатор56 пФ1Поиск в магазине ОтронВ блокнот
С3Подстроечный конденсатор4-15 пФ1Поиск в магазине ОтронВ блокнот
С4, С7Конденсатор3300 пФ2Поиск в магазине ОтронВ блокнот
С5Конденсатор75 пФ1Поиск в магазине ОтронВ блокнот
С6Конденсатор30 пФ1Поиск в магазине ОтронВ блокнот
С8, С9Конденсатор0.05 мкФ2Поиск в магазине ОтронВ блокнот
R1, R4, R5Резистор

22 кОм

3Поиск в магазине ОтронВ блокнот
R2Резистор

15 кОм

1Поиск в магазине ОтронВ блокнот
R3Резистор

75 Ом

1Поиск в магазине ОтронВ блокнот
R6Резистор

3 кОм

1Поиск в магазине ОтронВ блокнот
L1, L2Катушка индуктивности2Поиск в магазине ОтронВ блокнот
SТактовая кнопка1Поиск в магазине ОтронВ блокнот
XSРазьем для подключения антенны1Поиск в магазине ОтронВ блокнот
ХТРазьем для подключения батареи “Крона”1Поиск в магазине ОтронВ блокнот
GBБатарея питания“Крона-ВЦ” 9 Вольт1Или подобнаяПоиск в магазине ОтронВ блокнот
Рисунок 2.
VT1Биполярный транзистор

П416

1Поиск в магазине ОтронВ блокнот
VT2-VT4Биполярный транзистор

МП40

3Поиск в магазине ОтронВ блокнот
VD1, VD3Диод

Д9В

2Поиск в магазине ОтронВ блокнот
VD2, VD4Диод

КД103А

2Поиск в магазине ОтронВ блокнот
С1Конденсатор5.6 пФ1Поиск в магазине ОтронВ блокнот
С2, С8, С13Конденсатор0.047 мкФ3Поиск в магазине ОтронВ блокнот
С3, С9, С15Электролитический конденсатор20 мкФ3Поиск в магазине ОтронВ блокнот
С4, С7Подстроечный конденсатор6-25 пФ2Поиск в магазине ОтронВ блокнот
С5Конденсатор2200 пФ1Поиск в магазине ОтронВ блокнот
С6Конденсатор24 пФ1Поиск в магазине ОтронВ блокнот
С10Электролитический конденсатор5 мкФ1Поиск в магазине ОтронВ блокнот
С11Конденсатор5 мкФ1Поиск в магазине ОтронВ блокнот
С12Конденсатор1000 пФ1Поиск в магазине ОтронВ блокнот
С14Электролитический конденсатор10 мкФ1Поиск в магазине ОтронВ блокнот
R1Резистор

22 кОм

1Поиск в магазине ОтронВ блокнот
R2, R4, R10Резистор

10 кОм

3Поиск в магазине ОтронВ блокнот
R3, R7, R8Резистор

4.7 кОм

3Поиск в магазине ОтронВ блокнот
R5, R9Резистор

6.8 кОм

2Поиск в магазине ОтронВ блокнот
R6Резистор

300 Ом

1Поиск в магазине ОтронВ блокнот
R11Резистор

470 Ом

1Поиск в магазине ОтронВ блокнот
L1, L2Катушка индуктивности2Поиск в магазине ОтронВ блокнот
KRРелеРСМ-11Поиск в магазине ОтронВ блокнот
ХТРазьем для подключения батареи “Крона”1Поиск в магазине ОтронВ блокнот
GBБатарея питания“Крона-ВЦ” 9 Вольт1Поиск в магазине ОтронВ блокнот
Рисунок 3.
Командоаппарат1Поиск в магазине ОтронВ блокнот
KRПриемник1Поиск в магазине ОтронВ блокнот
М1-М3Электродвигатель3Поиск в магазине ОтронВ блокнот
Н1-Н4Лампочка4Поиск в магазине ОтронВ блокнот
SСдвоенный выключатель1Поиск в магазине ОтронВ блокнот
ХТРазьем для подключения к батареи “Крона”1Этот элемент указан также на рисунке 2Поиск в магазине ОтронВ блокнот
GB1Батарея питания3336Л(У) 4.5 Вольт2Поиск в магазине ОтронВ блокнот
GB2Батарея питания“Крона-ВЦ” 9 Вольт1Этот элемент указан на рисунке 2Поиск в магазине ОтронВ блокнот
Добавить все
Оцените статью
Радиокоптер.ру
Добавить комментарий