תוכן עניינים:
וִידֵאוֹ: Birra_Monitor: 3 שלבים
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
Il progetto מגישים מוניטור la fermentazione della birra fatta ב- casa tramite un semplice sensore di vibrazione (SW-420 NC). l'aggiunta del sensore di temperatura (DHT22) משרתים טמפרטורה צפויה ומעולה. קח מידע נוסף על תוכניות ליצירת תוכניות וחיזוקים של אפליקציות Blynk.
הפרויקט משמש לניטור תסיסה של בירה תוצרת בית באמצעות חיישן רטט פשוט (SW-420 NC). הוספת חיישן הטמפרטורה (DHT22) משמשת לניטור הטמפרטורה והלחות בחדר המתאימים לתסיסה. נתונים אלה מנוהלים על ידי כרטיס nodemcu ומודגשים באמצעות אפליקציית Blynk שמונתה לפתח פתרונות IoT.
שלב 1: אריזה
Scheda e sensori sono alloggiate in una semplice scatola di derivazione.
לוח וחיישנים שוכנים בקופסת חיבור פשוטה.
שלב 2: חיישן בעבודה
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
מה קורה כשהחיישן "מותקן" על הבועה שבכל פעם שהגז דו -חמצני החיישן יתעד רטט שיוצג באפליקציית Blynk.
שלב 3: קוד
il codice per permettere il funzionamento del tutto è il seguente che basterà caricare sulla scheda tramide il תוכנה Arduino IDE
הקוד שיאפשר את תפקוד המכלול הוא הבא שיספיק כדי להעמיס על הכרטיס את תוכנת Arduino IDE
#כלול Adafruit_Sensor.h
#כלול DHT.h
#הגדר סדרה BLYNK_PRINT
#כלול ESP8266WiFi.h;
#כלול BlynkSimpleEsp8266.h;
#include SimpleTimer.h;
#include WidgetRTC.h;
לצוף לצורה [50]; // dimensione Arrayper media
int nume_Letture = 0; // חסה פרוגרסיבו
float tot_Letture = 0; // חסה סומא
float media_Letture = 0; // השקת מדיה
int conteggio = 0; // variabile di conteggio primario
// inizio dichiarazioni variabili per continua media
int i = 0;
int cc = 0;
int togli = 0;
// variabili dichiarazioni בסדר להמשך התקשורת
int val; // משתנה 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
פרימה ארוכה ללא סימן = 0; // שימושי לכל החלפה מינימלי/מקסימלי
טמפמקס ארוך = 660000; // שימושי לכל החלפה מינימלי/מקסימלי
צף tmax = -100; // impostazione impossibile per la temperatura massima
צף tmin = 100; // impostazione impossibile per il temperatura minima
לצוף umax = 0; // impostazione impossibile per umidità massima
צף אומן = 100; // impostazione impossibile per umidità minima
מיקס מחרוזות; // stringa visualizzata su Blynk
מנטה מחרוזת; // stringa visualizzata su Blynk
מקסימום מחרוזת; // stringa visualizzata su Blynk
מינו מחרוזת; // stringa visualizzata su Blynk
char auth = "a °°°°°°°°°°°°°°°° pH d"; // אסימון בלינק
char ssid = "T °°°°°°°°°°°°° pH 9"; //וויי - פיי
char pass = "O °°°°°°°°°°°°°° R"; // psw
#define DHTPIN 2 // pin sensore DHT
#define DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);
טיימר SimpleTimer; //שָׁעוֹן עֶצֶר
WidgetRTC rtc; // orologio di sistema Blynk
WidgetLED led1 (V15); // לד Blynk sul pin V15
BLYNK_CONNECTED () {
rtc.begin (); // avvio RTC
}
BLYNK_WRITE (V0) // שגרה לאיפוס טעימות של da Blynk
{
int attiva = param.asInt ();
if (attiva == 1) {
tmax = -100;
tmin = 100;
umax = 0;
אומן = 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");
עיכוב (200);
Blynk.virtualWrite (V0, LOW);
}
}
void sendSensor () // normale procedura di lettura
{
String currentTime = String (hour ()) + ":" + minute ();
String currentDate = String (day ()) + "/" + month ();
float h = dht.readHumidity ();
float t = dht.readTemperature ();
אם (isnan (h) || isnan (t)) {
Serial.println ("קריאה נכשלה מחיישן DHT!");
led1.on ();
לַחֲזוֹר;
}
אחר {
led1.off ();
}
אם (t> tmax) {
tmax = t;
maxt = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
אם (t <tmin) {
tmin = t;
mint = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
אם (h> umax) {
umax = h;
maxu = String (h) + "% (" + currentTime + "-" + currentDate + ")";
}
אם (h <umin) {
אומן = ח;
minu = מחרוזת (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 () // procedura for registrazioni dati media
{
lettura [nume_Letture] = dht.readTemperature ();
אם (isnan (lettura [nume_Letture])) {
led1.on ();
לַחֲזוֹר;
}
// הפרוצדורה התקשורתית
אם (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; // חסה של Identification Primo Passaggio Dopo 48 (24ore)
}
אם (cc == 1) {
conteggio = 48; // DOPO le prime 24ore מחלקים סמפר לכל 24ore (48mezer)
}
אַחֵר{
// מדיה 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);
}
הגדרת חלל ()
{
Serial.begin (115200);
Blynk.begin (auth, ssid, pass);
dht.begin ();
timer.setInterval (10000, sendSensor); // lettura temperatura umidità ogni 5 דקות
timer.setInterval (1800000, calcolo_media); // lettura e media ogni 30min
}
לולאת חלל ()
{
Blynk.run ();
timer.run ();
adesso ארוך = מיליס ();
val = digitalRead (vibr_pin);
vb = vb+val;
אם (adesso - prima> = Tempmax)
{
vb = 0;
vbinit = vb;
פרימה = אדסו;
}