Главная » Статьи » Проекты

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

 
 
 Пульт
 Пульт собран на микроконтроллере ATtiny2313A в SOIC корпусе. Тут все предельно просто - 4 кнопки и модуль трансивера NRF24L01. Кнопки подключены способом, который я описывал ранее. Для обработок нажатия кнопок используется всего одно внешнее прерывание INT0. 
 
 
 
 
 
 Питаться схема планировалась от одной 3-х вольтовой литиевой батарейки.  Главная цель была утрамбовать всю схему передатчика в минимальные размеры, чтобы она влезла в заранее купленный корпус-брелок. Я использовал батарейку CR2016, получилось достаточно компактно, плата поместилась в корпус G1402-4B купленном в http://chipnn.ru/ Но чтобы плата влезла в корпус по высоте пришлось перепаять кварц на передатчике (см. фото №3). 
 
 
      
 
 Для того чтобы продлить жизнь батарейки, все время пока пульт лежит без дела, микроконтроллер находится в режиме энергосбережения. Передатчик в свою очередь питается напрямую от ножки микроконтроллера (PortD.0), поэтому когда микроконтроллер спит, питание на передатчик не поступает и расход батареи минимален. Посмотрю сколько проживет батарейка в режиме ожидания. 
 Светодиод D5 на схеме мигает каждый раз при нажатии на кнопки, чтобы было видно что оно работает. Потом можно будет выпаять чтобы не сажало лишний раз батарейку.
 
 
Исходник и прошивка передатчика (частота работы микроконтроллера 1 МГц)
 
 
 
 Приемник
 Приемная часть собрана на микроконтроллере Atmega48, к которому подключен приемник и буферная микросхема, я применил триггер 74hc14. Микроконтроллер тактируется от внутреннего генератора на 1 МГц. Для понижения напряжения питания до 3х вольт применен стабилизатор NCP1117ST33 (U2 на схеме) в корпусе SOT-223. Если сразу использовать для питания 3 вольта, стабилизатор, естественно, можно исключить. 
 
 
 
 Все собрано на плате размером 35*25 мм, которую можно впаять в уже готовое устройство. 
 
 
   
 
 
 

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

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

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

 
 
 
Категория: Проекты | Добавлено: 12.09.2013
Просмотров: 58589 | Комментарии: 106 | Теги: NRF24L01 | Рейтинг: 5.0/20
Всего комментариев: 1061 2 3 4 »
106 BKV   (22.03.2019 14:55) [Материал]
Добрый день. Такая же проблема как и у
104 amg_84.
повторно не принимает сигнал с одной кнопки, пока не нажмешь другую кнопку.
нужно несколько раз подряд отправлять сигнал одной кнопкой, а оно не выходит.
пробовал изменять logic2, устанавливал logic3, и там такая же проблема.

0  
105 exersizze   (21.10.2017 13:25) [Материал]
Алгоритм включения прописан в подпрограмме Logic2, странно что у вас не включает повторно, по логике должно.

+1   Спам
104 amg_84   (19.10.2017 11:20) [Материал]
Подскажите, пожалуйста. Режим 2. Повторное нажатие любой клавиши пульта не приводит к повторной активации одного выхода приемника, необходимо сначала нажать на другую кнопку. Где в исходнике можно это исправить? Необходимо несколько раз подряд активировать один из выходов приемника.

0  
103 exersizze   (28.02.2017 21:53) [Материал]
Радиомодули одинаковые, работать будет точно также.

102 tika   (28.02.2017 21:44) [Материал]
Подскажите как будит работать с NRF24L01+ хотелось с настройкой (с 250мс и на максимум мощности) какая прошивка в передатчике и приемнике будит. по второму варианту.

0  
101 exersizze   (17.09.2016 23:42) [Материал]
Просто использовать не получится нужно перекомпилировать. Но по функция и выводам они идентичны, поэтому ничего кроме первой строки в программе менять не надо будет.

100 maksut11   (17.09.2016 13:15) [Материал]
Доброго времени суток.
Подскажите а тупо на Mega8 залить можно, нет на данный момент 48. Заранее всем спасибо.

0  
99 exersizze   (17.03.2016 18:22) [Материал]
Печатная плата выполнена в DipTrace. Можете скачать ее сами, официальная бесплатная версия тут http://diptrace.com/rus/download-diptrace/#DownloadForm/1/
Фьюзы остаются по умолчанию. Передатчик пойдет только тот что в схеме. Но я бы не стал повторять его на 100%, с той батарейкой что на фото пульт проживет не больше месяца. Или ставьте батарейку большей емкости или переделать с учетом вот этой статьи http://avrproject.ru/publ....1-0-153
Интересно дальность модуля по ссылке с антенной и вправду увеличивается до 1 км? Что-то слабо верится, думаю хорошо если там  хотя бы 100 метров будет.

98 vladimir-arzhanov   (17.03.2016 12:34) [Материал]
Здравствуйте. у меня к вам парочку вопросов, можете помочь со схемой avrproject.ru/publ/vstraivaemyj_modul_radioupravlenija_na_nrf24l01/1-1-0-147, я пользуюсь в программе спринт лоярт, можете выслать в этом формате, ваш формат у меня не как не открывает. и еще вопрос какие фузы биты выставлять на прошивки передатчика и приемника. Если я возьму этот модуль nRF24L01, только с дополнительной антеной
у него дальность увеличится? Возможно ли подобрать пульт (передатчик) заводской к этому приемнику? vladimir-arzhanov@inbox.ru

97 artcore   (15.10.2015 18:57) [Материал]
Как-то задавал вопрос по энергосбережению модуля NRF в этом комментарии. Видимо, мало кто уже занимается такими модулями. Но вопрос закрыт, спасибо =) /просто не могу удалить комментарий/

96 koteika   (17.08.2015 13:11) [Материал]
к сожалению на живую попробовать пока не могу - модули еще в пути. если у Вас будет время, попробуйте пожалуйста и напишите о результатах

95 Valera18   (13.08.2015 16:47) [Материал]
Для koteika

Не пробовал, но ЗАИНТЕРЕСОВАЛО. Нужно пробовать "на живую".
Вы подали идею по передачи цельного массива данных. Теоретически должно быть возможно, но надо пробовать.

+1   Спам
94 koteika   (13.08.2015 15:52) [Материал]
спасибо! а еще вопрос: данные обязательно должны быть в шестнадцатиричном виде или можно в десятичном? и можно ли просто указать имя переменной которую необходимо передать?

93 Valera18   (13.08.2015 15:35) [Материал]
Для koteika

Данная тема уже обсуждалась. Код здесь, в конце статьи в комментариях:
http://avrproject.ru/publ/kak_podkljuchit/radiomoduli_nrf24l01/2-1-0-92
комментарий номер №163.

Если не найдёте, то вот:
1) передача 5 байт
http://yadi.sk/d/vF7D07Mx9g4QY
2) передача 15 байт
http://yadi.sk/d/FypcajG49g4SE

92 koteika   (13.08.2015 12:09) [Материал]
а можно за одну передачу отправить не 5 байт а скажем 7 или 10? и что нужно поменять в тексте программы?

91 vakulyuk   (14.11.2014 16:52) [Материал]
Панда зачет)Тоже себе нарисовал для прикола ток в layout-е =)

+1   Спам
90 bav123   (11.11.2014 21:21) [Материал]
нормальный проект, автору спасибо

89 Polle   (21.09.2014 17:00) [Материал]
Пульт питается LiPo аккумулятором на 500Ма\ч, а вот сколько он проработает без подзарядки трудно сказать. Пульт потребляет ток только тогда когда им пользуешься, а если в течении 1 минуты не нажата ни одна кнопка он отключается. За две недели батарея разрядилась от 4,2в до 4,12в.

0  
88 exersizze   (16.09.2014 22:46) [Материал]
Polle, интересная реализация. А сколько работает пульт без подзарядки, я так понимаю питаете литиевым аккумулятором?
Если не против, прикреплю ваши файлы в конце этой статьи, чтобы не потерялись.

87 Polle   (14.09.2014 13:25) [Материал]
Добрый день! Предлагаю вашему вниманию мою версию системы дистанционного управления на nRF24L01. Вот ссылка на видео: https://yadi.sk/d/2zDwl3GMbTw8B . По этой ссылке можно найти схему и прошивку.

86 energi911   (23.06.2014 01:35) [Материал]
позвольте уточнить, в каких программах писался код и делалась схема?
заранее спасибо

85 kip96   (27.04.2014 21:37) [Материал]
Spiout D_bytes(1) , C_bytes
загрузит начиная с байта D_bytes(1), количество байт равное C_bytes

84 Octoberer   (27.04.2014 18:17) [Материал]
Добрый день. А вот подскажите такой момент

Есть кусочек вот такого кода

D_bytes(1) = Wr_tx_pload
D_bytes(2) = W
D_bytes(3) = &H00
D_bytes(4) = &H00
D_bytes(5) = &H00
D_bytes(6) = Pult
Call W_register(6)

и такая вот процедура

Sub W_register(byval C_bytes As Byte)
Reset Ss
Spiout D_bytes(1) , C_bytes
Set Ss
End Sub

вопрос данная процедура задвинет весь массив D_bytes (с 1 по 6) по SPI,
либо только 1-н его элемент D_bytes(1).

83 Valera18   (02.03.2014 13:46) [Материал]
Для domrustika

Странно, проблемы быть не должно...
Попробуй простую прошивку (процесс отправка и приём) для ПРОВЕРКИ.
Вот эту прошивку: http://yadi.sk/d/vF7D07Mx9g4QY
только измени у передатчика с Attiny2313 на Atmega8 и поменяй порты, а у прошивки приёмника удали процесс "Print" и выстави порт светодиода.

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

82 domrustika   (02.03.2014 11:19) [Материал]
нет , я использую мк Мега8 tqfp, забыл указать в своем посте.

81 Valera18   (02.03.2014 09:59) [Материал]
Для domrustika

С передатчиком на "Config Spi = Soft" проблем не было.

Вы написали: "Config Spi = Soft , Din = Portb.4 , Dout = Portb.3 , Ss = Portd.7 , Clock = Portb.5"
я так понимаю, используете Attiny2313, но я не пойму где вы нашли ножку "Ss = Portd.7", порта Portd.7 на микросхеме Attiny2313 нет. =>вероятно, поэтому и не работает.

80 domrustika   (02.03.2014 01:11) [Материал]
для Valera18
а вот не получается как вы говорите. нарисовал плату, стравил спаял уже. а нифига не работает...
вот вы говорите когда софт можно радиомодуль вешать на любые ножки.
весь код оставил(передатчика) как в статье заменил лишь
Config Spi = Soft , Din = Portb.4 , Dout = Portb.3 , Ss = Portd.7 , Clock = Portb.5
Config Portd.6 = Output : Ce Alias Portd.6 'CE pin is output
Config Portd.7 = Output : Ss Alias Portd.7 'SS pin is output
Config Pind.4 = Input : Irq Alias Pind.4 'IRQ pin is input
на свои, так не работает! потом ради интереса собрал на макетке, как в статье пины и опять работает... вот как то так. получается даже в софте нельзя менять что ли делать строго по статье..

79 Valera18   (26.02.2014 22:45) [Материал]
Для domrustika

"Config Spi = Soft" можно использовать только на передатчике.
В режиме "Soft" все выводы nRF24L01 можно подключать к любой ножке МК. =>это удобно.
Если использовать в передатчике "Config Spi = Hard", то выводы nRF24L01 нужно подключать также как и на приёмнике (по SPI портам). =>это не удобно.
Через режим "Config Spi = Soft" осуществляется передача инфы (инициализация+посылка), а считывать (то что nRF24L01 получил) не получается (причину проблемы выяснить не удалось). =>режим "Config Spi = Soft" только на передатчике.

Можно сделать оба "Config Spi = Hard", но мне было удобнее передатчик через "Config Spi = Soft". Скорость работы "Hard" и "Soft" одинаковая...

78 domrustika   (26.02.2014 22:25) [Материал]
спасибо. а почему в этом проекте передатчик сконфигурирован как софт, а приемник как хард? нельзя оба сделать хард или оба софт? Или есть какой-то тайный смысл? или приемник в принципе нельзя конфигурировать как софт?

77 Valera18   (26.02.2014 16:40) [Материал]
Для domrustika

У передатчика в режиме "Config Spi = Soft" все выводы nRF24L01 можно подключать к любой ножке МК.
У приёмника или передатчика в режиме "Config Spi = Hard" изменять можно только Ce и Irq

1-30 31-60 61-90 91-106
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






авторизация
Логин:
Пароль: