Приветствую всех читателей Habr! В эти новогодние каникулы хочу поделиться с вами своим летним открытым проектом zigbee датчика температуры для бассейна. Идея разработать такой датчик появилась довольно спонтанно, летом 2023 года после установки бассейна на даче, появилось желание мониторить температуру воды. К тому времени у меня было разработано несколько проектов zigbee датчиков с дисплеями и датчиков температуры с выносными сенсорами. Датчики температуры можно было привязывать к датчикам с дисплеями и выводить температуру, присланную с этих внешних датчиков. Датчик температуры я закреплял на стенке бассейна, а сенсор на проводе опускался в воду. Но как оказалось это не очень то и удобно. Как только пришел к такому выводу то сразу решил что мне нужен плавающий zigbee датчик температуры.




В этой новогодней статье постараюсь подробно описать весь процесс от и до, возможно к следующему летнему сезону кто-то захочет себе такой же. Но с начала хочу объявить о новогоднем розыгрыше в моем телеграм канале o DIY устройствах.

В новогоднем розыгрыше будут разыграны 5 zigbee датчиков влажности почвы, специально сделанных для этого новогоднего розыгрыша — EFEKTA zFlora SE (Special Edition). Условия розыгрыша простые, до 15 января подписаться на группу DIY DEV, оставить сообщение EFEKTA zFlora SE в группе. 15 января в 15 часов будет произведен розыгрыш среди участников оставивших сообщение EFEKTA zFlora SE, объявлены 5 победителей.
Ну вот объявил, а теперь возвращаемся к проекту датчика температуры для бассейна.

Датчик мне захотелось получить сразу и быстро, поэтому решил вспомнить о ЛУТе. Решил и не пожалел, это конечно одно из приятных занятий которое доступно в электро DIY. Сейчас, во времена доступности промышленно изготовленных плат, это занятие становится редким удовольствием на которое и хочется и жалко тратить время. Но тут всё сошлось, лето, свободное время, проект исключительно для себя, который к тому же хотелось буквально завтра, но лучше если сегодня уже в готовом виде :). На моем гитхаб я выложил 2 версии плат, одна версия для заказа на производстве, вторая для тех кто захочет сделать плату своими руками. Проект разработан на soc сс2530 (радиомодуль E18-MS1PA2-IPX, E18-MS1PA2-PCB, E18-MS1-PCB)

Не буду углубляться в процесс производства плат методом ЛУТ. Инструкций достаточно на ютубе, опишу коротко. Распечатал на лазерном принтере (кстати купленном давным-давно, специально для этого) обе стороны платы на бумаге из глянцевого журнала про автомобили, совместил обе стороны приложив на стекло окна и подсвечивая лампой, склеил скотчем. Вырезал кусок текстолита с двухсторонним медным слоем, зачистил, обезжирил и положил между слоями бумаги. Прогрел утюгом с обеих сторон, смыл бумагу. Подправил кое-где перманентным маркером, вытравил в растворе хлорного железа, отмыл. Дрюмелем обработал контур платы, сделал сверление отверстий, самые мелкие 0.5мм. Зачистил и залудил сплавом розе в эмалированной кастрюльке. Готово, и лазер и утюг, всё было :), и не надо ждать месяц плату с производства. А эмоции? Их в коробку с платами на производстве не положат.



Что мне нужно было от этого датчика? Основное это что бы он плавал и стабильно передавал измеряемую температуру в умный дом. Если датчик плавающий, то он должен быть герметичным, поэтому нужно было что-то решать с сервисной кнопкой, на которой обычно висит функционал входа, выхода из сети, еще какие-то другие функции. Остановился на варианте с smd кнопкой и герконом. Кнопкой можно было бы пользоваться когда корпус открыт, а герконом уже если нужно, что то сконфигурировать по месту, в бассейне, поднеся магнит.



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



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


На изображении показан весь доступный функционал у датчика.

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

В обязательном порядке была добавленавозможность осуществлять прямой биндинг по кластеру температуры, что бы можно было привязать датчик к моему другому датчику с дисплеем для мониторинга температуры.
const cId_t zclApp_OutClusterListFirstEP[] = {POWER_CFG, TEMP};
#define APP_MAX_OUTCLUSTERS_FIRST_EP (sizeof(zclApp_OutClusterListFirstEP) / sizeof(zclApp_OutClusterListFirstEP[0]))


Конфигурирование отправки отчетов решил не реализовывать, остановился на отчетах по таймеру, который можно настроить через систему умного дома.


С проектированием корпуса было немного сложновато, до этого проекта я не пробовал проектировать герметичные корпуса. Для соединения верхней крышки и корпуса с платой, остановился на варианте с винтами и самоконтящимися гайками. Реализацию замка для герметизации подсмотрел на популярных герметичных корпусах в виде коробочек, где используется паз в крышке и уплотнительный шнур из какого то вспененного полимерного материала. Всего я сделал себе 2 таких датчика. В корпусе второго датчика я заменил обычные гайки на вплавляемые в корпус, что позволило немного уменьшить размер корпуса, тем самым облегчив его. Гайки вплавлял в корпус одевая их на паяльник с конусовидным жалом.



Так как шнур из вспененного полимера я найти не смог, то решил залить паз в крышке жидким герметиком, получилось не очень. На первых испытаниях внутрь корпуса просочилось немного воды. Дело оказалось в том что застывший герметик получался плотным и не мог хорошо уплотнятся при сжатии, когда соединялись корпус и крышка. Я решил попробовать обычный прозрачный герметик для сантехники, заложил немного в шприц, и выдавил его в паз на крышке, и еще немного обработал поверхности крышки и корпуса которые будут соприкасаться при закрытии. Получилась своего рода прокладка и это сработало.



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





Корпус для первого датчика был напечатан на фотополимерном принтере, полимером белого цвета, поэтому проблемы со светодиодом и датчиком освещенности не было. Корпус для второго датчика, уже на заводской и красивой плате я заказал позднее в китае, на сайте jlcpcb. Он был напечатан по технологии MJF, черным полимером. Для этого варианта корпуса, я просверлил два отверстия в крышке корпуса для светодиода и датчика освещенности. Залил отверстия прозрачной УФ смолой, сделав своего рода линзы.




К слову так же был напечатан корпус на FDM принтере и сверху обработан растворителем D-limonen, чтобы поверхность стала монолитной. Но этот вариант с корпусом напечатанным на FDM принтере я только проверил на плавучесть, дальше его реализовывать не стал, но это рабочий вариант. Самый легкий по весу, но немного менее эстетичный чем варианты корпусов напечатанных по технологии SLA и MJF.




Программа датчика была написана в среде разработки IAR. Для тех кто хочет попробовать оставляю ссылки на описание установки среды разработки, настройке, сборке проекта.

github.com/sigma7i/zigbee-wiki/wiki/zigbee-firmware-install
zigdevwiki.github.io/Begin/IAR_install

Проект печатной платы разрабатывался в программе для разработки печатных плат — DipTrace.
Исходники проекта выложены на моем github.

Корпус спроектирован в программе SOLIDWORKS, исходники так же выложены на моем gihhub.

Прошивка устройства
Вам понадобится программа SmartRF Flash Programmer версии 1. Так же вам понадобится CC Debugger или Smart RF04E(рекомендуется из-за простоты подключения).



Процесс прошивки с помощью SmartRF Flash Programmer v1
Подключите 5 контактов на плате на соответствующие подписанные контакты дебагера. Подключаете дебагер в usb порту компьютера, открываете программу SmartRF Flash Programmer v1. Правее поля в пункте Flash Image нажимаете на иконку «обзор» и выбираете файл прошивки скачанный ранее. В пункте Actions выбираете Erase и ниже нажимаете на кнопку Perform actions. После того как вы очистили чип, выбираете Erase and program том же в пункте Actions и снова нажимаете кнопку Perform actions.


Для работы устройства через з2м вам понадобится установить внешний конвертер, процесс установки конвертера описан в файле README на моем github.

Датчик всё лето прекрасно выполнял свою работу, плавая в бассейне и передавая данные в умный дом и на датчик с дисплеем, к которому он был привязан.





Но пришло время лету заканчиваться, бассейн был разобран, а датчик поставлен на длительный тест на детской площадке, на сетке-качелях.

август, сентябрь




октябрь


ноябрь


декабрь




И вот уже за окном январь 2024 года, я на даче, на новогодних праздниках, сижу и пишу статью об этом летнем проекте. В московском регионе сейчас наступили сильные морозы, это конечно по нашим московским меркам они сильные, -25 в среднем. Датчик и сейчас там, на детской площадке, продолжает работать, исправно отправляет данные, пока я пишу этот текст. Тест продолжается, батарейки из Фикспрайса в норме, сигнал на 20 метрах с улицы стабильный и высокий.















Появились планы на следующий сезон по этому проекту. Хочу добавить в проект сенсор мутности воды, несколько таких сенсоров уже закуплены, думаю к следующему сезону будет вторая версия датчика для бассейна.



ГитХаб проекта — https://github.com/smartboxchannel/EFEKTA-Pool-Temperature-Sensor

Вот такая получилась зимняя статья о летнем проекте. Если вы дочитали статью об этом проекте zigbee датчика до конца, то вам точно нужно добавится в самое большое русскоязычное сообщество в Телеграм по тематике Zigbee — Вокруг да около Zigbee. Так же приглашаю всех читателей, которым интересна тематика DIY, разработка электронных устройств, всех кто хочет расказать о своих самоделках или почитать о чужих в мою группу в телеграм DIYDEV

Спасибо за внимание, всем добра!..

Комментарии (39)


  1. lelik363
    05.01.2024 06:01
    +7

    Как была решена проблема выпадания конденсата внутри корпуса и коррозии составных частей?


    1. vvzvlad
      05.01.2024 06:01
      +3

      конденсата внутри корпуса 

      Нет влаги внутри, нет конденсата. Достаточно иметь герметичный корпус.


      1. xSVPx
        05.01.2024 06:01
        +3

        Если там воздух +20, то при -20 из него вполне может выпасть достаточно конденсата...


        1. firehacker
          05.01.2024 06:01

          Силикагель? Сборка в камере с осушенным воздухом, наддув осушенным газом.


      1. lelik363
        05.01.2024 06:01
        -1

        Недостаточно.


    1. Berkseo Автор
      05.01.2024 06:01

      Плата обработана акриловым лаком для электроники. Внутри на всякий случай пакетик селикогеля. Судя по работе в экстремальных условиях утечки по току пока нет.


      1. lelik363
        05.01.2024 06:01

        Тоже вариант...


  1. Antra
    05.01.2024 06:01

    Как достигнуто "обратное переворачивание" датчика (а-ля неваляшка), если от волн антенна под воду уйдет?


    1. vassabi
      05.01.2024 06:01
      +1

      вангую, что это было достигнуто стучанием по голове того, кто своими волнами перевернул датчик :)
      ( это же датчик для бассейна, а не открытого водоема )


    1. vvzvlad
      05.01.2024 06:01

      Как достигнуто "обратное переворачивание" датчика (а-ля неваляшка), если от волн антенна под воду уйдет?

      Так это не антенна, это датчик температуры, он и должен быть внизу.


      1. Antra
        05.01.2024 06:01

        Меня смутило

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

        Если DS18B20 заодно служит и грузом для обратного переворачивания (и его достаточно для этого), ОК.


        1. vvzvlad
          05.01.2024 06:01

          А, так если он перевернется, антенне будет пофиг по большей части, она и через датчик будет работать.


    1. Berkseo Автор
      05.01.2024 06:01

      Цент тяжести достаточно низко, основным балластом являются батарейки. Перевернуть его не возможно.


  1. NutsUnderline
    05.01.2024 06:01

    Коментарии к этой статье активнее идут на другом сайте :)


  1. Rixty
    05.01.2024 06:01

    Для детей я бы добавил в белый датчик кольцо с rgb ws2812) понятно что так оно дай бог доживёт до конца лета, но зато как игрушка весело)

    Ну и zigbee для меня темный лес, но возможно с каким нибудь esphome это можно будет сделать проще


  1. shadrap
    05.01.2024 06:01

    Зачем такое количество болтов ,это удорожает конструкцию вразы. Мне кажется резьбовая крышка с кольцевой прокладкой решили бы вопрос с герметичностью. Шнур уплотнительный, силиконовый в Озоне ищется на раз,стоит копейки. Если кольцо,то подобрать из автомобильных прокладок.

    Датчики турбидити на фото предназначены для стиралок, для анализа потока, хотя если в бассейне есть фильтрация воды,можно поставить на впускной патрубок... но что он будет показывать?? В воде бассейна нет такого уровня "загрязнения" как в стиралке.


    1. vvzvlad
      05.01.2024 06:01
      +1

      Зачем такое количество болтов ,это удорожает конструкцию вразы.

      В разы? Болт 2 рубля стоит.


      1. shadrap
        05.01.2024 06:01
        -1

        Ну во-первых не два рубля , а 15 - мин для нержавейки , а черные максимум на год в бассейне, а их там 8 шт . Во-вторых сколько стоят эти вплавляемые чудо- гайки ? В-третьих процесс вплавления этих гаек то же не тривиален - нужно предварительно просверлить 8 отверстий, да следить что б это все шло соосно , в крышке нужно и отверстия и гнезда под болты... Не берусь строго спорить о себестоимости резьбы и болтов, просто впечатление создалось...


        1. vvzvlad
          05.01.2024 06:01
          +2

          Вот болты: https://krepmix.ru/catalog/vinty_s_polukrugloy_polutsilindricheskoy_golovkoy_din_7985/vint_s_polukrugloy_golovkoy_din7985_m_3_x_12_otsinkovannyy/?login_form=yes
          0.5р штука.
          Вот втулки: https://ruelectronics.com/krepezh/vtulki-rezbovye/zakladnaia-s-otverstiem-m3-l-10mm/
          5.5 рублей.

          Итого 50 рублей на крепеж. Дырки под них сверлить не надо, они уже в модели есть при печати/литье. Просто паяльником вставляются. Соосность при этом особая не нужна, пластичность пластика прощает огрехи.
          Но вплавка гаек не очень технологична, да. Можно сэкономить заменив на шурупы-саморезы, которые вкручиваются в пластик, но тогда пять замен батареек и стойки начнут слизываться.


        1. Berkseo Автор
          05.01.2024 06:01
          +1

          На стоимости болтов и вплавляемых гаек вообше не стоит зацикливаться. Как и на процессе вплавления гаек. Там всё как раз достаточно тривиально.


          1. vbifkol
            05.01.2024 06:01

            круглый корпус можно делать токарно из трубы пластиковой. и прокладка - стандартное резиновое кольцо, и крепежа не надо.


    1. Berkseo Автор
      05.01.2024 06:01
      +1

      Согласен, резьбовое соединение это хороший вариант, но я пока не пробовал проектировать такие соединения, пошел по простому пути. Может быть в версии 2. Если вы готовы помочь с проектированием такого корпуса, велкам, с удовольствием добавлю на гитхаб и ваш вариант. Проект открытый


      1. vbifkol
        05.01.2024 06:01

        резьбовое не очень осмысленно. можно просто защелкиваться на резиновом кольце. типа так


        1. lelik363
          05.01.2024 06:01

          Это проверено или предполагаете?


          1. vbifkol
            05.01.2024 06:01

            Ну герметичные банки с таки уплотнением я делал, работало, так что наверное можно сказать проверено.


  1. tklim
    05.01.2024 06:01

    Выглядит норм. Но ds18b20 тут немного не в тему. У него 3В нижняя граница допустимых напряжений. То что работает и зимой - это хорошо, но с точки зрения дизайна так себе. Я бы предложил как в сяоми круглых - 1хАА или ААА и повышайку до 3,3В


    1. DarkTiger
      05.01.2024 06:01

      Либо дорогие преобразователи, либо низкий КПД. С учетом неразборного корпуса - лучше первое.


      1. tklim
        05.01.2024 06:01

        Сейчас много новых китайских преобразователей с хорошим КПД. Но устройство довольно нишевое, так что и TI сойдет.


    1. Berkseo Автор
      05.01.2024 06:01
      +1

      Если начинать разговор на эту тему то он будет протекать в таком виде: сначала мы "зарубимся" на тему накладных расходов при преобразовании уровня напряжения, потом, вы найдете вариант какого нибудь контроллера у которого потери будут в наноамперах, потом мы будем ломать копья об стоимость этих контроллеров. Сейчас схема достаточно простая, дс18 можно и на 2,5в прочитать. Потребление во сне 2мкА, в передаче до 100мА, на комплекте не самых лучших батареек проживет более года. Меня это всё устроило, проект не коммерческий, но думаю с эстетикой не так уж всё и плохо.


      1. tklim
        05.01.2024 06:01

        У меня один и до 1.8 работал. Но если это про коммерческий продукт или любое массовое производство - нельзя противоречить даташиту. Один заработает, другой - нет. Ну и учитывая что если покупать в Китае, то там и подделки могут быть, уверенности мало.


  1. egribanov
    05.01.2024 06:01

    Подушню, но он же только у поверхности измеряет? Там вода всегда теплая


    1. Antra
      05.01.2024 06:01

      Точно! Дальнейшее развитие - научить его погружаться и передавать весь спект температур при очередном всплытии! :)

      Хотя, кмк, достаточно просто подлиннее выноску для датчика сделать, коли будет желание. DS ведь может вообще на проводе болтаться, легко будет укорачивать, завязывая в петельку.


    1. lelik363
      05.01.2024 06:01

      Во сколько раз, по вашему, отличается температура у поверхности воды и на глубине бассейна в 1 метр?


  1. Qlavrt
    05.01.2024 06:01
    +5

    А есть ли "самое большое русскоязычное сообщество по тематике Zigbee" в виде старого доброго форума, а не модного Телеграм-канала? (Вопрос к знатокам)


  1. Anyuta1166
    05.01.2024 06:01

    А что у вас за датчик с дисплеем (модель, где найти)? На него можно выводить данные с других датчиков?

    У меня просто проблема. Висит датчик температуры за окном, передает данные в систему умного дома. Хочется, чтобы где-то в доме висел дисплей и отображал температуру за окном.

    Я решила этот вопрос таким способом - взяла ESP8266 (Wemos D1 mini), OLED дисплей (в виде шилда для Wemos), запихнула все это в подходящий по размеру корпус, прошила прошивку Tasmota и отправляю туда данные из Home Assistant.

    Проблема в том, что OLED дисплей за полгода выгорает до трудночитаемости, я уже устала покупать и менять дисплеи, хотелось бы какой-то другой вариант.


    1. NutsUnderline
      05.01.2024 06:01

      у меня в самодельных часах классический жидкий кристалл и тот уже малеленько залипает, лет 15 где то ему :) стандартные led индикаторы при этом как работали и работают.

      чисто технически - разновидностей дисплея очень много, в tasmota/esphome вроде много какие поддержаны. хоть семисегментный led хоть электронную бумагу.

      Но даже если далеко от хабра не ходить - для таких задач используют tft, ips. Прикручивают шурупами обычный планшет с андройдом и на экране че угодно. Есть готовые панели, на esp32 которые можно прошить.


    1. pistoletov
      05.01.2024 06:01

      Sonoff выпустил устройство для визуализации. Поищите на майску недавно был обзор. Он вроде в тасмоту перешивается


      1. Anyuta1166
        05.01.2024 06:01
        +1

        Нашла, очень интересно, возьму на заметку.

        Но к сожалению, это не то что мне сейчас нужно. Устройство от Sonoff по сути заменяет собой выключатель, оно ставится в подрозетник и к нему нужно подводить проводку 220В.

        У меня все выключатели в неудобных местах, где дисплей просто неуместен. Мне нужно отдельное устройство с питанием от батареи либо от USB, которое можно повесить в произвольное место.

        Поэтому меня заинтересовало устройство автора статьи, хотелось бы все-таки узнать что это такое.


  1. pistoletov
    05.01.2024 06:01
    +1

    Спасибо за статью. Хотел спросить не разбирали ли вы датчик после сезона? От нагрева возникает избыточное давление а при охлаждении может подсасывать воду если есть малейшая щель. Вообще сложно электронные устройства для воды делать. Единственно что отработало надежно это корпус из нержавейки с резиновыми прокладками но там не было радиомодуля