Пропорциональное_радиоуправление_на_ардуино

Пропорциональное_радиоуправление_на_ардуино

Радиоуправление на Arduino

Соберем радиоуправление на основе Arduino Uno и радиомодуля MX-05v. Этот модуль работает на частоте 443 МГц, что позволяет использовать его под водой (волны в диапазоне 2.4 ГГц не проникают под воду). Потом поставим его на модель Радиоуправляемой Подводной Лодки.

Радиомодуль MX-05V + MX-FS-03V подкупает своей низкой ценой — около 60 рублей за пару. Заявленной дальности связи 20-200 метров хватает для небольших моделей машин или лодок.

Сделаем одноканальную аппаратуду. Для этого нам понадобятся:

  • 2 платы Ардуино для приемника и передатчика
  • комплект радиомодуля MX-05V + MX-FS-03V
  • переменный резистор или джойстик для передатчика
  • рулевая машинка (серва) для приемника

Суть работы программы заключается в следующем:

  • считываем значение с переменного резистора (число от 0 до 1023)
  • переводим это число в 2 байта (16 бит, т.к. 1023 занимает 10 бит и не поместится в один байт)
  • передаем по радио-каналу
  • приемник принимает 2 байта по радио каналу
  • переводит их обратно в число от 0 до 1023
  • передает команду серво-машинке

Принцип работы Arduino доступно описан на разных веб-ресурсах. Мне понравился бесплатный обучающий онлайн курс «Строим роботов и другие устройства на Arduino». Рекомендую.

Загружаем текс программы (скетч) для передатчика и приемников. Кстати, программы надо хранить в разных папках, иначе во время компиляции они будут сливаться в один файл и конфликтовать из-за дублирования функций setup и loop . Как подключить сторонние библиотеки к Arduino описано например тут.

Передатчик

Приемник

И в итоге — ничего не работает! Почему?

Питание

Радиомодуль MX-05V очень простой, из-за этого он очень восприимчив к внешним помехам. И даже такой маленький мотор как в серво-машинке способен нарушить его работу. Для того, чтобы минимизировать влияние электромотора (это касается только колекторных моторов), нужно разделить питание силовой части от приемника. При этом «минус» у них должен быть общий. Итоговая схема подключения приемника выглядит так.

Результат

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

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

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

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

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

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

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

Радиоуправляемый катер на Arduino и радио модуле NRF24L01 из потолочной плитки

Хочу рассказать о моем увлечении радио моделями, в частности катерами.

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

1 модель

Для начала решил выбрать тип корпуса: катамаран. За основу взял данную картинку:

По данной картинке был сделан набросок 3D модели, для того чтобы из нее сделать выкройку в одной замечательной программе pepakura designer:

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

И собственно сама ардуина (самодельная) с драйвером на SI9986:

И конечно видео:


Ни одна уточка не пострадала.

Был выявлен ряд недостатков:

  1. Модель тяжелая.
  2. Потолочный клей (для пистолетов в виде шприца) тяжелый и размокает от воды.
  3. Масляная камера с использованием литола (кто-то предлагал как вариант от протечек со стороны вала) справляется плохо.
  4. Напряжения 1 литиевого аккумулятора явно недостаточно. Требуется как минимум 2S батарея.
  5. Винты захватывали воздух.
  6. Драйверы на SI9986 со временем сдохли от перегрузок.
  7. Двигатели со старого радиоуправляемого вертолета требовал радиатор, так как очень сильно раскалялся.
  8. Моя конструкция катера была явно неудачная: короткая и высокая.

После небольшой работы над ошибками и увеличения опыта в создании «правильных» 3D моделей появилось несколько новых корпусов:

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

Читайте также:  Как_повесить_карниз_икеа

2 модель

В принципе я был доволен, но стало ясно что моторы требуется менять на один мощный, а направлением управлять рулем.

3 модель

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

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

Также узнал о отличной замене потолочной плитки: подкладка под ламинат.

У подкладки ряд плюсов по сравнению с потолочкой:

  1. Размер листов: 1000 х 500 мм.
  2. Различная толщина, я купил толщиной 3 и 5 мм, но использую пока только 5 мм.
  3. Отсутствие различного профиля и картинок.
  4. Хорошая прочность за счет большей толщины (для 5 мм).

А в остальном очень похожи:

  1. Малый вес.
  2. Не боятся воды.
  3. Низкая цена и доступность.

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

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

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

Была разработана, разведена и изготовлена плата управления, состоящая из самодельной ардуины на Atmega328P, радио модуля NRf24L01, драйвера полевого транзистора, нескольких стабилизаторов напряжения. Также плата была протестирована:

Осталось проверить плату с «большим» мотором, и установить в плату, установить сервопривод с обвесом, продумать герметизацию крышки катера и можно будет испытывать на воде.

И конечно делюсь выкройками катеров, с различными габаритами, для желающих собрать:

Сделал небольшое видео, показывающее все основные этапы сборки катера

Ой, у вас баннер убежал!

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

  • Скопировать ссылку
  • Facebook
  • Twitter
  • ВКонтакте
  • Telegram
  • Pocket

Похожие публикации

  • 9 марта 2020 в 16:53

Управление Arduino через интернет с помощью ПК — опыт новичка

Обзор радиоуправляемого катера WL911

Осенние покатушки на радиоуправляемом катере UDI 001

Вакансии

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Комментарии 21


А есть «гидрошняга»:

Спасибо. Платы развожу в DipTrace. Если нужна печатка для платы катера поделюсь.
Платы давно делаю ЛУТ, только на ламинаторе. Ламинатор FGK-260i. Меняются только принтеры.

Точно подходят принтеры для ламинатора без переделок:
1. HP (я например пользовался 2055DN), температура плавления тонера 160-165 градусов.
2. Samsung ML-2160, температура плавления тонера 160-165 градусов.
3. KONICA MINOLTA bizhub 36, температура плавления тонера 180 градусов.

Не подходят:
1. Brother
2. Kyocera FS-6525MFP

Технология простая:
1. Печатаем на глянцевой фотобумаге зеркально, все черным, убираем галочки графика и маркировка.
2. Отрезаю текстолит чуть больше чем нужно, острые края затупляю. Мою руки с мылом.
3. Очищаю плату губкой шлифовальной, продается в строительном, как можно более мелкое зерно и чтобы губка была плотная. Наношу каплю жидкого мыла и тру по всей поверхности, нажим небольшой. Движения круговые.
4. Моем под струей воды, сушим салфеткой, держим плату только за торцы текстолита.
5. Накладываем текстолит на распечатку, листок нужно загнуть, чтобы бумага была с двух сторон. Это нужно чтобы не испортить силиконовые валы острыми краями текстолита.
6. Прогоняем плату в разогретом ламинаторе на горячем валах (они первые, второй ряд валов холодный) кнопкой смены направления движения. Прогонять нужно раз 10 и конце платы выходит с обратной стороны немного охлажденная холодными валами.
7. Даем немного остыть, кидаем в миску с теплой водой.
8. Через 5-10 минут бумага размокнет, снимаем аккуратно целиком. Она легко слезает. А поверхность чистим зубной щеткой средней жесткости. Не должно остаться остатков бумаги и глянцевого слоя. Держать также только за торцы, руки мыть еще раз предварительно с мылом.
9. Травим. Я травлю в хлорном железе.
10. Очищаем ацетоном с ватным тампоном, только ватку получше смочить и на плату немного налить. При недостатке ацетона тонер въедается в текстолит, и потом уже ничем не очистить.
11. Лудим. Тут вариантов несколько: паяльник, химическое лужение или сплавом Розе. Я лужу сплавом Розе. Некоторые не лудят. Но я считаю это неправильно, так как было несколько случаев микроразрывов, невидимых на глаз, которые при лужении пропадают. К тому же без лужения медь окисляется и теряет внешний вид.
11. Получаем красивую плату, точно повторяющую распечатку. У меня процент качественных плат 95-99%.

Ссылка на основную публикацию
Проекты_одноэтажных_домов_с_2_гаражами
Проекты домов с 2 гаражами (гараж на две машины) Материал: Пеноблок / Газобетон, Монолит --> В стоимость включено: Архитектурный раздел...
Продавливание_без_разработки_грунта_прокол_технология
Устройство трубопроводов способом продавливания Продавливанием называют способ бестраншейной прокладки инженерных сетей, при котором производится последовательное вдавливание в грунт соединенных между...
Проект_дома_с_гаражом_под_одной_крышей
Дом с гаражом под одной крышей: красивые проекты для жизни от которых сложно отказаться (фото) Автолюбители прекрасно знают, как это...
Пропорциональное_радиоуправление_на_ардуино
Радиоуправление на Arduino Соберем радиоуправление на основе Arduino Uno и радиомодуля MX-05v. Этот модуль работает на частоте 443 МГц, что...
Adblock detector