Kazalo:

Birra_Monitor: 3 koraki
Birra_Monitor: 3 koraki

Video: Birra_Monitor: 3 koraki

Video: Birra_Monitor: 3 koraki
Video: Home Assistant. Урок 9.4 ADD-ON - Xiaomi Gateway 3, интеграция в zigbee2mqtt 2024, Julij
Anonim
Birra_Monitor
Birra_Monitor

Progetto postrežemo z monitorrare la fermentazione della birra fatta v casa tramite un semplice sensore di vibrazione (SW-420 NC). Senzor temperature (DHT22) služi za spremljanje temperature in umidità della stanza atta alla fermentazione. Questi dati vengono gestiti da una scheda nodemcu e visualizzati tramite Blynk app deputata allo sviluppo di soluzioni IoT.

Projekt se uporablja za spremljanje fermentacije domačega piva s preprostim senzorjem vibracij (SW-420 NC). dodatek temperaturnega senzorja (DHT22) služi za spremljanje temperature in vlažnosti prostora, primernega za fermentacijo. Te podatke upravlja kartica nodemcu in vizualizira prek aplikacije Blynk, imenovane za razvoj rešitev IoT.

1. korak: Pakiranje

Pakiranje
Pakiranje
Pakiranje
Pakiranje

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

Plošča in senzorji so nameščeni v preprosti razdelilni omarici.

2. korak: Senzor pri delu

Senzor pri delu
Senzor pri delu
Senzor pri delu
Senzor pri delu

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

kaj se zgodi, ko je senzor "nameščen" na mehurček, da bo senzor ob vsakem izločanju CO2 zabeležil vibracije, ki bodo prikazane v aplikaciji Blynk

3. korak: Koda

Id kode za permettere il funzionamento del tutto è il seguente che basterà caricare sulla scheda tramide il programska oprema Arduino IDE

koda, ki omogoča delovanje celote, je naslednja, ki bo dovolj, da na kartico naložite programsko opremo Arduino IDE

#vključi senzor Adafruit.h

#vključi DHT.h

#define BLYNK_PRINT Serijska številka

#include ESP8266WiFi.h;

#include BlynkSimpleEsp8266.h;

#include SimpleTimer.h;

#include WidgetRTC.h;

float lettura [50]; // dimenzija Arrayper media

int nume_Letture = 0; // progressivo letture

float tot_Letture = 0; // somma letture

float media_Letture = 0; // medijska literatura

int conteggio = 0; // variabile di conteggio primario

// inizio dichiarazioni variabili per media continua

int i = 0;

int cc = 0;

int togli = 0;

// fine dichiarazioni variabili per media continua

int val; // variabile registrazione vibrazione

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

int vb = 0; // Inizializzo vb a 0

int vbr = 0; // Inizializzo vb a 0

int vbinit = 0; // Inizializzo vbinit a 0

brez podpisa dolga prima = 0; // uporabnost na zamenjavo min/max

dolga Tempmax = 660000; // uporabnost na zamenjavo min/max

plovec tmax = -100; // impostazione impossibile per la temperature massima

plavajoči tmin = 100; // impostazione impossibile per il temperature minima

float umax = 0; // impostazione impossibile per umidità massima

plavajoči umin = 100; // impostazione impossibile per umidità minima

Niz nizov; // stringa visualizzata su Blynk

Struna meta; // stringa visualizzata su Blynk

Niz nizko; // stringa visualizzata su Blynk

Niz nizov; // stringa visualizzata su Blynk

char auth = "a °°°°°°°°°°°°° d"; // žeton Blynk

char ssid = "T °°°°°°°°°°°°° 9"; //Wifi

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

#define DHTPIN 2 // pin senzor DHT

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

Časovnik SimpleTimer; // časovnik

WidgetRTC rtc; // orologio di sistem Blynk

WidgetLED led1 (V15); // Led Blynk sul pin V15

BLYNK_CONNECTED () {

rtc.begin (); // avvio RTC

}

BLYNK_WRITE (V0) // rutina za ponastavitev tasto za Blynk

{

int attiva = param.asInt ();

če (attiva == 1) {

tmax = -100;

tmin = 100;

umax = 0;

umin = 100;

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

kovnica = "------------";

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

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

media_Letture = 0;

tot_Letture = 0;

nume_Letture = 0;

conteggio = 0;

cc = 0;

Serial.println (conteggio);

Blynk.virtualWrite (V8, media_Letture);

Blynk.virtualWrite (V10, maxt);

Blynk.virtualWrite (V11, meta);

Blynk.virtualWrite (V12, največ);

Blynk.virtualWrite (V13, minuta);

Blynk.virtualWrite (V1, conteggio);

Serial.println ("Ponastavi");

zamuda (200);

Blynk.virtualWrite (V0, LOW);

}

}

void sendSensor () // normale procedura di lettura

{

Niz currentTime = String (ura ()) + ":" + minuta ();

Niz currentDate = String (dan ()) + "/" + mesec ();

float h = dht.readHumidity ();

float t = dht.readTemperature ();

if (isnan (h) || isnan (t)) {

Serial.println ("Odčitavanje s senzorja DHT ni uspelo!");

led1.on ();

vrnitev;

}

drugače {

led1.off ();

}

če (t> tmax) {

tmax = t;

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

}

če (t <tmin) {

tmin = t;

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

}

if (h> umax) {

umax = h;

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

}

če (h <umin) {

umin = h;

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

}

Blynk.virtualWrite (V5, h);

Blynk.virtualWrite (V6, t);

Blynk.virtualWrite (V7, vb);

Blynk.virtualWrite (V10, maxt);

Blynk.virtualWrite (V11, meta);

Blynk.virtualWrite (V12, največ);

Blynk.virtualWrite (V13, minuta);

}

void calcolo_media () // postopek za registracijo medija

{

lettura [nume_Letture] = dht.readTemperature ();

if (isnan (lettura [nume_Letture])) {

led1.on ();

vrnitev;

}

// procedura media circolare

if (nume_Letture> = 48) {

togli = nume_Letture-48;

tot_Letture -= (lettura [togli]);

tot_Letture += (lettura [nume_Letture]);

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

cc = 1; // identifica primo passaggio dopo 48 letture (24or)

}

če (cc == 1) {

conteggio = 48; // DOPO le prime 24ore deli semper na 24ore (48mezzore)

}

drugače {

// medijska prima dello scadere delle 24ore

tot_Letture += (lettura [nume_Letture]);

conteggio = conteggio+1;

}

media_Letture = tot_Letture/conteggio;

nume_Letture = nume_Letture+1;

Blynk.virtualWrite (V8, media_Letture);

Blynk.virtualWrite (V1, kontekst);

}

void setup ()

{

Serial.begin (115200);

Blynk.begin (auth, ssid, pass);

dht.begin ();

timer.setInterval (10000, sendSensor); // lettura temperatura umidità ogni 5 min

timer.setInterval (1800000, calcolo_media); // lettura e media ogni 30min

}

void loop ()

{

Blynk.run ();

timer.run ();

dolg adesso = millis ();

val = digitalRead (vibr_pin);

vb = vb+val;

če (adesso - prima> = Tempmax)

{

vb = 0;

vbinit = vb;

prima = adesso;

}

Priporočena: