Почти два года прошло с изготовления контроллера управления влажностью для ванной комнаты. Все это время контроллер служил верой правдой без глюков и зависаний, как и положено хорошему контроллеру и даже обзавелся с легкой руки моей супруги гламурным корпусом.
Но технический прогресс неумолимо бежит вперед и новые веяния опять не давали мне покоя. На это раз, концепцию умного дома я решил реализовать на WiFi модулях ESP8266. Давно экспериментирую с этими модулями и решил свой умный дом на них перевезти.
Итак, что мне даст модернизация контроллера вентилятора на ESP8266?
Новые возможности
- Просмотр всех показателей по WiFi с компьютера/планшета/телефона.
- Обработка дополнительных параметров — время наработки вентилятора и время горения лампы в ванной комнате.
- Управление вентилятором по WiFi с компьютера/планшета/телефона.
- Настройка работы контроллера по WiFi с сохранением значений в энергонезависимую память.
- Периодическая запись значений всех показателей на сервер в интернете.
- Ну и, раз все равно есть интернет, отображение времени с синхронизацией по NTP протоколу.
Все эти функции дают возможность анализа работы контроллера и, в дальнейшем, оптимизации параметров управляющего алгоритма . Ну и данный контроллер войдет в общую систему умного дома с мониторингом параметров среды ванной комнаты.
Схема контроллера
Основные отличия от предыдущей версии:
Atmega328 заменена на ESP8266, применен готовый модуль дисплея на TN1637, симистор с оптопарой заменены твердотельным реле (то же самое, но в корпусе). Все главные отличия в программе контроллера.
Железяки
Контроллер собрал из проверенных ранее компонентов
- Модуль ESP8266 ESP07 — $2.02 + плата адаптер — $0.22. Все это уже на раз мной обозревалось на этом сайте и на mysku.ru.
- Четырехразрядный семисегментный дисплей на микросхеме TM1637 с I2C подключением — $1.04. (Статья про WiFi-NTP часы)
- Твердотельное реле OMRON G3MB-202P — $1.05 (Статья про WiFi розетку на базе этого реле)
- Блок питания 220В/3.3В 600мА ~ $2.2 (покупка и тестирование в обзоре на mysku.ru)
- Датчик температуры и влажности DHT11 — $-.73 (точность низкая, но для моих задач достаточная)
- Приборный пластиковый корпус 110х73х34 ~ $1
- Фоторезистор, просто резисторы, макетка и провода
Итого около $9
Сборка контроллера
Этот контроллер снова прототип, поэтому монтаж сделал снова на макетке. Когда устройства на ESP8266 пойдут в серию, буду все делать на печатных платах.
В корпусе делаю необходимые отверстия под индикатор, фоторезистор и кнопку
Окно под индикатор заклеиваю красным светофильтром. Дешевые и хорошие светофильтры получаются из папок для бумаг, купленных в магазине канцтоваров. Прозрачное окно для фоторезистора — защитная пленочка оставшаяся от какого-то телефона (заказывал когда-то с запасом, теперь валяются)
ESP-шку и индикатор монтирую на съемных панельках из штырьковых разъемов
Вот что получилось в сравнении со старым контроллером
При отладке обнаружился технологический дефект — фотодиод за окошечком в корпусе получал слишком мало света и без усилителя не срабатывал при зажигании лампы в ванной комнате, пришлось его вывести наружу в сторону лампы
И вот контроллер смонтирован. Старый функционал восстановлен. На 4-х разрядном индикаторе отображается влажность с таким хитрым значком процентов
Температура
И, бонусом, текущее время. А в момент включения вентилятора, вместо времени — таймер обратного отсчета.
Подробно работу нового контроллера с WiFi, алгоритмы работы, особенности и настройки я описал в отдельной статье.
В комментариях и письмах все постоянно передают привет Тимофея.
Спасибо! Вам всем тоже большой привет от него!
Идея со значком процентов понравилась!
Добрый день, интересные статьи, читаю с удовольствием, спасибо, подскажите а управлять скоростью вращения вентилятора не планировали?
Не благодарное это занятие управлять скоростью двигателя переменного тока без частотного преобразователя.
Идеально было бы поставить двигатель постоянного тока на 12-24В и им уже управлять
Да я тоже перечитал несколько статей о попытках управления скоростью, только вот странно, что сами производители этих вентиляторов продают к ним тиристорные регуляторы скорости и они без проблем работают, например VENTS (http://ovk-group.com.ua/p/8192865-tiristornyy-regulyator-skorosti-vents-vents-rs-1-400/) даже думал купить такой и попробовать управлять им ардуиной.
Подскажите пожалуйста от чего может выскакивать ошибка
WiFi_SmartHome_cooler1.ino:20:21: fatal error: arduino.h: No such file or directory
compilation terminated.
Уж очень хочется собрать данное устройство себе в ванную тем более mysql сервер у меня отвечает за работу входного замка и вот ему еще задача. помогите пожалуйста
Как то среда Arduino IDE стоит криво. Не находит *.h файлы. Или тип контроллера не ESP указан.
Попробовать ее переставить или ESP8266 Core может быть
Спасибо за ответ . Буду эксперементировать . Но очень было-бы не плохо скачать скетч в паке со всеми библиотеками ну и с пхп для импорта в базу ,не сочтите за наглость очень буду признателен да и не я один мне так кажется.
Собрался весь свой код переносить на GITHIB
Скоро этот проект тоже выложу
Большое СПАСИБО ! Будем подождать…
Алексей несколько безсонных ночей и возвания к тулху вознаградили меня удачной прошивкой! не могли бы вы скинуть php для работы с базой на s.v.chekalin@gmail.com если не трудно ну или хотябы ссылочку на вашей страничке… бью в шаманский бубен и продолжаю надеятся на удачу.
я по колдовал и написал пхп код все таки и с вашего разрешения … может правда как и мне надо кому
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '12345';
$dbname = 'hood';
$client_ip = $_SERVER['REMOTE_ADDR'];
$temp = $_GET["t"];
$hum = $_GET["h"];
$avaible = $_GET["a"];
$up = $_GET["uptime"];
$time1 = $_GET["tm1"];
$time2 = $_GET["tm2"];
$uid = $_GET["id"];
$connect = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $connect )
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db ($dbname, $connect);
$sql = "INSERT INTO sensor_data SET date_time = NOW(),sensor_uptime = '$up', sensor_tm2 = '$time2',sensor_tm1 = '$time1', sensor_avaible = '$avaible', sensor_temp = '$temp', sensor_id = '$uid',sensor_humidity = '$hum', client_ip = '$client_ip'";
if(!mysql_query($sql))
{echo 'Data upload error!‘;}
else
{echo ‘OK‘;}
mysql_close($connect);
?>
Алексей, можно глупый вопрос?
Как светодиодный драйвер относится к работе без нагрузки? Например питание 220В подано, а нагрузка не подключена. Просто году так в 2000 общался с одним специалистом и услышал, что для импульсных блоков питания такой режим это не очень хорошо.. может я понял что то неправильно, но в голове засело)))
Собираюсь так же как вы использовать светодиодный драйвер в качестве блока питания. Выходное напряжение драйвера 12В ток 0,9А, но нагрузка с очень низким потреблением — диммер с радиомодулем ( http://mysku.ru/blog/china-stores/21880.html ) который будет управлять твердотельным реле ( https://ru.aliexpress.com/wholesale?spm=2114.03010208.1.5.f28rg9&SearchText=fotek+ssr-25da&initiative_id=RS_20170302020600 ) (собираю из того что есть в наличии). Стоит волноваться или все нормально?
К то муже токовый драйвер стабилизирует ток на выходе и регулирует его напряжением. В вашем случае напряжение 12В может оказаться максимальным. А если нагрузка будет маленькой, драйвер прост отключит выход
Если же у вас «драйвер для светодиодных лент» = То то обычный БП со стабильным напряжением 12В и максимальным током 0.9А. Им можно и пользоваться как обычным БП
У меня именно драйвер, тот который в защищенном исполнении для COB матрицы 10Вт.
Попробовал собрать и включить все это оборудование. Напряжение на выходе драйвера 13В. Драйвер не отключается. Правда тестировал не долго, а планируется круглосуточное использование как минимум месяца 3-4.
То есть худшее что может быть в таком режиме работы это отключение выхода драйвера?
А вообще что скажете по поводу работы импульсного блока питания без нагрузки?
Здравствуйте. Очень заинтересовал ваш проект, будучи глубоко начинающим, пытаюсь его повторить)При компиляции скетча:
WiFi_SmartHome_cooler1:302: error: within this context within this context.
Ругается на содержимое функции DisplaySpecialChar, закоментировал содержание функции код откомпилировался, залил, теперь не происходит соединения с NTP сервером и время не отображается.
Connecting to: TP-LINK_/……
663
WiFi connect: 192.168.0.100/255.255.255.0/192.168.0.1
Open http://192.168.1.4 in your browser
Or by name: http://SmartHome_Cooler1.local
HTTP server started …
Starting UDP
Local port: 2390
Send NTP server 1.ru.pool.ntp.org 1.0.0.0
Sending NTP packet…
NTP server error
Get NTP time. Error = 1
Что делаю не правильно? подскажите если возможно. Заранее благодарен.PS. продублировал вопрос.
Вопрос к автору:
Как побороть вот это:
WiFi_SmartHome_cooler1:44: error: ‘DHT11’ was not declared in this scope
DHT dht(PIN_DHT, DHT11, 15);
^
C:\arduino-1.8.1\WiFi_SmartHome_cooler1 (1)\WiFi_SmartHome_cooler1\WiFi_SmartHome_cooler1.ino: In function ‘void setup()’:
WiFi_SmartHome_cooler1:107: error: ‘class DHT’ has no member named ‘begin’
dht.begin();
^
C:\arduino-1.8.1\WiFi_SmartHome_cooler1 (1)\WiFi_SmartHome_cooler1\WiFi_SmartHome_cooler1.ino: In function ‘void loop()’:
WiFi_SmartHome_cooler1:217: error: ‘class DHT’ has no member named ‘readHumidity’
int h = (int)dht.readHumidity();
^
WiFi_SmartHome_cooler1:218: error: ‘class DHT’ has no member named ‘readTemperature’
int t = (int)dht.readTemperature();
^
exit status 1
‘DHT11’ was not declared in this scope
Может библиотеки не хватает DHT?
Да, Вы были правы. Библиотеку подключил все скомпилировалось нормально. Спасибо!
А не могли бы Вы добавить MQTT к этому контроллеру, хотелось бы подключить его к иоБрокеру?
Кому нужно, вот скомпилированный бинарник: https://yadi.sk/d/aCJ-Vl0J3Tihar
Добавил MQTT, потом подключил к DOMOTICZ через HTPP (меньше кода)
Сейчас переделываю на NRF24. ESP плдглючивает
Не поделитесь прошивкой с MQTT? можно на maga_ges@mail.ru
Периодически (раз в день, раз в два дня) датчик влажности начинает показывать нули.Помогает только перезагрузка.В чем может быть проблема?
Добрый день
У меня так было как-то. Вылечилось заменой датчика. Хотя я подозреваю, что из-за постоянной высокой влажности теряется контакт в разъеме или что-то еще
Нашел такое описание:
«На ESP8266 есть не только прерывания, которые могут мешать измерению времени, кроме того, есть активный планировщик многозадачности, который может переключаться в любое время на другую задачу, и тогда простое измерение времени не удается. Пока есть только функция считывания с датчика DHT, проблем нет. Но как только WiFi, и / или Bluetooth, и / или другие задачи активны, считывание с датчика DHT в большинстве случаев происходит сбой, потому что чтение прерывается переключателями задач.»
Возможно проблема в этом?