Приветствую всех читателей Habr! Хочу поделиться с вами своим новым опенсорс проектом. Из названия статьи понятно что речь пойдет о датчике температуры и влажности с дисплеем на электронных чернилах. Уже достаточно давно я попробовал сделать проект датчика температуры с такими дисплеями в виде ардуино модуля. С тех пор тема e-ink дисплеев меня заинтересовала.
Целью данного проекта была разработка миниатюрного датчика, сравнимого по размерам с обычными беспроводными датчиками температуры, но при этом получить еще и вывод данных на самом устройстве. И при всех этих условиях что бы устройство работало от небольшой батарейки достаточно долго. Что из этого получилось, прошу оценить и не скупится на комментарии.
![](https://habrastorage.org/r/w780q1/webt/ys/md/2g/ysmd2g1hflvywlntp1gbo0wisim.jpeg)
Датчик работает на чипах nRF52, для данного проекта был выбран модуль от компании MINEW. Модуль небольшого размера, имеет 18 выводов, 13 из которых gpio, два варианта антенн, печатная и керамическая, так же на модуль устанавливается несколько вариантов чипов, nRF52810 и nRF52832, а после непродолжительного общения с менеджментом компании мне без вопросов поставили на эти модули чипы nRF52811. Так я кстати получил свои первые 811-ые и к тому же по цене в полтора раза ниже чем мог бы купить у поставщиков в России просто чипы, но это уже другая история. На модуле разведен вариант схема DC-DC и часовым кварцем. Размеры модуля 12мм х 15мм. Присутствует металлический экран.
![](https://habrastorage.org/r/w780q1/webt/mr/lt/qa/mrltqaopdtbq7umnzbkeod8rwss.jpeg)
Из линейки e-ink дисплеев выбор естественно пал на достаточно новую модель м размером экрана 1.02 дюйма. Стоимость одного дюйма электронных чернил составила 500 рублей, что мне показалось приемлемо. Небольшие трудности с разработкой платы под этот дисплей вызвал его разъем, 30 пиновый FPC c шагом в 0.5мм. Ширина FPC разъема намного больше ширины самого дисплея, что вызвало неудобство при проектировании. Но зато было проще с обвязкой дисплея, она проще чем на других моделях (datasheet GDEW0102T4).
![](https://habrastorage.org/r/w780q1/webt/qj/sp/c8/qjspc8uf3zmr10xihyta0ty3dwy.jpeg)
Из разнообразных цифровых сенсоров температуры и влажности я решил остановиться на сенсоре sht20, их и в достаточном количестве было у меня, простой достаточно, хорошая цена, удобный размер. Так же одним из плюсов можно назвать то что вместо sht20 при желании легко установить sht21, si7020, si7021, htu20d, htu21d и hdc1080, но последний вариант не самый очень ;).
Под датчик проектировалось 2 платы, одна под экран и его обвязку, вторая под радио модуль, сенсор температуры и влажности и батарейку. Ключевыми параметрами размеров плат были размеры экрана и батарейки. На плате с экраном были заложены отверстия под винты (1.4 х 3) для крепления платы к корпусу, на второй плате были сделаны вырезы для удобной установки винтов. Так как это DIY устройство я мог себе позволить поставить «вкусную» батарейку CR2450. Ну а если мне покажется когда-то что устройство толстовато, то я всегда смогу напаять держатель под батарейку CR2430. В итоге получилось две платы размерами 36мм на 26мм.
![](https://habrastorage.org/r/w780q1/webt/gh/op/xb/ghopxb_rucv1n322kc97u0zuuzo.jpeg)
Корпус проектировался в СолидВоркс, модели плат были экспортированы из DipTrace в формате DXF, которые уже в СолидВоркс были преобразованы в 3D модели. Корпус состоит из двух частей и кнопки, Крепления половинок корпуса друг к другу сделано так же винтами(1.4 х 4) с одной стороны и выступающим «зацепом» с другой стороны. Сделаны два отверстия для циркуляции воздуха для сенсора температуры и влажности.
![](https://habrastorage.org/r/w780q1/webt/ba/mc/bm/bamcbmt5hmtfvyibonzyoybjk4y.jpeg)
В этом проекте корпус был напечатан на FDM принтере, конечно качество печати ниже чем на SLA принтере, но по прочности изделия из жидких смол сильно уступают изделиям из филаментной нити, а из-за особенностей корпуса, прочность была важна. Так что морально приготовился к шлифовке и полировке. В принципе получилось достаточно качественно.
![](https://habrastorage.org/r/w780q1/webt/mu/sk/oz/muskozzfnz1cylfg6nvuk3bbqsm.jpeg)
Примерно так происходила разработка железа, постарался описать все этапы и некоторые нюансы, если она вам показалась трудоемкой, то это не так, трудоемким на самом деле было ПО. Как и прежде я свои проекты делаю под MySensors, хотя признаюсь что уже не с тем энтузиазмом что прежде. В какие-то моменты стал упираться, каких то вещей не хватает, какие-то просто невозможны. Альтернативой на данный момент для себя я вижу Open Thread, по крайней мере он кажется достаточно привлекательным.
![](https://habrastorage.org/r/w780q1/webt/uw/z-/o8/uwz-o8zavyb9cyyrjkx89gvk-au.jpeg)
![](https://habrastorage.org/r/w780q1/webt/sf/sf/i3/sfsfi3pudxcjpijflwaltic7afc.jpeg)
В итоге все свои требования к функционалу реализовать получилось. Устройство может работать с контроллером УД, так же устройство может работать напрямую с каким либо устройством в сети МySensor. Привязка устройств для прямого обмена может происходить как посредством конфигурации устройств через контроллер УД, внешними командами, так и без участия контроллера УД с помощью простого нажатия кнопки для активации режима привязки(binding). Датчик температуры и другое устройство к которому привязан датчик могут нормально поддерживать обмен даже без работающего шлюза MySensors или работающего контроллера УД, что безусловно повышает отказоустойчивость. Отдельная проблема была с драйверами eink дисплея, вероятно потому что дисплей достаточно новый, на сайте производителя и сайте WaveShare(предлагающий eink экраны Good Display под своим брендом) реализации библиотек достаточно сырые. Пришлось что-то переделать, что-то дописать.
В датчике реализовано поддержка нескольких языков, инверсия цвета по внешней команде в режиме конфигурирования устройства, несколько вариантов шрифтов так же меняемые по внешней команде в режиме конфигурации устройства. Датчик выводит на экран показания температуры и влажности, заряд батареи и уровень сигнала. Интервал замеров температуры и влажности, интервал замера уровня батарейки можно задать так же внешней командой. Для температуры и влажности в минутах, для уровня заряда батарейки в часах. Передает датчик в УД следующие данные: температура, влажность, уровень заряда в %, напряжение, уровень сигнала, причину перезагрузки.
![](https://habrastorage.org/r/w780q1/webt/qo/er/3d/qoer3d92ralr62lujsmbjmczdie.jpeg)
Посмотреть как это выглядит можно в небольшом видеоролике:
Таймстампы интересных моментов:
3.10 — Конфигурирование (смена шрифта, инверсия цвета)
5.10 — Замер потребления, работа WTD
Если кому-то интересны мои разработки, то после прочтения статьи рекомендую перейти на канал и подписаться, там информацию по новым разработкам я публикую в первую очередь.
В спящем режиме датчик потребляет 2мкА, сброс WTD каждые 5 секунд, потребление в момент сброса 4-5мкА. В режиме работы с экраном и сенсором температуры и влажности 2-3мА, в режиме передачи 5-8мА, такой диапазон в 3 мА связан с тем что датчик сам регулирует мощность передачи на основе данных по уровню сигнала.
На этом хочу откланяться, если вам интересно все что связано с DIY, вы являетесть DIY разработчиком или хотите только начать, вам интересно использование DIY девайсов приглашаю всех заинтересованных в телеграм чат — DIYDEV
Всех кто хочет делать устройства, начать строить автоматизацию своего дома предлагаю познакомиться с простым в освоении протоколом Mysensors — телеграм-чат MySensors
А тем кто ищет достаточно взрослые решения для домашней автоматизации приглашаю в телеграм-чат Open Thread.
Мой GitHub этого проекта, схема, гербер файлы, 3D модели корпуса, bom, ПО.
Всем как всегда добра!
Целью данного проекта была разработка миниатюрного датчика, сравнимого по размерам с обычными беспроводными датчиками температуры, но при этом получить еще и вывод данных на самом устройстве. И при всех этих условиях что бы устройство работало от небольшой батарейки достаточно долго. Что из этого получилось, прошу оценить и не скупится на комментарии.
![](https://habrastorage.org/webt/ys/md/2g/ysmd2g1hflvywlntp1gbo0wisim.jpeg)
Датчик работает на чипах nRF52, для данного проекта был выбран модуль от компании MINEW. Модуль небольшого размера, имеет 18 выводов, 13 из которых gpio, два варианта антенн, печатная и керамическая, так же на модуль устанавливается несколько вариантов чипов, nRF52810 и nRF52832, а после непродолжительного общения с менеджментом компании мне без вопросов поставили на эти модули чипы nRF52811. Так я кстати получил свои первые 811-ые и к тому же по цене в полтора раза ниже чем мог бы купить у поставщиков в России просто чипы, но это уже другая история. На модуле разведен вариант схема DC-DC и часовым кварцем. Размеры модуля 12мм х 15мм. Присутствует металлический экран.
![](https://habrastorage.org/webt/mr/lt/qa/mrltqaopdtbq7umnzbkeod8rwss.jpeg)
Из линейки e-ink дисплеев выбор естественно пал на достаточно новую модель м размером экрана 1.02 дюйма. Стоимость одного дюйма электронных чернил составила 500 рублей, что мне показалось приемлемо. Небольшие трудности с разработкой платы под этот дисплей вызвал его разъем, 30 пиновый FPC c шагом в 0.5мм. Ширина FPC разъема намного больше ширины самого дисплея, что вызвало неудобство при проектировании. Но зато было проще с обвязкой дисплея, она проще чем на других моделях (datasheet GDEW0102T4).
![](https://habrastorage.org/webt/qj/sp/c8/qjspc8uf3zmr10xihyta0ty3dwy.jpeg)
Из разнообразных цифровых сенсоров температуры и влажности я решил остановиться на сенсоре sht20, их и в достаточном количестве было у меня, простой достаточно, хорошая цена, удобный размер. Так же одним из плюсов можно назвать то что вместо sht20 при желании легко установить sht21, si7020, si7021, htu20d, htu21d и hdc1080, но последний вариант не самый очень ;).
Под датчик проектировалось 2 платы, одна под экран и его обвязку, вторая под радио модуль, сенсор температуры и влажности и батарейку. Ключевыми параметрами размеров плат были размеры экрана и батарейки. На плате с экраном были заложены отверстия под винты (1.4 х 3) для крепления платы к корпусу, на второй плате были сделаны вырезы для удобной установки винтов. Так как это DIY устройство я мог себе позволить поставить «вкусную» батарейку CR2450. Ну а если мне покажется когда-то что устройство толстовато, то я всегда смогу напаять держатель под батарейку CR2430. В итоге получилось две платы размерами 36мм на 26мм.
![](https://habrastorage.org/webt/gh/op/xb/ghopxb_rucv1n322kc97u0zuuzo.jpeg)
Корпус проектировался в СолидВоркс, модели плат были экспортированы из DipTrace в формате DXF, которые уже в СолидВоркс были преобразованы в 3D модели. Корпус состоит из двух частей и кнопки, Крепления половинок корпуса друг к другу сделано так же винтами(1.4 х 4) с одной стороны и выступающим «зацепом» с другой стороны. Сделаны два отверстия для циркуляции воздуха для сенсора температуры и влажности.
![](https://habrastorage.org/webt/ba/mc/bm/bamcbmt5hmtfvyibonzyoybjk4y.jpeg)
В этом проекте корпус был напечатан на FDM принтере, конечно качество печати ниже чем на SLA принтере, но по прочности изделия из жидких смол сильно уступают изделиям из филаментной нити, а из-за особенностей корпуса, прочность была важна. Так что морально приготовился к шлифовке и полировке. В принципе получилось достаточно качественно.
![](https://habrastorage.org/webt/mu/sk/oz/muskozzfnz1cylfg6nvuk3bbqsm.jpeg)
Примерно так происходила разработка железа, постарался описать все этапы и некоторые нюансы, если она вам показалась трудоемкой, то это не так, трудоемким на самом деле было ПО. Как и прежде я свои проекты делаю под MySensors, хотя признаюсь что уже не с тем энтузиазмом что прежде. В какие-то моменты стал упираться, каких то вещей не хватает, какие-то просто невозможны. Альтернативой на данный момент для себя я вижу Open Thread, по крайней мере он кажется достаточно привлекательным.
Cхема устройства
![](https://habrastorage.org/r/w1560/webt/ng/ge/fs/nggefstbfgl2gs7mmaq7u9wnuak.png)
![](https://habrastorage.org/webt/ng/ge/fs/nggefstbfgl2gs7mmaq7u9wnuak.png)
![](https://habrastorage.org/webt/uw/z-/o8/uwz-o8zavyb9cyyrjkx89gvk-au.jpeg)
![](https://habrastorage.org/webt/sf/sf/i3/sfsfi3pudxcjpijflwaltic7afc.jpeg)
В итоге все свои требования к функционалу реализовать получилось. Устройство может работать с контроллером УД, так же устройство может работать напрямую с каким либо устройством в сети МySensor. Привязка устройств для прямого обмена может происходить как посредством конфигурации устройств через контроллер УД, внешними командами, так и без участия контроллера УД с помощью простого нажатия кнопки для активации режима привязки(binding). Датчик температуры и другое устройство к которому привязан датчик могут нормально поддерживать обмен даже без работающего шлюза MySensors или работающего контроллера УД, что безусловно повышает отказоустойчивость. Отдельная проблема была с драйверами eink дисплея, вероятно потому что дисплей достаточно новый, на сайте производителя и сайте WaveShare(предлагающий eink экраны Good Display под своим брендом) реализации библиотек достаточно сырые. Пришлось что-то переделать, что-то дописать.
В датчике реализовано поддержка нескольких языков, инверсия цвета по внешней команде в режиме конфигурирования устройства, несколько вариантов шрифтов так же меняемые по внешней команде в режиме конфигурации устройства. Датчик выводит на экран показания температуры и влажности, заряд батареи и уровень сигнала. Интервал замеров температуры и влажности, интервал замера уровня батарейки можно задать так же внешней командой. Для температуры и влажности в минутах, для уровня заряда батарейки в часах. Передает датчик в УД следующие данные: температура, влажность, уровень заряда в %, напряжение, уровень сигнала, причину перезагрузки.
![](https://habrastorage.org/webt/qo/er/3d/qoer3d92ralr62lujsmbjmczdie.jpeg)
Посмотреть как это выглядит можно в небольшом видеоролике:
Таймстампы интересных моментов:
3.10 — Конфигурирование (смена шрифта, инверсия цвета)
5.10 — Замер потребления, работа WTD
Если кому-то интересны мои разработки, то после прочтения статьи рекомендую перейти на канал и подписаться, там информацию по новым разработкам я публикую в первую очередь.
В спящем режиме датчик потребляет 2мкА, сброс WTD каждые 5 секунд, потребление в момент сброса 4-5мкА. В режиме работы с экраном и сенсором температуры и влажности 2-3мА, в режиме передачи 5-8мА, такой диапазон в 3 мА связан с тем что датчик сам регулирует мощность передачи на основе данных по уровню сигнала.
Под спойлером фотографии датчика
![](https://habrastorage.org/r/w780q1/webt/9v/6j/gt/9v6jgtid681fcybyx08bsaxyslc.jpeg)
![](https://habrastorage.org/r/w780q1/webt/pk/mp/90/pkmp90as6mnirsveaywrcwbgjvw.jpeg)
![](https://habrastorage.org/r/w780q1/webt/hb/na/th/hbnathxbdtc-cjjbyawimx6sbwq.jpeg)
![](https://habrastorage.org/r/w780q1/webt/d3/g1/yr/d3g1yrr19nt3wj49kbouer-raai.jpeg)
![](https://habrastorage.org/r/w780q1/webt/2e/me/6s/2eme6spifg117elxntjzwufsm1o.jpeg)
![](https://habrastorage.org/r/w780q1/webt/sg/mg/si/sgmgsiiju_mjoeb_dvht670bppu.jpeg)
![](https://habrastorage.org/webt/9v/6j/gt/9v6jgtid681fcybyx08bsaxyslc.jpeg)
![](https://habrastorage.org/webt/pk/mp/90/pkmp90as6mnirsveaywrcwbgjvw.jpeg)
![](https://habrastorage.org/webt/hb/na/th/hbnathxbdtc-cjjbyawimx6sbwq.jpeg)
![](https://habrastorage.org/webt/d3/g1/yr/d3g1yrr19nt3wj49kbouer-raai.jpeg)
![](https://habrastorage.org/webt/2e/me/6s/2eme6spifg117elxntjzwufsm1o.jpeg)
![](https://habrastorage.org/webt/sg/mg/si/sgmgsiiju_mjoeb_dvht670bppu.jpeg)
На этом хочу откланяться, если вам интересно все что связано с DIY, вы являетесть DIY разработчиком или хотите только начать, вам интересно использование DIY девайсов приглашаю всех заинтересованных в телеграм чат — DIYDEV
Всех кто хочет делать устройства, начать строить автоматизацию своего дома предлагаю познакомиться с простым в освоении протоколом Mysensors — телеграм-чат MySensors
А тем кто ищет достаточно взрослые решения для домашней автоматизации приглашаю в телеграм-чат Open Thread.
Мой GitHub этого проекта, схема, гербер файлы, 3D модели корпуса, bom, ПО.
Всем как всегда добра!