Mündəricat:
Video: Birra_Monitor: 3 addım
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
İlkin olaraq, vibrasyona (SW-420 NC) görə tramit və ya mayelərdə bir fermentasiya xidməti göstərilir. Temperaturun (DHT22) monitorinqi temperaturun və temperaturun monitorinqini həyata keçirir. Blynk proqramının IoT ilə əlaqəli bütün proqramları Blynk tətbiqetməsində tapa bilərsiniz.
Layihə sadə bir vibrasiya sensoru (SW-420 NC) istifadə edərək evdə hazırlanan pivənin mayalanmasını izləmək üçün istifadə olunur. temperatur sensoru (DHT22) əlavə edilməsi, fermentasiya üçün uyğun olan otağın temperaturunu və rütubətini izləməyə xidmət edir. Bu məlumatlar bir nodemcu kartı ilə idarə olunur və IoT həlləri hazırlamaq üçün təyin edilmiş Blynk tətbiqi ilə görüntülənir.
Addım 1: Qablaşdırma
Şəxsi sensorlar son nəticədə heç bir problem yaratmır.
Lövhə və sensorlar sadə qovşaq qutusuna yerləşdirilib.
Addım 2: Sensor İşdə
quello che succede quando il sensore è "montato" sul gorgogliatore və CO2 il sensore registrerà delle vibrazioni che verranno visualizzate sull'app Blynk
Sensor köpükləyiciyə "quraşdırıldıqda" nə olur ki, hər dəfə CO2 atıldıqda sensor Blynk tətbiqində nümayiş olunacaq titrəmələri qeyd edəcək
Addım 3: Kod
proqram təminatı Arduino IDE proqram təminatı ilə təmin edilir.
Arduino IDE proqramını karta yükləmək üçün kifayət edəcək kodun hamısının işləməsinə icazə verilir.
#Adafruit_Sensor.h daxil edin
#DHT.h daxil edin
#blynk_print seriyasını təyin edin
#ESP8266WiFi.h daxil edin;
#daxil BlynkSimpleEsp8266.h;
#SimpleTimer.h daxil edin;
#WidgetRTC.h daxil edin;
float lettura [50]; // ölçü Arrayper mediası
int nume_Letture = 0; // progressivo letture
float tot_Letture = 0; // somma letture
float media_Letture = 0; // media Letturası
int conteggio = 0; // dəyişkən di conteggio primario
// hər bir media üçün dəyişə bilərsiniz
int i = 0;
int cc = 0;
int togli = 0;
// hər bir medya üçün çox yaxşı dəyişikliklər
int val; // dəyişkən registrazione vibrazione
int vibr_pin = 5; // Piedino x Sensore di Vibrazione D1
int vb = 0; // Başlanğıc və s
int vbr = 0; // Başlanğıc və s
int vbinit = 0; // Başlanğıcda 0
işarəsiz uzun prima = 0; // svop başına minil/maksimum
uzun Tempmax = 660000; // svop başına minil/maksimum
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; // Blynk üçün vizual görüntülər
String nanə; // Blynk üçün vizual görüntülər
String maxu; // Blynk üçün vizual görüntülər
Simli dəqiqə; // Blynk üçün vizual görüntülər
char auth = "a °°°°°°°°°°°°°° d"; // token Blynk
char ssid = "T °°°°°°°°°°°°°°°° 9"; // wifi
char pass = "O °°°°°°°°°°°°°° R"; // psw
#deftine DHTPIN 2 // pin sensore DHT
#DHTTYPE DHT22 təyin edin
DHT dht (DHTPIN, DHTTYPE);
SimpleTimer timer; // taymer
WidgetRTC rtc; // Blynk sisteminə görə
WidgetLED led1 (V15); // Led Blynk sul pin V15
BLYNK_CONNECTED () {
rtc.begin (); // avvio RTC
}
BLYNK_WRITE (V0) // Blynk -də hər dəfə sıfırlama qaydası
{
int attiva = param.asInt ();
əgər (attiva == 1) {
tmax = -100;
tmin = 100;
umax = 0;
umin = 100;
maxt = "------------";
nanə = "------------";
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, nanə);
Blynk.virtualWrite (V12, maxu);
Blynk.virtualWrite (V13, dəqiqə);
Blynk.virtualWrite (V1, conteggio);
Serial.println ("Sıfırlama");
gecikmə (200);
Blynk.virtualWrite (V0, LOW);
}
}
void sendSensor () // prosedur qaydaları
{
String currentTime = String (saat ()) + ":" + dəqiqə ();
String currentDate = String (gün ()) + "/" + ay ();
float h = dht.readHumidity ();
float t = dht.readTemperature ();
əgər (isnan (h) || isnan (t)) {
Serial.println ("DHT sensorundan oxunmadı!");
led1.on ();
qayıtmaq;
}
başqa {
led1.off ();
}
əgər (t> tmax) {
tmax = t;
maxt = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
əgər (t <tmin) {
tmin = t;
nanə = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
əgər (h> umax) {
umax = h;
maxu = String (h) + "% (" + currentTime + "-" + currentDate + ")";
}
əgər (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, nanə);
Blynk.virtualWrite (V12, maxu);
Blynk.virtualWrite (V13, dəqiqə);
}
etibarsız calcolo_media () // hər bir media qeydiyyatı proseduru
{
lettura [nume_Letture] = dht.readTemperature ();
əgər (isnan (lettura [nume_Letture])) {
led1.on ();
qayıtmaq;
}
// prosedur media dairəsi
əgər (nume_Letture> = 48) {
togli = nume_Letture-48;
tot_Letture -= (lettura [togli]);
tot_Letture += (lettura [nume_Letture]);
nume_Letture = 0; // bir sıfır və ya bir neçə dəfə
cc = 1; // identifica primo passaggio dopo 48 letture (24ore)
}
əgər (cc == 1) {
conteggio = 48; // DOPO le prime 24ore 24 yarıya bölmək üçün semper (48mezzore)
}
başqa {
// 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);
}
boş quraşdırma ()
{
Serial.begin (115200);
Blynk.begin (auth, ssid, pass);
dht.begin ();
timer.setInterval (10000, sendSensor); // yuxu temperaturu 5 dəqiqə
timer.setInterval (1800000, calcolo_media); // 30 dəqiqə ərzində media paylaşın
}
boşluq döngəsi ()
{
Blynk.run ();
timer.run ();
uzun adesso = millis ();
val = digitalRead (vibr_pin);
vb = vb+val;
əgər (adesso - prima> = Tempmax)
{
vb = 0;
vbinit = vb;
prima = əlavə;
}