Беспроводная мини погодная станция с e-paper экраном на батарейках
Для этого проекта был выбрана модель дисплея на электронных чернилах GDEH029A1 размером экрана 2.9 дюймов. Примерно через 3 месяца тестирования на смену этому дисплею производители выпустили на рынок новую модель GDEM029T94(V2 по версии Waveshare).
Старую модель стало трудно купить, поэтому пришлось добавлять поддержку нового дисплея в проект.
Характеристики дисплеев:
Разрешение: 296×128
Диапазон рабочих температур: 0 — 50 C
Потребление в рабочем режиме: 3 мА
Потребление в режиме глубокого сна: 1 мкА
Минимальное время обновления экрана: 0.3 сек.
Разрабатывал сразу несколько вариантов плат под несколько вариантов радио модулей nRF52 от разных производителей. Остановился на модулях MINEW MS50SFA2 (nRF52832) и EBYTE E73 2G4M08S1C (nRF52840), E73 2G4M08S1E (nRF52833).
Модуль MINEW MS50SFA2 имеет небольшие размеры, но не очень большое количество выведенных ножек. В моем проекте были задействованы все доступные ножки MS50SFA2. У модулей E73 ножек на много больше, поэтому впоследствии была разработана расширенная версия датчика. В раcширеной версии добавлен активный биззер, датчик освещенности MAX44009, заменены батарейки с CR2450 на ААА.
Корпус датчика печатается на FDM 3D принтере, что бы добиться более или менее приличного вида, корпус после печати необходимо отшлифовать наждачной бумагой и отполировать. Так как у датчика есть светодиод, а в расширенной версии датчик освещенности, то в корпусе необходимо было сделать два сквозных отверстия, после сверления отверстий, они были залиты полимерной смолой для SLA 3D принтера и засвечены УФ лампой, после этого отполированы.
ПО датчика было сделано для работы в сети MySENSORS, это открытый проект домашней автоматизации. К слову, датчик будет нормально работать и без сети. На данный момент в проекте поддерживается работа с двумя моделями дисплеев GDEH029A1, GDEM029T94. Возможно позднее будет добавлена поддержка трехцветных дисплеев.
Опишу немного функционал устройства. Устройство при подаче питания осуществляет попытку поиска сети, если сеть не найдена, то устройство переходит в основной режим работы без работы в сети (не шлет данные), но периодически делает короткие запросы на поиск сети (~раз в час). Интервал опроса сенсора один раз в минуту, обновление экрана и отправка данных (если сеть доступна) происходит при изменении данных температуры на 0.5C, влажности на 1%, давления на 1 единицу, уровня освещенности на 1 люкс, изменения прогноза по погоде. Интервал опроса батарейки задается пользователем в интервале от 1 часа до 24 часов, по умолчанию опрос один раз в 6 часов.
Датчик может настраиваться внешними командами из интерфейса УД. Для этого необходимо активировать нужный пункт меню «конфигурация датчика» нажатием кнопки «меню». После активации режима конфигурации датчик перейдет в режим прослушивания на 20 секунд. В этот интервал необходимо отправить команду. Внешними командами можно настроить интервал проверки батарейки, изменить вывод информации на экран в инверсии, отключить индикацию светодиода, отключить звуковой сигнал.
Описание алгоритма расчета прогноза погоды — (NXP Application Note 3914 | John B. Young)
При работе в радиосети датчик передает данные:
- Температура,
- Влажность,
- Атмосферное давление,
- Уровень освещенности,
- Прогноз погоды,
- Уровень сигнала,
- Уровень заряда батарейки,
- Причина перезагрузки
Для компиляции нужной версии ПО необходимо сконфигурировать файл MyConfig.h.
В файле задаются:
- Язык вывода информации (RU, ENG)
- Режим оптимизации питания при передаче данных
- Подключение датчика освещенности
- Подключение активного биззера
- Скорость передачи данных
- Версия подключенного дисплея
//#define EINK_V1
#define DCPOWER
#define LIGHTSENS
#define BIZZER
#define LANG_EN
//#define MY_DEBUG
//#define MY_PASSIVE_NODE
//#define MY_NODE_ID 101
#define MY_RADIO_NRF5_ESB
#define MY_NRF5_ESB_MODE (NRF5_1MBPS)
//#define MY_NRF5_ESB_MODE (NRF5_250KBPS)
#define MY_RESET_REASON_TEXT
#define SN "EFEKTA WeatherStation 290"
#define SV "0.45"
Потребление датчика в режиме сна составляет в среднем 3 мкА (на nRF52840 больше), в режиме считывания сенсора и обновления экрана 5 мА (среднее), в режиме передачи данных 8 мА (среднее), время передачи одного сообщения 10 мc (идеальные условия).
Проект датчика в варианте с модулем MINEW MS50SFA2 может быть легко повторен. Из сложных моментов можно выделить пайку разъема под шлейф экрана. Как это сделать проще рекомендую посмотреть мое короткое видео по пайке разъема. Так же датчик можно приобрести готовым, тем самым поддержав мои открытые разработки.
GitHub проекта — github.com/smartboxchannel/
В файле readme находится инструкция по установке и настройке среды для редактирования и компиляции ПО для датчика.
В завершении сделаю небольшой фото анонс проектов с которыми в скором времени поделюсь и о которых раскажу.
Мини датчик влажности почвы с e-paper дисплеем (аналогов не нашел)
Если вам интересно все что связано с DIY, вы являетесть DIY разработчиком или хотите только начать, вам интересно использование DIY девайсов, а так же хотите узнавать первыми о моих проектах, то приглашаю всех заинтересованных в телеграм чат — DIYDEV.
Всем, кто хочет делать устройства, начать строить автоматизацию своего дома, я предлагаю познакомиться с простым в освоении протоколом Mysensors — телеграм-чат MySensors
А тем кто ищет достаточно взрослые решения для домашней автоматизации приглашаю в телеграм-чат Open Thread. (что такое Thread?)
Спасибо за внимание, всем добра!