Хабрахабр

Ардуино термометр & гигрометр с E-PAPER на nRF52832 — или о том, что забыли выпустить производители

Приветствую всех читателей Habr!!! В своей очередной статье снова поведу речь о ARDUINO. Хочу поделиться с Вами очередным своим проектом реализованном на микроконтролере nRF52832. Это датчик температуры и влажности на sht20 | (даташит) c монохромным дисплеем на электронных чернилах(E-INK|E-PAPER), который является частью экосистемы MySensors.

Основной его функционал это мониторинг температуры и влажности в помещении, отправка данных на контролер умного дома или непосредственно на исполнительное устройство. Ну а дополнительным функционалом является как раз вывод данных с датчика sht20, сетевой информации и уровня заряда батареи на монитор. В моей реализации это именно прямое взаимодействие непосредственно с исполнительным устройством (контроллер контуров системы отопления). Реализация неканоническая с точки зрения MySensors, мною добавлен функционал мастер-слейв режимов, типы сенсоров, привязка по воздуху. Так же в моей реализации изменена процедура инициализации транспортного уровня, т.к. логика MySensors не очень хороша для автономных девайсов. Но все это немного другая история, возможно достойная отдельной публикации, а пока статья о девайсе в традициях протокола MySensors.

И в принципе это было сделано, но хотелось большей энергоэфективности, более красочного вывода информации на дисплей. Идея девайса с таким функционалом зрела в голове давно, первая попытка реализовать эту идею была предпринята на микроконтроллере atmega328.

версия на atmega 328

Но есть небольшая разница, у Сяоми это показометр, в моем случае это датчик системы умного дома с функцией показометра. При презентации датчика в сообществе иногда ссылались на девайс компании Сяоми, мол это уже есть. Просто иногда хочется просто повернуть голову в направлении датчика и посмотреть на температуру в комнате :). Зачем дисплей?

Правда позднее были внесены незначительные изменения. Датчик был реализован на двух платах, за основу схемы для дисплея была взята схема от распространенных дисплеев Waveshare | Даташит. Сами модули заслуживают отдельного внимания, это самая беспроблемная реализация в плане работы в Ардуино IDE. Мозгом датчика является чип nRF52832 в модульной реализации от HOLYIOT. В устройстве использованы модули — YJ-16048.

Правда и тут не обошлось без доработки. За основу программной реализации работы с дисплеем был взят «экземпл» распространяемый на сайте Waveshare Electronics.

Правда переводить в сон дисплей получилось не сразу, реализация от Waveshare этого не позволяла. Замеры потребления дисплея соответствуют заявленным в даташите, самое главное что этот дисплей может спать а на экране остаются данные.

3V микросхема TPS62745DSSR1 c довольно неплохими характеристиками | даташит. Питание в датчике реализовано на двух батарейках cr2450, понижает до рабочих 3. На данный момент можно уверенно сказать что работать даное устройство (описываемая версия) способно 1 год.

Среднее потребление в рабочем режиме ~ 9мА. Потребление в режиме deep sleep — ~ 25мкА (с тестовой программой).

Просто так получилось, в окончательной реазизации(v2) будет и там. Проект является открытым, гербер фалы доступны на сайте ОпенХардВар, код программы и библиотека доступны по ссылке (гугл драйв) Почему не GitHub?

Мой опыт это конвертация с помощью программы TheDotFactory. Отдельного разговора для решивших повторить этот девайс заслуживает тема конвертации символов нужных шрифтов в C массивы.

Процесс постараюсь описать с каринками 🙂

Абсолютно любой шрифт, вы ограничены только возможностями памяти nRf52.… И нет смысла хранить все символы, Если вам нужны только цифры, это очень хорошо экономит место.

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

В итоге получилось так: Но и эту проблему удалось решить(см.код программы).

В видео демонстрируется работа дисплея.

Тут демонстрируется обновление данных на экране, после доработки:

Данная реализация не является заключительной, этот проект оставлен для повторения в виде Ардуино модуля. Корпус к нему не планируется. Сейчас из этого проекта родилось сразу несколько как логическое продолжение. Основные отличия будующих V2 это питание от одной батарейки, трехцветный дисплей, наличие корпуса.

Пример запуска трехцветного дисплея:

Настоятельно рекомендуется (для желающих повторить) к прочтению моя тема на форуме .org по этому проекту(На английском). Если язык проблема то всегда с радостью помогу всем в чате(установка плат, работа с микроконтролерами nRF5 в среде arduino ide, советы по работе с протоколом mysensors — @mysensors_rus

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть