תוכן עניינים:

Birra_Monitor: 3 שלבים
Birra_Monitor: 3 שלבים

וִידֵאוֹ: Birra_Monitor: 3 שלבים

וִידֵאוֹ: Birra_Monitor: 3 שלבים
וִידֵאוֹ: Идеальный отток желчи. Решение за 1 минуту. 2024, נוֹבֶמבֶּר
Anonim
Birra_Monitor
Birra_Monitor

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;

פרימה = אדסו;

}

מוּמלָץ: