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

Передача измеренной температуры по радиоканалу. Связка NRF24L01+ и DS18B20
 


 Небольшой проект с использованием радиомодулей NRF24L01. Задача проста - измерить температуру и отправить данные на приемник. Измерением температуры занимается цифровой датчик DS18B20. Измеренная температура, полученная на другой стороне приемником, выводится на ЖК дисплей. Хороший пример для демонстрации возможностей радиомодулей.

 Передатчиком служит тестовая платка с atmega8, которая была собрана ранее. К ней дополнительно подключил датчик 18b20 к выводу PortC.0 с резистором подтяжки на 4,7 килоом
 
 Схема передатчика:




 Запитываться передатчик должен напряжением от 3 до 3,6 вольт (нижний предел 3 вольта для датчика температуры, а верхний - для NRF24L01). В моем случае все запитывалось подсаженным литий-ионным аккумулятором, в котором осталось 3,5 Вольт.


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

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

 






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







 Что касается дальнобойности, то приемник "слышит" сигнал через 2 железобетонные стены (максимальное удаление по квартире). А вот третья стена его уже глушит (уносил передатчик на лестничную площадку), но тем не менее считаю что результат вполне неплохим, свою цену они отрабатывают на все 100%


 И напоследок видео работы







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



Категория: Проекты | Добавлено: 17.09.2012
Просмотров: 68086 | Комментарии: 107 | Теги: Радиопередача, 18b20 | Рейтинг: 4.6/21
Всего комментариев: 1071 2 3 4 »
0  
107 exersizze   (03.10.2016 12:22)
Интересно почему накрылся модуль, может коротнуло где?

106 rulezzznv   (03.10.2016 11:39)
ждем новые модули... выяснилось что передатчик шлет шлак в эфир....

0  
105 exersizze   (18.09.2016 21:45)
Да, нормально. Тогда проверяйте все поэтапно: микроконтроллер, дисплей, потом подключайте приемник. Чудес не бывает, если все живо, то дело в контакте.

104 rulezzznv   (18.09.2016 11:14)
А если обесточить передатчик как ведёт себя приемник ?

103 rulezzznv   (18.09.2016 11:12)
Да я пересобирал раз 10.... все проверил.... что это может быть?((((( питание разные пробовал... когда радиомодуль отключаю показывает 255 гр это нормально?

0  
102 exersizze   (17.09.2016 23:51)
Соединения бы все перепроверить, на беспаячной макетке такое бывает.

101 rulezzznv   (17.09.2016 09:55)
Микруху менял на другую, прошивал, фьюзы на месте... даже радиомодули местами менял

100 rulezzznv   (17.09.2016 09:51)
Парни подскажите че делать 2ой день голову ломаю.... вобщем собрал я на макете все заработало температуру показывало... ночь простояла и в какйто момент сгулючело призапуске показывает 0 гр и очень быстро мерцает дисплей и светоддиод на приемнике... на передатчике вроде все в порядке индикаторы работают как надо... гляньте короткое видео если не трудно... http://videonv.ru/1111.mp4 спасибо...

0  
99 exersizze   (15.09.2016 23:53)
По динамической индикации есть вот эта статья (может вы наверно уже ее видели) http://avrproject.ru/publ....2-1-0-9
Суть индикации будет заключаться в том чтобы принимать данные не когда данные придут от передатчика, а только после переключения, чтобы до следующего переключения индикатора успеть закончить чтение. Иначе из-за не согласования индикация будет сбиваться и появится моргание.
Конкретней было можно было бы сказать если увидел вашу схему. Но советую все-таки сделать индикацию с буфером на 74hc595. http://avrproject.ru/publ/2-1-0-57  Тогда не придется бороться с мерцанием сегментов.

98 rulezzznv   (15.09.2016 09:21)
Друзья подскажите как переделать под динамическую индикацию? хочу семисегментик, спасибо!

0  
97 exersizze   (25.01.2016 00:06)
Фьюзы на внешний высокочастотный кварц. Вот так http://avrdesign.ucoz.ru/_pu/0/00504216.png

96 rulezznv   (20.01.2016 11:59)
Друзья подскажите как устанавливать фьюзы для проекта в понипрог? или достаточно залить прошивку ? спасибо.

95 Valera18   (24.12.2015 07:58)
Для Dimonbav

Да, можно. Приёмник будет перебирать адреса передатчиков и считывать информацию с каждого по порядку.

Передатчик №1 - адрес
'Подготовка к TX
D_bytes(1) = &H30 'TX адрес
D_bytes(2) = &H34
D_bytes(3) = &H43
D_bytes(4) = &H10
D_bytes(5) = &H10
D_bytes(6) = &H01

Передатчик №2 - адрес
'Подготовка к TX
D_bytes(1) = &H30 'TX адрес
D_bytes(2) = &H34
D_bytes(3) = &H43
D_bytes(4) = &H10
D_bytes(5) = &H10
D_bytes(6) = &H02

Передатчик №3 - адрес
'Подготовка к TX
D_bytes(1) = &H30 'TX адрес
D_bytes(2) = &H34
D_bytes(3) = &H43
D_bytes(4) = &H10
D_bytes(5) = &H10
D_bytes(6) = &H03
и так далее...

Приёмник будет перенастраиваться на каждый адрес передатчика и считывать информацию.
Приёмник - ввод адреса
'Подготовка к Rx
D_bytes(1) = &H2A 'RX адрес для pipe0
D_bytes(2) = &H34
D_bytes(3) = &H43
D_bytes(4) = &H10
D_bytes(5) = &H10
D_bytes(6) = &H01

считал с первого передатчика.

Приёмник - ввод адреса
'Подготовка к Rx
D_bytes(1) = &H2A 'RX адрес для pipe0
D_bytes(2) = &H34
D_bytes(3) = &H43
D_bytes(4) = &H10
D_bytes(5) = &H10
D_bytes(6) = &H02

считал со второго передатчика...

94 Dimonbav   (22.12.2015 16:37)
Скажи пожалуйста, а можно сделать так чтобы приемник показывал с нескольких передатчиков температуру?
Если есть у тебя такое решение,дай схему или ссылку.
За рание спасибо.

93 max   (14.11.2015 09:50)
Как-то так: http://s006.radikal.ru/i214/1511/3d/df5d36f70780.png

92 AlexVolsk   (13.11.2015 13:04)
Не программист. Просьба выложить скриншот фьюзов для прошивки через Pony Prog. Отправлять на Google онлайн калькулятор не надо. Спасибо.

91 nooby   (04.04.2015 23:28)
привет Всем! Хочу настроить модули на максимальную дистанцию, для этого выставил скорость - 250КБс/сек. А как сделать так чтобы передавать только один байт? Не могу разобраться в регистрах

90 sany2   (21.09.2014 17:12)
Вы ещё забыли 3 пунктик(с радиокота)
Все приемопередатчик в радиусе 1-3 км.

Нехилый бюджет должен быть у того кто возьмётся.

89 Client   (20.09.2014 10:13)
Приветствую всех!
Требуется помощь, естественно не бесплатно!
Необходима передача температуры с 8-и и более передатчиков на один приемопередатчик по радиоканалу. По принципу датчиков давления в шинах авто.
1. Длительность работы от элемента питания 1-2 года. (опрос температуры каждые 5-30 сек.)
2. Все датчики в радиусе около 50 метров.
3. Рабочая температура от -40°С до +125 °С.
4. Оповещение при повышении установленного порога температуры.
5. Оповещение при разряде элемента питания.
6. Оповещение при неработающем датчике.
По всем вопросам писать в личку.

88 Valera18   (14.09.2014 11:11)
Для oleg-him

А, Вы хотите передавать данные GPS на компьютер для программного обеспечения.
Это сложнее, так как NRF24L01 отправляет данные "Байтами", пример:
Dan(1) = &HAA 'Байт 1
Dan(2) = &HBB 'Байт 2
Dan(3) = &HCC 'Байт 3
Dan(4) = &H11 'Байт 4
Dan(5) = &H22 'Байт 5
и так далее...
то-есть если отправлять по пакетно, то выйдет примерно 37 Байт для одной строки.
Тут уже нужно придумывать способ пакетирования большого количества данных с одной строки получаемых с UART, а приёмная часть будет складывать все Байты одной строки - в строку с последующей передачей на компьютер по UART.

Было бы проще, если бы Вы передавали только определённые данные (например: время, дата, широта, долгота, скорость движения, путевой угол, GPS fix - верность данных, количество спутников, высота над уровнем моря).

87 oleg-him   (13.09.2014 15:14)
uart настроен на 9600. для молуля neo-6m есть готовое програмное обеспечение. которое в полной мере понимает данные с приемника. поэтому ничего изменять не надо. а передааем ровно то, что получили с модуля ЖПС

86 Valera18   (12.09.2014 09:45)
Для oleg-him

Во первых, подумайте какие данные с GPS Вам нужны, например: время, дата, широта, долгота, скорость движения, путевой угол, GPS fix - верность данных, количество спутников, высота над уровнем моря.

Так-же важно в каком виде идут данные с GPS по UART, например:
$GPRMC,163736.000,A,5500.4237,N,07323.0355,E,500.15,229.72,040513,,,A*6E
$GPVTG,207.84,T,,M,0.21,N,0.38,K,A*3C
$GPGGA,163736.000,5500.4238,N,07323.0355,E,1,15,1.46,17123.7,M,-29.7,M,,*73
$GPGSA,A,3,01,31,30,11,,,,,,,,,3.11,2.94,1.00*0F
$GPGSV,3,1,11,32,72,258,,31,69,156,29,20,47,292,,01,33,244,22*7F
$GPGSV,3,2,11,14,33,083,,25,30,065,,12,16,030,,23,15,267,17*76
$GPGSV,3,3,11,11,12,232,21,30,08,160,26,22,06,138,*4E
$GPGLL,5500.4489,N,07323.0292,E,131424.000,A,A*55
и так далее...
вполне достаточно строк:
$GPRMC,163736.000,A,5500.4237,N,07323.0355,E,500.15,229.72,040513,,,A*6E
$GPGGA,163736.000,5500.4238,N,07323.0355,E,1,15,1.46,17123.7,M,-29.7,M,,*73

и на какую скорость передачи настроен UART у GPS, например: 9600 или 38400

85 oleg-him   (12.09.2014 02:54)
ннмогу понять как подсунуть передатчику именно данные с UART

84 oleg-him   (12.09.2014 02:50)
прошивку приемника менять не надо?

83 Valera18   (11.09.2014 15:57)
Для oleg-him

Используй микроконтроллер (например Atmega8) как посредник, то-есть "данные GPS" в "Atmega8" в "NRF24L01".
Примеры по работе с NRF24L01 и GPS модулем есть на этом сайте.

82 oleg-him   (11.09.2014 08:07)
Друзья, сейчас готовлюсь к соревнованиям по радиоуправляемым моделям, куплю код за деньги! Я собрал тестовый вариант приемника и передатчика, все заработало! теперь хочу передавать с помощью этих радиомодулей данные UART вот с этого модуля http://www.parkflyer.ru/product/700417/ как в Bascom-AVR преобразовать UART в SPI?

81 Valera18   (26.05.2014 15:56)
Здарова! sasha

Пожалуйста, почитай комментарии тут:
http://avrproject.ru/publ/vstraivaemyj_modul_radioupravlenija_na_nrf24l01/1-1-0-147
http://avrproject.ru/publ/kak_podkljuchit/radiomoduli_nrf24l01/2-1-0-92
http://avrproject.ru/publ/peredacha_izmerennoj_temperatury_po_radiokanalu_svjazka_nrf24l01_i_ds18b20/1-1-0-106
я уже где-то описывал принцип работы nrf24l01 нужным Вам способом.

Опишу вкратце:
1) термометр №1, находится в режиме "передачи", сидит по адресу (индекс)
'Подготовка к TX
D_bytes(1) = &H30 'TX адрес
D_bytes(2) = &H34
D_bytes(3) = &H43
D_bytes(4) = &H10
D_bytes(5) = &H10
D_bytes(6) = &H01
Reset Ss
Spiout D_bytes(1) , 6 'Shiftout байты данных SPI корыта, C_bytes это количество байт, которые будут написаны
Set Ss

D_bytes(1) = &H2A 'RX адрес для pipe0
D_bytes(2) = &H34
D_bytes(3) = &H43
D_bytes(4) = &H10
D_bytes(5) = &H10
D_bytes(6) = &H01
Reset Ss
Spiout D_bytes(1) , 6 'Shiftout байты данных SPI корыта, C_bytes это количество байт, которые будут написаны
Set Ss

'то-есть адрес 34-43-10-10-01
2) термометр №2, находится в режиме "приёма", сидит по адресу (индекс)
'Подготовка к Rx
D_bytes(1) = &H2A 'RX адрес для pipe0
D_bytes(2) = &H34
D_bytes(3) = &H43
D_bytes(4) = &H10
D_bytes(5) = &H10
D_bytes(6) = &H01
Reset Ss
Spiout D_bytes(1) , 6 'Shiftout байты данных SPI корыта, C_bytes это количество байт, которые будут написаны
Set Ss

'то-есть адрес 34-43-10-10-01
3) термометр №1, находится в режиме "передачи", произвёл передачу температуры по адресу (индексу) 34-43-10-10-01
и после передачи переключился в режим "приёма" по адресу (индексу) 34-43-10-10-02.
4) термометр №2, находится в режиме "приёма", произвёл приём температуры по адресу (индексу) 34-43-10-10-01
и после приёма переключился в режим "передачи" по адресу (индексу) 34-43-10-10-02.
5) термометр №2, находится в режиме "передачи", произвёл передачу температуры по адресу (индексу) 34-43-10-10-02
6) термометр №1, находится в режиме "приёма", произвёл приём температуры по адресу (индексу) 34-43-10-10-02.
и далее снова всё повторяется.

Так будет понятнее, режим "Последовательный": термометр №1 -> термометр №2 -> термометр №1
ВАЖНО! учитывайте, что при работе в таком режиме про энергосбережение можно забыть, так как nrf24l01 будет постоянно включен.

Здесь последняя версия кода (прошивки): http://yadi.sk/d/vF7D07Mx9g4QY или http://yadi.sk/d/FypcajG49g4SE

80 sasha   (26.05.2014 11:57)
привет каждый ...... У меня есть проблема с NRF24L01 Я не знаю, как это работает Двусторонняя в свое время ..... У меня есть два устройства, я хочу, чтобы отправить данные из первого устройства ко второму устройство и второй, чтобы отправить ответ на первый в то же время ... пожалуйста, помогите мне я использую BASCOM AVR для написать свою программу

79 Valera18   (11.02.2014 16:04)
Понятно.
1) Тогда для передатчика лучше использовать ATTINY2313A-SU, малое энергопотребление и достаточное количество свободных портов для кнопок.
Здесь описывается понижение энергопотребления и в комментариях: http://avrproject.ru/publ/poleznaja_informacija/ponizhaem_ehnergopotreblenie_ustrojstv_na_mikrokontrollerakh_avr/4-1-0-64
2) Для составного модуля приёмника (которых будет несколько) лучше использовать Attiny13A-SU + NRF24L01 + РЕЛЕ + БП, так как дешёвая себестоимость, поэтому можно сделать несколько составных приёмных модулей.
Заметка: на Ebay продают дешёвые Attiny13A-SU по 5 штук.

+1   Спам
78 domrustika   (11.02.2014 14:11)
к умному дому и стремлюсь)) ну я не думаю что это будет тяжело. тянуть провода не придется так как планировал что каждый приемник будет состоять из 1 радиомодуля+мк+модуль реле . соответственно он будет стоять там где стоит техника телевизор, свет . а пульт для всех них будет 1 чтоб включать и выключать тот или иной приемник.

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






   EasyEDA:  бесплатный редактор схем

   ✓ Создание схем
   ✓ Возможность симуляции
   ✓ Быстрое создание печатных плат
   ✓ Интуитивно понятный интерфейс

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://easyeda.com/order
авторизация
Логин:
Пароль:
Комментарии
Сетевой диммер 220V на микроконтроллере
09.12.2016 - vakulyuk:
Спасибо) Я принцип действия понял, а вот откуда взялась именно цифра 195 не поня...
Сетевой диммер 220V на микроконтроллере
09.12.2016 - exersizze:
pchela5, ну так это в военное, а у нас в мирное время все примерно)) Наше...
Сетевой диммер 220V на микроконтроллере
09.12.2016 - pchela5:
> Полуволна в нашей электросети по времени длится примерно 10 мс

...
Сетевой диммер 220V на микроконтроллере
09.12.2016 - exersizze:
Чтобы понять откуда взялась цифра 195 надо сначала въехать в принцип работы: ког...
Сетевой диммер 220V на микроконтроллере
09.12.2016 - vakulyuk:
А почему минимальный накал при 195? Насколько минимум можно занизить Wt?
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
08.12.2016 - exersizze:
yorx выдалось немного свободного времени, проверил в симуляторе. Проблема...
Логгер температуры 2.0
05.12.2016 - Evgeny6873:
Хотел повторить схему и долго ждал дисплей, два раза заказывал с Китая, пришел. ...
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
01.12.2016 - yorx:
Доброго времени суток, exersizze попробовал Ваш код все равно не работает как на...
Помни об усадке!
30.11.2016 - pchela5:
Автомобильные никакие не лезут?


Лучшие цены на 3D принтеры
успей сделать себе подарок к Новому Году! ;)


Prusa i3

Prusa i3 от 12500 р.



Rostoсk

Rostock от 15000 р.