ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр Вертолеты

Радиоуправляемая лодка своими руками

Радиоуправляемая подводная лодка (1) - Папино Хобби

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

Желание заиметь RC лодку довольно большого размера у меня было давно, но вот готовые лодки более 70см в длину, мягко говоря не радовали вкусными ценами. Придется строить самому. В поиске нашлись или совсем сложные модели с внутреним каркасом и обшивкой бальзой, или совсем детские поделки из куска пеноплекса и 190го моторчика. Искал я долго и все таки нашел. Вот оригинал сайта, с которого я брал чертежи.

www.instructables.com/id/RC-Boat-2/

Правда в процессе постройки мне пришлось кое что доработать. Итак: для начала я построил, так сказать пробную модель из фанеры, затем, когда все получилось удачно приступил к постройке лодки из 2мм ПВХ пластика. Чертеж скачиваем, масштабируем под желаемые размеры лодки и распечатываем. У меня получилось 10 листов А4 при длине лодки в 830мм. Далее листы склеиваем и вырезаем шаблоны деталей .

Радиоуправляемая подводная лодка (1) - Папино Хобби

Затем накладываем шаблоны на материал, обводим и вырезаем. Первый раз работаю с ПВХ, и очень доволен. Режется ножницами, гибкий, не ломается. Получается вот так.

Радиоуправляемая подводная лодка (1) - Папино Хобби

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

Радиоуправляемая подводная лодка (1) - Папино Хобби

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

Радиоуправляемая подводная лодка (1) - Папино Хобби

И приклеиваем борта.

Радиоуправляемая подводная лодка (1) - Папино Хобби

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

Радиоуправляемая подводная лодка (1) - Папино Хобби

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

Радиоуправляемая подводная лодка (1) - Папино Хобби

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

Радиоуправляемая подводная лодка (1) - Папино Хобби

Вырезанный кусок как раз будет крышкой. По торцу крышки и люка на палубе клею полосу шириной 7мм (ширина произвольная) .

Радиоуправляемая подводная лодка (1) - Папино Хобби

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

Радиоуправляемая подводная лодка (1) - Папино Хобби

Примеряю крышку и по вкусу добавляю воздухозаборников (но это, как говорится, на вкус и цвет…).

Радиоуправляемая подводная лодка (1) - Папино Хобби

Теперь необходимо изготовить продольные реданы. Делал их так: вырезал из ПВХ две полоски шириной по 5мм для каждого редана и склеил их для получения бОльшей толщины. Всего реданов 4. Клеим их на днище лодки .

Радиоуправляемая подводная лодка (1) - Папино Хобби

Стыки реданов с корпусом шпатлюю и шлифую. Не без косяков, но первый блин комом…

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

Радиоуправляемая подводная лодка (1) - Папино Хобби

Делаю крепления для мотора, креплю мотораму к лодке и примеряю двигатель на место.

Радиоуправляемая подводная лодка (1) - Папино Хобби

Двигатель, к слову взял вот такой

Радиоуправляемая подводная лодка (1) - Папино Хобби

Это мотор 3670 на 2650kv. Брал тут:

https://aliexpress.ru/item/item/32887933319.html

К мотору потребуется еще рубашка для водяного охлаждения

Радиоуправляемая подводная лодка (1) - Папино Хобби

Покупал я ее вот тут

https://aliexpress.ru/item/item/32836382632.html

. Как видно на этом фото, на лодке уже установлена дейдвудная трубка. Дейдвуд вместе с гибким валом и креплением брал тут:

https://aliexpress.ru/item/item/32901173677.html

Отверстие под него просверлил на расстоянии 15мм от торца транца (выбрал произвольно). Сразу же и установил крепление дейдвуда .

Радиоуправляемая подводная лодка (1) - Папино Хобби

Приступаю к изготовлению батарейных отсеков. Аккумуляторы использую от своего квадрокоптера, а именно Onbo 4S 4200mAh, так что отсеки изготавливаю под них. При чем по длине с запасом, что бы можно было двигать батареи и тем самым менять развесовку.

Радиоуправляемая подводная лодка (1) - Папино Хобби

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

Радиоуправляемая подводная лодка (1) - Папино Хобби

Он отлично зарекомендовал себя на HSP Brontosaurus. Быстрый и достаточно мощный. Брал тут

https://aliexpress.ru/item/item/32737943372.html

Так же устанавливаю перо руля

Радиоуправляемая подводная лодка (1) - Папино Хобби

брал тоже на Алике

https://aliexpress.ru/item/item/32802258440.html

и транцевые плиты

Радиоуправляемая подводная лодка (1) - Папино Хобби

вот ссылка

https://aliexpress.ru/item/item/32860054980.html

.

Радиоуправляемая подводная лодка (1) - Папино ХоббиРадиоуправляемая подводная лодка (1) - Папино Хобби

Сразу же примерил и винт

Радиоуправляемая подводная лодка (1) - Папино Хоббиhttps://aliexpress.ru/item/item/32777338672.html

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

Радиоуправляемая подводная лодка (1) - Папино Хоббиhttps://aliexpress.ru/item/item/32957809318.html

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

Радиоуправляемая подводная лодка (1) - Папино Хобби

Под приемник радиоуправления (кстати аппаратура у меня Radiolink Rc4gs

Радиоуправляемая подводная лодка (1) - Папино Хоббиhttps://aliexpress.ru/item/item/32753372045.html

а приемник я взял простой без гироскопа

Радиоуправляемая подводная лодка (1) - Папино Хоббиhttps://aliexpress.ru/item/item/32884083823.html

) я изготовил бокс из ПВХ пластика. После окончательной сборки его соберу на герметике, и за приемник можно быть спокойным. И вот так выглядит «подкапотка » всборе.

Радиоуправляемая подводная лодка (1) - Папино Хобби

А вот то же самое, но без акб и лишних проводов. На фото видно трубки охлаждения двигателя и регулятора. Забор воды идет из пера руля .

Радиоуправляемая подводная лодка (1) - Папино Хобби

, а выброс на корме по левому борту

Радиоуправляемая подводная лодка (1) - Папино Хобби

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

Радиоуправляемая подводная лодка (1) - Папино ХоббиРадиоуправляемая подводная лодка (1) - Папино ХоббиРадиоуправляемая подводная лодка (1) - Папино Хобби

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

Радиоуправляемая подводная лодка (1) - Папино Хобби

Конечно ничего испытать тут не выйдет, но зато выяснил, что ничего нигде не течет. Мотор и серва работают, осталось дождаться весны и испытать на воде. UPD И вот наступило лето, разгреб я время, что бы запустить сие судно, но все пошло немного не так. Дело в том, что как я выше говорил, лодка должна питаться от двух акумов 4S 4200mAh. Увы, таких акумов у меня всего 2 и к несчастью с одним из них улетел и утонул один из моих квадриков. В итоге лодку запустили на одном акуме, что бы его не надуть в полгаза. Во второй отсек положил балласт. Получилось конечно медленное ползанье по воде, но как идет лодка у меня сложилось впечатление. Коротко: требуется настройка транцевых плит, угла наклона винта и перенос пера руля. Да, одновинтовые судна по разному поворачивают налево и направо, но тут… Лодка вообще не хочет поворачивать влево а вправо крутится волчком. На глиссер выходить не хочет (пробовал кратковременно давать полный газ ). Собственно, смотрите сами.

www.radiocopter.ru/watch?v=q3OeZ1VlB9E

Очень благодарю всех, кто прочитал.

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

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

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

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

  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) в параллель.

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

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

Смотрите про коптеры:  ВРТ-300 — первый российский беспилотник вертолетного типа

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

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

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

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

в 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 каналов, а это всего лишь ¼ всех возможных!!!

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

Послесловие.
В дальнейших моих планах разработка прошивки с меню (придётся припаять проводки с термоусадкой на оставшиеся кнопки и подключить их на «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) в параллель.

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

Смотрите про коптеры:  Математическая модель полёта дрона-квадрокоптера и способ гарантированной посадки его в «гнездо»

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

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

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

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

в 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 каналов, а это всего лишь ¼ всех возможных!!!

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

Послесловие.
В дальнейших моих планах разработка прошивки с меню (придётся припаять проводки с термоусадкой на оставшиеся кнопки и подключить их на «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) в параллель.

Смотрите про коптеры:  The Chernobyl VR Project — эксклюзивная экскурсия в Припять и Чернобыль

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

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

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

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

в 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 каналов, а это всего лишь ¼ всех возможных!!!

ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр
ARDU Remote: очень простая и дешёвая аппаратура управления своими руками / Хабр

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

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

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

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

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

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

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

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

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

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

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

Оцените статью
Радиокоптер.ру
Добавить комментарий

Adblock
detector