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

Встраиваемый модуль радиоуправления на 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
Просмотров: 58692 | Комментарии: 106 | Теги: NRF24L01 | Рейтинг: 5.0/20
Всего комментариев: 106« 1 2 3 4 »
46 Vladcom   (27.12.2013 12:21) [Материал]
Все! Сам сделал)) кому нужна прошивка приемника на mega8 пишите выложу

45 Vladcom   (27.12.2013 10:42) [Материал]
А можно приемник на mega8 пересыпать программно?

44 domrustika   (27.12.2013 01:26) [Материал]
ясно. буду использовать напрямую тогда)

43 exersizze   (26.12.2013 23:50) [Материал]
domrustika, в принципе он здесь ни к чему, это мой бзик поставить какой-нибудь буфер между приемником и исполнительным устройством.

42 domrustika   (26.12.2013 14:38) [Материал]
ребят а зачем тут стоит 74hc14 ?

41 bavbav   (02.11.2013 11:06) [Материал]
еще один нюанс - не срабатывает если одну и ту же кнопку нажать подряд, даже с небольшими перерывами.если жмешь кнопки вразброс, то все нормально.

40 exersizze   (01.11.2013 14:10) [Материал]
Ну для CR2032  - 3 месяца работы это подвиг)) Лучше конечно передатчик собрать с использованием вот такого принципа
 http://avrproject.ru/publ....1-0-153

39 bavbav   (31.10.2013 20:05) [Материал]
у меня ток покоя передатчика 0,25мА для тини2313V и 0,15мА для тини2313A,т.е. батарейку 2032 сожрет гдето через 3 месяца 8(.Фьюзы по умолчанию.Приемник откликается при снижении напряжения передатчика до 2х вольт для обеих микрух в квартире на 6 метров, дальше идти некуда.

+1   Спам
38 bavbav   (01.10.2013 11:57) [Материал]
Valera18
я про 8 кнопок интересовался, т.е. независимое управление 8 нагрузками.два модуля nRF24L01 лежат, но нет пока времени конкретно протестировать

37 Valera18   (30.09.2013 17:19) [Материал]
Для bavbav

Что за каналы (про увеличение до 8 каналов)?
Вы про количество передаваемых Byte за раз или про частоту 2440 МГц?

Если про количество передаваемых Byte за раз, это есть тут:
http://avrproject.ru/publ/kak_podkljuchit/radiomoduli_nrf24l01/2-1-0-92
- прочитайте комментарий №160, там есть рабочая прошивка для передачи количество 15 Byte за один раз.

Или Вы про 8 кнопок, для Attiny2313?
Для передающего модуля nRF24L01 нужно только 4 информационный провода и отдельно 2 провода питания без светодиода.
Для обычных кнопок остаётся 13 свободных портов.
Для диодного способа, можно сделать 12 диодных кнопок.

36 Valera18   (30.09.2013 17:03) [Материал]
Для vadim121

Про модуль "nRF24L01+PA+LNA wireless communication modules with antenna 2.4GHz 2Mbps 1000m" - зелёный цвет с антенной.
- нужно учитывать, что потребление тока из-за усилителя выше, поэтому плюс (+) питания подключать к ножки МК нельзя, только к общему плюсу (+). Для режима энергосбережения можно использовать ключ (в виде транзистора), чтобы включать и отключать nRF24L01 от цепи питания (+).
Добавлю, это модуль ловит во всех комнатах с закрытыми дверями. На открытом пространстве на дальность не проверял.

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

+1   Спам
35 vadim121   (30.09.2013 16:55) [Материал]
Valera18, Спс за ответ) Сегодня тогда заказываю его.

34 Valera18   (30.09.2013 16:53) [Материал]
Для vadim121

Да заработает. Там всего-лишь установлен усилитель.
Например, себе Я покупал "nRF24L01+PA+LNA wireless communication modules with antenna 2.4GHz 2Mbps 1000m" - зелёный модуль, проверил работает.

33 vadim121   (30.09.2013 16:12) [Материал]
Здравствуйте! На просторах интернета нашёл аналог NRF24L01 с увеличенной дальностью передачи - NRF24L01 + PA + LNA. Не подскажете ли, если его применять в этой схеме, устройство заработает?

32 exersizze   (30.09.2013 12:51) [Материал]
Количество каналов в принципе можно добавить неограниченно, и это легко реализуется, посмотрите исходники - проект открытый. А сам я этим уже заниматься не буду.

31 bavbav   (30.09.2013 11:48) [Материал]
Возможно ли увеличение количество каналов, например до 8, или это уже будет совсем другой проект?

30 Valera18   (29.09.2013 21:02) [Материал]
exersizze и kip96 - верно подметили.

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

Добавлю:
в 27 комментарии написал: потребление в режиме передачи = 240 мкА - это максимальное замеченное значение при передаче, были замерены и меньшие значения.
Тестирую на старой батарейки CR2032, которая раньше была установлена в электронных часах (работала около 7 месяцев) + подключен танталовый конденсатор на 47 мкФ 6,3V.
В начале тестов напряжение было = 2,87V (при отправке просаживается до 2,85V), по прошествии около 24 часов - ничего не изменилось.
Тест в режиме (сторож 8 секунд + powerdown) продолжается...

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

+1   Спам
29 kip96   (29.09.2013 20:44) [Материал]
любая батарейка представляется как источник эдс + резистор. Резистор это внутренее сопротивление батареи, которое увеличивается с разрядом, т.к. это химический процесс. По этому, напряжение может быть в норме, т.к. измеряем ЭДС. Но при нагрузке, внутренее сопротивление включается в работу.Конденсатор не имеет этих процессов, он конечно имеет внутренее сопротивление, но исключительно сопртивление соединений и контактов, и способен мгновенно зарядиться, и также мгновенно разрядиться, т.е. одать максимальный ток. По этой причине, к примеру, ставят в автоусилители конденсатор, а не акб, потому, что акб не может мгновенно одать большой ток в басах.

+1   Спам
28 exersizze   (29.09.2013 12:01) [Материал]
Скорей всего конденсатор вытягивает батарейку по току, так как разряженная она не может выдать необходимый ток в момент максимального потребления и напряжение на ней проседает. В этот момент конденсатор и сглаживает просадку.

+1   Спам
27 Valera18   (28.09.2013 18:16) [Материал]
Ещё наработка.
"Изменил комментарий".

Фьюзы запрограммированы на частоту 128кГц (8 значный делитель - выключен):


У передатчика на nRF24L01 ножка MISO и ножка IRQ - не используются.
Светодиод не использовал. Установил только две тактовые кнопки на INT0 и INT1. Все подтягивающие резисторы убрал, так как активировал встроенную подтяжку.

В общем, добился потребление при передаче = 240 мкА, а в режиме сна (Powerdown) = 0,1 мкА. Уже даже не знаю как понизить сильнее.
Попробовал режим сна и 8 секундного сторожа (Watchdog - Powerdown), в ожидания потребление = 4,1 мкА.

При работе от стабилизированного БП на 3,3V - всё работало отлично, но при подключение к старой батарейки CR2032 начались перебои. Поэтому Я снова подключил танталовый конденсатор к схеме, теперь вроде всё работает.
Вывод: танталовый конденсатор >47мкф 6,3V - важен в схемах с низким питанием.

Прошивку закачал на Яндекс-диск:
http://yadi.sk/d/UtM9Ss3yA46Pg

+1   Спам
26 Valera18   (28.09.2013 18:05) [Материал]
Для bavbav

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

25 bavbav   (28.09.2013 11:39) [Материал]
тоесть по умолчанию?

24 exersizze   (28.09.2013 10:51) [Материал]
Везде 1 МГц RC, с этими установками камни идут с завода.
Вот как то так http://avrdesign.ucoz.ru/_pu/0/93374841.png

23 bavbav   (27.09.2013 21:00) [Материал]
каковы фьзы передатчика и приемника для пони прог?

22 Valera18   (24.09.2013 09:35) [Материал]
Для kip96

Скачаю и почитаю.

+1   Спам
21 kip96   (24.09.2013 07:31) [Материал]
Фьюзы - там всё впорядке, только собаку тоже отключи. Ведь генератор то работает.(хотя , помоему, его нужно ещё через регистры включать, но всё-же лучше фьюз выключить) вообщем читай как обзывается фьюз и решай, отключать или нет.
Prr = &B11101010-Регистр для управления тактовыми сигналами модулей. Отключаем ту переферию, которая не нужна. TWI(I2c), USART,таймеры и т. д. Каждый бит-это переферия, 1-откючает, 0- включает. Как видно, при сбросе контроллера, всё в ноль, значит включено.
Acsr = &B10010001-и есть компоратор, так-же 1-ой отключаем.
$prog &HFF , &H62 , &HDF , &HFF-фьюзы. В программаторе компилятора, в окошке фьюзы есть кнопочка "программировать". Нажимаешь её и в исходнике эта строка.
Всё(кроме последнего) справедливо для меги48. Для тиньки нужно читать конкретно. Если ДШ тяжело, скачай Евстифеева А.В, я по его книге изучал

20 Valera18   (23.09.2013 22:04) [Материал]
Для kip96

Да, статью нужно дополнить.
Я понял что нужно отключить "BOD на 1.8", а компаратор не знаю как выключить.

Ещё мне не понятно это, у тебя в прошивке:
$prog &HFF , &H62 , &HDF , &HFF
Prr = &B11101010
Acsr = &B10010001

Посоветуй как правильно выставить фьюзы, смотря на фотку фьюзов (которая ниже).

+1   Спам
19 kip96   (23.09.2013 21:16) [Материал]
Но это-же много! Ведь даташит обещает 0.1uA. А если я правильно понял, у тебя 800uA
Посмотри мой исходник, там напрямую через регистры отключаю переферию. К примеру компаратор по дефолту включён, а он тебе не нужен. А он свои мА кушает. Потом в фьюзах BOD на 1.8 включён. На кой он тебе. он то-же не хило жрёт + опорка для него. Отключай! Блин, надо бы статейку об энергосбережении дополнить.

18 Valera18   (23.09.2013 19:57) [Материал]
Всё, довёл потребление до МИНИМУМА, меньше уже некуда.

В прошивке выставил 128000 Гц ($crystal = 128000).
Во фьюзах так:
http://s1.ipicture.ru/uploads/20130923/DKJ5xorS.jpg


Программатор USBASP настроен на:
http://s1.ipicture.ru/uploads/20130923/Gb20C91R.jpg


Сделав все эти настройки добился НАИМЕНЬШЕГО потребления тока.
Танталовый конденсатор убирать не стал (тантал остался в схеме).

Вывод для ATTINY2313A-SU:
Замерил ток потребления с помощью резистора на 1 Ом (1%):
в режиме сна (Powerdown) = 000,5 мА.
в режиме обычной работы ATTINY2313 = 000,7 мА.
в режиме передачи = 000,8 мА.

17 Valera18   (22.09.2013 16:00) [Материал]
Также отмечу (для тех кому нужен миниатюрный передатчик).
В передатчике можно использовать: ATtiny13A-SU + nRF24L01 + CR2032 + танталовый конденсатор >150 мкф 6,3V + 1 кнопка (подтянутая 10 кОм к плюсу).

Схема:
http://s1.ipicture.ru/uploads/20130922/ISP1G3Og.png



Ножки у nRF24L01 - MiSO и IRQ в передатчике не нужны (так как используется Config Spi = Soft), поэтому не подключал.
Места в ATtiny13A-SU вполне хватит для кода, только придётся отключить порт Reset от Reset и перевести порт в "порт ввода/вывода".
А плату трансивера nRF24L01 можно вытравить на текстолите.

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






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