Cov txheej txheem:

Birra_Monitor: 3 Kauj Ruam
Birra_Monitor: 3 Kauj Ruam

Video: Birra_Monitor: 3 Kauj Ruam

Video: Birra_Monitor: 3 Kauj Ruam
Video: Tsov khawb yawg Vaj hua tim qhov ntxa 3/16/2022 2024, Kaum ib hlis
Anonim
Birra_Monitor
Birra_Monitor

Il progetto ua tus saib xyuas la fermentazione della birra fatta hauv casa tramite un semplice sensore di vibrazione (SW-420 NC). l'aggiunta del sensore di temperatura (DHT22) ua tus saib xyuas qhov kub thiab txias ntawm lub cev ua rau lub cev tsis muaj zog. Questi dati vengono gestiti da una scheda nodemcu e visualizzati tramite Blynk app deputata allo sviluppo di soluzioni IoT.

Txoj haujlwm no yog siv los tshuaj xyuas cov dej cawv hauv tsev uas siv cov khoom siv yooj yim co co (SW-420 NC). qhov sib ntxiv ntawm qhov ntsuas kub (DHT22) ua haujlwm los saib xyuas qhov kub thiab txias ntawm chav nyob haum rau fermentation. Cov ntaub ntawv no tau tswj hwm los ntawm daim npav nodemcu thiab pom tau los ntawm Blynk app tau xaiv los txhim kho IoT cov kev daws teeb meem.

Kauj Ruam 1: Ntim

Ntim
Ntim
Ntim
Ntim

Scheda e sensori sono alloggiate in una semplice scatola di derivazione.

Lub rooj tsavxwm thiab cov ntsuas tau nyob hauv lub thawv yooj yim sib txuas.

Kauj Ruam 2: Sensor ntawm Kev Ua Haujlwm

Sensor ntawm Kev Ua Haujlwm
Sensor ntawm Kev Ua Haujlwm
Sensor ntawm Kev Ua Haujlwm
Sensor ntawm Kev Ua Haujlwm

quello che succede quando il sensore è "montato" sul gorgogliatore che ad ogni espulsione di CO2 il sensore registrerà delle vibrazioni che verranno visualizzate sull'app Blynk

dab tsi tshwm sim thaum lub ntsuas ntsuas tau "teeb tsa" ntawm lub tshuab npuas uas txhua lub sijhawm CO2 raug tshem tawm lub sensor yuav kaw qhov kev co uas yuav tshwm rau ntawm Blynk app

Kauj ruam 3: Code

il codice per permettere il funzionamento del tutto è il seguente che basterà caricare sulla scheda tramide il software Arduino IDE

cov cai kom tso cai ua haujlwm ntawm tag nrho yog cov hauv qab no uas yuav txaus rau thauj ntawm daim npav Arduino IDE software

#suav nrog Adafruit_Sensor.h

#suav nrog DHT.h

#define BLYNK_PRINT Serial

#suav nrog ESP8266WiFi.h;

#suav nrog BlynkSimpleEsp8266.h;

#suav nrog SimpleTimer.h;

#suav nrog WidgetRTC.h;

ntab lettura [50]; // dimensione Arrayper media

int nume_Letture = 0; // kev hloov pauv

float tot_Letture = 0; // somma lus

ntab media_Letture = 0; // media letture

int cov = 0; // variabile di conteggio primario

// inizio dichiarazioni variabili per media continua

int ib = 0;

nco cc = 0;

int tau = 0;

// nplua dichiarazioni variabili per media continua

koj val; // variabile registrazione vibrazione

int vibr_pin = 5; // Piedino x Sensore di Vibrazione D1

int ib = 0; // Cov lus qhia vb a 0

int vbr = 0; // Cov lus qhia vb a 0

int vbinit = 0; // Cov lus piav qhia ntawm 0

unsigned ntev prima = 0; // siv tau rau kev sib pauv min/max

Ntev Tempmax = 660000; // siv tau rau kev sib pauv min/max

ntab tmax = -100; // impostazione impossibile per la temperatura massima

ntab tmin = 100; // impostazione impossibile per il temperatura minima

ntab umax = 0; // impostazione impossibile rau umidità massima

ntab umin = 100; // impostazione impossibile rau umidità minima

Txoj hlua maxt; // stringa visualizzata su Blynk

Txoj hlua mint; // stringa visualizzata su Blynk

Txoj hlua maxu; // stringa visualizzata su Blynk

Txoj hlua minu; // stringa visualizzata su Blynk

char auth = "a °°°°°°°°°°°°°° d"; // token Blynk

char ssid = "T °°°°°°°°°°°°°°ຊ 9 9"; // wifi xwb

char pass = "O °°°°°°°°°°°°° R"; // psw ua

#define DHTPIN 2 // pin sensore DHT

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

SimpleTimer timer; // timer

WidgetRTC rtc; // orologio di system Blynk

WidgetLED coj 1 (V15); // Led Blynk sul pin V15

BLYNK_CONNECTED () {

rtc.begin (); // avvio RTC

}

BLYNK_WRITE (V0) // ib txwm ua rau rov pib dua nrog Blynk

{

int attiva = param.asInt ();

yog (attiva == 1) {

txm = -100;

txm = 100;

awm = 0;

nim = 100;

maxt = "------------";

mint = "------------";

maxu = "------------";

minu = "------------";

media_Letture = 0;

tot_Letture = 0;

num_Letture = 0;

conteggio = 0;

cc = 0 hli;

Serial.println (txuas ntxiv);

Blynk.virtualWrite (V8, media_Letture);

Blynk.virtualWrite (V10, maxt);

Blynk.virtualWrite (V11, mint);

Blynk.virtualWrite (V12, maxu);

Blynk.virtualWrite (V13, minu);

Blynk.virtualWrite (V1, txuas ntxiv);

Serial.println ("Resetta");

ncua (200);

Blynk.virtualWrite (V0, QIB);

}

}

void sendSensor () // normale procedureura di lettura

{

Txoj hlua tam sim no = Txoj hlua (teev ()) + ":" + feeb ();

Txoj hlua tam sim no Hnub = Txoj hlua (hnub ()) + "/" + hli ();

ntab h = dht.readHumidity ();

ntab t = dht.readTemperature ();

yog (isnan (h) || isnan (t)) {

Serial.println ("Ua tsis tau zoo nyeem los ntawm DHT sensor!");

coj1.on ();

rov qab;

}

lwm tus {

coj1.off ();

}

yog (t> tmax) {

txm = t;

maxt = Txoj hlua (t) + "° C (" + currentTime + "-" + currentDate + ")";

}

yog tias (t <tmin) {

tmin = tsi;

mint = Txoj hlua (t) + "° C (" + currentTime + "-" + currentDate + ")";

}

yog (h> umax) {

hwm = h;

maxu = Txoj hlua (h) + "% (" + currentTime + "-" + currentDate + ")";

}

yog (h <umin) {

nim = h;

minu = Txoj hlua (h) + "% (" + currentTime + "-" + currentDate + ")";

}

Blynk.virtualWrite (V5, h);

Blynk.virtualWrite (V6, t);

Blynk.virtualWrite (V7, vb);

Blynk.virtualWrite (V10, maxt);

Blynk.virtualWrite (V11, mint);

Blynk.virtualWrite (V12, maxu);

Blynk.virtualWrite (V13, minu);

}

tsis muaj dab tsi calcolo_media () // txheej txheem rau kev sau npe rau dati media

{

lettura [nume_Letture] = dht.readTemperature ();

yog (isnan (lettura [nume_Letture])) {

coj1.on ();

rov qab;

}

// txheej txheem txheej txheem xov xwm ncig

yog tias (nume_Letture> = 48) {

togli = nume_Letture-48;

tot_Letture -= (lettura [togli]);

tot_Letture += (lettura [nume_Letture]);

num_Letture = 0; // setta a zero e riparte tutto

cc = ib; // identifica primo passaggio dopo 48 letture (24ore)

}

yog (cc == 1) {

cov = 48; // DOPO le prime 24ore faib semper rau 24ore (48mezzore)

}

lwm tus {

// media prima dello scadere delle 24ore

tot_Letture += (lettura [nume_Letture]);

conteggio = koom+1;

}

media_Letture = tot_Letture/conteggio;

num_Letture = num_Letture+1;

Blynk.virtualWrite (V8, media_Letture);

Blynk.virtualWrite (V1, txuas ntxiv);

}

void teeb tsa ()

{

Serial.begin (115200);

Blynk.begin (auth, ssid, dhau);

dht.begin ();

timer.setInterval (10000, xa เซนเซอร์); // ua kom sov sov ua kom sov li 5 feeb

timer.setInterval (1800000, calcolo_media); // hais tawm thiab tshaj tawm xov xwm 30min

}

void lub voj ()

{

Blynk.run ();

timer.run ();

ntev adesso = millis ();

val = digitalRead (vibr_pin);

vb = vb+val;

yog (adesso - prima> = Tempmax)

{

wb = 0;

vbinit = wb;

prima = adesso;

}

Pom zoo: