Video: Birra_Monitor: 3 qadam
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Vibrazion (SW-420 NC) tramit va semplice sensorli kanallarda (fermentlar-della birra fatta) monitör xizmat qiladi. Harorat sensori (DHT22) haroratni nazorat qilish uchun xizmat qiladi. Blynk ilovasi uchun IoT -ning har bir vazifasi bir vaqtning o'zida amalga oshiriladi.
Loyiha oddiy tebranish sensori (SW-420 NC) yordamida uy qurilishi pivosining fermentatsiyasini kuzatish uchun ishlatiladi. harorat sensori (DHT22) qo'shilishi fermentatsiyaga yaroqli xonaning harorati va namligini kuzatishga xizmat qiladi. Bu ma'lumotlar nodemcu kartasi orqali boshqariladi va IoT echimlarini ishlab chiqish uchun tayinlangan Blynk dasturi orqali ko'rsatiladi.
1 -qadam: qadoqlash
Shaxsiy sensori alloggiate bir xil bo'laklarga bo'linadi.
Kengash va datchiklar oddiy ulanish qutisiga joylashtirilgan.
2 -qadam: Sensor ish joyida
quello che succede quando il sensore è "montato" sul gorgogliatore va CO2 il sensore registrerà delle vibrazioni che verranno visualizzate sull'app Blynk
Sensor puflagichga "o'rnatilganda" nima bo'ladi, har safar CO2 chiqarilganda sensor Blynk ilovasida ko'rsatiladigan tebranishlarni qayd qiladi.
3 -qadam: kod
dasturiy ta'minot Arduino IDE dasturini ishga tushirish uchun dasturlarni ishga tushiring.
butunning ishlashiga ruxsat beruvchi kod - bu Arduino IDE dasturini kartaga yuklash uchun etarli bo'ladi.
#Adafruit_Sensor.h qo'shing
#DHT.h ni qo'shing
#blynk_print seriyasini aniqlang
#ESP8266WiFi.h ni qo'shing;
#blynkSimpleEsp8266.h qo'shing;
#To'liq SimpleTimer.h;
#WidgetRTC.h ni qo'shing;
float lettura [50]; // o'lchovli ommaviy axborot vositalari
int nume_Letture = 0; // progressiv lettura
float tot_Letture = 0; // somma letur
float media_Letture = 0; // ommaviy axborot vositalari ijrosi
int conteggio = 0; // variabile di conteggio primario
// har bir ommaviy axborot vositasi uchun turli xil variantlar
int i = 0;
int cc = 0;
int togli = 0;
// har bir ommaviy axborot vositasi uchun juda yaxshi
int val; // o'zgaruvchan registrazione vibrazione
int vibr_pin = 5; // Piedino x Sensore di Vibrazione D1
int vb = 0; // Inizializzo va boshqalar
int vbr = 0; // Inizializzo va boshqalar
int vbinit = 0; // Inizializzo vbinit a 0
belgisiz uzun prima = 0; // almashtirish uchun utile min/max
uzoq Tempmax = 660000; // almashtirish uchun utile min/max
float tmax = -100; // impostazione impossibile per la temperatura massima
suzuvchi tmin = 100; // impostazione impossibile per il temperatura minima
float umax = 0; // impostazione impossibile per umidità massima
suzuvchi umin = 100; // impostazione impossibile per umidità minima
String maxt; // Blynk vizualizatsiyasi
String yalpiz; // Blynk vizualizatsiyasi
String maxu; // Blynk vizualizatsiyasi
String minu; // Blynk vizualizatsiyasi
char auth = "a °°°°°°°°°°°°°° d"; // token Blynk
char ssid = "T °°°°°°°°°°°°°°°° 9"; //Wifi
char pass = "O °°°°°°°°°°°°°° R"; // psw
#DHTPIN 2 ni belgilang // pin sensore DHT
#DHTTYPE DHT22 ni aniqlang
DHT dht (DHTPIN, DHTTYPE);
SimpleTimer taymeri; // taymer
WidgetRTC rtc; // Blynk tizimi
VidjetLED LED1 (V15); // Led Blynk pin V15
BLYNK_CONNECTED () {
rtc.begin (); // avvio RTC
}
BLYNK_WRITE (V0) // Blynk uchun har bir ta'mni tiklash tartibi
{
int attiva = param.asInt ();
agar (attiva == 1) {
tmax = -100;
tmin = 100;
umax = 0;
umin = 100;
maxt = "------------";
yalpiz = "------------";
maxu = "------------";
minu = "------------";
media_Letture = 0;
tot_Letture = 0;
nume_Letture = 0;
kontegjio = 0;
cc = 0;
Serial.println (conteggio);
Blynk.virtualWrite (V8, media_Letture);
Blynk.virtualWrite (V10, maxt);
Blynk.virtualWrite (V11, yalpiz);
Blynk.virtualWrite (V12, maxu);
Blynk.virtualWrite (V13, minu);
Blynk.virtualWrite (V1, kontegjio);
Serial.println ("Resetta");
kechikish (200);
Blynk.virtualWrite (V0, LOW);
}
}
void sendSensor () // oddiy protsedura
{
String currentTime = String (soat ()) + ":" + daqiqa ();
String currentDate = String (kun ()) + "/" + oy ();
float h = dht.readHumidity ();
float t = dht.readTemperature ();
agar (isnan (h) || isnan (t)) {
Serial.println ("DHT sensoridan o'qib bo'lmadi!");
led1.on ();
qaytish;
}
boshqa {
led1.off ();
}
agar (t> tmax) {
tmax = t;
maxt = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
agar (t <tmin) {
tmin = t;
yalpiz = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
agar (h> umax) {
umax = h;
maxu = String (h) + "% (" + currentTime + "-" + currentDate + ")";
}
agar (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, yalpiz);
Blynk.virtualWrite (V12, maxu);
Blynk.virtualWrite (V13, minu);
}
void calcolo_media () // registratsiya ma'lumotlari uchun protsedura
{
lettura [nume_Letture] = dht.readTemperature ();
agar (isnan (lettura [nume_Letture])) {
led1.on ();
qaytish;
}
// media circulare protsedurasi
agar (nume_Letture> = 48) {
togli = nume_Letture-48;
tot_Letture -= (lettura [togli]);
tot_Letture += (lettura [nume_Letture]);
nume_Letture = 0; // nol va nolga teng
cc = 1; // identifikator primo passaggio dopo 48 letture (24ore)
}
agar (cc == 1) {
kontegjio = 48; // DOPO le prime 24ore semerni har 24 ta (48mazzore) ga ajratish.
}
boshqa {
// ommaviy axborot vositalarining boshlanishi, bu 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, kontegjio);
}
bo'sh o'rnatish ()
{
Serial.begin (115200);
Blynk.begin (auth, ssid, pass);
dht.begin ();
timer.setInterval (10000, sendSensor); // lettura temperatura umidida ogni 5 min
timer.setInterval (1800000, calcolo_media); // ommaviy axborot vositalari 30 daqiqa
}
bo'sh halqa ()
{
Blynk.run ();
taymer.run ();
uzoq manzil = millis ();
val = digitalRead (vibr_pin);
vb = vb+val;
agar (adesso - prima> = Tempmax)
{
vb = 0;
vbinit = vb;
prima = qo'shimcha;
}