Inhaltsverzeichnis:

Birra_Monitor - Gunook
Birra_Monitor - Gunook

Video: Birra_Monitor - Gunook

Video: Birra_Monitor - Gunook
Video: А почему так ДОРАХА??? 2024, November
Anonim
Birra_Monitor
Birra_Monitor

Il progetto serv a monitorare la fermentazione della birra fatta in casa tramite un semplice sensore di vibrazione (SW-420 NC). l'aggiunta del sensore di temperatura (DHT22) dienen einem Temperaturmonitor und einer Umidità della Stanza at alla fermentazione. Suchen Sie nach Daten, die Sie auf eine scheda nodemcu und visualizzati tramite Blynk app deputata allo sviluppo di IoT IoT übertragen.

Das Projekt dient der Überwachung der Gärung von hausgemachtem Bier mit einem einfachen Vibrationssensor (SW-420 NC). der Zusatz des Temperatursensors (DHT22) dient der Überwachung der Temperatur und Luftfeuchtigkeit des für die Gärung geeigneten Raumes. Diese Daten werden von einer Nodemcu-Karte verwaltet und über die Blynk-App visualisiert, die mit der Entwicklung von IoT-Lösungen beauftragt ist.

Schritt 1: Verpackung

Verpackung
Verpackung
Verpackung
Verpackung

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

Platine und Sensoren sind in einer einfachen Anschlussdose untergebracht.

Schritt 2: Sensor bei der Arbeit

Sensor bei der Arbeit
Sensor bei der Arbeit
Sensor bei der Arbeit
Sensor bei der Arbeit

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

Was passiert, wenn der Sensor am Bubbler "montiert" ist, dass der Sensor jedes Mal, wenn das CO2 ausgestoßen wird, Vibrationen aufzeichnet, die in der Blynk-App angezeigt werden

Schritt 3: Code

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

Der Code, um das Funktionieren des Ganzen zu ermöglichen, ist der folgende, der ausreicht, um die Arduino IDE-Software auf die Karte zu laden

#include Adafruit_Sensor.h

#include DHT.h

#define BLYNK_PRINT-Seriennummer

#include ESP8266WiFi.h;

#include BlynkSimpleEsp8266.h;

#include SimpleTimer.h;

#include WidgetRTC.h;

Schwebelettura [50]; //Dimension Arrayper Medien

int nume_Letture=0; //progressiver Salat

float tot_Letture=0; //Somma-Laut

float media_Letture=0; //Medienbrief

int conteggio=0; //variabile di conteggio primario

//inizio dichiarazioni variabili pro Medienfortsetzung

int i=0;

intcc=0;

int togli=0;

// feine dichiarazioni variabili pro Medienkontinuität

int-Wert; //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

vorzeichenlos lang prima=0; // pro Swap min/max nutzen

lang Tempmax=660000; // pro Swap min/max nutzen

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

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

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

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

Zeichenfolge maxt; //stringa visualizzata su Blynk

Schnur-Minze; //stringa visualizzata su Blynk

Zeichenfolge maxu; //stringa visualizzata su Blynk

Zeichenfolge-Minus; //stringa visualizzata su Blynk

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

char ssid = "T°°°°°°°°°°°°°9"; //W-lan

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

#define DHTPIN 2 // Stiftsensor DHT

#define DHTTYP DHT22

DHT dht(DHTPIN, DHTTYPE);

SimpleTimer-Timer; //Timer

WidgetRTC rtc; //orologio di sistema Blynk

WidgetLED-LED1 (V15); // Led Blynk Sul-Pin V15

BLYNK_CONNECTED () {

rtc.begin(); //avvio RTC

}

BLYNK_WRITE(V0) //Routine per tasto Reset da Blynk

{

int attiva = param.asInt();

wenn (attiva==1){

tmax = –100;

tmin=100;

umax=0;

umin=100;

maxt= "------------";

Minze= "------------";

maxu= "------------";

minu= "------------";

media_Letture=0;

tot_Letture=0;

nume_Letture = 0;

conteggio = 0;

ccm = 0;

Serial.println (Conteggio);

Blynk.virtualWrite(V8, media_Letture);

Blynk.virtualWrite(V10, maxt);

Blynk.virtualWrite (V11, neuwertig);

Blynk.virtualWrite(V12, maxu);

Blynk.virtualWrite (V13, Minu);

Blynk.virtualWrite(V1, conteggio);

Serial.println ("Resetta");

Verzögerung (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();

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

Serial.println ("Fehler beim Lesen vom DHT-Sensor!");

led1.on();

Rückkehr;

}

anders {

led1.off();

}

wenn (t > tmax) {

tmax=t;

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

}

wenn (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) + "% (" + currentTime + "-" +currentDate+ ")";

}

Blynk.virtualWrite(V5, h);

Blynk.virtualWrite(V6, t);

Blynk.virtualWrite(V7, vb);

Blynk.virtualWrite(V10, maxt);

Blynk.virtualWrite (V11, neuwertig);

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

Rückkehr;

}

//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 salat (24ore)

}

wenn (cc==1) {

conteggio=48; //DOPO le prime 24ore dividiere semper pro 24ore (48mezzore)

}

anders{

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

}

Void-Setup ()

{

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

}

Leere Schleife ()

{

Blynk.run();

Timer.run();

langes adesso=millis();

val = digitalRead (vibr_pin);

vb=vb+val;

if (adesso - prima >= Tempmax)

{

vb=0;

vbinit=vb;

prima=adesso;

}