Cuprins:

Birra_Monitor: 3 pași
Birra_Monitor: 3 pași

Video: Birra_Monitor: 3 pași

Video: Birra_Monitor: 3 pași
Video: PC Garage TV - Setup cu 3 monitoare - Nvidia Surround 2024, Noiembrie
Anonim
Birra_Monitor
Birra_Monitor

Il proiect serve a monitorare la fermentazione della birra fatta in casa folosind un simplu senzor di vibrazione (SW-420 NC). l'aggiunta del sensore di temperatura (DHT22) serve a monitorare temperatura și umidità della stanza atta alla fermentazione. Questi dati sunt gestiti da una scheda nodemcu și vizualizați prin Blynk app deputata allo development di solutions IoT.

Proiectul este utilizat pentru a monitoriza fermentația berii de casă folosind un senzor simplu de vibrații (SW-420 NC). adăugarea senzorului de temperatură (DHT22) servește pentru a monitoriza temperatura și umiditatea camerei potrivite pentru fermentare. Aceste date sunt gestionate de un card nodemcu și vizualizate prin intermediul aplicației Blynk numită pentru a dezvolta soluții IoT.

Pasul 1: Ambalare

Ambalare
Ambalare
Ambalare
Ambalare

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

Placa și senzorii sunt adăpostiți într-o cutie simplă de joncțiune.

Pasul 2: Senzor la locul de muncă

Senzor la locul de muncă
Senzor la locul de muncă
Senzor la locul de muncă
Senzor la locul de muncă

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

ce se întâmplă când senzorul este „montat” pe bule, că de fiecare dată când CO2 este expulzat, senzorul va înregistra vibrațiile care vor fi afișate în aplicația Blynk

Pasul 3: Cod

il codice per permitere il funcționare del tutto è următorul care se va caricare pe placa tramide il software Arduino IDE

codul pentru a permite funcționarea întregului este următorul care va fi suficient pentru a încărca pe card software-ul Arduino IDE

#include Adafruit_Sensor.h

#includeți DHT.h

#define BLYNK_PRINT Serial

#include ESP8266WiFi.h;

#include BlynkSimpleEsp8266.h;

#include SimpleTimer.h;

#include WidgetRTC.h;

float lettura [50]; // dimensiune Arrayper media

int nume_Letture = 0; // progresive letture

float tot_Letture = 0; // somma letture

float media_Letture = 0; // media letture

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

prima nesemnată lungă = 0; // util per swap min / max

lung Tempmax = 660000; // util per swap min / max

floare tmax = -100; // impostare imposibilă pentru temperatura maximă

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

float umax = 0; // impostare imposibilă pentru umidità maximă

float umin = 100; // impostazione imposibile per umidità minima

String maxt; // stringa visualizzata su Blynk

Menta cu coarde; // stringa visualizzata su Blynk

String maxu; // stringa visualizzata su Blynk

String minu; // stringa visualizzata su Blynk

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

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

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

#define DHTPIN 2 // pin sensore DHT

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

Cronometru SimpleTimer; //temporizator

WidgetRTC rtc; // orologio di sistema Blynk

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

BLYNK_CONNECTED () {

rtc.begin (); // avvio RTC

}

BLYNK_WRITE (V0) // rutină pentru tastare resetată de Blynk

{

int attiva = param.asInt ();

if (attiva == 1) {

tmax = -100;

tmin = 100;

umax = 0;

umin = 100;

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

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

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, menta);

Blynk.virtualWrite (V12, maxu);

Blynk.virtualWrite (V13, minu);

Blynk.virtualWrite (V1, conteggio);

Serial.println ("Resetta");

întârziere (200);

Blynk.virtualWrite (V0, LOW);

}

}

void sendSensor () // norma procedura di lettura

{

String currentTime = String (hour ()) + ":" + minute ();

String currentDate = String (day ()) + "/" + month ();

float h = dht.readHumidity ();

float t = dht.readTemperature ();

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

Serial.println ("Nu s-a citit de la senzorul DHT!");

led1.on ();

întoarcere;

}

altceva {

led1.off ();

}

if (t> tmax) {

tmax = t;

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

}

if (t <tmin) {

tmin = t;

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

}

if (h> umax) {

umax = h;

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

}

if (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, menta);

Blynk.virtualWrite (V12, maxu);

Blynk.virtualWrite (V13, minu);

}

void calcolo_media () // procedura pentru inregistrari dati media

{

lettura [nume_Letture] = dht.readTemperature ();

if (isnan (lettura [nume_Letture])) {

led1.on ();

întoarcere;

}

// 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 (24ore)

}

if (cc == 1) {

conteggio = 48; // DOPO le prime 24ore divide semper per 24ore (48mezzore)

}

altceva {

// media 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, conteggio);

}

configurare nulă ()

{

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

}

bucla nulă ()

{

Blynk.run ();

timer.run ();

lung adesso = millis ();

val = digitalRead (vibr_pin);

vb = vb + val;

if (adesso - prima> = Tempmax)

{

vb = 0;

vbinit = vb;

prima = adesso;

}

Recomandat: