Innehållsförteckning:

Birra_Monitor: 3 steg
Birra_Monitor: 3 steg

Video: Birra_Monitor: 3 steg

Video: Birra_Monitor: 3 steg
Video: [FNAFSB/SFM] Freddy Betrays Gregory 2024, November
Anonim
Birra_Monitor
Birra_Monitor

Il progetto serve 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) tjäna en övervakningstemperatur och en omidità della stanza atta alla fermentazione. Frågor om hur du gör en viss tidpunkt för visning och visning av en trådlös Blynk -app som kan användas för IoT -lösningar.

Projektet används för att övervaka jäsning av hemlagat öl med en enkel vibrationssensor (SW-420 NC). tillägget av temperaturgivaren (DHT22) tjänar till att övervaka temperaturen och luftfuktigheten i rummet som är lämpligt för jäsning. Dessa data hanteras av ett nodemcu -kort och visualiseras via Blynk -appen som har utsetts för att utveckla IoT -lösningar.

Steg 1: Förpackning

Förpackning
Förpackning
Förpackning
Förpackning

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

Kort och sensorer finns i en enkel kopplingsdosa.

Steg 2: Sensor på jobbet

Sensor på jobbet
Sensor på jobbet
Sensor på jobbet
Sensor på jobbet

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

vad händer när sensorn är "monterad" på bubblaren att varje gång CO2 släpps ut registrerar sensorn vibrationer som kommer att visas på Blynk -appen

Steg 3: Kod

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

koden för att möjliggöra helhetens funktion är följande som räcker för att ladda kortet Arduino IDE -programvaran

#inkludera Adafruit_Sensor.h

#inkludera DHT.h

#define BLYNK_PRINT Serial

#inkludera ESP8266WiFi.h;

#inkludera BlynkSimpleEsp8266.h;

#inkludera SimpleTimer.h;

#include WidgetRTC.h;

float lettura [50]; // dimensione Arrayper media

int nume_Letture = 0; // progressivo letture

float tot_Letture = 0; // somma letture

float media_Letture = 0; // medielåtning

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

osignerad lång prima = 0; // nytta per byte min/max

lång Tempmax = 660000; // nytta per byte min/max

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

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

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

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

Strängmaxt; // stringa visualizzata su Blynk

Strängmynta; // stringa visualizzata su Blynk

Sträng maxu; // stringa visualizzata su Blynk

Strängminu; // 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);

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) // rutin efter återställning av 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, mint);

Blynk.virtualWrite (V12, maxu);

Blynk.virtualWrite (V13, minu);

Blynk.virtualWrite (V1, conteggio);

Serial.println ("Resetta");

fördröjning (200);

Blynk.virtualWrite (V0, LÅG);

}

}

void sendSensor () // normal procedura di lettura

{

String currentTime = String (hour ()) + ":" + minute ();

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

float h = dht.readHumidity ();

float t = dht.readTemperature ();

om (isnan (h) || isnan (t)) {

Serial.println ("Det gick inte att läsa från DHT -sensorn!");

led1.on ();

lämna tillbaka;

}

annat {

led1.off ();

}

om (t> tmax) {

tmax = t;

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

}

om (t <tmin) {

tmin = t;

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

}

om (h> umax) {

umax = h;

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

}

om (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, mint);

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

lämna tillbaka;

}

// 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; // identifiera primo passaggio dopo 48 letture (24ore)

}

om (cc == 1) {

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

}

annan{

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

}

void loop ()

{

Blynk.run ();

timer.run ();

lång adesso = millis ();

val = digitalRead (vibr_pin);

vb = vb+val;

if (adesso - prima> = Tempmax)

{

vb = 0;

vbinit = vb;

prima = adesso;

}

Rekommenderad: