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

Передача измеренной температуры по радиоканалу. Связка 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
Просмотров: 100705 | Комментарии: 120 | Теги: радиопередача, 18b20 | Рейтинг: 4.6/24
Всего комментариев: 120« 1 2 3 4 »
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 чтоб включать и выключать тот или иной приемник.

77 Valera18   (11.02.2014 13:46) [Материал]
Да, такое возможно. Идея интересная. Всё это напоминает умный дом :)
Труднее будет связать управляемые устройства (реле света, реле телевизора) с одним приёмником, так как приёмник находится в одном месте, а управляемые устройства в разных местах квартиры, получается нужно тянуть провода от устройств до приёмника с релюшками. Как у Вас идёт проводка (как будете подключать устройства к релюшкам)?

76 domrustika   (11.02.2014 13:09) [Материал]
спасибо! я пытаюсь соединить эту статью и http://avrproject.ru/publ/vstraivaemyj_modul_radioupravlenija_na_nrf24l01/1-2-0-147
чтобы сделать так сказать радио-розетки. будет 1 приемник и несколько передатчиков в разных местах квартиры и на каждом будет висеть готовый модуль реле, который по кнопке с передатчика бы включал устройство подключенное к реле(свет, телевизор )
вот...
реально ли такое реализовать?)

75 Valera18   (11.02.2014 12:41) [Материал]
Для domrustika

Вот код для первого передатчика, аналогично и для других передатчиков:
http://yadi.sk/d/vc6qQpiCHgcZC
Напоминаю, что код в комментарии №22 является тестовым (то-есть не проверен, но работать должен).

Над каким устройством Вы работаете?

74 domrustika   (10.02.2014 23:32) [Материал]
Valera18,
скачал Ваш код с 22 комментария но так и не допер куда там вставить код для датчика 18b20 :( не могли бы Вы залить доделанный код ?

73 Le_Fleurs   (06.02.2014 01:15) [Материал]
А будет ли 2-я версия этого проекта.
добавить внутренний датчик DHT22 и такой же будет наружный что бы измерять влажность
1-я строчка это домашний 2-я уличный, так же перемычкой задавать интервал передачи уличного датчика. К примеру на выбор передавать данные каждые 5 сек или 1 раз в 5 минут. что продлит срок службы батарейке

+1   Спам
72 amv2000   (30.12.2013 11:22) [Материал]
Да нет это только у Вас наверное, а модели на NRF24L01 нет, это просто рисунок.

71 T1nK   (30.12.2013 00:07) [Материал]
Кстати тут при регистрации на сайте, а так же добавлении комментариев вываливается XML в браузер, типа ответ AJAX... Надеюсь скоро поправите, а то пот у меня коммент случайно задулировался теперь, а может ещё у кого(((

70 domrustika   (25.12.2013 14:48) [Материал]
тут в коментах писали что лучше использовать собаку. ее ведь надо включать в фьюзах да? может кто подсказать в sina prog как выставить фьюзы?

69 sany2   (25.12.2013 14:22) [Материал]
Ну выходит что так.

68 domrustika   (24.12.2013 12:24) [Материал]
подождите.. этот код же нужно вставлять в передатчик.. что же получается к нему все равно кнопку тянуть придется?

67 sany2   (18.12.2013 18:52) [Материал]
Да так и ставить:
Перед Do:

Config Int0 = Low Level
On Int0 Button:
Enable Interrupts
Enable Int0

Перед Loop:
powerdown

Ну и в самом конце

Button:
Return

66 domrustika   (18.12.2013 16:36) [Материал]
exersizze, спасибо. все получилось работает. огромная просьба если не трудно куда вставить кусок кода этот
Config Int0 = Low Level
On Int0 Button:
Enable Interrupts
Enable Int0
со статьи про энергосбережение, что бы при нажатии на кнопку только просыпался передатчик и уходил в powerdown?
можешь чуть доделанный BAS файл выложить?

+1   Спам
65 exersizze   (15.12.2013 19:43) [Материал]
В таком случае удали все кроме кода отвечающего за работу с дисплеем и проверь правильность  подключения.

64 domrustika   (15.12.2013 01:37) [Материал]
в том то и дело никакой текст не выводит(( пробовал сразу при старте программы вывести надпись privet. так нет ничего не выводит, а светодиод загорается(

63 exersizze   (14.12.2013 10:27) [Материал]
Где-то косяк явно, не может он сам пропустить участок инициализации и сразу перейти в основной цикл. Попробуй вывести текст какой нибудь заместо принятых данных.

62 domrustika   (13.12.2013 23:11) [Материал]
ребят такое дело . собрал все в точности как тут. все железо такое же мега 8, частота только 8 мгц. пробовал 16 ставить тоже самое. разница только в дисплее - тот же 44780 НО 20Х4 . код остальной абсолютно такой же как тут. поменял только вот-
Config Lcd = 20 * 4
Config Lcdpin = Pin , Rs = Portd.0 , E = Portd.1 , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0

экран не проходит инициализацию. светодиод загорается. как будто код с выводом на дисплей просто пропускается... в общем ничего не выводится на экран.. что скажете?

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

61 exersizze   (07.11.2013 00:46) [Материал]
Я не встречал модели трансивера для симулятора, да там особо симулировать то и нечего. Что касается использования управляющего трансивером контроллера, то без него никак не обойтись. По крайней мере для NRF24L01, на шине он работает как ведомое устройство. За другие нордики не скажу, не имел с ними опыта.

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






авторизация