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

РАДИОУПРАВЛЕНИЕ НА МИКРОКОНТРОЛЛЕРЕ

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

Схема аппаратуры радиоуправления состоит всего из двух микросхем: трансивера MRF49XA и микроконтроллера PIC16F628A. Детали в принципе доступные, но для меня проблемой был трансивер, пришлось через интернет заказывать. Архив с прошивкой и платой качайте здесь. Подробнеее об устройстве:

MRF49XA — малогабаритный трансивер, имеющий возможность работать в трех частотных диапазонах.
— Низкочастотный диапазон: 430,24 — 439,75 Mгц (шаг 2,5 кГц).
— Высокочастотный диапазон А : 860,48 — 879,51 МГц (шаг 5 кГц).
— Высокочастотный диапазон Б : 900,72 — 929,27 МГц (шаг 7,5 кГц).
Границы диапазонов указаны при условии применения опорного кварца частотой 10 МГц.

Принципиальная схема передатчика:

В схеме TX довольно мало деталей. И она очень стабильная, более того даже не требует настройки, работает сразу после сборки. Дистанция (согласно источнику) около 200 метров.

Теперь к приемнику. Блок RX выполнен по аналогичной схеме, различия только в светодиодах, прошивках и кнопках. Параметры 10-ти командного блока радиоуправления:

Передатчик:
Мощность — 10 мВт
Напряжение питания 2,2 — 3,8 В (согласно даташиту на м/с, на практике нормально работает до 5 вольт).
Ток, потребляемый в режиме передачи — 25 мА.
Ток покоя — 25 мкА.
Скорость данных — 1кбит/сек.
Всегда передается целое количество пакетов данных.
Модуляция — FSK.
Помехоустойчивое кодирование, передача контрольной суммы.

Приемник:
Чувствительность — 0,7 мкВ.
Напряжение питания 2,2 — 3,8 В (согласно даташиту на микросхему, на практике нормально работает до 5 вольт).
Постоянный потребляемый ток — 12 мА.
Скорость данных до 2 кбит/сек. Ограничена программно.
Модуляция — FSK.
Помехоустойчивое кодирование, подсчет контрольной суммы при приеме.

Преимущества данной схемы

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

— Во время подачи питания на приемник и передатчик, они уходят в тест режим на 3 секунды. В это время ничего не работает, по истечению 3-х секунд обе схемы готовы к работе.

— Кнопка (или комбинация кнопок) отпускается — соответсвующие светодиоды сразу же гаснут. Идеально подходит для радиоуправления различными игрушками — катерами, самолётами, автомобилями. Либо можно использовать, как блок дистанционного управления различными исполнительными устройствами на производстве.

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

Питаются оба модуля от аккумуляторов 3,7В. У приемника, который потребляет заметно меньше тока, аккумулятор от электронной сигареты, у передатчика — от моего любимого телефона)) Схему, найденную на сайте вртп , собрал и испытал: [)еНиС

Источник

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

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

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

  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);
return map ( analogRead (potpin), low, high, lowr, highr);
>

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

Читайте также:  Ботвоудалитель картофельный своими руками

byte toaw( int potpin2) <
return map ( analogRead (potpin2), 0, 1023, 0, 255);
>

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

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

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

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’у) за предоставленные в описаниях к видео скетчи,

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

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

Источник

Оцените статью