В этой новогодней статье постараюсь подробно описать весь процесс от и до, возможно к следующему летнему сезону кто-то захочет себе такой же. Но с начала хочу объявить о новогоднем розыгрыше в моем телеграм канале 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)
Antra
05.01.2024 06:01Как достигнуто "обратное переворачивание" датчика (а-ля неваляшка), если от волн антенна под воду уйдет?
vassabi
05.01.2024 06:01+1вангую, что это было достигнуто стучанием по голове того, кто своими волнами перевернул датчик :)
( это же датчик для бассейна, а не открытого водоема )
vvzvlad
05.01.2024 06:01Как достигнуто "обратное переворачивание" датчика (а-ля неваляшка), если от волн антенна под воду уйдет?
Так это не антенна, это датчик температуры, он и должен быть внизу.
Antra
05.01.2024 06:01Меня смутило
Поэтому решил делать датчик на радио модуле с усилителем сигнала и внешней антенной. Тут я имею в виду не торчащую из корпуса антенну, а подключаемую к радио модулю через IPEX коннектор, что бы была возможность как можно выше расположить антенну у верхней части корпуса.
Если DS18B20 заодно служит и грузом для обратного переворачивания (и его достаточно для этого), ОК.
vvzvlad
05.01.2024 06:01А, так если он перевернется, антенне будет пофиг по большей части, она и через датчик будет работать.
Berkseo Автор
05.01.2024 06:01Цент тяжести достаточно низко, основным балластом являются батарейки. Перевернуть его не возможно.
Rixty
05.01.2024 06:01Для детей я бы добавил в белый датчик кольцо с rgb ws2812) понятно что так оно дай бог доживёт до конца лета, но зато как игрушка весело)
Ну и zigbee для меня темный лес, но возможно с каким нибудь esphome это можно будет сделать проще
shadrap
05.01.2024 06:01Зачем такое количество болтов ,это удорожает конструкцию вразы. Мне кажется резьбовая крышка с кольцевой прокладкой решили бы вопрос с герметичностью. Шнур уплотнительный, силиконовый в Озоне ищется на раз,стоит копейки. Если кольцо,то подобрать из автомобильных прокладок.
Датчики турбидити на фото предназначены для стиралок, для анализа потока, хотя если в бассейне есть фильтрация воды,можно поставить на впускной патрубок... но что он будет показывать?? В воде бассейна нет такого уровня "загрязнения" как в стиралке.
vvzvlad
05.01.2024 06:01+1Зачем такое количество болтов ,это удорожает конструкцию вразы.
В разы? Болт 2 рубля стоит.
shadrap
05.01.2024 06:01-1Ну во-первых не два рубля , а 15 - мин для нержавейки , а черные максимум на год в бассейне, а их там 8 шт . Во-вторых сколько стоят эти вплавляемые чудо- гайки ? В-третьих процесс вплавления этих гаек то же не тривиален - нужно предварительно просверлить 8 отверстий, да следить что б это все шло соосно , в крышке нужно и отверстия и гнезда под болты... Не берусь строго спорить о себестоимости резьбы и болтов, просто впечатление создалось...
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 рублей на крепеж. Дырки под них сверлить не надо, они уже в модели есть при печати/литье. Просто паяльником вставляются. Соосность при этом особая не нужна, пластичность пластика прощает огрехи.
Но вплавка гаек не очень технологична, да. Можно сэкономить заменив на шурупы-саморезы, которые вкручиваются в пластик, но тогда пять замен батареек и стойки начнут слизываться.
Berkseo Автор
05.01.2024 06:01+1На стоимости болтов и вплавляемых гаек вообше не стоит зацикливаться. Как и на процессе вплавления гаек. Там всё как раз достаточно тривиально.
vbifkol
05.01.2024 06:01круглый корпус можно делать токарно из трубы пластиковой. и прокладка - стандартное резиновое кольцо, и крепежа не надо.
Berkseo Автор
05.01.2024 06:01+1Согласен, резьбовое соединение это хороший вариант, но я пока не пробовал проектировать такие соединения, пошел по простому пути. Может быть в версии 2. Если вы готовы помочь с проектированием такого корпуса, велкам, с удовольствием добавлю на гитхаб и ваш вариант. Проект открытый
tklim
05.01.2024 06:01Выглядит норм. Но ds18b20 тут немного не в тему. У него 3В нижняя граница допустимых напряжений. То что работает и зимой - это хорошо, но с точки зрения дизайна так себе. Я бы предложил как в сяоми круглых - 1хАА или ААА и повышайку до 3,3В
Berkseo Автор
05.01.2024 06:01+1Если начинать разговор на эту тему то он будет протекать в таком виде: сначала мы "зарубимся" на тему накладных расходов при преобразовании уровня напряжения, потом, вы найдете вариант какого нибудь контроллера у которого потери будут в наноамперах, потом мы будем ломать копья об стоимость этих контроллеров. Сейчас схема достаточно простая, дс18 можно и на 2,5в прочитать. Потребление во сне 2мкА, в передаче до 100мА, на комплекте не самых лучших батареек проживет более года. Меня это всё устроило, проект не коммерческий, но думаю с эстетикой не так уж всё и плохо.
tklim
05.01.2024 06:01У меня один и до 1.8 работал. Но если это про коммерческий продукт или любое массовое производство - нельзя противоречить даташиту. Один заработает, другой - нет. Ну и учитывая что если покупать в Китае, то там и подделки могут быть, уверенности мало.
egribanov
05.01.2024 06:01Подушню, но он же только у поверхности измеряет? Там вода всегда теплая
Antra
05.01.2024 06:01Точно! Дальнейшее развитие - научить его погружаться и передавать весь спект температур при очередном всплытии! :)
Хотя, кмк, достаточно просто подлиннее выноску для датчика сделать, коли будет желание. DS ведь может вообще на проводе болтаться, легко будет укорачивать, завязывая в петельку.
lelik363
05.01.2024 06:01Во сколько раз, по вашему, отличается температура у поверхности воды и на глубине бассейна в 1 метр?
Qlavrt
05.01.2024 06:01+5А есть ли "самое большое русскоязычное сообщество по тематике Zigbee" в виде старого доброго форума, а не модного Телеграм-канала? (Вопрос к знатокам)
Anyuta1166
05.01.2024 06:01А что у вас за датчик с дисплеем (модель, где найти)? На него можно выводить данные с других датчиков?
У меня просто проблема. Висит датчик температуры за окном, передает данные в систему умного дома. Хочется, чтобы где-то в доме висел дисплей и отображал температуру за окном.
Я решила этот вопрос таким способом - взяла ESP8266 (Wemos D1 mini), OLED дисплей (в виде шилда для Wemos), запихнула все это в подходящий по размеру корпус, прошила прошивку Tasmota и отправляю туда данные из Home Assistant.
Проблема в том, что OLED дисплей за полгода выгорает до трудночитаемости, я уже устала покупать и менять дисплеи, хотелось бы какой-то другой вариант.
NutsUnderline
05.01.2024 06:01у меня в самодельных часах классический жидкий кристалл и тот уже малеленько залипает, лет 15 где то ему :) стандартные led индикаторы при этом как работали и работают.
чисто технически - разновидностей дисплея очень много, в tasmota/esphome вроде много какие поддержаны. хоть семисегментный led хоть электронную бумагу.
Но даже если далеко от хабра не ходить - для таких задач используют tft, ips. Прикручивают шурупами обычный планшет с андройдом и на экране че угодно. Есть готовые панели, на esp32 которые можно прошить.
pistoletov
05.01.2024 06:01Sonoff выпустил устройство для визуализации. Поищите на майску недавно был обзор. Он вроде в тасмоту перешивается
Anyuta1166
05.01.2024 06:01+1Нашла, очень интересно, возьму на заметку.
Но к сожалению, это не то что мне сейчас нужно. Устройство от Sonoff по сути заменяет собой выключатель, оно ставится в подрозетник и к нему нужно подводить проводку 220В.
У меня все выключатели в неудобных местах, где дисплей просто неуместен. Мне нужно отдельное устройство с питанием от батареи либо от USB, которое можно повесить в произвольное место.
Поэтому меня заинтересовало устройство автора статьи, хотелось бы все-таки узнать что это такое.
pistoletov
05.01.2024 06:01+1Спасибо за статью. Хотел спросить не разбирали ли вы датчик после сезона? От нагрева возникает избыточное давление а при охлаждении может подсасывать воду если есть малейшая щель. Вообще сложно электронные устройства для воды делать. Единственно что отработало надежно это корпус из нержавейки с резиновыми прокладками но там не было радиомодуля
lelik363
Как была решена проблема выпадания конденсата внутри корпуса и коррозии составных частей?
vvzvlad
Нет влаги внутри, нет конденсата. Достаточно иметь герметичный корпус.
xSVPx
Если там воздух +20, то при -20 из него вполне может выпасть достаточно конденсата...
firehacker
Силикагель? Сборка в камере с осушенным воздухом, наддув осушенным газом.
lelik363
Недостаточно.
Berkseo Автор
Плата обработана акриловым лаком для электроники. Внутри на всякий случай пакетик селикогеля. Судя по работе в экстремальных условиях утечки по току пока нет.
lelik363
Тоже вариант...