Sadržaj:

Birra_Monitor: 3 koraka
Birra_Monitor: 3 koraka

Video: Birra_Monitor: 3 koraka

Video: Birra_Monitor: 3 koraka
Video: По Законам Военного Времени 3. 1-4 Серии. Военно-историческая драма. StarMedia 2024, Studeni
Anonim
Birra_Monitor
Birra_Monitor

Progetto će poslužiti monitorrare la fermentazione della birra fatta u casa tramite un semplice sensore di vibrazione (SW-420 NC). L'aggiunta del sensore di temperature (DHT22) služi za praćenje temperature i 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.

Projekt se koristi za praćenje fermentacije domaćeg piva pomoću jednostavnog senzora vibracija (SW-420 NC). dodatak temperaturnog osjetnika (DHT22) služi za praćenje temperature i vlažnosti prostorije pogodne za fermentaciju. Ovim podacima upravlja nodemcu kartica i vizualizira ih aplikacija Blynk imenovana za razvoj IoT rješenja.

Korak 1: Pakiranje

Ambalaža
Ambalaža
Ambalaža
Ambalaža

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

Ploča i senzori smješteni su u jednostavnu razvodnu kutiju.

Korak 2: Senzor na poslu

Senzor na poslu
Senzor na poslu
Senzor na poslu
Senzor na poslu

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

što se događa kada je senzor "montiran" na mjehurić da svaki put kada se CO2 izbaci senzor će zabilježiti vibracije koje će biti prikazane u aplikaciji Blynk

Korak 3: Kodirajte

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

kôd koji omogućuje funkcioniranje cjeline je sljedeći koji će biti dovoljan za učitavanje na karticu Arduino IDE softvera

#uključite Adafruit_Sensor.h

#uključuje DHT.h

#define BLYNK_PRINT Serijski

#include ESP8266WiFi.h;

#include BlynkSimpleEsp8266.h;

#include SimpleTimer.h;

#include WidgetRTC.h;

float lettura [50]; // dimenzija Arrayper media

int nume_Letture = 0; // progressivo letture

float tot_Letture = 0; // somma letture

float media_Letture = 0; // medijska književnost

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

bez potpisa duga prima = 0; // korisno po zamjeni min/maks

dugi Tempmax = 660000; // korisno po zamjeni min/maks

plovak tmax = -100; // impostazione impossibile per la temperature massima

plovak tmin = 100; // impostazione impossibile per il temperature minima

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

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

Niz znakova; // stringa visualizzata su Blynk

Nana žica; // stringa visualizzata su Blynk

String maxu; // stringa visualizzata su Blynk

Gudački 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 senzor DHT

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

Mjerač vremena SimpleTimer; // mjerač vremena

WidgetRTC rtc; // orologio di sistema Blynk

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

BLYNK_CONNECTED () {

rtc.begin (); // avvio RTC

}

BLYNK_WRITE (V0) // rutina po tasto reset da Blynk

{

int attiva = param.asInt ();

ako (attiva == 1) {

tmax = -100;

tmin = 100;

umax = 0;

umin = 100;

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

kovnica = "------------";

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

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

media_Letture = 0;

tot_Letture = 0;

nume_Letture = 0;

conteggio = 0;

cc = 0;

Serijski.println (conteggio);

Blynk.virtualWrite (V8, media_Letture);

Blynk.virtualWrite (V10, maxt);

Blynk.virtualWrite (V11, metvica);

Blynk.virtualWrite (V12, najviše);

Blynk.virtualWrite (V13, minuta);

Blynk.virtualWrite (V1, kontekst);

Serial.println ("Resetta");

kašnjenje (200);

Blynk.virtualWrite (V0, LOW);

}

}

void sendSensor () // normalan postupak di lettura

{

Niz currentTime = String (sat ()) + ":" + minuta ();

Niz currentDate = String (dan ()) + "/" + mjesec ();

float h = dht.readHumidity ();

float t = dht.readTemperature ();

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

Serial.println ("Očitavanje nije uspjelo s DHT senzora!");

led1.on ();

povratak;

}

drugo {

led1.off ();

}

ako (t> tmax) {

tmax = t;

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

}

ako (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, metvica);

Blynk.virtualWrite (V12, najviše);

Blynk.virtualWrite (V13, minuta);

}

void calcolo_media () // procedure per registrazioni dati media

{

lettura [nume_Letture] = dht.readTemperature ();

if (isnan (lettura [nume_Letture])) {

led1.on ();

povratak;

}

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

}

ako (cc == 1) {

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

}

drugo{

// medijska 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, kontekst);

}

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

long adesso = millis ();

val = digitalRead (vibr_pin);

vb = vb+val;

if (adesso - prima> = Tempmax)

{

vb = 0;

vbinit = vb;

prima = adesso;

}

Preporučeni: