Датчик температуры для умного дома своими руками
Самодельные датчики движения (температуры, влажности, освещения) для «Умного Дома» на основе системы MySensors
Проходил мимо, смотрю, а здесь вещи интересные о самоделках разных пишут. Я тоже недавно кое-что мастерил, дай, думаю, напишу, может кому и пригодится, ну или просто интересно будет. Речь идет о железе бюджетного DIY-датчика для встраивания в панели выключателей и розеток.
Но давайте по порядку.
Системой автоматизации для «Умного Дома» я увлекся уже сравнительно давно. Сейчас у меня здесь несколько разных систем в одно целое связаны. Тут есть и промышленные и самодельные компоненты. О последней самоделке я и хочу рассказать.
Некоторое время назад на просторах интернета натолкнулся я на систему домашней автоматизации MySensors. Довольно развитая (и постоянно развиваемая далее) беспроводная система на основе Arduino и nRF24L01+. Впрочем, речь не о том, кому интересно — посмотрит источник.
Главными достоинствами системы для меня были хорошая программная поддержка, бидирекциональность коммуникации, доступность компонентов и небольшая их стоимость.
Вдоволь наигравшись на макетных платах, я решил разработать устройство, которое можно достойно интегрировать в домашний интерьер (нельзя же WAF игнорировать). Получилось устройство, которое можно наряду с прочими утопить в стену в стандартной 63мм коробке.
Это первая сборка, последующие постараюсь сделать аккуратнее. Большая дыра (для датчика освещения) будет закрыта стержнем из оргстекла.
В полуразобранном виде выглядит это так:
Вид с другой стороны:
Все это состоит из (китайских) 8MHz/3,3V Arduino Pro Mini, радиомодуля nRF24L01+, датчика движения HC-SR510, датчика DHT22 (температура и влажность), датчика освещенности BH1750 и стандартной заглушки фирмы JUNG (наверняка можно использовать и другие, вроде Gira, Berker и т.д. я просто вял то, что было под рукой). Общая стоимость около 15$.
Печатная плата разработана в Eagle. Исходники тут. Заказано у ITEADStudio, сделано было хорошо (кроме шелка, надписи получились так себе).
Наверное шрифт слишком мелкий и тонкий. На гербере смотрелось неплохо.
В процессе сборки обнаружились некоторые мелкие неудобства, кое-что можно было бы улучшить, но в общем и целом плата вполне применима.
Будет интересно, могу написать подробнее и дать ссылки на (китайских) продавцов соответствующих компонентов.
Очередной умный дом, в нескольких частях. Метеостанция из подручных материалов
Просматривая разные проекты метеостанций, заметил одну тенденцию. Это или датчик температуры и влажности, чаще всего всеми любимый китайский DHT-11 или DHT-22, к которым добавляют либо датчик освещенности (Метеостанция на Arduino с визуализацией данных) либо давления (Ethernet метеостанция), или покупное-навороченное за много сотен долларов (Автоматическая метеостанция на даче)
Так как лично для меня — метеостанция без измерения направления и скорости ветра не метеостанция, а потратить порядка 700USD на по большому счету игрушку я не готов, то решено было сделать похожее на «дорогое-навороченное» но занедорого.
Электроника
- Датчик температуры — LM35. Включен с возможностью измерения отрицательных температур
- Куда уж без него — датчик влажности и температуры DHT11
- Датчик давления — HP03SA
- Датчик освещенности — фоторезистор LXD5516
- Датчик скорости ветра — обычный датчик Холла
Теперь о измерении направления ветра. Было много вариантов, от оптических энкодеров — заводских (дорого) или самодельных в виде нескольких пар светодиодов и фотодиодов, и диска с кодом Грея (сложно и много компонентов), до магнита и 4-8 герконов (слишком просто и неточно). В итоге выбор пал на AS5040 – магнитный энкодер. Так как особая точность не нужна, то аналоговый выход энкодера подключен к ADC микроконтроллера.
Микроконтроллер — PIC16F88. Выход — RS485 в внутреннюю сеть умного дома, о котором этот цикл статей. Вся электронная часть собрана на трех платах.
На этом с электроникой все, никаких нюансов, ничего интересного, все по даташитам. Переходим к механике.
Механика
К сожалению, напечатать корпус на 3D принтере возможности нет, а у заводских корпусов с водонепроницаемостью беда практически у всех. К тому же подшипники и все остальное — тела вращения, значит круглый корпус будет самым логичным выбором. Пришлось обратить взор на другие сферы — на водоснабжение. В качестве корпуса взята соединительная муфта «на 32» для канализации, и два патрубка для размещения в них подшипниковых узлов. Из латуни были выточены две заглушки, в которых запрессованы по два подшипника 626.
Магниты… Магнит для датчика скорости подойдет практически любой, а вот с датчиком направления было сложнее. Ему нужен круглый магнит с намагниченностью от края до края
В то время как у основной массы продающихся — разные полюса на разных сторонах.
Но, оказалось, что нужные магниты находятся на шпинделях двигателей CD/DVD приводов.
В собранном виде подшипниковые узлы выглядят так
После изготовления и сборки плат — датчики скорости и направления ветра принимают окончательный вид
Так как метеостанция все таки из подручных материалов, то для крыльчатки режем теннисные шарики, флюгер тоже мастерим из того, что попадется под руки. Красим в радикально черный цвет, и получается так.
В качестве датчика дождя так же используем половинку теннисного шарика, в котором между двумя слоями геотекстиля расположены два контакта
Собираем, подключаем и прикручиваем повыше
Интерфейс
Как я уже рассказывал (Очередной умный дом, в трех частях. Часть третья, пользовательско-интерфейсная) есть два вида интерфейса. Первый вид, в котором на экране отображаются практически все данные с устройства, выглядит так
Температура текущая, минимум, максимум, направление изменения. Давление, аналогично. Влажность. Ветер — направление и роза ветров. Цифры нужны скорее для отладки, показывают сколько времени в каком секторе был флюгер. Скорость ветра, время, показания датчика освещенности (без калибровки, то что измерил ADC) и датчик дождя. Все данные и обработка — ведутся в микроконтроллере метеостанции.
Второй тип интерфейса — на основе виджетов. Тут данных меньше, температура, влажность, давление, скорость и направление ветра
И куда уж без Android Wear — на часах
В связи с тем, что раз в минуту происходит опрос всех контроллеров с записью в БД— то любые метеоданные доступны для анализа или отображения в виде графиков
Эта статья будет первой из цикла про всевозможные датчики. В ней будут рассмотрены только несколько распространенных атмосферных датчиков. А для начала будут даны общие принципы работы с Wi-Fi модулями типа ESP-8266, создание для них микропрограммы, передача данных с датчиков в систему умного дома MajorDoMo.
Датчики:
Это основные датчики. В конкретных случаях в дополнение к ним, могут применяться и другие, например: датчик пересечения луча, датчик приближения, акустический датчик, датчик давления воды, датчик дождя, датчик влажности почвы, датчик уровня жидкости и т.п.
Датчики могут быть отдельными устройствами просто передающие свои значения в какую-то внешнюю систему, а могут быть объединены с исполнительными устройствами, например, термостат или светильник с датчиком движения. В любом случае должна быть возможность подключения к датчику по какому-то протоколу для получения его значений.
Датчики своими руками:
Сам датчик, это как правило просто радиодеталь или небольшая платка, которая сама по себе не работает. Что бы получать с датчика данные, его необходимо подключить к какому-то микроконтроллеру, а уже микроконтроллер сможет интерпретировать и передавать измеренные датчиком значения каких-то величин.
Микроконтроллер:
Итак, начнём с самодельных вариантов на базе Wi-Fi микроконтроллера ESP8266. Во всех примерах буду использовать плату Wemos D1 mini.
На данном микроконтроллере очень легко можно строить различные комбинированные устройства, совмещающие в себе сразу и какие-то датчики и актуаторы для управления нагрузкой, например, светильник с датчиком освещенности и т.п. К модулю можно подключать кнопки и сенсорные площадки. При чем нажатия кнопок с модуля можно обрабатывать на сервере умного дома. Интересные комбинации можно получить, подключив к модулю миниатюрный OLED дисплей, на который можно сразу выводить текущие значения с датчиков и (или) информацию с сервера умного дома. Для подключения к этой плате без пайки есть несколько разных шилдов, например, плата для подключения внешнего аккумулятора, плата с установленным реле, со слотом для microSD карты и т.п.
Для первоначальной загрузки в плату микропрограммы, не требуются дополнительные адаптеры. Модуль уже имеет на борту встроенный USB-UART адаптер и его достаточно просто подключить к компьютеру через USB. В дальнейшем поддерживается обновление микропрограммы по воздуху (OTA).
Перед тем, как перейти к конкретным решениям необходимо рассмотреть общие правила работы с модулями ESP8266.
Минимальный набор опций, описанный ниже, позволит подключить выбранный датчик, отслеживать его показания на главной странице модуля, при необходимости вносить поправку в показания, передавать данные на сервер умного дома по протоколу MQTT, а также по расписанию производить перезагрузку модуля, во избежание его зависания. Дополнительную информацию о конструкторе и прошивке модуля можно можно узнать из статьи про MQTT и на сайте проекта. Ниже описаны основные действия.
Создание микропрограммы при помощи конструктора:
Итак, после регистрации на сайте проекта, для создания микропрограммы через конструктор, необходимо:
Загрузка микропрограммы:
Настройка ESP8266:
Для настройки модуля необходимо:
Настройка Majordomo:
Датчики температуры, влажности, давления.
Итак, теперь перейдем к рассмотрению самих датчиков:
DS18B20
Для начала изучим цифровой температурный датчик DS18B20, подключаемый по шине 1-wire. Основные технические характеристики следующие:
- Диапазон измерения температуры составляет от -55 до +125 °C.
- Точность: ±0,5°C (в пределах -10…+85 °C)
- Время получения данных: 750 мс при 12-битном разрешении; 94 мс при 9-битном разрешении
- Напряжение питания: 3–5,5 В
- Потребляемый ток при бездействии: 750 нА
- Потребляемый ток при опросе: 1 мА
Из особенностей следует отметить:
- На одну линию связи может быть установлено до 20 датчиков (макс. кол-во нужно выставить в конструкторе прошивки перед компиляцией). Каждый DS18B20 имеет свой уникальный цифровой идентификатор, что позволяет принимать данные от нескольких датчиков на одной линии связи.
- Возможность получения питания от той-же линии связи (паразитное питание). 1 и 3 выводы подключаются на общий провод, а плюс питания через резистор 4,7k подключается к выводу №2 (на длинной линии рекомендуется полноценное питание).
- Выпускается как в обычном исполнении, так и в закрытом корпусе (герметичной металлической капсуле), что позволяет использовать его под водой, например для контроля температуры воды в аквариуме.
Схема подключения термодатчика к популярной плате Wemos D1 Mini выглядит следующим образом (GPIO5 для примера, можно использовать и другие, только отразить это в настройках микроконтроллера):
После всех манипуляций на главной странице админки контроллера можно увидеть показания с термодатчика, а для доставки данных в систему умного дома лучше всего использовать протокол MQTT, выполнив соответствующие настройки в разделе Servers (при условии, что нужная опция была задана в конструкторе прошивок, подробности ранее в этой статье и в статье про MQTT):
DHT22 (AM2302):
Это комбинированный датчик температуры и влажности, с приемлемой точностью (возможно потребуется начальная калибровка в настройках прошивки WiFi-IoT). Однако существует и более дешёвая версия этого датчика DHT11 (в синем корпусе), которая к использованию не рекомендуется по причине совсем низкой точности. Основные параметры датчика следующие:
- Питание – от 3 до 5 Вольт;
- Измерение влажности в интервале от 0% до 100%. Точность измерений от 2% до 5%;
- Диапазон измеряемых температур – от минус 40 до 125 градусов по Цельсию (точность измерений – 0,5);
- Частота снятия показаний: одно измерение за 2 секунды.
- Габаритные размеры: 15,1 мм длина; 25 мм широта; 5,5 мм высота;
Схема подключения к плате D1 Mini следующая:
BME280
Схема подключения следующая (Внимание, датчик требует питание 3.3В):
Вообще, шина I2C, к которой подключается данный датчик, в обязательном порядке требует установку подтягивающих резисторов на линии SCL и SDA, но на конкретно этой плате они уже распаяны, хотя в других вариантах могут отсутствовать.
Покупные датчики:
Как правило большинство готовых решений имеют батарейное питание и работают по радиоканалу zigbee, z-wave и т.п. Среди готовых датчиков весьма популярны Noolite (433MHz свой протокол), Xiaomi (zigbee), большой ассортимент z-wave совместимых решений и т.п. Более подробно остановлюсь на первом:
Noolite PT111 :
Это датчик температуры и влажности с автономным питанием. Работает по беспроводному протоколу на частоте 433МГц. Основные технические характеристики:
Для получения данных температуры и влажности понадобится шлюз Ноолайт, подключаемый к UART или USB:
По UART можно подключить устройство напрямую, например, к одноплатному компьютеру Raspberry Pi. В версии с USB, кроме наличия USB-UART преобразователя, нет никаких отличий от более дешёвого варианта (без USB).
Данное устройство так же можно использовать автономно совместно с силовыми блоками от Ноолайт для управления нагрузкой без каких-либо дополнительных систем. Таким образом можно получить функционал термостата или гигростата на выбор:
Более подробно про систему Noolite читайте в предыдущей части и на сайте производителя.
Все рассматриваемые датчики установлены у меня дома. Все инструкции из собственного опыта.
Удалённое управление отоплением дома. Комнатный wifi термостат.
Привет.
Хочу рассказать как я немного автоматизировал управление газовым котлом отопления квартиры используя комнатный wifi термостат с ali. Удаленный контроль для меня был необходим, т.к. квартира зимой пустеет. Так же термостат экономит газ, электроэнергию, и продлевает срок службы котла.
Начну с теории, все новые и почти все старые (лет так 10-15) котлы поддерживают (как минимум примитивное) управление через внешний (комнатный) термостат. Управление может быть двух видов:
1.Примитивное, тупо вкл\выкл (замыканием сухого контакта (dry contacts)), а вот сам термостат может быть как примитивный (механический на основе биметаллического контакта, такой же принцип у бытового электро чайника) так и умный, с программным управлением (на основе микроконтроллера), с или без wifi, bluetooth, zigbee, с сенсорным цветным экраном или механическими кнопками, со встроенным реле в одном корпусе (подавляющее большинство) или реле отдельным блоком (позволяет установить термостат подальше от котла, на другом этаже\в другом помещении, реле может быть беспроводным), в любом случае, он управляет котлом только включением\выключением через реле и все.
2. Цифровое (opentherm) Это самый крутой способ управление, он позволяет передать управление котлом полностью комнатному термостату (конечно же, комнатный термостат должен тоже поддерживать opentherm и уметь управлять этим котлом). В этом случае opentherm термостат сам дает команды котлу включать горелку (с нужным уровнем модуляции, если котел поддерживает), насос, устанавливать температуру и т.п, и все сигналы передаются путем изменения уровней тока\напряжения (а не тупо замыканием контактов как в первом варианте). Это лучше вариант для энтузиастов, реализующих "
умный дом".
Установка термостата второго вида (opentherm) не получила распространение в народе в РФ, такие термостаты стоят дорого (почти ценой в котел), они не рекламируются открыто, не все котлы, мало какие бюджетные котлы поддерживают этот протокол (хотя в последнее время начинают поддерживать, и это хорошо). То есть, это вариант для энтузиастов или тех, кто готов заплатить интегратору. Для элитных смарт-котлов такие термостаты могут идти как доп. аксессуар. Так же оба вида термостата можно собрать своими руками, в инете очень много готовых проектов (требуется знания электронной техники). В конце статьи я оставлю ссылку на зарубежные термостаты второго типа
Далее речь пойдет про первый тип.
Как работает термостат:
Термостат включается взамен перемычки (в разрыв цепи)
На термостате вы выставляете желаемую температуру в квартире, термостат сравнивает текущую температуру помещения (в нем встроен терморезистор), и если текущая температура ниже установленной вами на 1C (Эта разница называется гистерезисом, часто она равна 0.5 или 1 градусам, и часто его можно изменять), то термостат замыкает контакты, и котёл начинает работать так, как обычно (как без термостата), на той же установленной температуре теплоносителя, с тем же выбегом насоса и т.п. Если температура помещения сравняется с установленной температурой — термостат разомкнет контакт и котел выключится. И будет стоять выключенным до тех пор, пока температура не упадет ниже 1 градусов (гистерезис).
Поэтому, если зимой выставлена слишком слабая температура в котле то помещение может вообще не нагреться до установленной, и термостат никогда не отключит котел сам, и по факту термостат бесполезен.
Т.е температуру в котле нужно ставить выше, (определить опытным путём, нагреть квартиту на 70с теплоносителя резко — экономнее, чем на 40С целый день).
Погодозависимая автоматизация.
Некоторые котлы поддерживают такой функционал. Суть его в том, что вы на улице устанавливаете датчик уличной температуры (термистор), подключаете к котлу и включаете его в настройках на требуемый номер кривой. Номер кривой разная для каждого региона (зависит от минимальной уличной температуры зимой, от тепло потерь), таблица с этой кривой есть в документации к котлу, но она приблеженная, придется подбирать методом тыка.
Как этот датчик меняет логику котла?
Допустим, в котле без термостата вы сами постоянно меняете температуру теплоносителя, жарко — убавили, холодно — прибавили, и так каждый день. С термодатчиком возможность управлять температурой котла отключается. Котел сам ставит температуру теплоносителя в зависимости от уличной температуры (стало холоднее — повышает, стало тепло — понижает, а вот на сколько повышать \ понижать вы как раз задаете номером кривой методом научного тыка).
Этот датчик офф. производителя стоит неоправданно дорого (1000 — 2000 руб), можно сделать самому на 100 руб (столько стоит термистор ntc в магазинах электронных компонентов, на али вообще 40руб\10 шт.). В основном используется термодатчик — термистор с параметром ntc 10K 1% 3950.
Я сделал своими руками, получилось так:
Нужен ли уличный термодатчик при установке термостата? Я думаю что нет, он никакую экономию если есть термостат не принесет, но комфорт может принести (например, в теплую погоду радиаторы не будут греться до высоких температур, снизится инерционность котла).
Что поставил я:
У меня котёл baxi eco nova, он поддерживает оба вида термостата. Я поставил первый тип.
Купил на али вот такой вариант
WIFI датчик температуры на базе WIFI модуля ESP8266 и датчика температуры DS18B20
У меня ESP-01 – у которого только два управляемых выхода – GPIO 0 и GPIO 2:
2. Нужно:
1. Модуль ESP8266 (ESP-01);
2. Датчик температуры DS18B20;
3. USB-UART-TTL адаптер – например CР2102 (+драйвер);
4. Резистор 4,7 кОм;
5. Провода мама – мама/папа;
6. Изолента/термоусадка;
Для этого нужно:
1. Зайти в меню «Файл» — выбрать «Настройки».
3. Зайти в меню «Инструменты» в «Плата:…» — выбрать «Менеджер плат…».
4. В закладке «Менеджер плат» нужно найти нужную прошивку — в поле указать например esp8266 – в окне высветится нужная прошивка.
5. Установить выбранную прошивку «esp8266» – щелкнуть на поле с прошивкой – появится кнопка «Установить» — нажать. Установка займет некоторое время – будет скачивать около 153 Мб.
6. После завершения установки в меню «Инструменты» в закладке «Плата:…» ниже перечня плат Arduino появится новые платы – «ESP8266 Modules».
7. Выбрать нужный модуль – в общем случае это «Generic ESP8266 Module».
Схема подключения обычная да UART, за исключением двух особенностей:
1. Для включения модуля нужно подать +3,3В на вывод модуля CH_PD. Я припаял перемычку с VCC.
2. На время загрузки скетча необходимо подать «минус» на вывод модуля GPIO 0.
Если речь идет о настройке/отладки нескольких модулей имеет смысл сделать специальный комплект проводов для подключения.
Так же есть особенность с питанием модуля.
Во первых, он должен питаться от 3,3 В.
Во вторых, он очень прожорливый – мощности питания от USB-UART-TTL адаптера ему не хватало – компьютер постоянно сообщал, что к нему «подключено неизвестное устройство, при установке которого возникли проблемы».
Поэтому для питания модуля нужно организовать отдельное питание.
Если предполагается использовать более высокое напряжение — нужно использовать понижающий стабилизатор.
В моем случае я использовал две батареи АА 1,5В соединенные последовательно – но испытания показали хватает не на долго (возможно батареи были севшие).
ВНИМАНИЕ! При подключении внешнего источника питания при прошивке нужно соединить его с минусом USB-UART-TTL адаптера.
6. Подключение датчика температуры.
Схема подключения датчика температуры типовая (см. рисунок).
Потребуется правда поработать паяльником – припаять сопротивление 4,7 кОм и датчик температуры, а так же перемычку включения питания (см. ранее).
Есть еще один вывод который может пригодится — вывод RST – «Сброс» — для этого нужно подать на него «минус». Пару раз пригодилась эта «кнопка» — возможно потому, что схема собрана на весу…
7. Работа датчика.
Если все прошло правильно датчик начнет помаргивать синим светодиодом и излучать в WIFI эфир температуру. А вот что бы эта температура стала «видима» нужно в браузере указать IP адрес вашего модуля (мы его знаем из пункта 5) и на экране появится вот такая картинка:
Беспроводной мини датчик температуры и влажности с E-PAPER дисплеем
Здравствуйте! Хочу поделиться с вами своим новым опенсорс проектом. Из названия статьи понятно что речь пойдет о датчике температуры и влажности с дисплеем на электронных чернилах. Уже достаточно давно я попробовал сделать проект датчика температуры с такими дисплеями в виде ардуино модуля. С тех пор тема e-ink дисплеев меня заинтересовала.
Целью данного проекта была разработка миниатюрного датчика, сравнимого по размерам с обычными беспроводными датчиками температуры, но при этом получить еще и вывод данных на самом устройстве. И при всех этих условиях что бы устройство работало от небольшой батарейки достаточно долго. Что из этого получилось, прошу оценить и не скупится на комментарии.
Датчик работает на чипах nRF52, для данного проекта был выбран модуль от компании MINEW. Модуль небольшого размера, имеет 18 выводов, 13 из которых gpio, два варианта антенн, печатная и керамическая, так же на модуль устанавливается несколько вариантов чипов, nRF52810 и nRF52832, а после непродолжительного общения с менеджментом компании мне без вопросов поставили на эти модули чипы nRF52811. Так я кстати получил свои первые 811-ые и к тому же по цене в полтора раза ниже чем мог бы купить у поставщиков в России просто чипы, но это уже другая история. На модуле разведен вариант схема DC-DC и часовым кварцем. Размеры модуля 12мм х 15мм. Присутствует металлический экран.
Из линейки e-ink дисплеев выбор естественно пал на достаточно новую модель м размером экрана 1.02 дюйма GDEW0102T4. Стоимость одного дюйма электронных чернил составила 500 рублей, что мне показалось приемлемо. Небольшие трудности с разработкой платы под этот дисплей вызвал его разъем, 30 пиновый FPC c шагом в 0.5мм. Ширина FPC разъема намного больше ширины самого дисплея, что вызвало неудобство при проектировании. Но зато было проще с обвязкой дисплея, она проще чем на других моделях.
Из разнообразных цифровых сенсоров температуры и влажности я решил остановиться на сенсоре sht20, их и в достаточном количестве было у меня, простой достаточно, хорошая цена, удобный размер. Так же одним из плюсов можно назвать то что вместо sht20 при желании легко установить sht21, si7020, si7021, htu20d, htu21d и hdc1080, но последний вариант не самый очень ;).
Под датчик проектировалось 2 платы, одна под экран и его обвязку, вторая под радио модуль, сенсор температуры и влажности и батарейку. Ключевыми параметрами размеров плат были размеры экрана и батарейки. На плате с экраном были заложены отверстия под винты (1.4 х 3) для крепления платы к корпусу, на второй плате были сделаны вырезы для удобной установки винтов. Так как это DIY устройство я мог себе позволить поставить «вкусную» батарейку CR2450. Ну а если мне покажется когда-то что устройство толстовато, то я всегда смогу напаять держатель под батарейку CR2430. В итоге получилось две платы размерами 36мм на 26мм.
Корпус проектировался в СолидВоркс, модели плат были экспортированы из DipTrace в формате DXF, которые уже в СолидВоркс были преобразованы в 3D модели. Корпус состоит из двух частей и кнопки, Крепления половинок корпуса друг к другу сделано так же винтами(1.4 х 4) с одной стороны и выступающим «зацепом» с другой стороны. Сделаны два отверстия для циркуляции воздуха для сенсора температуры и влажности.
В этом проекте корпус был напечатан на FDM принтере, конечно качество печати ниже чем на SLA принтере, но по прочности изделия из жидких смол сильно уступают изделиям из филаментной нити, а из-за особенностей корпуса, прочность была важна. Так что морально приготовился к шлифовке и полировке. В принципе получилось достаточно качественно.
Примерно так происходила разработка железа, постарался описать все этапы и некоторые нюансы, если она вам показалась трудоемкой, то это не так, трудоемким на самом деле было ПО. Как и прежде я свои проекты делаю под MySensors, хотя признаюсь что уже не с тем энтузиазмом что прежде. В какие-то моменты стал упираться, каких то вещей не хватает, какие-то просто невозможны. Альтернативой на данный момент для себя я вижу Open Thread, по крайней мере он кажется достаточно привлекательным.
Cхема устройства
В итоге все свои требования к функционалу реализовать получилось. Устройство может работать с контроллером УД, так же устройство может работать напрямую с каким либо устройством в сети МySensor. Привязка устройств для прямого обмена может происходить как посредством конфигурации устройств через контроллер УД, внешними командами, так и без участия контроллера УД с помощью простого нажатия кнопки для активации режима привязки(binding). Датчик температуры и другое устройство к которому привязан датчик могут нормально поддерживать обмен даже без работающего шлюза MySensors или работающего контроллера УД, что безусловно повышает отказоустойчивость. Отдельная проблема была с драйверами eink дисплея, вероятно потому что дисплей достаточно новый, на сайте производителя и сайте WaveShare(предлагающий eink экраны Good Display под своим брендом) реализации библиотек достаточно сырые. Пришлось что-то переделать, что-то дописать.
В датчике реализовано поддержка нескольких языков, инверсия цвета по внешней команде в режиме конфигурирования устройства, несколько вариантов шрифтов так же меняемые по внешней команде в режиме конфигурации устройства. Датчик выводит на экран показания температуры и влажности, заряд батареи и уровень сигнала. Интервал замеров температуры и влажности, интервал замера уровня батарейки можно задать так же внешней командой. Для температуры и влажности в минутах, для уровня заряда батарейки в часах. Передает датчик в УД следующие данные: температура, влажность, уровень заряда в %, напряжение, уровень сигнала, причину перезагрузки.
Таймстампы интересных моментов:
3.10 — Конфигурирование (смена шрифта, инверсия цвета)
5.10 — Замер потребления, работа WTD
Если кому-то интересны мои разработки, то после прочтения статьи рекомендую перейти на канал и подписаться, там информацию по новым разработкам я публикую в первую очередь.
В спящем режиме датчик потребляет 2мкА, сброс WTD каждые 5 секунд, потребление в момент сброса 4-5мкА. В режиме работы с экраном и сенсором температуры и влажности 2-3мА, в режиме передачи 5-8мА, такой диапазон в 3 мА связан с тем что датчик сам регулирует мощность передачи на основе данных по уровню сигнала.
Датчик температуры DS18B20
Всем добрый день.
В акции про Esp-wroom-02 были вопросы для чего можно использовать подобные модули. В сегодняшнем обзоре «сделай сам» мы познакомимся с датчиком температуры DS18B20 в защищенном корпусе, а так же приделаем к нему WiFi, научимся собирать телеметрию и строить графики. Цена в 12$ за пучок датчиков из 10 штук.
Муки выбора
Датчиков для измерения температуры большое множество (DHT11, DHT22, DS18B20, CC2D23S, SHT21, BME280) сравнивать их друг с другом не буду, это давно уже сделано и легко гуглится. Выбор пал на DS18B20 потому как был найден в защитном корпусе пучком и по вполне адекватной цене, ну и скорее всего что с DHT11 и DHT22 уже игрался, их надежность и точность оставляет желать лучшего, а BME280 слишком дорогой.
Особенности DS18B20.
- Для однопроводного интерфейса 1-Wire достаточно одного порта связи с контроллером.
- Каждое устройство имеет уникальный серийный код длиной 64 разряда.
- Возможность подключения нескольких датчиков через одну линию связи.
- Нет необходимости во внешних компонентах.
- Возможность получать питание непосредственно от линии связи. Напряжение питания в пределах 3,0 В … 5,5 В.
- Диапазон измерения температуры -55… +125 °C.
- Погрешность не превышает 0,5 °C в диапазоне -10… +85 °C.
- Разрешение преобразования 9 … 12 бит. Задается пользователем.
- Время измерения, не превышает 750 мс, при максимально возможном разрешении 12 бит.
Фотографии
Пучок датчиков пришел в обычном мягком пакете.
Сам датчик выглядит вот так. Имеет три провода +,- и data.
Датчик + nodemcu v3
Сделай сам
После регистрации на thingspeak нам необходимо создать новый канал.
Затем нужно открыть вкладку API KEYS и скопировать ключ WRITE API KEY
- ssid — название вашей WiFi
- password — пароль от WiFi
- apiKey — ключ для thingspeak (WRITE API KEY)
- SLEEP_DELAY_IN_SECONDS — каждые сколько секунд отправлять данные. Минимальный интервал для бесплатного использования — 15 секунд.
Что в итоге получим
Данные с указанным вами интервалом будут отправлять на сервер, там по данным будет строиться красивый график.
Кто хочет интегрировать подобные вещи в свои системы умного дома (openhab например), достаточно нужно изменить код для отправки на mqtt-сервер.
К реле от sonoff так же можно подключить данные датчики.
Облачный термометр за 10 минут и 300 рублей
Эту простейшую самоделку сможет повторить каждый, кто в состоянии соединить три провода. С помощью этой штуки можно дистанционно контролировать температуру, например, на даче.
Ещё понадобится резистор 4.7К, провода, любая зарядка от телефона с разъёмом MicroUSB. В качестве корпуса удобно использовать электрическую распаечную коробку.
Скорее всего можно использовать и совсем малюсенький контроллер Wemos D1 Mini, но я не пробовал.
В базовом варианте достаточно припаять датчик температуры к контроллеру (красный провод к 3V, чёрный к GND, жёлтый к D4), между жёлтым и красным проводам датчика ставится резистор (на фото датчик припаян к D1, не обращайте внимания).
Это необязательно, но можно подключить экран. Термометр поддерживает четыре вида экранов (цветной TFT 240x320 точек, OLED 128x64 точки, ЖК двух- или четрырёхстрочный, семисегментный светодиодный). На мой взгляд лучше всего поставить самый дешёвый четырёхсимвольный индикатор. У индикатора четыре контакта, подключаем их к контроллеру (VCC к 3V, GND к G, DIO к TX, CLK к RX).
Я пробовал подключать к термометру OLED-экран, но цифры на нём малюсенькие и выводится много лишней информации, включая неотключаемый адрес сайта разработчика прошивки.
Этот термометр можно подключить к Народному мониторингу и сделать его публичным, если его датчик будет расположен на улице. Если же термометр расположен в помещении (например, на той же даче), сервис позволяет использовать его, как непубличный. Вот так отображаются данные с двух таких термометров на сайте (замечу, что бесплатно можно подключить к сервису лишь один термометр).
А так в приложении (разумеется, датчики можно переименовать).
Как вы уже наверное догадались, для того, чтобы превратить контроллер в облачный термометр в него нужно загрузить прошивку и настроить её. Но сделать это гораздо проще, чем многие из вас подумали. :)
Когда заливка прошивки завершится, отключите контроллер и подключите его снова (можно к компьютеру, можно к любой зарядке). Нажмите три раза кнопку Reset с паузой не менее полсекунды. Контроллер создаст временную точку доступа Wi-Fi под названием WiFi-IoT без пароля. Подключитесь к этой точке смартфоном, и нажмите «подключение к сети». Откроется веб-страница настройки термометра.
Можно всё настроить сразу, можно настроить только подключение к Wi-Fi и продолжить настройку на компьютере. Покажу, как настроить всё сразу на телефоне:
1. Нажимаем «Hardware», ставим галку «Enable DS18B20» и меняем его GPIO на «2». Нажимаем «Set». Нажимаем «Main».
2. Заходим в «1-Wire», там «Clear & Scan List». Должен появиться адрес датчика. Снова «Main».
3. Если подключили экран, заходим в «7SEGM», ставим галку «Enable», вводим в поле «GPIO Clk» 3, в «GPIO Data» 1. Нажимаем верхний «Set». Пункт «1» меняем на DS18B20 1, нажимаем нижний «Set». Жмём «Main».
Отключаем контроллер от питания и включаем снова. Теперь он подключится к домашнему Wi-Fi. Можно зайти в его веб-интерфейс из браузера по адресу, который можно посмотреть в веб-интерфейсе домашнего роутера или с помощью повторного подключения к временной точке доступа контроллера: ещё раз три раза нажимаем на контроллере RST, снова подключаемся к нему телефоном, заходим в «Main» и видим внизу адрес. В данном случае 192.168.1.212.
На Народном мониторинге заходим в «Профиль — Мои датчики».
Нажимаем «Добавить» и вводим ID нашего термометра (его мы сохранили на этапе 4).
На самом деле всё очень просто и эту самоделку действительно можно сделать и настроить за десять минут. Что касается цен, то конечно не может не впечатлять то, насколько это всё дёшево.
Читайте также: