Привет всем участникам часозабега! Извините пожалуйста за задержку.
Наконец доделал радиодатчик на nRF24L01+ Представляю вниманию уважаемой публики схему, печатку, исходники и прошивку. Схема построена на почти самом мелком микроконтроллере AVR Attiny13 Поскольку ножек у него маловато, то пришлось использовать двунаправленный переключатель, SN74LVC1G3157, что бы совместить на одной ноге шину 1-Ware для DS18B20 и провод SCK шины SPI к nRF24L01+. Провод выбора кристалла CS (CSN в терминах даташита nRF24L01+) переключает шины на выводе порта B4. При высоком уровне на выводе CS включена шина 1-ware, при низком SPI.
Транзистор Q1 установлен для борьбы с переполюсовкой, его можно не ставить, и просто замкнуть площадки стока и истока, но тогда надо строго соблюдать полярность при замене батареек. К сожалению мне так и не приехал заказанный транзистор, поэтому вместо него поставил перемычку.
Печатная плата нарисована для монтажа этажеркой. Как говорится «лучше один раз увидеть, чем кучу букв писать» поэтому прикладываю фотографию этажерки.
Немного о протоколе обмена – протокол обмена есть
Вся эта фигня работает следующим образом: радиодатчик через определенные промежутки времени просыпается и посылает часам пакет состоящий из четырех байт. Первый байт - зарезервирован для будущего использования и равен 0, второй байт - тип датчика, пока только 0x01 - датчик температуры на ATTiny13. И последние два байта температуры полученных из DS18B20. Если датчик температуры не удается определить на шине 1-ware то передается SENSOR_NO = (0xfa00) - значение температуры выходящие за предел измерения ds18b20.
В ответ из часов передается длительность периода в течении которого датчик должен спать. Длительность периода передается в виде трех байт. Первый байт это значение делителя частоты для сторожевого таймера. Второй и третий байты это счетчик срабатываний сторожевого таймера. Младший байт счетчика передается вперед. Если передача не удалась, то через 1 секунду передача повторяется. Если же после десяти попыток передача так и не получилась, то интервал сна увеличивается до 10 минут и так повторяется до тех пор пока не получится связаться с часами или батарейка не сядет.
Со стороны часов приемник работает всегда. Что бы обеспечить такой режим работы надо ногу CE модуля nRF24L01+ соединить с землей. Подключение остальных выводов модуля к часам показано на рисунке.
Нога IRQ остается подвешенной в воздухе.
ВНИМАНИЕ! Питание модуля nRF24L01 3,3 V поэтому питание не него надо подать со стабилизатора 3.3 V который питает SD-карту.
Как только пакет будет корректно принят, формируется ответ состоящий из трех байт описанных выше. Если часы находятся в обычном режиме, то период сна определен в 10 минут, если же часы в режиме ожидания ответа от датчика, то период сна составляет 1 секунду. Если вы хотите определить исправность радиодатчика, то надо включить режим ожидания датчика на часах используя меню управления датчиками. Затем вынуть батарейку из радиодатчика и подождать пока разрядится конденсатор в цепи питания (примерно минуту) или кратковременно замкнуть питающие ноги на nRF24L01+. После этого воткнуть батарейку обратно. В этот момент радиодатчик посылает пакет на часы. Надпись «ждем» на часах должна изменится на значение температуры. Если такого не произошло, то надо искать неисправность.
Поскольку модуль nRF24L01+ может принимать одновременно ответы от 6 таких же модулей, то можно подключить одновременно до 6 датчиков. Но нам столько не нужно
поэтому часы поддерживают всего три датчика. Т.е. например можно подключить 1 датчик на шин 1-Ware, один на шину i2c и еще один радиодатчик. А можно два радиодатчика. Главное что бы общее количество датчиков было не больше трех и адреса датчиков не совпадали.
Адрес радиодатчика определяется в прошивке в #define nRF_PIPE (файл nRF24L01P.h) как номер канала от 0 до 5. По умолчанию там стоит 5. Таким образом если в меню часов будет включен датчик с адресом 5 то его значение будет выводится в бегущей строке. Поменять номер канала на радиодатчике можно только через перекомпиляцию и перепрошивку радиодатчика. Вроде все про радиодатчик.
Как всегда добавлены новые баги и фичи. Протестируйте пожалуйста все это безобразие. Но далеко не уходите – дальше будем подключать наши часы к …… интернету, через ….... wifi.
С помощью модуля на микросхеме esp8266ex, у меня сейчас в наличии модуль esp-01 на нем и будем изгалятся.
- Вложения
-
- Часы прошивка.zip
- (53.44 KiB) Скачиваний: 355
-
- Часы исходники.zip
- (160.87 KiB) Скачиваний: 356
-
- Прошивка радиодатчика.rar
- (1.23 KiB) Скачиваний: 355
-
- Исходники радиодатчика.zip
- (26.31 KiB) Скачиваний: 413