<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>
+16 |
3499
97
|
narodmon.ru/2063 уже как то поинтересовался и погодой за окном и электричеством потреблённым. благо модули с китая многое позволяют сделать. а вот у вас есть что показать или только семечки пожарить патчанчикам на районе
Про китайские модули: какова точность измерения влажности?
Как изменяется влажность у Вас на кухне, если пожарить, например, 3 яйца?
Ставим сковородку — раскаляем и выливаем масло — оно начинает дымиться кидаем пару зубчиков чеснока. Ваша вытяжка ещё не включилась, но она уже нужна. И как быть? Включать вручную?
Далее. Вытяжка уменьшила влажность, но запах ещё есть. Как быть? Напомню, что если Вы что-то забыли, то тот же кусок мяса обуглился — он выделяет минимум пара, однако воняет безбожно…
Повторяю — идея негодная к сожалению.
О кулинарии имеете представление видимо в рамках котлет с пюре, которые и называете «нормальной едой». В КЛАССИЧЕСКИХ рецептах тех же, спагетти чеснок именно ОБЖАРИВАЕТСЯ, чтобы передать аромат маслу. Так, что идите, гуляйте, писатель. А сковородка, прежде чем налить в неё масло должна быть раскалена как и масло.
Как только температура на сетке поднимается выше 40 градусов — включается. И пофиг мне какая там влажность, мне не нужен в квартире особенно летом горячий, не очень чистый воздух.
Хотя ставил я это из за того, что часто забывали вытяжку выключать.
Я смотрю на листинг и думаю — что ж буквы-то такие знакомые? ;)
mySKU.me/blog/aliexpress/37118.html
mySKU.me/page/agreement
А если делал для себя и как хобби, то почему бы не поделиться с миром, глядишь еще лучше сделают.
Ну и украдут понятно тоже, но это уже дело их кармы. И сильно ли будет легче если будут также копировать бинарники, выкладывая от своего имени?
А так лишаете всех, в том числе нормальных людей, возможности поучиться на примере или допилить какую мелочевку под себя.
У самого такой в ванной висит уже который год, работает абсолютно корректно.
А колбасу жарить в ванной как-то неправильно, мсье знает толк в извращениях :-))
mySKU.me/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 месяца корпус и датчик не засалились?
Насчет дыма — есть датчики дыма, но запах они всё равно улавливать не будут. Да и мы не готовим чебуреки в казане с маслом, так что дыма у нас не бывает.
У вас предположительно при продолжительном парообразовании и недостаточной мощности вытяжки вентилятор в какой то момент выключится.А вам у же выше написали про это)
Откуда инфа? Вроде у каждой квартиры свой вентиляционный канал, разве нет?
В малоэтажках индивидуальный до самой крыши.
В многоэтажках индивидуальный канал-спутник на пару этажей вверх и соединяется с общим. Вот тут реально соседям можно перевернуть вентиляцию и надуть вони. Можно только общий тянущий вентилятор на крышу.
Нормальную тему замутил, сам думаю как в ванной это реализовать.