Здравствуйте. Сегодня небольшой обзор вытяжки на кухню. Для тех кто любит ардуино.
Имеется на кухне вытяжка, захотелось её модернизировать, благо всё необходимое имеется. А именно модуль BME280, компактный блок питания на 3.3В, механическое реле, и ардуина про мини. Предполагаю такую план схему работы программы:
По моему мнению любое приготовление пищи связано с ростом влажности на кухне. Придумал(подсмотрел местами) такую схему: есть влажность-h
Есть усреднённая влажность взятая из 10 последних измерений влажности-b
В нормальных условиях влажность h колеблется в пределе 1%(выявлено на местности). Усреднённая влажность b не поспевает за мгновенной так как ей приходится ориентироваться на последние 10 значений h. Если ситуация выходит из среднестатистических значений то в этот момент включается вытяжка и запоминается значение h в temp. даём вытяжке поработать условное время и сверяем теmр и h. Если temp больше h то влажность на кухне упала и можно выключить вытяжку. Прикладываю программу(скетч)
<spoiler title='[code]
#define DEBUG 1
#include <Average.h>
#include "SparkFunBME280.h"
#include "Wire.h"
Average<float> ave(10); // Для усреднения последних значений с датчика создаём массив на 10 шт.
unsigned long runInterval = 300000; // Если включаем вентилятор, то не меньше, чем на х минут (х * 60 * 1'000 миллисекунд = х00'000)
const long interval = 2000; // Опрашиваем датчик
float temp;
BME280 mySensor;
void setup() {
mySensor.settings.commInterface = I2C_MODE;
mySensor.settings.I2CAddress = 0x76;
mySensor.settings.runMode = 3; //Normal mode
mySensor.settings.tStandby = 0;
mySensor.settings.filter = 4;
mySensor.settings.tempOverSample = 5;
mySensor.settings.pressOverSample = 5;
mySensor.settings.humidOverSample = 5;
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
if (DEBUG == 1) {
Serial.begin(9600);
Serial.print("Starting, humidity treshold set to: ");
// Serial.print(treshold);
Serial.println("%.");
}
mySensor.begin();
}
void loop() {
float t = mySensor.readTempC();
float h = mySensor.readFloatHumidity();
if (isnan(h) || isnan(t)) {
Serial.println("Sensor error!");
delay(interval);
return;
} else {
ave.push(h); // Кладём результат измерения влажности в массив. В массиве помещается 10 измерений, новоприбывшее выталкивает самое старое.
if (DEBUG == 1) {
Serial.print("Humidit: ");
Serial.print(h);
Serial.print(" %");
Serial.print("Humidity running average: ");
Serial.print(ave.mean());
Serial.print(" %");
Serial.print("Temp.: ");
Serial.print(t);
Serial.println("C");
}
float b = ave.mean() + 1.1;
Serial.print(h);
Serial.print(b);
if (h >= b || t > 34 || h > 76 ) {
temp = h;
digitalWrite(LED_BUILTIN, HIGH);
if (DEBUG == 1) {
Serial.println("Fan started.");
}
delay(runInterval);
}
if (temp > h)
{
digitalWrite(LED_BUILTIN, LOW);
if (DEBUG == 1) {
Serial.println("Fan will cool down.");
}
}
}
delay(interval);
}
[/code]'></spoiler>
Расположил всё в корпусе старого медиаплеера
датчик влажности подтянул к одному из вентиляционных окон корпуса. Порог срабатывания устраивает, чувствует закипевший чайник.
Огромная просьба не смотреть качество пайки, это или руки или припой какой то, на некоторые выводы модулей просто не желает липнуть
Да монтаж элементов ужасен но как прототип вполне, датчик в одном месте корпуса, сама ардуино в другом с бп и не оказывают влияния на подтянутый датчик в вентиляционной прорези
Вся схема работает от 3.3 вольта так как датчику ВМЕ280 требуется в обязательном порядке оно. Есть конвертеры уровней, попробовал с ними работает, но много проводов становится. Решил попробовать запустить всё на 3.3 вольта и ардуино и реле запустились и работают стабильно. На этом всё, предложения и критика приветствуется. Хотелось для отладки делать всё это на 8266, но почта уже 2 модуля 8266 присвоила. Для отладки конечно видеть все в браузере на много удобнее чем ползать под потолок и прикручивать выкручивать ардуино
narodmon.ru/2063 уже как то поинтересовался и погодой за окном и электричеством потреблённым. благо модули с китая многое позволяют сделать. а вот у вас есть что показать или только семечки пожарить патчанчикам на районе
Про китайские модули: какова точность измерения влажности?
Как изменяется влажность у Вас на кухне, если пожарить, например, 3 яйца?
Ставим сковородку — раскаляем и выливаем масло — оно начинает дымиться кидаем пару зубчиков чеснока. Ваша вытяжка ещё не включилась, но она уже нужна. И как быть? Включать вручную?
Далее. Вытяжка уменьшила влажность, но запах ещё есть. Как быть? Напомню, что если Вы что-то забыли, то тот же кусок мяса обуглился — он выделяет минимум пара, однако воняет безбожно…
Повторяю — идея негодная к сожалению.
О кулинарии имеете представление видимо в рамках котлет с пюре, которые и называете «нормальной едой». В КЛАССИЧЕСКИХ рецептах тех же, спагетти чеснок именно ОБЖАРИВАЕТСЯ, чтобы передать аромат маслу. Так, что идите, гуляйте, писатель. А сковородка, прежде чем налить в неё масло должна быть раскалена как и масло.
Как только температура на сетке поднимается выше 40 градусов — включается. И пофиг мне какая там влажность, мне не нужен в квартире особенно летом горячий, не очень чистый воздух.
Хотя ставил я это из за того, что часто забывали вытяжку выключать.
Я смотрю на листинг и думаю — что ж буквы-то такие знакомые? ;)
mysku.club/blog/aliexpress/37118.html
mysku.club/page/agreement
А если делал для себя и как хобби, то почему бы не поделиться с миром, глядишь еще лучше сделают.
Ну и украдут понятно тоже, но это уже дело их кармы. И сильно ли будет легче если будут также копировать бинарники, выкладывая от своего имени?
А так лишаете всех, в том числе нормальных людей, возможности поучиться на примере или допилить какую мелочевку под себя.
У самого такой в ванной висит уже который год, работает абсолютно корректно.
А колбасу жарить в ванной как-то неправильно, мсье знает толк в извращениях :-))
mysku.club/blog/aliexpress/50184.html
С канифолью и то лучше пайка идет.
Вот такая банка за $5.93 добавит удовольствия от творчества.
Проще эту гребенку выпаять, все равно в данном случае она без надобности.
При жарке яичницы влаги мало испаряется, а запахов много. Включится?
PS меня уже опередили про жарку на сковородке :)
Ибо топить сало брить мясо и так далее влаги будет мало
Делать комбинированный надо часто бывает много влаги без запаха и температуры… и наоборот…
А тут получается какой-то заяц со стоп-сигналом. Вообще, народ уже не знает куда ардуинку запихать. Скоро начнут встраивать её во втулку туалетной бумаги.
-Жена, включи вытяжку, у меня подгорело :)))))))))
Следовательно, при мгновенной влажности 5попугаев через 20 секунд ВСЕ элементы массива будут равны 5попугаям. Считаем среднее, получаем 5попугаев, сравниваем с мгновенным, получаем равенство. Вентилятор останавливается.
Не спорьте с программистом ))) Я на этих плавающих окнах voice-активацию написал
Averageave(10);
{
ave.push(h);
float b = ave.mean() + 1.1;
if (h >= b || t > 34 || h > 76 )
}
Тут и разбираться нечего, 5 строчек кода
Понимаете, вам придётся постоянно играться с константой, которая +1.1. В каких-то условиях ее не будет хватать на включение, в каких-то она не будет давать выключаться, и будете постоянно лазить в ардуинку и подстраивать.
Согласно теории обработки сигналов, вы должны обеспечить окно времени (ваш массив на 10 элементов) как минимум вдвое превышающее время работы фильтра. Например, примем максимальное время работы вытяжки в 20 минут. Тогда окно времени должно хранить данные датчика за 40 минут, т.е. в вашем случае 1200 значений. МИНИМУМ.
Иначе будут постоянные ложные срабатывания или невыключение фильтра
В любых измерениях, очень важна точка отсчёта — 0 при температуре, 0 при расстояниях, 0 при вольтаже. И все измерения делаются относительно опорного значения, и только в редких случаях, когда не на что опереться, пытаются сделать искусственный 0, что вы и показали.
А вот если в ваше устройство поставить два температурных датчика — то и получим тот самый 0, с которым нужно сравнивать, не нужно никаких окон времени и прочей чепухи.
а 1.1 выведено практикой 1 просто были очень редкие ложные срабатывания, 1.1 не вижу срабатываний
unsigned long runInterval = 300000
Блять, ну что за люди, пытаешься помочь — так говном обольют.
Смотря какие датчики, а терморезисторы, скажем на 10-100 кОм, стоят копейки, и их точности вполне достаточно для отслеживания дельты Т в 5'С.
Вообще странное решение… Для ванной да, но для кухни зачем? Тогда уже и датчик дыма и огня нужен с системой оповещения, пожаротушения и отключения варочной панели и духовки… Мало-ли забудете выключить конфорку или подгорит что…
Настроек масса.
А у вас плита газовая или электрическая? Где, относительно плиты, установлен датчик? Как он ориентирован? Что явилось критерием выбора именно этого датчика? Сколько времени уже работает этот датчик в реальных условиях?
Есть у меня сомнения в том, что этот замечательный датчик в условиях кухни долго проживёт. И, учитывая Ваш алгоритм, можно использовать «дубовый» и совсем неточный датчик. Вы же не абсолютные значения фиксируете. Ну и в пару ему какой-нибудь ds18b20.
Но, в любом случае, мне очень интересна статистика использования этого датчика.
За предыдущие 2 месяца корпус и датчик не засалились?
Насчет дыма — есть датчики дыма, но запах они всё равно улавливать не будут. Да и мы не готовим чебуреки в казане с маслом, так что дыма у нас не бывает.
У вас предположительно при продолжительном парообразовании и недостаточной мощности вытяжки вентилятор в какой то момент выключится.А вам у же выше написали про это)
Откуда инфа? Вроде у каждой квартиры свой вентиляционный канал, разве нет?
В малоэтажках индивидуальный до самой крыши.
В многоэтажках индивидуальный канал-спутник на пару этажей вверх и соединяется с общим. Вот тут реально соседям можно перевернуть вентиляцию и надуть вони. Можно только общий тянущий вентилятор на крышу.
Нормальную тему замутил, сам думаю как в ванной это реализовать.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.