[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Форум » форумы » Обсуждение материалов сайта » Nrf24L01+ термометр и ещё всяко разно.
Nrf24L01+ термометр и ещё всяко разно.
kip96Дата: Вторник, 08.04.2014, 14:05 | Сообщение # 101
Группа: Свой человек
Сообщений: 170

Статус: Offline
Исходник. 
exersizze, входное сопротивление всё равно большое. Корректировку не проводил, тини13 и так забита, да и опытным путём промерял- всё в пределах 1С. Но корректировку можно провести и на приёмнике.


 
LIA060Дата: Вторник, 08.04.2014, 15:25 | Сообщение # 102
Группа: Пользователи
Сообщений: 3

Статус: Offline
Цитата kip96 ()
MMA7361L — 3-осевой, аналоговый датчик ускорения.
Можно пример как с ним работать? У меня этот http://www.buyincoins.com/item/10248.html


 
kip96Дата: Вторник, 08.04.2014, 17:04 | Сообщение # 103
Группа: Свой человек
Сообщений: 170

Статус: Offline
Дык аналоговый-же. Измеряйте АЦП на каналах X,Y,Z. В зависимости от  положения будет свой уровень напряжения на этих выходах. SL- контакт сна. Что-бы разбудить, подать "1". GS- выбор уровня измерения(чувствительность), 0G- будет "1"- когда он в невесомости  ( к примеру падает если на земле smile ). ST-тест какой-то, не знаю, но он нафик не нать.

 
noner2012Дата: Вторник, 08.04.2014, 21:40 | Сообщение # 104
Группа: Пользователи
Сообщений: 7

Статус: Offline
Цитатаkip96

Вопрос, зачем два раза выполняется?:
W = Getadc(3) 
Время на инициализацию датчика?


 
kip96Дата: Четверг, 10.04.2014, 21:07 | Сообщение # 105
Группа: Свой человек
Сообщений: 170

Статус: Offline
Видимо так. Первое измерение занижается. У меня есть, конечно этому своё объяснение, но тне факт, что оно правильное. Факт, что второе измерение близко к истине. Я с этим вопросом не разбирался.

 
noner2012Дата: Пятница, 11.04.2014, 10:32 | Сообщение # 106
Группа: Пользователи
Сообщений: 7

Статус: Offline
kip96, Если можно еще пару вопросов.
$crystal = 600000  это задается частота? тогда где-то должна быть настройка прескалера. фьюзами же ее не выставищь.

Никогда еще не работал с Watchdog. Его надо включать фьюзами?

Upd. Все. разобрался, 0.6Mhz получаем из 4.8+CKDIV8.
WDTON включать надо.

Uupd. Не, не получается прочитать ответ с передатчика. Можно еще посмотреть на исходники приемника?

Может кто даст ссылку на хорошее описание NRF24L01? Даташит для меня сложноват. sad




Сообщение отредактировал noner2012 - Пятница, 11.04.2014, 16:14
 
kip96Дата: Пятница, 11.04.2014, 21:34 | Сообщение # 107
Группа: Свой человек
Сообщений: 170

Статус: Offline
Исходник приёмника.... я там сам уже с трудом  разбираюсь, Приёмник в составе метеостанции на М328.
В исходнике коментарии иногда старые попадаются. Точнее они не соответствуют(просто некогда было корректировать)Посмотрите в настройках приёмника-
D_bytes(1) = Write_reg + Rf_setup
D_bytes(2) = &H07.  
Приёмник должен быть настроен на 1мБ., 
В даташите смотрите карту регистров. Всё там легко переводится и понятно, что можно переключить на свой лад.


 
noner2012Дата: Пятница, 11.04.2014, 21:57 | Сообщение # 108
Группа: Пользователи
Сообщений: 7

Статус: Offline
Я правильно понимаю, что здесь адрес передатчика:
D_bytes(1) = Write_reg + Rx_addr_p0 'RX адрес для pipe0
D_bytes(2) = 2
D_bytes(3) = &H43
D_bytes(4) = &H10
D_bytes(5) = &H10
D_bytes(6) = 2
Spiout D_bytes(1) , 6

т.е. &Н0243101002 и такой же адрес должен быть в приемнике? И в Rx_addr_p0  и в Tx_addr?




Сообщение отредактировал noner2012 - Пятница, 11.04.2014, 22:18
 
kip96Дата: Пятница, 11.04.2014, 22:35 | Сообщение # 109
Группа: Свой человек
Сообщений: 170

Статус: Offline
Да, адреса должны быть одинаковы, адрес для pipe0 в передатчике и приёмнике. Tx_addr для передачи ответа об удачном приёме.

 
noner2012Дата: Воскресенье, 13.04.2014, 20:49 | Сообщение # 110
Группа: Пользователи
Сообщений: 7

Статус: Offline
А как можно убедиться, что передатчик (который на attiny13) работает? Диод, повешенный на 3-ю ногу, раз в ~8 сек. мигает, но бухта МГТФ-а (~100м) подключенная к осциллографу и лежащая на передатчике в момент моргания диода - ничего не кажет. Или не должОн?

 
noner2012Дата: Четверг, 17.04.2014, 19:53 | Сообщение # 111
Группа: Пользователи
Сообщений: 7

Статус: Offline
C передатчиком разобрался, работает. Теперь другая проблема. Напряжение батареи - передается все время одно число, при напряжении питания 2-5V Датчик температуры не подключал, но он вроде и не должен мешать/помогать этому.

 
kip96Дата: Пятница, 18.04.2014, 20:55 | Сообщение # 112
Группа: Свой человек
Сообщений: 170

Статус: Offline
Для измерения напряжения, термометр нужен. Если посмотрите код, то увидите, что напряжение с термодатчика измеряется при разных опоркаках. Из разницы и вычисляется напряжение батареи. На ножке, должен быть какой-то потенциал. В тини13 нет возможности измерить напряжение внутренним режимом, как например в Меге48. А при помощи этой хитрости, отказываемся от делителя напряжения, чем существенно снижаем энергопотреблениен, точнее доводим его до минимально возможного.

 
noner2012Дата: Суббота, 19.04.2014, 16:44 | Сообщение # 113
Группа: Пользователи
Сообщений: 7

Статус: Offline
мне показалось, что напряжение батареи определяется вот так:
http://www.rlocman.ru/shem/schematics.html?di=73220


 
alec220Дата: Пятница, 25.07.2014, 23:51 | Сообщение # 114
Группа: Свой человек
Сообщений: 3

Статус: Offline
а мне как-то с набором аурдино достался аналоговый алко метр, (на ебее их полно) его тоже на настенные часы можно вывести? biggrin

 
sany2Дата: Суббота, 26.07.2014, 09:26 | Сообщение # 115
Группа: Проверенные
Сообщений: 107

Статус: Offline
Это же сколько выпить  надо , чтоб откалибровать...

 
GSVДата: Четверг, 28.08.2014, 19:14 | Сообщение # 116
Группа: Друзья
Сообщений: 38

Статус: Offline
Всем привет.
Не попадался ли кому пример работы Nrf24L01 примерно по такому алгоритму:
1-е устройство(пульт ДУ)-только передача
2-е устройство(исполнительное устройство,ИУ)-прием/передача
3-е устройство (устройство мониторинга,УМ)-только прием
Нажимаем кнопку на пульте ДУ, код нажатой кнопки попадает на приемник ИУ.ИУ включает,например, реле.По факту включения реле ИУ переключается в режим передачи и отправляет на УМ код,подтверждающий включение реле,после этого ИУ переключается в режим приема и ждет следующую посылку.
Буду благодарен за любую информацию.


 
kip96Дата: Воскресенье, 16.11.2014, 16:02 | Сообщение # 117
Группа: Свой человек
Сообщений: 170

Статус: Offline
Всем привет! Термометр на nrf24l01 получил развитие. Дело в том, что температуру измеряем относительно опорки, а на контроллере она может быть, если верить Евстифееву, от 1 до 1.2 вольт,
Она стабильна, но у каждого мк своя, Поэтому и коэффициент пересчёта разный. Каждый раз пересчитывать и менять прошивку муторно, поэтому сделал такой девайсик. Трансивер, на той же плате с мк Атмега168, кварц 11.0592, скорость 115200
Программа на пурике. В программе выставляется период посылок (время сна между посылками) и номер канала. во общем смотрим видео
всё на видео.


 
exersizzeДата: Воскресенье, 16.11.2014, 19:17 | Сообщение # 118
Группа: Администраторы
Сообщений: 723

Статус: Offline
kip96, ну что сказать - класс! yes программой для компа поделишься? или я ее где-то пропустил?

 
maxДата: Воскресенье, 16.11.2014, 19:48 | Сообщение # 119
Группа: Друзья
Сообщений: 170

Статус: Offline
Прикольно.

 
ScorpushkaДата: Воскресенье, 16.11.2014, 21:36 | Сообщение # 120
Группа: Свой человек
Сообщений: 33

Статус: Offline
хотелось бы получить если не исходник по приложению на Пк, то хотя бы ее кусок для повторения

 
kip96Дата: Понедельник, 17.11.2014, 11:21 | Сообщение # 121
Группа: Свой человек
Сообщений: 170

Статус: Offline
Да, конечно! Вчера у меня беда с компом случилась.Только видео загрузил, флэшку с видео вытаскиваю, и блым!!! wacko Как специально! Вечером постараюсь победить его и выложу. 
Если помните, термометр имеет внутренние софтовые часы, и посылки отправляет по секундам.
Идея такая - синхронизировать часы всех датчиков и что-бы они отправляли посылки, не мешая друг-другу.


 
kip96Дата: Понедельник, 17.11.2014, 19:44 | Сообщение # 122
Группа: Свой человек
Сообщений: 170

Статус: Offline
Выкладываю. В архиве программа для ПК и исходник. Прошивки на термометр и трансивер (пока только прошивки. в исходниках много мусора - не красиво, подчищу- выложу) Пурик начал изучать пару недель назад, так что критикуйте, подсказывайте, исправляйте. wink
Добавил кнопку EXIT для вывода термодатчика из програмного режима с компа, чтоб не дёргать туда-сюда. Вот как сделать что бы при нажатии спрашивал-"ВЫ точно хотите это сделать?" ?
З.Ы. Спасибо maxу, добавил пару сообщений, архив обновил
Прикрепления: 4875867.rar (45.2 Kb)




Сообщение отредактировал kip96 - Понедельник, 17.11.2014, 23:39
 
maxДата: Понедельник, 17.11.2014, 20:57 | Сообщение # 123
Группа: Друзья
Сообщений: 170

Статус: Offline
Цитата kip96 ()
Вот как сделать что бы при нажатии спрашивал-"ВЫ точно хотите это сделать?" ?

Как вариант заменить строки 272, 273 на эти:
Код
          Case 15
             Select MessageRequester("КОНФИГУРАТОР 24L01+", "ВЫ точно хотите это сделать?", #MB_YESNO|#MB_ICONWARNING|#MB_DEFBUTTON2)
   Case #IDYES
     ComOut("R")
   Case #IDNO
EndSelect

Да, и в архиве нет файла иконки.


 
kip96Дата: Понедельник, 17.11.2014, 22:58 | Сообщение # 124
Группа: Свой человек
Сообщений: 170

Статус: Offline
victory , то что доХтор прописал! Пурик рулит!
иконку добавил.




Сообщение отредактировал kip96 - Понедельник, 17.11.2014, 23:03
 
SVNДата: Четверг, 20.11.2014, 10:23 | Сообщение # 125
Группа: Пользователи
Сообщений: 2

Статус: Offline
Интересные идеи и разработки, но... Для какого-то заказчика в перспективе? Вероятность совпадения разработанного девайса с реальной потребностью заказчика практически равна нулю. 
    И вот наконец-то появился долгожданный! Как вы, гениальные энтузиасты, будете с ним работать? Наверняка придёться дорабатывать уже сделанное и всё по памяти или листингу в программе. А комментов минимум или вообще не оствляете...
    Представте, что я и есть тот самый заказчик. Но не самый "удобный" для начинающих и привыкших к свободе мысли. В настоящей реальности программирование, которое описывается практически на всех форумах, называется кодировкой или переводом текста алгоритма в команды заданного микроконтроллера. Сказанное не простые фантазии, а опыт разработки. Желающие освоить профессиональные методики разработки прошу откликнуться. 
Прикрепления: __2.doc (60.5 Kb)


 
sany2Дата: Четверг, 20.11.2014, 23:31 | Сообщение # 126
Группа: Проверенные
Сообщений: 107

Статус: Offline
Желающие найдутся.Но  на рыбалку ведь ездят не только за рыбой smile .А с таким подходом вся рыбалка будет заключаться в походе в магазин за рыбой.



Сообщение отредактировал sany2 - Четверг, 20.11.2014, 23:31
 
SVNДата: Пятница, 21.11.2014, 07:47 | Сообщение # 127
Группа: Пользователи
Сообщений: 2

Статус: Offline
Большинство на форуме работают независимо и расчитывают, что их результаты работы кому-нибудь пригодятся. Я тоже так работал, пока мне не показали методику работы по Техническому заданию. Перестроиться было сложно. Зачем портить бумагу, когда можно все комментарии и пояснения вносить в листинг программы? Этот метод гарантирует вам неприкосновенность вашего результата от воровства и абсолютную свободу. Но каждому хочется рыбы и не только её. Именно поэтому "желающие найдутся", но придётся решить проблемы психологического или, точнее, этического характера. Следовательно, необходимо сначала познакомиться. Лично я начал именно с этого сайта по причине его малочисленности. "Заболтать" идею просто некому.
На "крутом" форуме на одного желающего приходится несколько болтунов или скучающих "имитаторов" преклонного возраста, избавиться от их присутствия практически невозможно.




Сообщение отредактировал SVN - Пятница, 21.11.2014, 07:50
 
mvn77Дата: Среда, 24.06.2015, 02:44 | Сообщение # 128
Группа: Пользователи
Сообщений: 7

Статус: Offline
В коде используется отключение питаня для реинициализации NRF в виде "U_24l01 = 0 : Waitms 30 : U_24l01 = 1 : Waitms 30           'Выключение nRF24L01" А если NRF запитана на постоянку, как правильно выполнить переход из прима на передачу и наоборот?



Сообщение отредактировал mvn77 - Среда, 24.06.2015, 18:59
 
a5020kДата: Понедельник, 29.06.2015, 14:36 | Сообщение # 129
Группа: Свой человек
Сообщений: 43

Статус: Offline
Когда приемник

D_bytes(1) = Write_reg + Config_nrf                         'Установки  CONFIG-> PRX=1(RX_device), PWR_UP=1, CRC 2bytes,
D_bytes(2) = &B00001111                                     ' 00001111(0F)
                               '  -
                               '  -
                               '  -
                               '  -
                               '  - Enable - 1 CRC
                               ' - CRC encoding scheme - 2 bytes
                               ' - POWER - 1 - POWER UP (0-POWER DOWN)
                               ' - RX/TX выбор - 1 RX (0 - TX)

 Call W_register(2)                                         'запись в nrf по SPI

Когда передатчик тоже самое только &B00001110
Переключение должно происходить после перехода через POWER DOWN
Отключаете переходите включаете.


 
kip96Дата: Понедельник, 29.06.2015, 22:16 | Сообщение # 130
Группа: Свой человек
Сообщений: 170

Статус: Offline
Цитата егоa5020k ()
Переключение должно происходить после перехода через POWER DOWN Отключаете переходите включаете.
это обязательно? у меня четыре приёмника в сети работают как ретрансляторы. Т.е при получении определённого кода, повторяют его в эфир, просто переходя на ипередачу, потом опять на приём. Сбоев не было. 
Может что в даташите не дочитал umnik


 
a5020kДата: Вторник, 30.06.2015, 08:53 | Сообщение # 131
Группа: Свой человек
Сообщений: 43

Статус: Offline
Я очень рад за вас и за ваши ретрансляторы. Выложите человеку код и поясните что делать.

 
kip96Дата: Вторник, 30.06.2015, 21:50 | Сообщение # 132
Группа: Свой человек
Сообщений: 170

Статус: Offline
Слава Богу, хоть кто то рад за меня! yahoo
Вы советуете человеку переходить на передачу/приём  через POWER DOWN, и я прошу просто разъяснить почему. В целях самообразования.


 
AlmazДата: Вторник, 04.08.2015, 18:17 | Сообщение # 133
Группа: Пользователи
Сообщений: 1

Статус: Offline
Здравствуйте!
Меня тоже интересует вопрос - как можно без выключения питания переходить из режима передачи в режим приема и наоборот.  У меня при переключении с режима передачи на прием на выводе IRQ  модуля остается лог. 0.


 
kestrelДата: Вторник, 08.09.2015, 21:34 | Сообщение # 134
Группа: Проверенные
Сообщений: 52

Статус: Offline
datasheet ничего не говорит про выключение питания при переходе с приема на передачу и наоборот, переход осуществляется записью соответствующего бита в регистре config. Ссылка на описание модуля на русском (инженерном!) http://aterlux.ru/index.php?page=article&art=nrf24l01p, мне это помогло разобраться. как это работает:), а то читая комментарии к коду долго не мог понять как он конфигурируется (например, что то типа этого: положи в корыто 5 байт регистрации Pload? ну и т.д.)
Kip96 отдельное спасибо за публикацию его работ с модулем.


 
kestrelДата: Воскресенье, 31.01.2016, 18:48 | Сообщение # 135
Группа: Проверенные
Сообщений: 52

Статус: Offline
пробую nrf24L01 режиме  MultiCeiver (пока исп. 3 передатчика), конфигурирую все по datasheet`у. с передатчиками pipe0 и pipe1 все нормально,  а вот pipe2 не могу запустить, все упирается в запись Rx_addr_p2
D_bytes(1) = Write_reg + Rx_addr_p0                         '(data pipe 0)
D_bytes(2) = &H78
D_bytes(3) = &H78
D_bytes(4) = &H78
D_bytes(5) = &H78
D_bytes(6) = &H78
Call W_register(6)
'/0x0B--------------------------------------------------------------------------
D_bytes(1) = Write_reg + Rx_addr_p1                         '(data pipe 1)
D_bytes(2) = &HB3
D_bytes(3) = &HB4
D_bytes(4) = &HB5
D_bytes(5) = &HB6
D_bytes(6) = &HF1
Call W_register(6)
'/0x0C--------------------------------------------------------------------------
D_bytes(1) = Write_reg + Rx_addr_p2                         ' (data pipe 2)
D_bytes(2) = &HCD
Call W_register(2)
правильно я делаю последнюю запись? отсюда:
0x0C-0x0F RX_ADDR_P2 - RX_ADDR_P5 8-битные регистры, задающие значения младшего байта адреса для каналов 2-5. Значения старших 32 бит берутся из регистра RX_ADDR_P1.
Значение регистров по умолчанию: 0xC30xC40xC50xC6
смотрю дамп регистров, при такой записи
RX_ADDR_P2: CDCDCDCDCD.
написал много может кто подсажет


 
kestrelДата: Понедельник, 01.02.2016, 20:09 | Сообщение # 136
Группа: Проверенные
Сообщений: 52

Статус: Offline
а у Вас получилось запустить nrf24l01 в этом режиме?
по идее мы можем прочитать полные адреса pipe2-pipe5, в моем случае
он должен быть таким &HB3B4B5B5_CD pipe2
вот здесь обсуждалась аналогичная проблема и была решена
https://devzone.nordicsemi.com/questio....mitters
насколько я понял надо было поменять порядок записи адреса, но хотелось чтобы кто-то разъяснил как это сделать.


 
kestrelДата: Вторник, 02.02.2016, 19:00 | Сообщение # 137
Группа: Проверенные
Сообщений: 52

Статус: Offline
kip96, если это возможно кинь мне личку пример кода, интересует только приемник и только режим MultiCeiver
заранее спасибо


 
kip96Дата: Вторник, 02.02.2016, 22:37 | Сообщение # 138
Группа: Свой человек
Сообщений: 170

Статус: Offline
Доступно только для пользователейЭто основные настройки, которые я вставляю в начале кода. Дальше как обычно. Коды я в теме сюда все выкладывал. Сейчас просто коды так обросли, что я порой сам путаюсь, что я в них делаю.

 
kestrelДата: Среда, 03.02.2016, 19:18 | Сообщение # 139
Группа: Проверенные
Сообщений: 52

Статус: Offline
kip96, спасибо за участие, поменял адресацию на вашу, все заработало.
Три передатчика четко отправляют температуру и напряжение.
Прикрепления: 9600159.jpg (177.4 Kb)


 
qewinДата: Воскресенье, 07.02.2016, 21:27 | Сообщение # 140
Группа: Пользователи
Сообщений: 51

Статус: Offline
Здравствуйте.А вот это пойдет  nRF24L01 smd
Прикрепления: 7242606.jpg (56.9 Kb)


 
kip96Дата: Понедельник, 08.02.2016, 13:07 | Сообщение # 141
Группа: Свой человек
Сообщений: 170

Статус: Offline
Если там nRF24l01, то подойдёт. Но чаще там  "похожий nRF24l01" (так переводчик пишет) Он не подходит. Где -то в нете обсуждались такие модули. Запустить их не удалось. Если найдёте решение, то выложите ссылку, пожалуйста.

 
qewinДата: Воскресенье, 14.02.2016, 23:35 | Сообщение # 142
Группа: Пользователи
Сообщений: 51

Статус: Offline
Да оказывается модули у меня  SE8R01. Пока нашел только на Arduinе пример. Попробовал (кое как разобрался) работает.Теперь бы разобраться и перекинуть в Баском.

1.Vcc (1.8-3.6V)
2.GND
3.CE
4.CS
5.SCK
6.MOSI
7.MISO
8.IRQ
Прикрепления: 6494302.jpg (59.2 Kb) · se8r01_rx_tx_2M.rar (5.1 Kb)




Сообщение отредактировал qewin - Понедельник, 15.02.2016, 11:27
 
a5020kДата: Среда, 03.08.2016, 14:21 | Сообщение # 143
Группа: Свой человек
Сообщений: 43

Статус: Offline
Для информации ..
Сегодня ровно год как решил провести эксперимент в полевых условиях т.е на даче.
Смонтировал ...
GSM +управление (газ котел + 3 насоса основных и т.п.) + 5 датчиков (1 улица - 4 в доме)  на NRF24 ( 4 на батарейки 123A) + 1 датчик на CR2032 ( чисто показометр без принятия участия в работе) в качестве эксперимента на сколько хватит.
Алгоритм работы датчиков следующий ..
5 датчиков на NRF24 (на датарейки 123A)  - 1 раз в 1 минуту и работает как передатчик всегда  - 1д- улица 4д- дом.
1 датчик на CR2032 -датчик вещает в эфир 1 раз в 3 минуты и работает как передатчик всегда - дом.
Сборка:
Atmega 48a
nrf24 данные в эфир
TC1047a измерение температуры.
Atmega 48a - сам измеряет напряжение питания.
Просыпается по DOG таймеру (без перезагрузки - по прерыванию) считает пора ли измерять, посылать,моргнуть светодиодом если пора - все делает и спать..
В эфир посылается 3 значения - номер датчика, температура, напряжение (данные готовые - преобразованные).
123A  - GP черного цвета - на тот момент самые дорогие - начальное напряжение (из коробки)  - 3.2..4 в.
CR2032 - купленная в магазине Ikea (6 шт желтая упаковка) цены не помню, но не дорогие - 3.21в.
Через год в датчиках
1 - 123А - просто сдохла - напряжение упало в 0 за день до Нового года и причем как всегда самая основная по которой регулирую температуру на 1 этаже.
Остальные 4 - 3.02..0 и в сне и в передаче.
CR2032 - 3.0 в режиме сна 2.91..3 в режиме отправки на сколько тестер успевает показать.
Данные по тестеру и в показаниях расходятся в 0.02 скорее всего - погрешность..
Причем по виду уличный датчик (в тени под балконом  в 3 метрах от земли) показывает немного лучший результат. Остальные работали в режиме 3 дня температура 23-24 градуса (выходные) остальные дни с падением до 10 С и с подъемом до 24 С.
Работают без выключения..
К чему я это все ... - наши алгоритмы в теме работают и я бы сказал, что неплохо ...


 
exersizzeДата: Пятница, 05.08.2016, 15:30 | Сообщение # 144
Группа: Администраторы
Сообщений: 723

Статус: Offline
Неплохо, неплохо)

 
kip96Дата: Пятница, 05.08.2016, 19:41 | Сообщение # 145
Группа: Свой человек
Сообщений: 170

Статус: Offline
У меня термометр работает уже 1,5 года на CR2032. Вторая зима приближается. Напряжение -2,98. 1 раз в 20 сек.
Перед этим работал, и потом быстро села батарейка. Оказалось, что смд кондёры(глина) , видимо, критичны к условиям. Хоть и герметичный корпус, но видимо не достаточно. Короче после замены кондёров, пару раз искупал плату в лаке, и всё ОК!
Цитата
В эфир посылается 3 значения - номер датчика, температура, напряжение (данные готовые - преобразованные).
Напряжение отправляю одним байтом. Второй байт всегда равен 1, зачем его отправлять?. Освободившийся байт, использую как индикатор ретранслятора. 
каждый ретранслятор выставляет свой бит, что бы потом сам себя не передавать. Итого - до 8 ретрансляторов можно. Я справляюсь тремя. В качестве ретрансляторов - любые стационарные устройства с nRF. Главные - первичные часы, которые каждый час (или по запросу) синхронизируют все устройства.


 
a5020kДата: Понедельник, 08.08.2016, 21:06 | Сообщение # 146
Группа: Свой человек
Сообщений: 43

Статус: Offline
Да мне кажется тоже не плохо .. главное экономия газа получилась ..
Я не старался использовать CR по причине того, что у меня  дом  под охраной (платной) и в каждой комнате висит беспроводной датчик охраны в котором стоит 123А и который отказывается работать от 2.9 вольт.А так как одна замена это 12 штук и раз в год то у меня их в коробке уже очень много. И смысл был в том чтобы использовать напряжение от 2.4 (мин ТС) до мах что остается от бу батарейки из сигнализации. Заметил еще одно дорогие 123А дохнут не доживая до 2.8 - сразу в 0. Дешевые падают до 2.0. И здорово растягивают время замены.
Не удобство только калибровка аналогового (зато дешевый) датчик температуры и измерение напряжения. Почему выбрал алгоритм который написал... старался как можно проще ...сейчас после года смотрю- как будто не я писал...
Лаком залил только уличный и тот который в подвале. И еще расстояние между приемником и датчиками 5-8 метров и идут они через бетонные перекрытия и стены. NRF в приемнике без усилителя работает но принимает через раз. Заказал с NFR + усилитель проблем больше нет.
Сейчас идея перейти на компактный sim800l, на экран с тачем и на sht21 (дорогой но решает все проблемы и работает до 2.1 v)  В рабочих датчиках  емкости на питании нет
To exersizze читал что вы заморачивались бесперебойным питанием - получилось что нибудь?




Сообщение отредактировал a5020k - Понедельник, 08.08.2016, 21:12
 
exersizzeДата: Четверг, 11.08.2016, 17:38 | Сообщение # 147
Группа: Администраторы
Сообщений: 723

Статус: Offline
Не, до дела так руки и не дошли.

 
a5020kДата: Пятница, 12.08.2016, 12:07 | Сообщение # 148
Группа: Свой человек
Сообщений: 43

Статус: Offline
Не совсем по теме ..
Попробовал вашу схему (по форуму по переключению на батарею) в принципе работает, но напряжение увеличивал до 5 v - т.к. на диоде 0.5 ( моет диоде) падение и поставил схему DC (UP и DOWN при входе 2.0 v - 6 v  выход всегда 4.0v ) sim900D при переключении работает уверенно... не сбрасывается (не в полевых условиях) ... одно но у меня вышка МТС рядом и ток SIM 900D при поиске не превышает 200 мА при работе 100mA .. что будет при 2A и преобразователе с SIM пока не ясно. Такая же схема преобразователя для 3.3 v для контролера. Будет ли 100% одновременное переключение...?  Если соберу и заработает то ..выложу..


 
rulezzznvДата: Четверг, 15.09.2016, 08:37 | Сообщение # 149
Группа: Проверенные
Сообщений: 1

Статус: Offline
Парни дайте пожлусйста схему с attiny2313 или attiny13 и прошивку спасибо)))

 
m-mishelДата: Воскресенье, 02.10.2016, 20:37 | Сообщение # 150
Группа: Проверенные
Сообщений: 7

Статус: Offline
термометр это хорошо,возникла идея и измерять напряжение акб, к примеру стоит авто под окном зимой и не известно заведешься сегодня или нет ->меряем напряжение акб + температуру =>передаем. на приемнике устанавливаем зуммер + под меню для установки ограничений на срабатывание порогов темп и напряжения акб. хотя я думаю температура не сильно роль играет как напряжение на акб. 
Начал изменять исходник из статьи "передача температуры" под напряжение ,не могу скомпилировать окончательно выкинув при это все что связано с датчиком DS18B20. ЗАПУТАЛСЯ В КОДЕ.
Код$regfile = "M8def.dat"
$crystal = 16000000
$baud = 19200
$hwstack = 40
$swstack = 20
$framesize = 40

'=== Declare sub routines +++++++++++++++++++++++++++++Работаем с передатчиком===НАЧАЛО
Declare Sub R_register(byval Command As Byte , Byval C_bytes As Byte)
Declare Sub W_register(byval C_bytes As Byte)

'=== Constante ===
'Define nRF24L01 interrupt flag's
Const Idle_int = &H00                                       'Idle, no interrupt pending
Const Max_rt = &H10                                         'Max #of Tx Retrans Interrupt
Const Tx_ds = &H20                                          'Tx Data Sent Interrupt
Const Rx_dr = &H40                                          'Rx Data Received

'SPI(nRF24L01) commands

Const Read_reg = &H00                                       'Define Read Command To Register
Const Write_reg = &H20                                      'Define Write Command To Register
Const Rd_rx_pload = &H61                                    'Define Rx Payload Register Address
Const Wr_tx_pload = &HA0                                    'Define Tx Payload Register Address
Const Flush_tx = &HE1                                       'Define Flush Tx Register Command
Const Flush_rx = &HE2                                       'Define Flush Rx Register Command
Const Reuse_tx_pl = &HE3                                    'Define Reuse Tx Payload Register Command
Const Nop_comm = &HFF                                       'Define No Operation , Might Be Used To Read Status Register
'SPI(nRF24L01) registers(addresses)
Const Config_nrf = &H00                                     'Config' register address
Const En_aa = &H01                                          'Enable Auto Acknowledgment' register address
Const En_rxaddr = &H02                                      'Enabled RX addresses' register address
Const Setup_aw = &H03                                       'Setup address width' register address
Const Setup_retr = &H04                                     'Setup Auto. Retrans' register address
Const Rf_ch = &H05                                          'RF channel' register address
Const Rf_setup = &H06                                       'RF setup' register address
Const Status = &H07                                         'Status' register address
Const Observe_tx = &H08                                     'Observe TX' register address
Const Cd = &H09                                             'Carrier Detect' register address
Const Rx_addr_p0 = &H0A                                     'RX address pipe0' register address
Const Rx_addr_p1 = &H0B                                     'RX address pipe1' register address
Const Rx_addr_p2 = &H0C                                     'RX address pipe2' register address
Const Rx_addr_p3 = &H0D                                     'RX address pipe3' register address
Const Rx_addr_p4 = &H0E                                     'RX address pipe4' register address
Const Rx_addr_p5 = &H0F                                     'RX address pipe5' register address
Const Tx_addr = &H10                                        'TX address' register address
Const Rx_pw_p0 = &H11                                       'RX payload width, pipe0' register address
Const Rx_pw_p1 = &H12                                       'RX payload width, pipe1' register address
Const Rx_pw_p2 = &H13                                       'RX payload width, pipe2' register address
Const Rx_pw_p3 = &H14                                       'RX payload width, pipe3' register address
Const Rx_pw_p4 = &H15                                       'RX payload width, pipe4' register address
Const Rx_pw_p5 = &H16                                       'RX payload width, pipe5' register address
Const Fifo_status = &H17                                    'FIFO Status Register' register address

Dim D_bytes(33) As Byte , B_bytes(33) As Byte               'Dim the bytes use for SPI, D_bytes = outgoing B_bytes = Incoming
Dim Temp As Byte , W As Word
Dim Packet_count As Byte

'=== Config hardware ===
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16 , Noss = 1

'Software SPI is NOT working with the nRF24L01, use hardware SPI only, but the SS pin must be controlled by our self
'ПОРТЫ УКАЗЫВАЕМ СТОКОВ
Config Pind.5 = Output                                      'CE pin is output
Config Pinb.2 = Output                                      'SS pin is output
Config Pind.7 = Input                                       'IRQ pin is input

 Ce Alias Portd.5
 Ss Alias Portb.2
 Irq Alias Pind.7
'+++++++++++++++++++++++++++++++++++++++++++КОНЕЦ РАБОТЫ С ПЕРЕДАТЧИКОМ
'подключение светодиодов индикации
Config Portd.3 = Output
Config Portd.4 = Output
Red_led Alias Portd.3
Green_led Alias Portd.4

'++++++++++++++++++++++++++++++++++++++++++++++ВСТАВЛЯЕМ ВОЛЬТМЕТР ПЕРЕМЕННЫЕ
Dim Voltage1 As Single

Dim Readadc1 As Word
Config Adc = Single , Prescaler = Auto , Reference = Internal

 
'++++++++++++++++++++++++++++++++++++++++++++++++МИГАЕМ СВЕТОДИОДАМИ
Red_led = 1
Green_led = 1
Waitms 20
Red_led = 0
Green_led = 0
Waitms 60
Red_led = 1
Green_led = 1
Waitms 20
Red_led = 0
Green_led = 0
'++++++++++++++++++++++++++++++++++++++++++++++++ПЕРЕДАЕМ ДАННЫЕ
Spiinit                                                     'init the spi pins

Set Ce
Waitms 10                                                   'Wait a moment until all hardware is stable
Reset Ce                                                    'Set CE pin low
Reset Ss                                                    'Set SS pin low (CSN pin)

Print "TX_device"                                           'Send to terminal who i'm

Red_led = 1

 D_bytes(1) = Flush_tx                                      'Flush the TX_fifo buffer
Call W_register(1)
 D_bytes(1) = Write_reg + Status                            'Reset the IRQ bits
 D_bytes(2) = &B00110000
Call W_register(2)
Red_led = 0

Do

Gosub V1 '++++++++++++++++++++++++++++++++++++++++++++++++ОБЗАВЕМ ПОДПРОГРАММУ ТАК

'Main loop for TX

Green_led = 1

Incr Packet_count                                           'Increase the send packet counter, for test only

If Packet_count > 254 Then Packet_count = 0

Gosub Setup_tx                                              'Setup the nrf24l01 for TX
 D_bytes(1) = Wr_tx_pload                                   'Put 5 bytes in the TX pload buffer
 D_bytes(2) = Voltage1                                            'Byte 1   - НАПРЯЖЕНИЕ            '++++++++++++здесь верно?
 D_bytes(3) = Voltage1                                      'Byte 2  - îñòàëüíûå 4 áàéòà ìîæíî òàêæå èñïîëüçîâàòü â ñâîèõ öåëÿõ
 D_bytes(4) = &HCC                                          'Byte 3
 D_bytes(5) = &H11                                          'Byte 4
 D_bytes(6) = Packet_count                                  'Byte 5
Call W_register(6)                                          'Write 6 bytes to register

Waitms 2

Set Ce                                                      'Set CE for a short moment to transmit the fifo buffer
Waitms 1                                                    '
Reset Ce                                                    '
Waitms 100                                                  'Some delay to read the output on the terminal, line can be removed for max. speed

 W = 0                                                      'Counter for time out
Do

  Red_led = 1

  If Irq = 0 Then
   Call R_register(status , 1)
   Voltage1 = B_bytes(1) And &B01110000                         '++++++++++++++++здесь что меняем?

   Select Case Voltage1                                        'Which IRQ occurs    '++++++++++++тоже самое что и IF
    Case Max_rt                                             'MAX_RT
      Print "Maximum number of TX retries, Flushing the TX buffer now !"
      D_bytes(1) = Flush_tx                                 'Flush the TX buffer
      Call W_register(1)
      D_bytes(1) = Write_reg + Status
      D_bytes(2) = &B00010000                               'Clear the MAX_RT IRQ bit
      Call W_register(2)
      Waitms 10
      Red_led = 0
      Exit Do
    Case Tx_ds                                              'TX_DS
      Print "Packet " ; Packet_count ; " send and ACK received."
      D_bytes(1) = Write_reg + Status
      D_bytes(2) = &B00100000                               'Clear the TX_DS IRQ bit
      Call W_register(2)
      Waitms 10
      Red_led = 0
      Exit Do
    Case Else                                               'Other IRQ ??
      Print "Other irq " ; Bin(temp)
      D_bytes(1) = Flush_tx                                 'Flush the TX buffer
      Call W_register(1)
      D_bytes(1) = Write_reg + Status
      D_bytes(2) = &B00110000                               'Clear both MAX_RT, TX_DS bits
      Call W_register(2)
   End Select
  End If

  Waitms 1                                                  'Time out waiting for IRQ 1ms * 100
  Incr W                                                    'Increment W
   If W > 200 Then                                          'Waited for 200ms
    Print "No irq response from RF24L01 within 100ms"
    Exit Do                                                 'Exit the wait loop
   End If

  Loop

Red_led = 0
Wait 1

Loop

'=== Sub routines ===
Sub W_register(byval C_bytes As Byte)                       'Write register with SPI
Reset Ss                                                    'Manual control SS pin, set SS low before shifting out the bytes
 Spiout D_bytes(1) , C_bytes                                'Shiftout the data bytes trough SPI , C_bytes is the amount bytes to be written
Set Ss                                                      'Set SS high
End Sub

Sub R_register(byval Command As Byte , Byval C_bytes As Byte) As Byte       'C_bytes = Count_bytes, number off bytes to be read
Reset Ss                                                    'Manual controle SS pin, set low before shifting in/out the bytes
 Spiout Command , 1                                         'First shiftout the register to be read
 Spiin B_bytes(1) , C_bytes                                 'Read back the bytes from SPI sended by nRF20L01
Set Ss                                                      'Set SS back to high level
End Sub

Setup_tx:                                                   'Setup for TX

 D_bytes(1) = Write_reg + Tx_addr                           'TX adress
 D_bytes(2) = &H34
 D_bytes(3) = &H43
 D_bytes(4) = &H10
 D_bytes(5) = &H10
 D_bytes(6) = &H01
Call W_register(6)
 D_bytes(1) = Write_reg + Rx_addr_p0                        'RX adress for pipe0
 D_bytes(2) = &H34
 D_bytes(3) = &H43
 D_bytes(4) = &H10
 D_bytes(5) = &H10
 D_bytes(6) = &H01
Call W_register(6)
 D_bytes(1) = Write_reg + En_aa                             'Enable auto ACK for pipe0
 D_bytes(2) = &H01
Call W_register(2)
 D_bytes(1) = Write_reg + En_rxaddr                         'Enable RX adress for pipe0
 D_bytes(2) = &H01
Call W_register(2)
 D_bytes(1) = Write_reg + Rf_ch                             'Set RF channel
 D_bytes(2) = 40
Call W_register(2)
 D_bytes(1) = Write_reg + Rf_setup                          'Setup RF-> Output power 0dbm, datarate 2Mbps and LNA gain on
 D_bytes(2) = &H0F
Call W_register(2)
 D_bytes(1) = Write_reg + Config_nrf                        'Setup CONFIG-> PRX=0(TX_device), PWR_UP=1, CRC 2bytes, Enable CRC
 D_bytes(2) = &H0E
Call W_register(2)

Return


 '++++++++++++++++тут что пишем?
Start Adc
Readadc1 = Getadc(4)
Voltage1 = Readadc1 / 1023
Voltage1 = Voltage1 * 30
Stop Adc 
Return  '++++++++++++++++   или Loop?
Прикрепления: transmitter.bas (12.9 Kb) · volt.bas (0.5 Kb)


 
Форум » форумы » Обсуждение материалов сайта » Nrf24L01+ термометр и ещё всяко разно.
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: