Основной его функционал это мониторинг температуры и влажности в помещении, отправка данных на контролер умного дома или непосредственно на исполнительное устройство. Ну а дополнительным функционалом является как раз вывод данных с датчика sht20, сетевой информации и уровня заряда батареи на монитор. В моей реализации это именно прямое взаимодействие непосредственно с исполнительным устройством (контроллер контуров системы отопления). Реализация неканоническая с точки зрения MySensors, мною добавлен функционал мастер-слейв режимов, типы сенсоров, привязка по воздуху. Так же в моей реализации изменена процедура инициализации транспортного уровня, т.к. логика MySensors не очень хороша для автономных девайсов. Но все это немного другая история, возможно достойная отдельной публикации, а пока статья о девайсе в традициях протокола MySensors.
Идея девайса с таким функционалом зрела в голове давно, первая попытка реализовать эту идею была предпринята на микроконтроллере atmega328. И в принципе это было сделано, но хотелось большей энергоэфективности, более красочного вывода информации на дисплей.
версия на atmega 328
При презентации датчика в сообществе иногда ссылались на девайс компании Сяоми, мол это уже есть. Но есть небольшая разница, у Сяоми это показометр, в моем случае это датчик системы умного дома с функцией показометра. Зачем дисплей? Просто иногда хочется просто повернуть голову в направлении датчика и посмотреть на температуру в комнате :).
Датчик был реализован на двух платах, за основу схемы для дисплея была взята схема от распространенных дисплеев Waveshare | Даташит. Правда позднее были внесены незначительные изменения. Мозгом датчика является чип nRF52832 в модульной реализации от HOLYIOT. Сами модули заслуживают отдельного внимания, это самая беспроблемная реализация в плане работы в Ардуино IDE. В устройстве использованы модули — YJ-16048.
За основу программной реализации работы с дисплеем был взят «экземпл» распространяемый на сайте Waveshare Electronics. Правда и тут не обошлось без доработки.
Замеры потребления дисплея соответствуют заявленным в даташите, самое главное что этот дисплей может спать а на экране остаются данные. Правда переводить в сон дисплей получилось не сразу, реализация от Waveshare этого не позволяла.
Питание в датчике реализовано на двух батарейках cr2450, понижает до рабочих 3.3V микросхема TPS62745DSSR1 c довольно неплохими характеристиками | даташит. На данный момент можно уверенно сказать что работать даное устройство (описываемая версия) способно 1 год.
Потребление в режиме deep sleep — ~ 25мкА (с тестовой программой). Среднее потребление в рабочем режиме ~ 9мА.
Проект является открытым, гербер фалы доступны на сайте ОпенХардВар, код программы и библиотека доступны по ссылке (гугл драйв) Почему не GitHub? Просто так получилось, в окончательной реазизации(v2) будет и там.
Отдельного разговора для решивших повторить этот девайс заслуживает тема конвертации символов нужных шрифтов в C массивы. Мой опыт это конвертация с помощью программы TheDotFactory.
Абсолютно любой шрифт, вы ограничены только возможностями памяти nRf52.… И нет смысла хранить все символы, Если вам нужны только цифры, это очень хорошо экономит место.
Еще одна проблема с которой столкнулся это обновление информации на экране. На данных дисплеях доступно частичное обновление нужной области на экране что является безусловным плюсом со стороны энергопотребления, но минусом является появление артефактов в области обновления данных от предыдущих символов.
Но и эту проблему удалось решить(см.код программы). В итоге получилось так:
В видео демонстрируется работа дисплея.
Тут демонстрируется обновление данных на экране, после доработки:
Данная реализация не является заключительной, этот проект оставлен для повторения в виде Ардуино модуля. Корпус к нему не планируется. Сейчас из этого проекта родилось сразу несколько как логическое продолжение. Основные отличия будущих V2 это питание от одной батарейки, трехцветный дисплей, наличие корпуса.
Пример запуска трехцветного дисплея:
Настоятельно рекомендуется (для желающих повторить) к прочтению моя тема на форуме .org по этому проекту (на английском). Если язык проблема то всегда с радостью помогу всем в чате (установка плат, работа с микроконтролерами nRF5 в среде arduino ide, советы по работе с протоколом mysensors — @mysensors_rus
Комментарии (19)
Tomasina
19.05.2019 23:28Какая дальность связи? (Есть потребность использовать что-то подобное на даче, мониторить в том числе температуру в подвале и теплице).
Почему две батарейки?
К продаже планируете?Berkseo Автор
19.05.2019 23:41+1дальность метров 15-20, ну вообщем стандартная длч большенства устройств на 2.4. Незнаю использование в подвале или в теплице данного девайса неразумно, проще использовать обычные без дисплеев. Две потому что много потребителей, будет и одна но емкость останется такой же. В продаже оно есть, но берут в основном из US :). У нас это мало кому интересно.
Alex_ME
20.05.2019 00:50Если использовать в квартире — насколько хватает? Как связь между комнатами? (Ясное дело, что стены тоже разные). Сейчас думаю тоже над своими датчиками погоды (я понимаю, что их сотни, но тут интерес не в результате), пока смотрел в сторону STM32L и NRF24L01.
TedBeer
20.05.2019 16:12+1Тут подробное описание системы с кучей датчиков, шлюзами, сбором данных, и как всё собрать в кучу и запрограммировать. Для удаленных датчиков используется чипы LoRa, которые бьют на несколько км при этом имея микроскопическое энергопотребление. В общем рекомендую ознакомиться: https://www.hackster.io/erictsai/lora-tooth-small-ble-sensors-over-wifi-lora-gateways-0aa109
datacompboy
20.05.2019 03:07Хм. Я правильно понял по видео, что постэффекты не побеждены — просто перерисовывается весь экран?
Обычно для обновления части делают так — сперва выводят негатив прошлого, потом белый, и потом только новое.Berkseo Автор
20.05.2019 10:14отрисовывается один фрейм из двух. негативом можно, но тут минус потребительским свойствам девайса сразу
iig
20.05.2019 11:12минус потребительским свойствам девайса сразу
Показания термометра, например, можно пару раз в час обновлять. А то и реже.
unwrecker
20.05.2019 12:44Минус же в том, что прибор перемигиванием зазря привлекает к себе внимание пользователя? Ну так и на видео он мигает целиком довольно заметно. У киндла, кажется, интересно реализован индикатор яркоти в настройках — обновляется только его хвостик, весь экран не перерисоывается. Нельзя таким же образом стирать только ту часть обновляемой цифры, которая на новой цифре отсутствует и потом пририсовывать к ней недостающее? Нда… По сложности, наверное, это будет как всё остальное. Но зато тру ейнк :)
olartamonov
20.05.2019 13:48Здесь также надо понимать, что пляски с eInk — это любительские развлечения, проистекающие из невозможности заказать себе ЖК с нужными символами и большого потребления матричных ЖК-экранов.
Серийные же метеостанции живут на комплекте батареек те же год-два с символьными ЖК-экранами, e-Ink в них ставят разве что ради внешнего вида.
sav13
20.05.2019 05:39А ссылку на экран можно?
А то пришел модуль E-ink — при перерисовке экран несколько раз мигаетAlanDrakes
20.05.2019 10:40Попробуйте поменять настройки в таблице LUT. В даташите должно быть указано какие ячейки за что отвечают.
В частности у дисплея www.waveshare.com/wiki/2.9inch_e-Paper_Module есть возможность делать и частичное обновление и полное обновление. Всё настраивается в коде.
Частичное занимает около 0.5-0.7с, полное — 1.5~2.5с и так же мигает несколько раз.
Iv38
20.05.2019 10:47У Xiaomi несколько месяцев назад вышел девайс с E-ink и BLE одновременно. До этого действительно был либо показометр, либо с блютусом, но с LCD-экраном. А новый девайс очень классный.
sirocco
20.05.2019 10:51Ну прям уж «забыли выпустить производители». У сяоми давным давно есть такое устройство, причем и с LCD дисплеем, и с E-Link, а не так давно, с год примерно, появился термометр/гигрометр с часами, синхонизирующимися через интернет, и тот же блютуз запросто бъёт теже 15 метров. Если не нравятся облака и шлюжы из китая, то всегда можно заставить работать от малины. Готовое устройство стоит ~1000р.
p.s. нет, я не против самоделок, я уважаю это и сам люблю по возиться, но иногда лучше взять готовое устройство уже в красивом корпусе и с тем же функционалом, чем городить своё в три раза дороже.
drWhy
20.05.2019 14:27Спасибо, познавательно. И вот это хорошо:
«хочется просто повернуть голову в направлении датчика и посмотреть на температуру в комнате :)»
А то скоро только захочется повернуть голову, а железка уже сама всё озвучила.
Strange
20.05.2019 17:26Для waveshare (good display) дисплеев есть хорошая либа — GxEPD2.
Планирую проект на nrf52 + e-ink дисплей (1.54") но с mbed os, пока не уверен удастся ли использовать её (наверное нет).
mkc
А без arduino IDE с ним напрямую можно работать?
Berkseo Автор
берите сдк нордика например и работайте, это diy модуль, там выведен swd и сериал