Cuprins:
Video: Birra_Monitor: 3 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
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
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ă
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:
Cum să faci 4G LTE dublă antenă BiQuade Pași simpli: 3 pași
Cum să fac 4G LTE Double BiQuade Antenna Pași simpli: De cele mai multe ori mă confrunt, nu am o putere de semnal bună pentru lucrările mele de zi cu zi. Asa de. Căut și încerc diferite tipuri de antenă, dar nu funcționează. După un timp pierdut, am găsit o antenă pe care sper să o fac și să o testez, pentru că nu se bazează pe principiul
Design de joc în Flick în 5 pași: 5 pași
Designul jocului în Flick în 5 pași: Flick este un mod foarte simplu de a crea un joc, în special ceva de genul puzzle, roman vizual sau joc de aventură
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino - Pași cu pași: 4 pași
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino | Pași cu pas: în acest proiect, voi proiecta un senzor senzor de parcare inversă Arduino Car Circuit folosind senzorul cu ultrasunete Arduino UNO și HC-SR04. Acest sistem de avertizare auto bazat pe Arduino poate fi utilizat pentru navigație autonomă, autonomie robotică și alte r
Detectarea feței pe Raspberry Pi 4B în 3 pași: 3 pași
Detectarea feței pe Raspberry Pi 4B în 3 pași: În acest instructabil vom efectua detectarea feței pe Raspberry Pi 4 cu Shunya O / S folosind Biblioteca Shunyaface. Shunyaface este o bibliotecă de recunoaștere / detectare a feței. Proiectul își propune să obțină cea mai rapidă viteză de detectare și recunoaștere cu
Cum să faci un contor de pași ?: 3 pași (cu imagini)
Cum să fac un contor de pași ?: obișnuiam să performez bine la multe sporturi: mersul pe jos, alergatul, mersul pe bicicletă, jocul de badminton etc. Îmi place să călăresc să călătoresc în preajmă. Ei bine, uită-te la burtica mea ostilă …… Ei bine, oricum, decid să reîncep să fac mișcare. Ce echipament ar trebui să pregătesc?