Погодный сенсор для умного дома Mysensors + Majordomo

201Погодная станция с NRF24L01 работает у меня уже несколько лет. Проблем с сенсором особо не было. Несколько раз в сильный дождь сенсор переставал передавать данные, но потом все восстанавливалось. В последнее время перестал показывать индикатор. Скорее всего окислились контакты. Или проводок где-то отпал. Все таки навесной монтаж — не самая надежная в мире штука. Основной недостаток существующего решения — отсутствие нормальной серверной части. Хотелось бы иметь возможность свеcти все данные в единую систему с возможностью отображения и использования этой информации для других  компонентов умного дома.

Заканчиваю длинную преамбулу. Далее будет статья про новый погодный сенсор на базе модуля с BME280, NRF24L01 и библиотекой Mysensors, подключенный к Majordomo серверу.

Технические характеристики:

  • Сенсор температуры/влажности/давления BME280 с интерфейсом I2C
  • Контроллер Atmega328 (подойдет Atmega168) 8МГц от внутреннего резонатора
  • Радиомодуль NRF24L01 2/4ГГц с протоколом Mysensors
  • Питание от двух элементов AA (Срок работы от одного комплекта не менее 2-х лет)
  • Периодичность отправки данных 5 минут
  • Ток потребления в режиме сна 11мкА
  • Ток потребления в режиме отправки 20мА (светодиод однако), длительность отправки 200мс

Принципиальная схема

%d1%81%d1%85%d0%b5%d0%bc%d0%b0

Список компонентов:

Итого около $7

Печатная плата

Плата спроектирована в программе Sprint Layers 6 для изготовления методом ЛЛТ (Лазерно-ламинаторной технологией) на одностороннем текстолите

Размер платы получился 20 x 55 мм

%d0%bf%d0%bb%d0%b0%d1%82%d0%b0-v1-0

200 201

Корпус

Корпус спроектировал для печати на 3D принтере с тем расчетом, чтобы верхняя часть была глухой, защищающая от попадания атмосферных осадков. Крышка с технологическим отверстием для сенсора BME280 снизу. Крепление к стене, раме окнаили любой другой вертикальной поверхности.

%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5

203 204 205

Программное обеспечение

Первоначально планировалось запитать NRF24 прямо от батареек, но почему то библиотечная функция sleep() не хотела отправлять NRF-ку в режим сна. Не помогли функции NRF24_PowerDown()/NRF24_PowerUP().

Потребление в режиме сна оставалось в районе 1.2-2мА. Видимо радиомодуль все же слушал эфир, не смотря на режим пассивной моды. Помогло переключение питания NRF-ки на отдельную ногу микроконтроллера. Благо их у меги в достатке. Но появилась друга беда.   После того как прописал в скетче:

#define MY_RF24_POWER_PIN 8

мой сенсор посылал первый пакет-презентацию и показания всех параметров, засыпал по функции sleep(), но вот после просыпания никак не хотел работать. Режим отладки показывал нормальную работу модуля, но пакеты на приемник не приходили. Видимо сбивались и не восстанавливались какие то настройки модуля.

Помог прямой хаккинг. Из библиотеки выдрал код инициализации NRF-ки, оформлен в виде отдельной функции, которая вызывалась после каждого пробуждения

После этого все заработало как часы. Модуль уходил в режим сна с потреблением 10-11 мкА (точнее мой прибор не мерит), затем выходил из него по таймеру, отрабатывал цикл чтения параметров и отправки длительностью 200 мс, моргая на это время светодиодом. Потребление BME280 было в рамках погрешности моего тестера, поэтому заводить его питание на вывод микроконтроллера не стал.

Итоговый скетч метеосенсора получился таким:

Работа до первого сна характеризуется горением светодиода и составляет со всеми представлениями Mysensors около 3 сек. На всякий случай оставил перезагрузку два раза в сутки (осталось от отладки, когда NRF-ка не выходила из сна)
Если будет все работать без этого в 39 строке изменить код, на

#define TM_RESET 0

Период опроса можно изменить в 37 строчке кода

#define TM_SLEEP 300000

Настройки GPIO для NRF-ки, номера ноды Mysensors и других параметров также задаются константами

Размер скетча получился 14080 байт, что вполне позволит использовать в проекте Atmega168 даже с загрузчиком.

arduino-ide

Подключение к Majordomo

Сервер Majordomo у меня работает на Orange PI PC под Armbian. К нему подключен такой вот NRF24L01 с внешней антенной.

Про Majordomo я напишу еще не одну статью, так что останавливаться здесь на нем не буду.

Модуль Mysensors ставится из маркета приложений

md-market

После этого на закладке Оборудование->Mysensors автоматически появляются все устройства с этим интерфейсом

md-mysensors-scan

Заходим в сенсор с нашей нодой 60 и связываем все параметры с объектами MD (они создаются автоматически в Оборудование->Простые устройства

md-mysensors

После этого можно использовать эти объекты в панелях и сценах интерфейса Majordomo.

md-%d1%81%d1%86%d0%b5%d0%bd%d0%b0

Подводим итоги

Использование библиотеки Mysensors значительно упрощает разработку и использование самодельных устройств в системе умного дома.
Сам по себе BME280 оказался очень интересным сенсором. Как пишут умные люди этот сенсор гораздо более прогрессивный, чем DHT22 (я уже не говорю про DHT11).

В ближайшем будущем у меня запланирована разработка еще нескольких устройств с NRF24 и Mysensors. В батарейных девайсах планирую применить Atmega328/168 в корпусах TQFP, сенсоры NRF24L01 mini и питание от CR2032.

А данный сенсор отправляется на боевой дежурство за окно

206

Для тех кто захочет повторить, выкладываю чертежи печатной платы и корпуса и скетч проекта

 

 

 

 

 

 

 

 

Вы можете оставить отзыв или трекбек со своего сайта.

4 комментария на «Погодный сенсор для умного дома Mysensors + Majordomo»

  1. Максим:

    А разве не хватает ресурсов самой EPS8266-01? ESP сама прекрасно умеет работать с сенсорами и отправлять данные по сети.

  2. Максим:

    а, там не есп стоит, а NRF, сбил с толку схожий внешний вид ))

  3. Александр:

    То есть питание беспроводного модуля осуществляется от цифрового пина контроллера?

    • Alexey Alexey:

      Да. Именно так. Без этого библиотека Mysensors никак не хотела отправлять NRF-ку в сон, хотя с другим библиотеками NRF24 нормально работало и с постоянным питанием. Может быть это проблема конкретных китайских NTF-ок

Ваш отзыв