Приветствую всех читателей Habr!!! В своей очередной статье речь снова пойдет о ARDUINO. Хочу поделится с Вами очередным своим проектом реализованном на микроконтролере nRF52832. Это датчик температу и влажности на sht20 c монохромным дисплеем на электронных чернилах(E-INK|E-PAPER), который является частью экосистемы MySensors.
Основной его функционал это мониторинг температуры и влажности в помещении, отправка данных на контролер умного дома или непосредственно на исполнительное устройство. Ну а дополнительным функционалом является как раз вывод данных с датчика sht20, сетевой информации и уровня заряда батареи на монитор. В моей реализации это именно прямое взаимодействие непосредственно с исполнительным устройством(контролер контуров системы отопления). Реализация неканоническая с точки зрения MySensors, мною добавлен функционал мастер-слейв режимов, типы сенсоров, привязка по воздуху. Так же в моей реализации изменена процедура инициализации транспортного уровня, тк логика MySensors не очень хороша для автономных девайсов. Но все это немного другая история, возможно достойная отдельной публикации, а пока статья о девайсе в традициях протокола MySensors.
Идея девайса с таким функционалом зрела в голове давно, первая попытка реализовать эту идею была предпринята на микроконтролере atmega328. И впринципе это было сделано, но хотелось большей энергоэфективности, более красочного вывода информации на дисплей.
версия на atmega 328
![](https://habrastorage.org/webt/tt/t6/8z/ttt68zcxfwh786u8wgnofa3ojuy.jpeg)
При презентации датчика в сообществе иногда ссылались на девайс компании Сяоми, мол это уже есть. Но есть небольшая разница, у Сяоми это показометр, в моем случае это датчик системы умного дома с функцией показометра. Зачем дисплей? Просто иногда хочется просто повернуть голову в направлении датчика и посмотреть на температуру в комнате :).
![](https://habrastorage.org/webt/hj/2w/of/hj2wofv_ws3e5wnrmauuhuknzpi.png)
Датчик был реализован на двух платах, за основу схемы для дисплея была взята схема от распостраненных дисплеев Waveshare | Даташит. Правда позднее были внесены незначительные изменения. Мозгом датчика является чип nRF52832 в модульной реализации от HOLYIOT. Сами модули заслуживают отдельного внимания, это самая беспроблемная реализация в плане работы в Ардуино IDE. В устройстве использованы модули — YJ-16048.
![](https://habrastorage.org/webt/jt/hg/x6/jthgx6bcs6njtigsg7bbius5bqq.jpeg)
За основу програмной реализации работы с диплеем был взят экземпл распостраняемый на сайте Waveshare Electronics. Правда и тут не обошлось без доработки.
Замеры потребления дисплея соответствуют заявленным в даташите, самое главное что этот дисплей может спать а на экране остаются данные. Правда переводить в сон дисплей получилось не сразу, реализация от Waveshare этого не позволяла.
Питание в датчике реализовано на двух батарейках cr2450, понижает до рабочих 3.3V микросхема TPS62745DSSR1 c довольно неплохими характеристиками | даташит. На данный момент можно уверенно сказать что работать даное устройство(описываемая версия) способно 1 год. Потребление в режиме deep sleep — ~ 25мкА(с тестовой программой). Среднее потребление в рабочем режиме ~ 9мА.
Проект является открытым, гербер фалы доступны на сайте ОпенХардВар, код программы и библиотека доступны по ссылке (гугл драйв) Почему не GitHub? Просто так получилось, в окончательной реазизации(v2) будет и там.
Отдельного разговора для решивших повторить этот девайс заслуживает тема конвертации символов нужных шрифтов в C массивы. Мой опыт это конвертация с помощью программы TheDotFactory. Процесс постараюсь описать с каринками :)
Еще одна проблема с которой столкнулся это обновление информации на экране. На данных дисплеях доступно частичное обновление нужной области на экране что является безусловным плюсом со стороны энергопотребления, но минусом является появление артефактов в области обновления данных от предыдущих символов.
![](https://habrastorage.org/webt/7h/pr/g_/7hprg_yuvz9vgdo_waedsuiwrzq.jpeg)
Но и эту проблему удалось(см.код программы). В итоге получилось так:
![](https://habrastorage.org/webt/yu/vi/4q/yuvi4qt1ewrenfppwotrlyi4c1w.jpeg)
![](https://habrastorage.org/webt/lc/h4/ha/lch4hakwfezfdkabidudtu6dpco.jpeg)
![](https://habrastorage.org/webt/ag/5s/ez/ag5seznromujs_kacbil64yvbxe.jpeg)
![](https://habrastorage.org/webt/fj/q0/bo/fjq0borjtbjznu4p_qzkcsv-gvs.jpeg)
В видео демонстрируется работа дисплея.
Тут демонстрируется обновление данных на экране, после доработки:
Данная реализация не является заключительной, этот проект оставлен для повторения в виде Ардуино модуля. Корпус к нему не планируется. Сейчас из этого проекта родилось сразу несколько как логическое продолжение. Основные отличия будующих V2 это питание от одной батарейки, трехцветный дисплей, наличие корпуса.
Пример запуска трехцветного дисплея:
Настоятельно рекомендуется(для желающих повторить) к прочтению моя тема на форуме .org по этому проекту(На английском). Если язык проблема то всегда с радостью помогу всем в чате(установка плат, работа с микроконтролерами nRF5 в среде arduino ide, советы по работе с протоколом mysensors — @mysensors_rus
![](https://habrastorage.org/webt/if/ok/cl/ifokclrgofwszkcsm1wnf0obgvw.jpeg)
Основной его функционал это мониторинг температуры и влажности в помещении, отправка данных на контролер умного дома или непосредственно на исполнительное устройство. Ну а дополнительным функционалом является как раз вывод данных с датчика sht20, сетевой информации и уровня заряда батареи на монитор. В моей реализации это именно прямое взаимодействие непосредственно с исполнительным устройством(контролер контуров системы отопления). Реализация неканоническая с точки зрения MySensors, мною добавлен функционал мастер-слейв режимов, типы сенсоров, привязка по воздуху. Так же в моей реализации изменена процедура инициализации транспортного уровня, тк логика MySensors не очень хороша для автономных девайсов. Но все это немного другая история, возможно достойная отдельной публикации, а пока статья о девайсе в традициях протокола MySensors.
Идея девайса с таким функционалом зрела в голове давно, первая попытка реализовать эту идею была предпринята на микроконтролере atmega328. И впринципе это было сделано, но хотелось большей энергоэфективности, более красочного вывода информации на дисплей.
версия на atmega 328
![](https://habrastorage.org/webt/tt/t6/8z/ttt68zcxfwh786u8wgnofa3ojuy.jpeg)
При презентации датчика в сообществе иногда ссылались на девайс компании Сяоми, мол это уже есть. Но есть небольшая разница, у Сяоми это показометр, в моем случае это датчик системы умного дома с функцией показометра. Зачем дисплей? Просто иногда хочется просто повернуть голову в направлении датчика и посмотреть на температуру в комнате :).
![](https://habrastorage.org/webt/hj/2w/of/hj2wofv_ws3e5wnrmauuhuknzpi.png)
Датчик был реализован на двух платах, за основу схемы для дисплея была взята схема от распостраненных дисплеев Waveshare | Даташит. Правда позднее были внесены незначительные изменения. Мозгом датчика является чип nRF52832 в модульной реализации от HOLYIOT. Сами модули заслуживают отдельного внимания, это самая беспроблемная реализация в плане работы в Ардуино IDE. В устройстве использованы модули — YJ-16048.
![](https://habrastorage.org/webt/jt/hg/x6/jthgx6bcs6njtigsg7bbius5bqq.jpeg)
За основу програмной реализации работы с диплеем был взят экземпл распостраняемый на сайте Waveshare Electronics. Правда и тут не обошлось без доработки.
Замеры потребления дисплея соответствуют заявленным в даташите, самое главное что этот дисплей может спать а на экране остаются данные. Правда переводить в сон дисплей получилось не сразу, реализация от Waveshare этого не позволяла.
Питание в датчике реализовано на двух батарейках cr2450, понижает до рабочих 3.3V микросхема TPS62745DSSR1 c довольно неплохими характеристиками | даташит. На данный момент можно уверенно сказать что работать даное устройство(описываемая версия) способно 1 год. Потребление в режиме deep sleep — ~ 25мкА(с тестовой программой). Среднее потребление в рабочем режиме ~ 9мА.
Проект является открытым, гербер фалы доступны на сайте ОпенХардВар, код программы и библиотека доступны по ссылке (гугл драйв) Почему не GitHub? Просто так получилось, в окончательной реазизации(v2) будет и там.
Отдельного разговора для решивших повторить этот девайс заслуживает тема конвертации символов нужных шрифтов в C массивы. Мой опыт это конвертация с помощью программы TheDotFactory. Процесс постараюсь описать с каринками :)
Процесс постараюсь описать с каринками :)![](https://habrastorage.org/webt/yi/cz/5o/yicz5o0knq5bkawvh9kmxzesi18.png)
![](https://habrastorage.org/webt/5z/fi/ip/5zfiipdycvwzoz03aicczsirjfs.png)
![](https://habrastorage.org/webt/sc/cp/1j/sccp1jldrxg2g2milhr4xypnhvq.png)
![](https://habrastorage.org/webt/oj/zt/_x/ojzt_xzprz6idrsrkxuenzkodr0.png)
![](https://habrastorage.org/webt/0p/ai/6e/0pai6ezsedal2nl9o1_d4mtjr9k.png)
![](https://habrastorage.org/webt/us/rl/lk/usrllk2xdp3xybnyctyi0afljvk.png)
![](https://habrastorage.org/webt/sa/4e/py/sa4epyzcjbs0nzdap---sgngcqe.png)
![](https://habrastorage.org/webt/gi/qe/6h/giqe6h3qj3fssjdxvo_-2zacbi0.png)
![](https://habrastorage.org/webt/ru/ph/xn/ruphxnz9owcfqzuu-qoh9fd987y.png)
![](https://habrastorage.org/webt/5e/6o/eu/5e6oeuslspvg2qia0vvnbgvw_4q.png)
![](https://habrastorage.org/webt/lu/ob/ui/luobuiayae8os0bscgrqfgebjoy.png)
![](https://habrastorage.org/webt/fc/vv/ph/fcvvphs9tcgf8rdz3f_db9vxfq8.png)
![](https://habrastorage.org/webt/mx/9-/hp/mx9-hpbgsmyirimslxes1dakj3a.png)
Абсолютно любой шрифт, вы ограничены только возможностями памяти nRf52.… И нет смысла хранить все символы, Если вам нужны только цифры, это очень хорошо экономит место.
![](https://habrastorage.org/webt/yi/cz/5o/yicz5o0knq5bkawvh9kmxzesi18.png)
![](https://habrastorage.org/webt/5z/fi/ip/5zfiipdycvwzoz03aicczsirjfs.png)
![](https://habrastorage.org/webt/sc/cp/1j/sccp1jldrxg2g2milhr4xypnhvq.png)
![](https://habrastorage.org/webt/oj/zt/_x/ojzt_xzprz6idrsrkxuenzkodr0.png)
![](https://habrastorage.org/webt/0p/ai/6e/0pai6ezsedal2nl9o1_d4mtjr9k.png)
![](https://habrastorage.org/webt/us/rl/lk/usrllk2xdp3xybnyctyi0afljvk.png)
![](https://habrastorage.org/webt/sa/4e/py/sa4epyzcjbs0nzdap---sgngcqe.png)
![](https://habrastorage.org/webt/gi/qe/6h/giqe6h3qj3fssjdxvo_-2zacbi0.png)
![](https://habrastorage.org/webt/ru/ph/xn/ruphxnz9owcfqzuu-qoh9fd987y.png)
![](https://habrastorage.org/webt/5e/6o/eu/5e6oeuslspvg2qia0vvnbgvw_4q.png)
![](https://habrastorage.org/webt/lu/ob/ui/luobuiayae8os0bscgrqfgebjoy.png)
![](https://habrastorage.org/webt/fc/vv/ph/fcvvphs9tcgf8rdz3f_db9vxfq8.png)
![](https://habrastorage.org/webt/mx/9-/hp/mx9-hpbgsmyirimslxes1dakj3a.png)
Абсолютно любой шрифт, вы ограничены только возможностями памяти nRf52.… И нет смысла хранить все символы, Если вам нужны только цифры, это очень хорошо экономит место.
Еще одна проблема с которой столкнулся это обновление информации на экране. На данных дисплеях доступно частичное обновление нужной области на экране что является безусловным плюсом со стороны энергопотребления, но минусом является появление артефактов в области обновления данных от предыдущих символов.
![](https://habrastorage.org/webt/7h/pr/g_/7hprg_yuvz9vgdo_waedsuiwrzq.jpeg)
Но и эту проблему удалось(см.код программы). В итоге получилось так:
![](https://habrastorage.org/webt/yu/vi/4q/yuvi4qt1ewrenfppwotrlyi4c1w.jpeg)
![](https://habrastorage.org/webt/lc/h4/ha/lch4hakwfezfdkabidudtu6dpco.jpeg)
![](https://habrastorage.org/webt/ag/5s/ez/ag5seznromujs_kacbil64yvbxe.jpeg)
![](https://habrastorage.org/webt/fj/q0/bo/fjq0borjtbjznu4p_qzkcsv-gvs.jpeg)
В видео демонстрируется работа дисплея.
Тут демонстрируется обновление данных на экране, после доработки:
Данная реализация не является заключительной, этот проект оставлен для повторения в виде Ардуино модуля. Корпус к нему не планируется. Сейчас из этого проекта родилось сразу несколько как логическое продолжение. Основные отличия будующих V2 это питание от одной батарейки, трехцветный дисплей, наличие корпуса.
Пример запуска трехцветного дисплея:
Настоятельно рекомендуется(для желающих повторить) к прочтению моя тема на форуме .org по этому проекту(На английском). Если язык проблема то всегда с радостью помогу всем в чате(установка плат, работа с микроконтролерами nRF5 в среде arduino ide, советы по работе с протоколом mysensors — @mysensors_rus