- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

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

Питание в датчике реализовано на двух батарейках cr2450, понижает до рабочих 3.3V микросхема TPS62745DSSR1 c довольно неплохими характеристиками | даташит [4]. На данный момент можно уверенно сказать что работать даное устройство(описываемая версия) способно 1 год. Потребление в режиме deep sleep — ~ 25мкА(с тестовой программой). Среднее потребление в рабочем режиме ~ 9мА.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Но и эту проблему удалось(см.код программы). В итоге получилось так:
Ардуино термометр & гигрометр с E-PAPER на nRF52832 — или о том, что забыли выпустить производители - 19
Ардуино термометр & гигрометр с E-PAPER на nRF52832 — или о том, что забыли выпустить производители - 20
Ардуино термометр & гигрометр с E-PAPER на nRF52832 — или о том, что забыли выпустить производители - 21
Ардуино термометр & гигрометр с E-PAPER на nRF52832 — или о том, что забыли выпустить производители - 22

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

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

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

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

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

Автор: Berkseo

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/arduino/318144

Ссылки в тексте:

[1] Даташит: https://www.waveshare.com/wiki/File:1.54inch_e-Paper_Datasheet.pdf

[2] Мозгом: http://www.braintools.ru

[3] экземпл: https://github.com/waveshare/e-Paper

[4] даташит: https://www.ti.com/lit/ds/symlink/tps62745.pdf

[5] ОпенХардВар: https://www.openhardware.io/view/629/EFEKTA-TempandHum-sensorver-nRF52832-E-Ink-display

[6] гугл драйв: https://drive.google.com/file/d/13wmxCt9XehJr1E2eyG1RnYsQTMb9A2LR/view

[7] форуме .org: https://forum.mysensors.org/topic/9728/efekta-temp-hum-sensor-ver-nrf52832-e-ink-display

[8] @mysensors_rus: https://tgclick.com/mysensors_rus

[9] Источник: https://habr.com/ru/post/452532/?utm_source=habrahabr&utm_medium=rss&utm_campaign=452532