Радиоуправление на nrf24l01: Радио модуль NRF24L01: описание, подключение, схема, характеристики

Содержание

Встраиваемый модуль радиоуправления на nRF24L01 « схемопедия

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

 Пульт Пульт собран на микроконтроллере ATtiny2313A в SOIC корпусе. Тут все предельно просто – 4 кнопки и модуль трансивера NRF24L01. Кнопки подключены способом, который я описывал ранее. Для обработок нажатия кнопок используется всего одно внешнее прерывание INT0. 

 

 Питаться схема планировалась от одной 3-х вольтовой литиевой батарейки.  Главная цель была утрамбовать всю схему передатчика в минимальные размеры, чтобы она влезла в заранее купленный корпус-брелок. Я использовал батарейку CR2016, получилось достаточно компактно, плата поместилась в корпус G1402-4B купленном в http://chipnn.ru/ Но чтобы плата влезла в корпус по высоте пришлось перепаять кварц на передатчике (см. фото №3).  

      

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

Исходник и прошивка передатчика (частота работы микроконтроллера 1 МГц)файл печатной платы в DipTrace

 Приемник Приемная часть собрана на микроконтроллере Atmega48, к которому подключен приемник и буферная микросхема, я применил триггер 74hc14. Микроконтроллер тактируется от внутреннего генератора на 1 МГц. Для понижения напряжения питания до 3х вольт применен стабилизатор NCP1117ST33 (U2 на схеме) в корпусе SOT-223. Если сразу использовать для питания 3 вольта, стабилизатор, естественно, можно исключить.  

 Все собрано на плате размером 35*25 мм, которую можно впаять в уже готовое устройство. 

   

Файл печатной платы приемника в DipTrace

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

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

Исходник и прошивка | режим 1

 Второй режим работы Во втором режиме при нажатии на кнопку происходит кратковременное (1 сек.) изменение уровня на выходе модуля приемника. 

Исходник и прошивка | режим 2

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

Исходник и прошивка | режим 3

UPD: по прошествии 3 недель, в течении которых я каждый день нажимал несколько раз на кнопки, пульт продолжает работать от этой батарейки. Напряжение на ней упало с 3 до 2,6 вольта.

Аппаратура радиоуправления на Arduino

В этой статье рассмотрено изготовление пропорциональной аппаратуры радиоуправления на основе платы Arduino. Интересной особенностью проекта является то, что аппаратура задумывалась как альтернатива "взрослой" аппаратуры, но которую можно изготовить самому. На передатчике присутствуют клавиши триммирования, что важно для управления например моделями самолетов, так же передатчик оснащен небольшим дисплеем на органических светодиодах, отображающий основную информацию по работе передатчика. Аппаратура рассчитана на 6 каналов, 4 пропорциональных и 2 дискретных. Также автор заложил на будущее добавление еще двух пропорциональных каналов, на корпусе добавлены 2 потенциометра, однако на данный момент они не задействованы. Тем не менее этого достаточно для управления моделью самолета, судна или автомобиля, а дискретные каналы позволят управлять дополнительной нагрузкой, например включением фар, подсветки палубы, ходовых авиационных огней или даже запуска небольших ракет. Аппаратура имеет два режима управления — линейный и экспоненциальный.

Для передатчика понадобятся:

1 x Arduino NANO/UNO/ProMini
1 x Плата защиты BMS для трех Li-ion банок
1 x разъем 5,5 x 2,1 мм
1 x повышающий DC/DC преобразователь XL6009
1 x небольшой понижающий преобразователь LM2596 (о нем скажу отдельно)

3 x 18650 :
2 x джойстики JH-D202X (продаются на али)
2 x тумблер
1 x i2c OLED-экран 0,96 дюйма 128X64
1 x радио модуль NRF24l01 с усилителем и антенной
9 x тактовая кнопка 6 * 6 * 5 мм
Резисторы выводные (смотри схему)


Для приемника понадобятся:

1 х Arduino NANO/UNO/Pro Mini
1 х радио модуль NRF24l01
1 х AMS1117 3,3 В стабилизатор напряжения
30 х PLS гребенки
1 х макетная плата
1 х 10 мкФ конденсатор

Ниже Вы можете видеть графическое изображение всех компонентов и схему их соединения. Перед сборкой понижающие преобразователи обязательно нужно настроить, XL6009 на 12,6 В (этот модуль ответственен за зарядку), LM2596 на 3,3 В (питание радиомодуля). Вместо LM2596 теоретически можно использовать и ASM117, согласно даташиту максимальное входное напряжение этого стабилизатора 15 В, однако советуется не подавать выше 12 В. Видимо исходя из этих соображений автор и использовал еще один DC/DC преобразователь. Вместо него так же можно использовать регулируемый стабилизатор, например LM317.

Корпус

Корпус состоит из двух основных частей: верхней и нижней. Помимо этого печатаются 9 кнопок (8 на триммирование и одна кнопка режима), 5 подпорок для кнопок, окантовка дисплея и ползунок включения. Автор печатал PLA ластиком с 20% заполнением, соплом 0,4 мм и высотой слоя 0,3 мм. К слову, никто не запрещает использовать другой корпус, можно взять просто подходящую коробку, склеить его самому или взять достаточно крупный корпус от китайской игрушки, на сайтах объявлений их чуть ли не мешками продают.

Монтаж передатчика

Аккумуляторы соединяются последовательно. Автор сделал это при помощи пайки, хочу отметить, что пайка банок 18650 требует некой сноровки, по этому если у Вас такого опыта нет — покупайте аккумуляторы с уже приваренными лепестками и подпаивайтесь к ним. Так же аккумуляторы согласно вышеизложенной схеме припаиваются к модулю BMS, на вход которого подается напряжение с преобразователя XL6009 (вместо него можно использовать MT3608). BMS отвечает за равномерную зарядку/разрядку всех банок и отключает питание, когда аккумуляторы разрядятся. Напряжение так же можно мониторить при помощи дисплейчика. Зарядка аккумуляторов осуществляется блоком питания 9 В с током не выше 3 А (максимум для XL6009 ). Фактически же ток заряда нужно подсчитать в зависимости от емкости аккумуляторов и взять блок питания с немного меньшим током или ограничить его. Монтировать модули в корпус удобно при помощи "автомобильного" двухстороннего скотча.

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

Кнопки соединяются между собой резисторами, таким образом по сути выходит небольшая резистивная клавиатура, что позволяет использовать всего один вывод платы ардуино. К потенциометрам джойстиков припаиваются провода, крайние выводы идут на землю и 5 В, средний на соответствующий вывод Arduino. У меня в планах повторить эту схему, уже немного поэкспериментировал и могу сказать, что в коде заложена функция автоматического инвертирования каналов по необходимости, однако я пока не понял, как схема определяет эту самую необходимость. Это я к тому, что так-то инвертирование канала по сути производиться перепаиванием крайних выводов местами. Такие джойстики, на момент написания статьи, продаются на али по цене примерно 7 долларов за штуку, много это или мало решать Вам. Вместо них можно использовать модули джойстиков для ардуино или джойстики от игровых манипуляторов.

По сути джойстик работает как делитель, отклоняя ручку мы меняем напряжение на среднем выводе потенциометра, и в зависимости от этого напряжения ардуино определяет отклонение.
[center] [/center]
Так же подключаются и тумблеры. Тумблеры нужны двухпозиционные, так как канал дискретный и имеет только два значения - 0 или 1, в зависимости от того, к чему притягивается вывод ардуино - к земле или питанию 5 В. При чем обязательно двухпозиционный, если оставить вывод "висеть в воздухе", что было бы при использовании трех позиционного, контроллер не понимает что происходит и значение рандомно скачет то 0, то 1 (по моим опытам). Дополнительные потенциометры можете не ставить, на данный момент они не задействованы. А можете поставить и мониторить страницу источника, возможно автор со временем выложит обновленную прошивку.

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

Прошивка

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

Приёмник

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

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

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

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

Скачать все необходимое можно тут.

Всем успехов в творчестве!


Источник (Source) Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Электротехника: Радиоуправление на ардуино

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

Радиомодули на дальность до 1100км

Радиомодули рассчитанные на дальность до 100м можно запитать от вывода 3.3В с Arduino uno а радиомодули на дальность до 1100м от этого вывода запитать нельзя т.к. данный вывод не способен выдать достаточный для нормальной работы модуля ток, поэтому если необходимо использовать модуль с дальностью радиосвязи до 1100м то необходимо использовать внешний стабилизатор на 3.3В для питания радиомодуля. О том как самостоятельно изготовить стабилизатор постоянного напряжения написано в статье http://electe.blogspot.ru/2015/10/lm317.html там же есть программа для рассчёта. Этот стабилизатор просто надо сделать на 3.3В для того чтобы можно было им запитать радиомодуль. Ещё для того чтобы сделать систему радиоуправления на ардуино нужно само ардуино. Можно использовать почти любое (если не любое) ардуино. Например (самый простой и лучше подходящий для начинающих вариант)

Если необходима компактность то можно использовать другие ардуины например:

Также можно использовать любое другое ардуино но эти два (описанных выше) проще всего. Есть например 

3) Arduino pro mini http://got.by/23ni7b для программирования Arduino pro mini нужен usb-uart переходник или другое ардуино.

Теперь давайте рассмотрим схему передатчика:

Рисунок 1 - Передатчик на ардуино

У данного передатчика имеется 10 кнопок и 5 потенциометров. Допустим нам надо управлять дистанционно двумя серврмрторами, 3мя ШИМами, одним пьезодинамиком и 8ю цифровыми выходами для каких либо целей (напр. сделать 8 фонарей на радиоуправлямый автомобиль или 1 фонарь а 7 выводов оставить для чего нибудь на будущее). На схеме выше показна ардуино уно но аналогично можно соединить радиомодуль кнопки и потенциометры с другим ардуино для этого надо использовать надписи на плате ардуино. Давайте теперь рассмотрим приемник:

Рисунок 2 - Приемник на Ардуино

 Напрямую к выводам ардуино можно подключать только маломощный пьезодинамик иначе слишком большой нагрузкой можно ардуино сломать. То же самое относится и ко всем остальным выводам на приёмнике. К ним нельзя подключать слишком большую нагрузку для того чтобы Ардуино не испортилось. Для питания сервомоторов можно использовать отдельный источник питания. Если сервомоторы мощные то их вывод питания нельзя подключать к выводу питания ардуино. Теперь давайте рассмотрим скетчь передатчика:

В начале скетча подключаются заголовочные файлы для связи с радиомодулем потом назначаются пины для связи с радиомодулем по SPI, указывается идентификатор трубы который должен совпадать с идентификатором трубы указанном в скетче приемника (см. ниже), создаётся массив для передачи данных на приемник. Далее идёт функция инициализации в которой инициализируется и настраивается радиомодуль после чего он устанавливается на передачу данных, инициализируются входы ардуино и делается небольшая задержка на всякий случай. В основном цикле считываются значения с потенциометров для сервомоторов и преобразуются в градусы функцией map. Далее, в следующую ячейку массива, запихиваются состояния входов ардуино побитно. После чего считываются значения с потенциометров для управления ШИМами, делятс на 4 т.к. аппаратный ШИМ ардуино принимает 1 байт. Оставшиеся два состояния, с кнопок, пропихиваются в оставшуюся ячейку массива и он, наконец таки, отправляется на приемник.

Теперь скетчь приемника:

В приемнике помимо заголовочных файлов для связи с радиомодулем есть ещё заголовочный файл для работы с сервомоторами. Радиомодуль теперь настраивается на прием. В основном цикле происходит прием и раздача информации на периферию микроконтроллера ардуины. 

Посмотреть видео по данной теме с испытаниями системы радиоуправления на ардуино:

Встраиваемый модуль радиоуправления на nRF24L01 - Проекты - AVR project.ru

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

 

 


 

 

 Пульт

 Пульт собран на микроконтроллере ATtiny2313A в SOIC корпусе. Тут все предельно просто - 4 кнопки и модуль трансивера NRF24L01. Кнопки подключены способом, который я описывал ранее. Для обработок нажатия кнопок используется всего одно внешнее прерывание INT0. 

 

 

 

 

 

 Питаться схема планировалась от одной 3-х вольтовой литиевой батарейки.  Главная цель была утрамбовать всю схему передатчика в минимальные размеры, чтобы она влезла в заранее купленный корпус-брелок. Я использовал батарейку CR2016, получилось достаточно компактно, плата поместилась в корпус G1402-4B купленном в http://chipnn.ru/ Но чтобы плата влезла в корпус по высоте пришлось перепаять кварц на передатчике (см. фото №3). 

 

 

 

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

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

 

 

 

 

 

 Приемник

 Приемная часть собрана на микроконтроллере Atmega48, к которому подключен приемник и буферная микросхема, я применил триггер 74hc14. Микроконтроллер тактируется от внутреннего генератора на 1 МГц. Для понижения напряжения питания до 3х вольт применен стабилизатор NCP1117ST33 (U2 на схеме) в корпусе SOT-223. Если сразу использовать для питания 3 вольта, стабилизатор, естественно, можно исключить. 

 

 

 

 Все собрано на плате размером 35*25 мм, которую можно впаять в уже готовое устройство. 

 

 

 

 


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

 

 

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

 

 Первый режим работы

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

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

 

 

 

 

 

 

 Второй режим работы

 Во втором режиме при нажатии на кнопку происходит кратковременное (1 сек.) изменение уровня на выходе модуля приемника. 

 

 

 

 

 

 

 

 

 Третий режим работы

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

 

 

 


UPD: по прошествии 3 недель, в течении которых я каждый день нажимал несколько раз на кнопки, пульт продолжает работать от этой батарейки. Напряжение на ней упало с 3 до 2,6 вольта.
 



Еще одна версия пульта от товарища Polle:

 

 

 

 

Как сделать радиоуправление на ардуино (модуль CCU R0) ардуино джойстик

В этом видео я покажу, как сделать самодельный модуль радиоуправления (CCU R0). Этот модуль может управлять четырьмя электродвигателями и тремя сервоприводами, в модуле используется приёмопередатчик NRF24L01, драйверы двигателей L293D и плата Ардуино нано. Этот модуль может управлять различными моделями машинок, танков, кораблей, самолётов и роботами.



Схема CCU R0 http://bit.ly/2y11iDh
Схема пульта для CCU R0 http://bit.ly/2y0AaUK

====================================================
Библиотека RF24-master http://bit.ly/2y1fZpQ
Скетч CCU R0 http://bit.ly/2y11iTN
Скетч пульта CCU R0 http://bit.ly/2y0A6Er

====================================================
Ссылки на детали.
1) Arduino NANO Ch440, на МК(MEGA328p)http://bit.ly/2E6YvtG
2) Джойстик для Arduino http://bit.ly/2E36IyX
3) Li-ion аккумуляторы 18650 http://bit.ly/2Dvt3nEhttp://bit.ly/2y1jqwOhttp://bit.ly/2Dvv2by
4) Боксы для аккумуляторов 18650 http://bit.ly/2y1cHmq
5) Радио модуль NRF24L01+ http://bit.ly/2DzuMsd
6)Радио модуль NRF24L01 с антенной http://bit.ly/2DyRtwo
7) Сервопривод SG90 http://bit.ly/2y0AaEb
8) Гребёнка однорядная 40 PIN папа http://bit.ly/2DxK14H
9) Гребёнка однорядная 40 PIN мама http://bit.ly/2DyqUaT
10) Панелька под микросхему 16 pin http://bit.ly/2DwT9Xq
11) Макетная плата 3х7см http://bit.ly/2y0W0Yd
12) Драйвер L293D http://bit.ly/2Dwnqpr
13) Конденсаторы керамические 0,1 мкФ http://bit.ly/2DwYoXh
14) Конденсаторы электролитический 10х25 В
http://bit.ly/2Dujqpb

========================================================
ИНСТРУМЕНТ И ВСПОМОГАТЕЛЬНЫЕ МАТЕРИАЛЫ.
1) Коврик для пайки огнеупорный силиконовый http://bit.ly/2DuPzx6
2) Коврик зелёный на столе называется (CUTTING MAT) http://bit.ly/2Dsqjaz
3)Держатель "третья рука" с лупой
http://bit.ly/2Dtr9nz
4) Припой с флюсом http://bit.ly/2DuN7qf

Похожие видео:
Долголет рекомендации по сборке, важные тонкости на раме DAYA 550

                        

Машинка на радиоуправлении arduino | Домострой

Корпус многофункциональных часов с сенсорным дисплеем на Arduino.

Три светильника на адресных светодиодах.

Давно я уже не делал радио управляемые модели . Решил оживить свой старый проект: Радиоуправлениена Arduino + NRF24L01 + гироскоп GY-521 MPU-6050. Но не просто оживить. Но и доработать. Так как у меня есть 3D принтер . Раму для машины решил напечатать новую. Так же с кодом решил немного поработать. За это время знаний стало больше и на старые проекты уже смотрю совсем по другому. Но обо всем по порядку.

И так напечатал раму для Ардуино машинки . Фото уже выкладывал в группе в ВК. Вот что получилось:

Исходники для печати можете скачать тут.

Установил электронику: Arduino UNO, драйвер L298n, два мотор-редуктора с колесами и конечно же радио модуль nrf24l01.

Все комплектующие лучше покупать в Китае. Например на сайте aliexpress. Потратите в 2 раза меньше. И доставка у недорогих товаров бесплатная или очень маленькая. А если купить у одного проводка. То можно сэкономить на доставке . Для этого берем 1 товар с платной доставкой. А остальные с бесплатной. И вам все положат в одну посылку и ВСЕ отправят платной доставкой. Вот такой небольшой ЛайфХак.

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

Установил 2 бокса под аккумуляторы 18650. Соединил их последовательно и подключил к драйверу L298n. Так как у драйвера есть понижающий стабилизатор на 5 вольт. С соответствующих разъемов мы берм 5в и подключаем Arduino UNO. Но тут есть минус. Нужно следить, чтобы аккумуляторы не пере разрядились. Иначе они выйдут из строя. Остальная часть схемы ни чем не отличается от предыдущего проекта.

Пульт управления берем из предыдущего проекта. Схема подключения пульта управления на Arduino + NRF24L01 + гироскоп GY-521 MPU-6050 . Выглядит вот так.

Скетч тоже без изменений.

Пульт планирую переделывать. Тем более он выглядит не очень красиво.

И ребенок у меня его модернизировал. Проводки пере подключал. Я конечно все восстановил. Но работает немного не так как раньше. Смотрите в видео всем отличие.

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

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

При отсутствии связи данные параметры были равны 0. А ноль по коду мы приводим к -100. Вращаем колесо в обратную сторону. Вот от сюда и проблема.

В итоге получилась вот такая машинка на Arduino радио модуле nrf24l01 с пультом управления. Который управляет машиной при наклоне пульта. Не нужно нажимать на кнопки.

Этот урок показывает как сделать радиоуправляемую модель машины, которую можно контролировать через смартфон. В этом руководстве мы будем использовать плату Arduino Uno.

Шаг 1. Комплектующие

Для того, чтобы сделать модель машины на радиоуправлении (RC-машина) с использованием Ардуино и с возможностью контроля через смартфон, нам понадобятся следующие детали:

  1. Комплект шасси робота 4WD
  2. Arduino Uno
  3. Модуль H-моста LM298
  4. Модуль Bluetooth HC-05
  5. Батарея Li-po 12В
  6. Провода-перемычки
  7. Провода "папа-папа"
  8. Клейкая лента или любая другая лента
  9. Смартфон

Шаг 2. Шасси

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

Шаг 3. Моторы (приводы)

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

Отрежьте 4 кусочка красного и черного провода длиной примерно от 5 до 6 дюймов (12 — 15 см). Можно использовать провода 0,5 мм. Снимите изоляцию с проводов на каждом конце. Припаяйте провода к клеммам двигателей.

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

Шаг 4. Установка двигателей

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

Шаг 5. Ардуино контроллер

Arduino UNO — это плата микроконтроллера с открытым исходным кодом, основой которой служит микроконтроллер Microchip ATmega328P и разработанная Arduino.cc.

Плата оснащена наборами цифровых и аналоговых пинов ввода/вывода (I/O), которые могут быть подключены к различным платам расширения (экранам) и другим цепям. Плата имеет 14 цифровых контактов, 6 аналоговых контактов и программируется с помощью Arduino IDE (интегрированная среда разработки) через USB-кабель типа B. Плата может питаться от USB-кабеля или от внешней 9-вольтовой батареи, хотя он принимает напряжение от 7 до 20 вольт, по аналогии с Arduino Nano и Leonardo.

Эталонный дизайн оборудования распространяется под лицензией Creative Commons Attribution Share-Alike 2.5 и доступен на веб-сайте Arduino. Макет и производственные файлы для некоторых версий оборудования также доступны. «Uno» означает один на итальянском языке и был выбран в честь выпуска Arduino Software (IDE) 1.0. Плата Uno и версия 1.0 программного обеспечения Arduino (IDE) были эталонными версиями Arduino, теперь разработанными для более новых выпусков.

Плата Uno является первой в серии плат Arduino c USB и эталонной моделью для последующих платформ. ATmega328 на Arduino Uno поставляется с предварительно запрограммированным загрузчиком, который позволяет загружать новый код без использования внешнего аппаратного программера с использованием оригинального протокола STK500. Uno также отличается от всех предыдущих плат тем, что не использует микросхему драйвера FTDI USB-to-serial. Вместо этого он использует Atmega16U2 (Atmega8U2 до версии R2), запрограммированный как преобразователь USB-to-serial.

Микроконтроллеры обычно программируются с использованием диалекта функций из языков программирования C и C++. В дополнение к использованию традиционных наборов инструментов компилятора проект Arduino предоставляет интегрированную среду разработки (IDE).

Шаг 6. H-мост (модуль LM 298)

Термин H-мост (англ. H-bridge) выведен из типичного графического представления такой схемы. Это схема, которая может приводить двигатель постоянного тока в прямом и обратном направлении, см. рисунок выше для понимания работы H-моста.

Он состоит из 4 электронных переключателей S1, S2, S3 и S4 (транзисторы / МОП-транзисторы (MOSFET) / IGBTS). Когда переключатели S1 и S4 замкнуты (а S2 и S3 разомкнуты), на двигатель идет положительное напряжение. Поэтому он вращается в прямом направлении. Аналогично, когда S2 и S3 замкнуты, а S1 и S4 открыты, обратное напряжение идет через двигатель, поэтому он вращается в обратном направлении.

H-мосты доступны в виде интегральных микросхем, или вы можете создать свой собственный, используя 4 обычных транзистора или полевых транзистора (MOSFET). В нашем случае мы используем микросхему H-моста LM298, которая позволяет контролировать скорость и направление вращения двигателей. Ниже перейдем к описанию пинов:

Выход 1: двигатель постоянного тока 1 "+" или шаговый двигатель A+

Выход 2: двигатель постоянного тока 1 "-" или шаговый двигатель A-

Выход 3: двигатель постоянного тока 2 "+" или шаговый двигатель B+

Выход 4: двигатель B выведен

12В контакт: 12В вход, но вы можете использовать от 7 до 35 В

GND: земля

Вывод 5В: выход 5 В, если перемычка 12 В на месте, идеально подходит для питания вашего Arduino

EnA: включает сигнал ШИМ для двигателя А

IN1: включить двигатель A

IN2: включить двигатель A

IN3: включить двигатель B

IN4: включить двигатель B

EnB: включает сигнал ШИМ для двигателя B

Шаг 7. Источник питания

Для нашей радиоуправляемой модели машины на основе Ардуино и с контролем через смартфон могут быть использованы следующие батареи:

  1. Щелочная батарея типа АА (не перезаряжаемая)
  2. AA NiMh или NiCd аккумулятор
  3. Литий-ионный аккумулятор
  4. Батарея LiPo

Шаг 8. Электрические соединения

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

Соединения двигателей

Out1 -> Красный провод левого бокового мотора (+)

Out2 -> Черный провод левого двигателя (-)

Out3 -> Красный провод правой стороны двигателя (+)

Out4 -> Черный провод правой стороны двигателя (-)

LM298 -> Arduino

Модуль Bluetooth -> Arduino

Питание

12V -> Подключите красный провод аккумулятора

GND -> Подключите черный провод аккумулятора и вывод Arduino GND

5V -> Подключение к контакту Arduino 5V

Шаг 9. Логика управления

Логика управления описывается в таблице ниже.

Шаг 10. Приложение для смартфона

Скачать приложение и установить в смартфон вы можете через Google Play (ссылка).

Для управления RC-автомобилем мы используем смартфон. Смартфон подключается к контроллеру через модуль Bluetooth (HC-06/05). После установки приложения необходимо настроить связь с модулем Bluetooth. Пароль для связи: «1234».

Шаг 11. Код Ардуино

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

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

Начать процесс изготовления советуем с просмотра авторского видеоматериала

Для изготовления машинки, нам понадобится:
— игрушечная машинка;
— две карты Arduino Uno;
— две платы радио модуля NRF24;
— конденсатор на 470 мф, 25 вольт;
— плата драйвера двигателя L298N;
— двигатель;
— сервопривод;
— аналоговый джойстик;
— аккумуляторные батарейки;
— батарейка крона;
— две кнопки включения и выключения;
— корпус.

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

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

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

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

Собираем все. Просовываем винт в колесо, и фиксируем двумя гайками.

Далее надеваем на тот же винт уголок и снова фиксируем гайками.

Просовываем еще один винт в отверстие на корпусе, фиксируем гайками.

В конце остается надеть колесо с уголком на гайку в корпусе машинки и зафиксировать еще парой гаек. Проделываем то же самое со вторым колесом.

Теперь необходимо соединить сервопривод к поворотной системе.

Далее нужно соединить двигатель к шасси. Для этого распиливаем ось шасси по центру. Далее вставляем в отверстия двигателя обе полуоси и приклеиваем эпоксидным клеем.

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

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

Представляем схему сборки джойстика или передатчика.

Ниже вы можете увидеть схему сборки приемника.

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

nRF24L01+ система передачи данных – FLProg

Набор блоков для односторонней, двухсторонней передачи данных между 2 и более контролерами с nRF24L01+, вплоть до создания сложной сети.

Про подключение модулей

SCK (Serial ClocK) — тактирование (синхронизация). ( Arduino UNO D13 | Arduino Mega D52)
MOSI / MI (Master Out Slave In) — вход данных. ( Arduino UNO D11 | Arduino Mega D51)
MISO / MO (Master In Slave Out) — выход данных. ( Arduino UNO D12 | Arduino Mega D50)
CE/SS – Выбор ведомого на шине SPI из нескольких устройств.
SCN – выбор режима приема/передача , фактически тот же CE.
IRQ – выход прерывания, чаще всего не используется. Необходим для немедленной реакции микроконтроллера при приеме нового пакета данных.
GND – земля, масса, минусовая шина.
Vcc -питание модуля 3.3в. Для надежной работы параллельно питанию как можно ближе к радиомодулю рекомендуется подключить электролитический конденсатор не менее 100мкф , а так же керамический на 0.1 мкф.
Подключение NRF24L01 к Arduino (вид сверху):

Основана на доработано библиотеки Optimized High Speed NRF24L01+

Теперь о возможностях:
– Можно передавать данные сразу от имени несколькими разными адресов (Необходимо для работы в сети с потверждением доставки)
– Возможно слушать до 5 труб одновременно
– Реализована штатная система контроля доставки сообщений (достоверна только когда адреса у вех труб разные)
– Возможно задавать частотные каналы
– Возможно задавать коэффициент усиление передатчика
– Возможно передавать String (30 символов максимум)
– Возможно передавать INT ( 5 и/или 15 в одном блоке)
– Возможно передавать Float (7 в одном блоке)
– В одном проекте можно использовать по несколько блоков одно типа и блоки разных типов.
– Есть отдельный блок для ретрансляции данных от контроллера к контроллеру
– На стороне получения в блоках есть выход новые данные
– Реализована система нескольких попыток отправки сообщения, для надежности доставки.
– Есть контроль переполнения приемного буфера.
– Есть независимый блок Сканер – для проверки работы модуля и поиска свободного канала.

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

Актуальная версия новых блоков 1.0b 

Подробное описание каждого блока, в самих блоках.

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

Интересные ссылки по этим модулям:
Описание радиомодуля nRF24L01+
Тест дальности связи NRF24L01+
NRF24L01 – Arduino 
NRF24L01 2.4 ГГц радио/беспроводные передатчики и Arduino


Вложения

  • nRF24L01+
    Date added: 02.02.2018 20:01 File size: 29 MB Downloads: 2503

Publication author

585 Comments: 14Publics: 365Registration: 04-02-2018

Arduino Radio Communication (nRF24L01) - Arduino Project Hub

 #include 
#include 
#include 

#include 
#include 
#include 
#define OLED_RESET 5
Дисплей Adafruit_SSD1306 (OLED_RESET);

// Порты двигателя
#define R_FRONT 10
#define R_BACK 9
#define L_FRONT 5
#define L_BACK 6

int maxSpeed;

const int buzzer = 3; // зуммер на вывод 9 Arduino

  

Радиостанция РФ24 (7, 8); // CE, CSN


адрес константного байта [6] = "06720"; // Адрес NRF

беззнаковый длинный lastRecvTime = 0; // Используется для проверки задержки

struct data {
  int left;
  int right;
  int maxs;
 
};
данные receive_data;

void reset_the_Data () // Установить значения по умолчанию
{
  получить_данные.left = 510;
  receive_data.right = 510;
  receive_data.maxs = 0;
  
  
}

void receive_the_data () // Чтение
{
  while (radio.available ()) {
    radio.read (& receive_data, sizeof (данные));
    lastRecvTime = миллис ();
  }
}

void move (char direction [], char motor [], int value) {
  if (motor == "right") {
    if (direction == "stay") {
      analogWrite (R_FRONT, 0);
      analogWrite (R_BACK, 0);
    } else if (direction == "назад") {
      analogWrite (R_BACK, карта (значение, 0, 500, maxSpeed, 100));
    } else if (direction == "вперед") {
      analogWrite (R_FRONT, map (значение, 530, 1023, 100, maxSpeed));
    }
  }еще{
    if (direction == "stay") {
      analogWrite (L_FRONT, 0);
      analogWrite (L_BACK, 0);
    } else if (direction == "назад") {
      analogWrite (L_BACK, карта (значение, 0, 500, maxSpeed, 100));
    } else if (direction == "вперед") {
      analogWrite (L_FRONT, карта (значение, 530, 1023, 100, maxSpeed));
    }
    maxSpeed ​​= map (получить_данные.макс., 0, 1023, 150, 255);
  }

  
  Serial.print (направление);
  Serial.print ("");
  Серийный принт (мотор);
  Serial.print ("");
  Serial.println (значение);

}

  



void setup () {
  
  
  Serial.begin (9600);
  radio.begin ();
  radio.setAutoAck (ложь);
  radio.openReadingPipe (0, адрес);
  radio.setPALevel (RF24_PA_MIN);
  radio.setDataRate (RF24_250KBPS);
  radio.startListening ();

   Wire.begin ();
   display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // инициализация с адресом I2C 0x3C (для 128x32) (инициализация дисплея)
  
}
void loop () {
  receive_the_data ();
  
  беззнаковое длинное сейчас = millis ();
  if (now - lastRecvTime> 1000) {// Проверяем задержку
    reset_the_Data ();
  }

  
  если ((500 <получить_данные.left) && (receive_data.left <530)) move ("остаться", "влево", receive_data.left);
  if (receive_data.left <= 500) move («назад», «влево», receive_data.left);
  if (530 <= receive_data.left) move («вперед», «влево», receive_data.left);

  if ((500  

laneboysrc / nrf24l01-rc: автомобильный радиоуправляемый приемник на основе nRF24, совместимый с HobbyKing HK310 и Turnigy 3XS

GitHub - laneboysrc / nrf24l01-rc: радиоуправляемый автомобильный приемник на основе nRF24, совместимый с Hobby Turnigy HK310 и

Автомобильный радиоуправляемый радиоприемник на базе nRF24, совместимый с HobbyKing HK310 и Turnigy 3XS

Файлы

Постоянная ссылка Не удалось загрузить последнюю информацию о фиксации.

Тип

Имя

Последнее сообщение фиксации

Время фиксации

Этот проект включает электронику и прошивку для создания наземных радиоуправляемых приемников , которые могут заменить приемники HobbyKing HKR3000 и XR3100. Их можно использовать с автомобильными радиосистемами HK300, HK310 и Turnigy 3XS RC.

В приемниках используются стандартные недорогие ВЧ модули.

Предусмотрены два варианта:

Техническую информацию о внутренней работе приемников можно найти в hkr3000-info.md ​​.

Преимущества NRF24L01 + - LPC812 версия

  • Легко доступный и очень недорогой модуль NRF (менее 1 доллара США, включая доставку в количестве 10 штук на eBay, Aliexpress)
  • Очень точные сервоимпульсы благодаря аппаратному таймеру LPC812
  • ARM Cortex-M0 32-разрядный процессор легко программировать с помощью компилятора GCC ARM
  • Запатентованный программатор не требуется, так как MCU имеет загрузчик ПЗУ, который можно прошить с помощью переходника USB-to-serial
  • Сервоимпульсы могут обновляться каждые 5 мс (200 Гц).Теоретически это может обеспечить лучший отклик, но на практике передатчик необходимо модифицировать, чтобы полностью принимать Преимущество этого факта.
  • Выход
  • UART с использованием протокола препроцессора LANE Boys RC, например для подключения светового контроллера DIY RC с помощью одного сервокабеля.

Минусы:

  • Требуются навыки пайки печатной платы и среднего уровня SMD
  • Нет выхода CPPM (но у него есть выход UART, который может передавать данные, подобные CPPM, и многое другое)

Преимущества версии NRF24LE1

  • Мало деталей: модуль NRF24LE1, регулятор напряжения, несколько конденсаторов; Выполнено!
  • Простота сборки даже на макете
  • Выход CPPM
  • Выход UART с использованием протокола препроцессора LANE Boys RC, e.грамм. для подключения светового контроллера DIY RC с помощью одного сервокабеля. Однако скорость передачи ограничена 38400.

Минусы:

  • Модуль NRF24LE1 дороже, чем NRF24L01 и его сложнее найти
  • Требуется специальное оборудование для программирования. В Интернете можно найти несколько версий с открытым исходным кодом.
  • Сервоимпульсы синхронизируются программно, поэтому они немного нестабильны, несмотря на использование прерываний. Обратите внимание, что прошивка, включенная в этот проект, улучшена по сравнению с исходной прошивкой HKR3000 и XR3100, которая регулярно увеличивает сервоимпульсы на 16 мкс из-за плохой реализации логики прерывания.
  • Для платы, представленной в этом проекте, вам необходимо получить версию модуля NRF24LE1 с кристаллом SMD (размер 21 x 15 мм)

Прошивка NRF24LE1, включенная в этот проект, может быть скомпилирована для обеспечения совместимости с оборудованием HKR3000 и XR3100. Однако, поскольку эти приемники используют версию OTP (NRF24LE1G), необходимо заменить чип на версии NR24LE1E, чтобы иметь возможность использовать его.

Около

Автомобильный радиоуправляемый радиоприемник на базе nRF24, совместимый с HobbyKing HK310 и Turnigy 3XS

ресурсов

Лицензия

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

Купить Пульт дистанционного управления SmartElex с модулем приемопередатчика NRF24L01

Описание

Мы знаем, что любители хотят создать роботизированный автомобиль с беспроводным дистанционным управлением. В основном люди-любители сталкивались со сложностью, рабочим диапазоном, точностью, проблемами переключения сигналов, и в основном это дорого.Чтобы решить эту проблему, мы представляем комбинацию из беспроводного пульта дистанционного управления SmartElex, драйвера двигателя L293D и антенны NRF24L01 2,4 ГГц под торговой маркой SmartElex по очень низкой цене.

Сердцем беспроводного драйвера двигателя является приемник NRF24L01 Trans, который позволяет плате одновременно управлять 4 двигателями BO, как по часовой, так и против часовой стрелки, а также осуществлять электронное торможение. NRF24L01 - это высокоинтегрированная ИС ВЧ-приемопередатчика со сверхнизким энергопотреблением (ULP) 2 Мбит / с для диапазона 2,4 ГГц ISM (промышленный, научный и медицинский).

Мы сделали комбинацию из следующего необходимого продукта:

Беспроводной пульт дистанционного управления SmartElex с драйвером двигателя L293D.

NRF24L01 2,4 ГГц антенный беспроводной модуль приемопередатчика

Для получения дополнительной информации о каждом продукте в деталях комбинации просто нажмите на изображение или на их название.


В коплект входит:

2 x M177 NRF24L01 Антенный модуль беспроводного приемопередатчика 2,4 ГГц.

1 модуль передатчика SmartElex

1 модуль приемника SmartElex с драйвером двигателя L293D

1 неперезаряжаемая батарея EVEREADY 9 В

Гарантия 3 месяца

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


Что аннулирует гарантию:

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

NRF24L01 + | Hackaday

Есть отличный шанс, что вы уже работали с nRF24L01. Эти маленькие модули представляют собой простой и дешевый способ перетасовки данных по радиоканалу 2,4 ГГц с приемлемой скоростью, что делает их идеальными для проектов дистанционного управления.Но, увидев, что другие экспериментировали с использованием этих радиоприемников для передачи цифрового звука, [Эндрю Россиньол] задался вопросом, могут ли какие-то программные уловки раздвинуть границы еще дальше.

В результате получается nerfnet , программа Linux, которая позволяет туннелировать TCP / IP через пару модулей nRF24L01. Ссылка отображается в виде виртуального интерфейса, что означает, что для других программ все происходит прозрачно. Все, что использует TCP / IP для связи в Linux, может воспользоваться преимуществами этого недорогого канала связи, хотя и на скоростях, с которыми большинству из нас не приходилось сталкиваться десятилетиями.

Хотя это не так уж плохо, как вы думаете. Задержка составляет около 50 мс, и после некоторых настроек [Эндрю] смог выжать из канала почти 300 Кбит / с. Этого более чем достаточно для работы терминала, и не исключено небольшое потоковое аудио и видео.

Что касается дальности связи, он смог поддерживать довольно надежное соединение на расстоянии до 60 метров (200 футов) вне помещения. Может показаться, что это не так уж много, но, опять же, вы должны принять во внимание стоимость этих радиоприемников.Если вы хотите использовать SSH в метеостанции Raspberry Pi, установленной на заднем дворе, пара таких может выполнить работу всего за пару долларов.

Сообщение в блоге [Эндрю] объясняет программное обеспечение в фантастических подробностях, если вас интересуют основные моменты всего этого. Но если вы просто хотите поэкспериментировать с этой идеей, вам просто нужно подключить несколько модулей nRF24L01 к паре Raspberry Pis с помощью коротких проводов SPI, чтобы устранить любые помехи, и следуйте инструкциям.В идеале радиостанции должны иметь внешние антенны, но это не обязательно.

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

Читать далее «Туннели Nerfnet TCP / IP по радио NRF24L01» →

Передатчик

RC | Hackaday.io

Передатчик питается от микроконтроллера Teensy 4.1 и обменивается данными через модуль nRF24L01. Он имеет четыре основных аналоговых входных «канала»; рулевое управление, дроссельная заслонка и «X» и «Y» с помощью джойстика PSP. Он будет иметь другие входы от кнопок, тумблеров и, возможно, поворотного энкодера и / или ручки потенциометра. Наконец, поскольку ни один проект не обходится без небольшого расширения возможностей, я также добавил сенсорный TFT-экран Adafruit.

Я использовал два разных метода 3D-сканирования, чтобы создать справочную геометрию, которую можно использовать при проектировании корпуса передатчика.В качестве первого метода я использовал Microsoft Kinect v1 для сканирования старого RC-передатчика. Этот метод дал лишь удовлетворительные результаты, так как сенсор Kinect не подходит для сканирования небольших объектов, подобных этому. Для второй попытки я использовал программное обеспечение для фотограмметрии Meshroom, чтобы создать сканирование компьютерной полетной палки, у которой была лучшая компоновка для всех методов ввода, которые я планировал. Поскольку я планировал использовать сканирование только в качестве эталонной геометрии, этот метод отлично работал с минимальной очисткой сетки.

Я перенес оба скана в свою программу CAD (OnShape) и смоделировал геометрию рукоятки, чтобы проверить размер и ощущения с помощью нескольких прототипов, напечатанных на 3D-принтере (см. Выше). С этого момента я продолжал моделировать остальную часть сборки передатчика, пока не нашел место для всех необходимых модулей и компонентов. Это включало дроссельную заслонку и рулевое управление, собранные с передатчика FlySky GT3B. Я смоделировал эти детали, измерив компоненты штангенциркулем и проверив размер и форму с помощью множества прототипов, напечатанных на 3D-принтере.На этом этапе я решил сделать полный прототип сборки передатчика, чтобы проверить эргономичность размещения всех компонентов. Я разделил корпус на более мелкие части, чтобы он поместился на моем 3D-принтере и улучшил качество печати. Все было хорошо напечатано без каких-либо опор, и после пары часов доработки и сборки у меня был свой первый прототип!

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

Код на этом этапе довольно простой, в основном скопированный из нескольких примеров, которые я нашел в Интернете. Электроника приемника состоит из Arduino Mega, подключенного к другому модулю nRF, и контроллера мотора BasicMicro Roboclaw 2x30 в пакетном последовательном режиме. Наиболее примечательной особенностью кода является использование функции подтверждения полезной нагрузки библиотеки nRF24 для возврата информации от Roboclaw к передатчику.В настоящее время я возвращаю заряд основной батареи, температуру платы Roboclaw и мгновенное потребление тока с каждого из двигателей.

Планируемые характеристики:

Мне нужно добавить функцию калибровки для аналоговых входов и бит M-Stop для отправки на приемник.

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

Мне также нужно значительно улучшить код сенсорного экрана:

Arduino 2.4G Wireless RC Command с NRF24L01

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

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

Лучшим чипом для простого беспроводного подключения является трансивер nRF24L01 2,4 ГГц от Nordic Semiconductor.Это дешево и без проблем работает с платформой Arduino.

Результат

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

Детали

Идея состоит в том, чтобы построить приемопередатчик и приемник.
Итак, для моих первых тестов мне понадобились:
- 2 платы Arduino
- 2 модуля nRF24L01
- 1 сервопривод
- 1 джойстик
- 2 батареи для питания всего.

Я выбрал Arduino Nano: он имеет небольшой фактор, но все возможности Arduino Uno.

Я также использую LiPo батареи с платами LiPo Rider, которые позволяют преобразовать 3,7 В в 5 В и использовать порт USB для питания Arduino Nano.

Схемы

Я пропускаю LiPo Rider и батареи на схемах, так как они не имеют отношения к делу.

Вот схема трансивера:

Схема приемника:

подсказки

Установочная точка сервопривода

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

Статус передачи

Я использовал 2 светодиода: 1 зеленый и 1 красный, чтобы показать состояние передачи.
Каждый пакет, передаваемый от приемопередатчика к приемнику, должен быть отправлен обратно, чтобы проверить качество передачи.
Если значение отправлено обратно, горит зеленый светодиод. Если истечет время ожидания передачи, загорится красный светодиод.
Таким образом, я могу легко контролировать качество передачи.

Код

Приемопередатчик
#include 
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

//
// Конфигурация оборудования
//

// Контакты джойстика
int sensorPinX = A0;
int sensorPinY = A1;

// Светодиодные пины
int красный = 4;
int зеленый = 2;

// Устанавливаем радио nRF24L01 на шину SPI плюс контакты 9 и 10
Радиостанция РФ24 (9,10);

// Адреса радиоканалов для связи двух узлов.
const uint64_t pipe [2] = {0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL};

//Значения по умолчанию
int sensorValueX = 0;
int oldSensorValueX = 0; // отслеживать значение X
int sensorValueY = 0;
int reposValue = 92; // устойчивая точка по умолчанию для сервопривода


недействительная настройка (недействительна)
{

  //
  // Установка и настройка рч радио
  //

  радио.начинать();

  // необязательно увеличиваем задержку между повторными попытками и # повторных попыток
  radio.setRetries (15,15);

  // необязательно уменьшить размер полезной нагрузки. видимо
  // повышаем надежность
  radio.setPayloadSize (8);

  //
  // Открытие каналов к другим узлам для связи
  //

  // Этот простой скетч открывает два канала для связи этих двух узлов
  // назад и вперед.
  // Открываем 'наш' канал для записи
  // Открываем "другой" канал для чтения в позиции # 1 (мы можем открыть до 5 каналов для чтения)

    радио.openWritingPipe (трубы [0]);
    radio.openReadingPipe (1, трубы [1]);

  //
  // Начинаем слушать
  //

  radio.startListening ();

  // Настраиваем светодиод
  pinMode (зеленый, ВЫХОД);
  pinMode (красный, ВЫХОД);
  digitalWrite (зеленый, НИЗКИЙ);
  digitalWrite (красный, НИЗКИЙ);
}

void sendOrder ()
{
    // Получаем значение оси X джойстика
    sensorValueX = analogRead (sensorPinX);
    // Мы используем пороги на этой оси: нам нужно только низкое значение или высокое значение
    // если предыдущее значение оси X не превышает пороговых значений, мы можем проверить значение текущей оси X.// это для предотвращения избыточности
    если (oldSensorValueX> 35 && oldSensorValueX <1000)
    {
      // Если ось X находится над верхним порогом, мы хотим увеличить значение устойчивой точки сервопривода
      если (sensorValueX> 1000)
      {
        reposValue ++;
      }
      // Если ось X находится ниже нижнего порога, мы хотим уменьшить значение устойчивой точки сервопривода
      если (sensorValueX <35)
      {
        reposValue--;
      }
    }
    // обновляем предыдущее значение оси X
    oldSensorValueX = sensorValueX;

    // Теперь получаем значение оси Y
    // Ось Y используется для управления сервоприводом
    sensorValueY = analogRead (sensorPinY);
    // Нам нужно сопоставить значение Y (от 0 до 1024) с возможными значениями для сервопривода (от 0 до 180)
    sensorValueY = map (sensorValueY, 0,1024,0,180);

    // Если значение Y близко (+ -4) к устойчивой точке, мы берем значение устойчивой точки.// Это сделано для предотвращения шума вокруг устойчивой точки.
    если (sensorValueY> (reposValue -4) && sensorValueY <(reposValue + 4)) sensorValueY = reposValue;

   // Во-первых, перестанем слушать, чтобы мы могли поговорить.
    radio.stopListening ();

    // Найдите время и отправьте его. Это будет заблокировано до завершения
    bool ok = radio.write (& sensorValueY, sizeof (int));

    // Теперь продолжаем слушать
    radio.startListening ();

    // Ждем здесь, пока мы не получим ответ, или тайм-аут (10 мс)
    беззнаковый длинный start_waiting_at = millis ();
    bool timeout = false;
    пока (! radio.имеется в наличии() && ! тайм-аут)
      если (millis () - start_waiting_at> 10)
        тайм-аут = истина;

    // Опишите результаты
    если (тайм-аут)
    {
      // В этот момент ACK не пришло, поэтому должен гореть красный светодиод
      digitalWrite (зеленый, НИЗКИЙ);
      digitalWrite (красный, ВЫСОКИЙ);
    }
    еще
    {
      // Получаем ответ, сравниваем и отправляем на отладку.
      беззнаковый длинный ответ;
      radio.read (& response, sizeof (беззнаковое длинное));

     // В этот момент пришло подтверждение, поэтому зеленый светодиод должен гореть
      digitalWrite (зеленый, ВЫСОКИЙ);
      digitalWrite (красный, НИЗКИЙ);
    }
}


недействительный цикл (недействительный)
{
    sendOrder ();

}
Ресивер
#include 
#include 
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

//
// Конфигурация оборудования
//

Сервомашинный резервуар;

// Устанавливаем радио nRF24L01 на шину SPI плюс контакты 9 и 10
Радиостанция РФ24 (9,10);

//
// Топология
//

// Адреса радиоканалов для связи двух узлов.
const uint64_t pipe [2] = {0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL};

// Значения по умолчанию
int servoPos = 92; // Устойчивая точка сервопривода

недействительная настройка (недействительна)
{

  //
  // Установка и настройка рч радио
  //

  радио.начинать();

  // необязательно увеличиваем задержку между повторными попытками и # повторных попыток
  radio.setRetries (15,15);

  // необязательно уменьшить размер полезной нагрузки. видимо
  // повышаем надежность
  radio.setPayloadSize (8);

  //
  // Открытие каналов к другим узлам для связи
  //

  // Этот простой скетч открывает два канала для связи этих двух узлов
  // назад и вперед.
  // Открываем 'наш' канал для записи
  // Открываем "другой" канал для чтения в позиции # 1 (мы можем открыть до 5 каналов для чтения)

    радио.openWritingPipe (трубы [1]);
    radio.openReadingPipe (1, трубы [0]);

  //
  // Начинаем слушать
  //

  radio.startListening ();

  //
  // Дамп конфигурации блока RF для отладки
  //

  // Сервопривод подключен к выводу 2
  myservo.attach (2);
  // Начинаем с устойчивой точки сервопривода
  myservo.write (сервоПос);
}


void receiveOrder ()
{
    // если есть данные готовы
    если (radio.available ())
    {
      // Сбрасываем полезные данные, пока не получим все
      длинное сообщение без знака;
      bool done = false;
      пока (! сделано)
      {
        // Получить полезную нагрузку и посмотреть, была ли она последней.done = radio.read (& сообщение, sizeof (беззнаковое длинное));

        // Используй это
        // Сервопривод может принимать значение только от 0 до 180
        если (сообщение> 180) сообщение = 180;
        иначе, если (сообщение <0) сообщение = 0;
        // Сохраняем позицию
        servoPos = сообщение;
        // Записываем позицию в сервопривод
        myservo.write (сервоПос);
      }

      // Во-первых, перестанем слушать, чтобы мы могли поговорить
      radio.stopListening ();

      // Отправляем последний.
      radio.write (& message, sizeof (беззнаковое длинное));

      // Теперь возобновляем прослушивание, чтобы перехватить следующие пакеты.radio.startListening ();
    }
}

недействительный цикл (недействительный)
{
  receiveOrder ();
}

Кредиты

Nettigo: nRF24L01 + совместимый модуль - беспроводная связь для Arduino

Включает в себя встроенные компоненты поддержки и антенну 2,4 ГГц для упрощения внедрения в проекты без дополнительного оборудования.

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

Мы создали для собственного использования простую платформу разработки, готовую к использованию с NRF24L01.Он основан на ATtiny84, у нас есть программное обеспечение для наиболее важных задач (радиосвязь, режим энергосбережения 9-10 мкА, мониторинг уровня заряда батареи). Вы программируете его с помощью Arduino IDE.

Дальность связи до 329 футов (100 метров) в идеальных условиях. Главный микроконтроллер может связываться и настраивать nRF24L01 + через 4-контактный последовательный периферийный интерфейс (SPI). Регистры конфигурации доступны через соединение SPI.

Настраиваемые параметры включают частотный канал (125 выбираемых каналов), выходную мощность и скорость передачи данных (скорости передачи данных: 250 кбит / с, 1 Мбит / с и 2 Мбит / с).

Встроенный стабилизатор напряжения принимает напряжение питания от 1,9 до 3,6 В. При использовании nRF24L01 + с микроконтроллером обязательно используйте выходной контакт 3,3 В от микроконтроллера для питания модуля nRF24L01 +.

Модуль NRF24L01 имеет входы, устойчивые к 5 В, что позволяет напрямую подключать контакты SPI к MCU.

Сверхнизкое энергопотребление - 11,3 мА при передаче, 13,5 мА при 2 Мбит / с, 900 нА в выключенном состоянии и 26 мкА в режиме ожидания.

Внутренняя фильтрация обеспечивает высокие показатели соответствия нормативным требованиям РФ.Радиомодуль модуля использует модуляцию гауссовой частотной манипуляции (GFSK), а также быструю автоматическую регулировку усиления (AGC).

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

Спецификация:

  • Напряжение - 3,3В
  • Потребляемая мощность (приём) - 13мА
  • Потребляемая мощность (передача) - 11 мА
  • Частота - 2,4 ГГц
  • Скорость - 250 кбит / с, 1 Мбит / с и 2 Мбит / с
  • Внутренняя антенна

Образец соединения:

Доступные библиотеки Arduino, которые работают с модулем:

Учебники с nRF24L01:

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *