Taula de continguts:

Birra_Monitor: 3 passos
Birra_Monitor: 3 passos

Vídeo: Birra_Monitor: 3 passos

Vídeo: Birra_Monitor: 3 passos
Vídeo: Yo Tomo Licor 2024, Juliol
Anonim
Birra_Monitor
Birra_Monitor

El projecte serve a monitorare la fermentazione della birra fatta in casa tramite un simple sensore di vibrazione (SW-420 NC). l'aggiunta del sensor di temperatura (DHT22) serve a monitorare temperature and umidità della stanza atta alla fermentazione. Aquests dati es gestiten des d'una targeta nodemcu i visualitzats mitjançant Blynk app deputata allo sviluppo di soluzioni IoT.

El projecte s’utilitza per controlar la fermentació de cervesa casolana mitjançant un senzill sensor de vibracions (SW-420 NC). l’addició del sensor de temperatura (DHT22) serveix per controlar la temperatura i la humitat de l’habitació adequada per a la fermentació. Aquestes dades es gestionen mitjançant una targeta nodemcu i es visualitzen a través de l’aplicació Blynk designada per desenvolupar solucions IoT.

Pas 1: Embalatge

Embalatge
Embalatge
Embalatge
Embalatge

Scheda e sensori sono alloggiate in a simple scatola di derivazione.

La placa i els sensors s’allotgen en una caixa de connexions senzilla.

Pas 2: sensor a la feina

Sensor a la feina
Sensor a la feina
Sensor a la feina
Sensor a la feina

quello che succede quando il sensore è "montato" sul gorgogliatore che ad ogni espulsione di CO2 il sensore registrerà delle vibrazioni que verranno visualized sull'app Blynk

què passa quan el sensor està "muntat" a la bombolla que cada vegada que s'expulsa el CO2 el sensor registra les vibracions que es mostraran a l'aplicació Blynk

Pas 3: Codi

el codi per permetre el funcionament del tot i el següent que es carregarà a la targeta tramide il software Arduino IDE

el codi per permetre el funcionament del conjunt és el següent que serà suficient per carregar a la targeta el programari Arduino IDE

#include Adafruit_Sensor.h

#include DHT.h

#defineix BLYNK_PRINT de sèrie

#include ESP8266WiFi.h;

#include BlynkSimpleEsp8266.h;

#include SimpleTimer.h;

#include WidgetRTC.h;

float lettura [50]; // dimensione Arrayper media

int nume_Letture = 0; // progressive letture

float tot_Letture = 0; // somma letture

float media_Letture = 0; // lletura mediàtica

int conteggio = 0; // variabile di conteggio primario

// inizio dichiarazioni variabili per 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

prima sense signar llarg = 0; // útil per permuta mín. / màx

llarg Tempmax = 660000; // útil per permuta mín. / màx

float tmax = -100; // impostazione impossible per la temperatura màxima

float tmin = 100; // impostazione impossibile per la temperatura mínima

float umax = 0; // impostazione impossibile per umidità màxima

float umin = 100; // impostazione impossibile per umidità mínima

Maxt de cadena; // stringa visualizzata su Blynk

Menta de corda; // stringa visualizzata su Blynk

Cadena maxu; // stringa visualizzata su Blynk

Cadena minu; // stringa visualizzata su Blynk

char auth = "a °°°°°°°°°°°°° d"; // token Blynk

char ssid = "T °°°°°°°°°°°°°° 9"; // wifi

char pass = "O °°°°°°°°°°°° R"; // psw

#define DHTPIN 2 // pin sensore DHT

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

Temporitzador SimpleTimer; // temporitzador

WidgetRTC rtc; // orologio di sistema Blynk

WidgetLED led1 (V15); // Led Blynk sul pin V15

BLYNK_CONNECTED () {

rtc.begin (); // avvio RTC

}

BLYNK_WRITE (V0) // rutina per tast restablert per Blynk

{

int attiva = param.asInt ();

if (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, menta);

Blynk.virtualWrite (V12, maxu);

Blynk.virtualWrite (V13, minu);

Blynk.virtualWrite (V1, conteggio);

Serial.println ("Resetta");

retard (200);

Blynk.virtualWrite (V0, BAIX);

}

}

void sendSensor () // norma procedura di lettura

{

Cadena currentTime = Cadena (hora ()) + ":" + minut ();

String currentDate = String (day ()) + "/" + month ();

flotador h = dht.readHumidity ();

flotador t = dht.readTemperature ();

if (isnan (h) || isnan (t)) {

Serial.println ("No s'ha pogut llegir del sensor DHT!");

led1.on ();

tornar;

}

més {

led1.off ();

}

if (t> tmax) {

tmax = t;

maxt = String (t) + "° C (" + CurrentTime + "-" + currentDate + ")";

}

si (t <tmin) {

tmin = t;

mint = String (t) + "° C (" + CurrentTime + "-" + currentDate + ")";

}

if (h> umax) {

umax = h;

maxu = String (h) + "% (" + CurrentTime + "-" + CurrentDate + ")";

}

if (h <umin) {

umin = h;

minu = String (h) + "% (" + TimeTime + "-" + CurrentDate + ")";

}

Blynk.virtualWrite (V5, h);

Blynk.virtualWrite (V6, t);

Blynk.virtualWrite (V7, vb);

Blynk.virtualWrite (V10, maxt);

Blynk.virtualWrite (V11, menta);

Blynk.virtualWrite (V12, maxu);

Blynk.virtualWrite (V13, minu);

}

void calcolo_media () // procedura per registrazioni dati media

{

lettura [nume_Letture] = dht.readTemperature ();

if (isnan (lettura [nume_Letture])) {

led1.on ();

tornar;

}

// procedura media circolare

if (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)

}

if (cc == 1) {

conteggio = 48; // DOPO le prime 24ore divideix sempre per 24ore (48mezzore)

}

més {

// 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);

}

configuració nul·la ()

{

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

}

bucle buit ()

{

Blynk.run ();

temporitzador.run ();

llarg adesso = millis ();

val = digitalRead (vibr_pin);

vb = vb + val;

if (adesso - prima> = Tempmax)

{

vb = 0;

vbinit = vb;

prima = adesso;

}

Recomanat: