Tabla de contenido:

Birra_Monitor: 3 pasos
Birra_Monitor: 3 pasos

Video: Birra_Monitor: 3 pasos

Video: Birra_Monitor: 3 pasos
Video: 22 безумных вещей с Aliexpress, от которых ты офигеешь Лучшие вещи с Алиэкспресс + КОНКУРС 2024, Noviembre
Anonim
Birra_Monitor
Birra_Monitor

Il progetto sirve un monitorare la fermentazione della birra fatta en casa tramite un semplice sensore di vibrazione (SW-420 NC). l'aggiunta del sensore di temperatura (DHT22) sirve un monitorare temperatura e umidità della stanza atta alla fermentazione. Questi dati vengono gestiti da una scheda nodemcu e visualizzati tramite Blynk app deputata allo sviluppo di soluzioni IoT.

El proyecto se utiliza para monitorear la fermentación de cerveza casera usando un sensor de vibración simple (SW-420 NC). la adición del sensor de temperatura (DHT22) sirve para controlar la temperatura y la humedad de la habitación apta para la fermentación. Estos datos se gestionan mediante una tarjeta nodemcu y se visualizan a través de la aplicación Blynk designada para desarrollar soluciones de IoT.

Paso 1: empaque

embalaje
embalaje
embalaje
embalaje

Scheda e sensori sono alloggiate in una semplice scatola di derivazione.

La placa y los sensores están alojados en una simple caja de conexiones.

Paso 2: Sensor en funcionamiento

Sensor en el trabajo
Sensor en el trabajo
Sensor en el trabajo
Sensor en el trabajo

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

¿Qué sucede cuando el sensor está "montado" en el burbujeador? Cada vez que se expulsa el CO2, el sensor registrará las vibraciones que se mostrarán en la aplicación Blynk.

Paso 3: Código

il codice per permettere il funzionamento del tutto è il seguente che basterà caricare sulla scheda tramide il software Arduino IDE

el código para permitir el funcionamiento del conjunto es el siguiente que será suficiente para cargar en la tarjeta el software Arduino IDE

#include Adafruit_Sensor.h

#include DHT.h

#define BLYNK_PRINT Serie

#include ESP8266WiFi.h;

#include BlynkSimpleEsp8266.h;

#include SimpleTimer.h;

#include WidgetRTC.h;

flotador lettura [50]; // dimensione Arrayper media

int nume_Letture = 0; // letra progresiva

flotador tot_Letture = 0; // somma letture

float media_Letture = 0; // letra de los medios

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 por 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

unsigned long prima = 0; // utile por intercambio min / max

Long Tempmax = 660000; // utile por intercambio min / max

flotador tmax = -100; // impostazione impossibile per la temperatura massima

flotador tmin = 100; // impostazione impossibile per il temperatura minima

flotar umax = 0; // impostazione impossibile per umidità massima

flotador umin = 100; // impostazione impossibile per umidità minima

String maxt; // stringa visualizzata su Blynk

Menta de cuerda; // stringa visualizzata su Blynk

String maxu; // stringa visualizzata su Blynk

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

Temporizador SimpleTimer; //Temporizador

WidgetRTC rtc; // orologio di sistema Blynk

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

BLYNK_CONNECTED () {

rtc.begin (); // avvio RTC

}

BLYNK_WRITE (V0) // rutina por tasto reset da 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, perfecto);

Blynk.virtualWrite (V12, maxu);

Blynk.virtualWrite (V13, minu);

Blynk.virtualWrite (V1, conteggio);

Serial.println ("Resetta");

retraso (200);

Blynk.virtualWrite (V0, BAJO);

}

}

void sendSensor () // procedimiento normal de lettura

{

String currentTime = String (hora ()) + ":" + minuto ();

String currentDate = String (día ()) + "/" + mes ();

flotar h = dht.readHumidity ();

flotar t = dht.readTemperature ();

si (isnan (h) || isnan (t)) {

Serial.println ("¡Error al leer del sensor DHT!");

led1.on ();

regreso;

}

demás {

led1.off ();

}

si (t> tmax) {

tmax = t;

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

}

si (t <tmin) {

tmin = t;

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

}

si (h> umax) {

umax = h;

maxu = String (h) + "% (" + currentTime + "-" + currentDate + ")";

}

si (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, perfecto);

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

regreso;

}

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

}

si (cc == 1) {

conteggio = 48; // DOPO le prime 24ore divide semper per 24ore (48mezzore)

}

demá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ón vacía ()

{

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 vacío ()

{

Blynk.run ();

timer.run ();

largo adesso = millis ();

val = digitalRead (vibr_pin);

vb = vb + val;

si (adesso - prima> = Tempmax)

{

vb = 0;

vbinit = vb;

prima = adesso;

}

Recomendado: