Talaan ng mga Nilalaman:
Video: Birra_Monitor: 3 Mga Hakbang
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Naghahatid ako ng isang monitorare la fermentazione della birra fatta sa casa tramite un semplice sensore di vibrazione (SW-420 NC). l'aggiunta del sensore di temperatura (DHT22) maghatid ng isang monitorare temperatura at umutang ng della stanza atta alla fermentazione. Mag-isip ng dati mong pagkilos sa isang iskedyul ng pag-ibig upang ma-visualize ang tramite ng Blynk app na mailalagay sa loob ng IoT.
Ginagamit ang proyekto upang subaybayan ang pagbuburo ng homemade beer gamit ang isang simpleng sensor ng panginginig (SW-420 NC). ang pagdaragdag ng sensor ng temperatura (DHT22) ay nagsisilbi upang subaybayan ang temperatura at halumigmig ng silid na angkop para sa pagbuburo. Ang data na ito ay pinamamahalaan ng isang nodemcu card at isinalarawan sa pamamagitan ng Blynk app na hinirang upang paunlarin ang mga solusyon sa IoT.
Hakbang 1: Pagbalot
Mag-iskedyul ng sensori sono alloggiate sa isang semplice scatola di derivazione.
Ang mga board at sensor ay nakalagay sa isang simpleng kahon ng kantong.
Hakbang 2: Sensor sa Trabaho
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
ano ang mangyayari kapag ang sensor ay "naka-mount" sa bubbler na sa tuwing pinatalsik ang CO2 ang sensor ay magtatala ng mga panginginig na ipapakita sa Blynk app
Hakbang 3: Code
il codice per permettere il funzionamento del tutto è il seguente che basterà caricare sulla scheda tramide il software Arduino IDE
ang code upang payagan ang paggana ng kabuuan ay ang sumusunod na magiging sapat upang mai-load sa card ang Arduino IDE software
# isama ang Adafruit_Sensor.h
# isama ang DHT.h
# tukuyin ang BLYNK_PRINT Serial
# isama ang ESP8266WiFi.h;
# isama ang BlynkSimpleEsp8266.h;
# isama ang SimpleTimer.h;
# isama ang WidgetRTC.h;
float lettura [50]; // dimensione Arrayper media
int nume_Letture = 0; // Progressivo letture
float tot_Letture = 0; // somma letture
float media_Letture = 0; // media letture
int conteggio = 0; // variabile di conteggio primario
// inizio dichiarazioni variabili bawat 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
unsigned mahabang prima = 0; // utile per swap min / max
mahabang Tempmax = 660000; // utile per swap min / max
float tmax = -100; // impostazione impossibile per la temperatura massima
float tmin = 100; // impostazione impossibile per il temperatura minima
float umax = 0; // impostazione impossibile per umidità massima
float umin = 100; // impostazione impossibile per umidità minima
String maxt; // stringa visualizzata su Blynk
String mint; // stringa visualizzata su Blynk
String maxu; // stringa visualizzata su Blynk
String minu; // stringa visualizzata su Blynk
char auth = a °♥♥♥♥♥♥♥♥♥♥♥
char ssid = "T °<<<<<<♥♥♥♥♥♥♥♥ 9”; // wifi
char pass = O °♥♥♥♥♥♥♥♥♥♥ // psw
# tukuyin ang DHTPIN 2 // pin sensore DHT
# tukuyin ang DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);
SimpleTimer timer; // timer
WidgetRTC rtc; // orologio di sistema Blynk
WidgetLED led1 (V15); // Led Blynk sul pin V15
BLYNK_CONNected () {
rtc.begin (); // avvio RTC
}
BLYNK_WRITE (V0) // routine bawat tasto reset da Blynk
{
int attiva = param.asInt ();
kung (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, mint);
Blynk.virtualWrite (V12, maxu);
Blynk.virtualWrite (V13, minu);
Blynk.virtualWrite (V1, conteggio);
Serial.println ("Resetta");
pagkaantala (200);
Blynk.virtualWrite (V0, LOW);
}
}
void sendSensor () // normale prosedurura let letura
{
String currentTime = String (oras ()) + ":" + minuto ();
String currentDate = String (araw ()) + "/" + buwan ();
float h = dht.readHumidity ();
float t = dht.readTemperature ();
kung (isnan (h) || isnan (t)) {
Serial.println ("Nabigong basahin mula sa sensor ng DHT!");
led1.on ();
bumalik;
}
iba pa {
led1.off ();
}
kung (t> tmax) {
tmax = t;
maxt = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
kung (t <tmin) {
tmin = t;
mint = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
kung (h> umax) {
umax = h;
maxu = String (h) + "% (" + currentTime + "-" + currentDate + ")";
}
kung (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, mint);
Blynk.virtualWrite (V12, maxu);
Blynk.virtualWrite (V13, minu);
}
void calcolo_media () // prosedurura bawat registrazioni dati media
{
lettura [nume_Letture] = dht.readTemperature ();
kung (isnan (lettura [nume_Letture])) {
led1.on ();
bumalik;
}
// prosedurura media circolare
kung (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)
}
kung (cc == 1) {
conteggio = 48; // DOPO le prime 24ore split semper per 24ore (48mezzore)
}
iba pa {
// 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);
}
walang bisa ang pag-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
}
walang bisa loop ()
{
Blynk.run ();
timer.run ();
mahabang adesso = millis ();
val = digitalRead (vibr_pin);
vb = vb + val;
kung (adesso - prima> = Tempmax)
{
vb = 0;
vbinit = vb;
prima = adesso;
}