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, Decembar
Anonim
Birra_Monitor
Birra_Monitor

Progetto će poslužiti monitor za fermentaciju della birra fatta u kući tramite i semplice senzora za vibraciju (SW-420 NC). Senzori temperature (DHT22) služe za nadgledanje temperature i izmjenu stanze nakon fermentacije. Da biste dali sve potrebne informacije o tome da čvor nodemcu i vizualizira tramite Blynk aplikaciju zamjenu za sviluppo za rješenja IoT.

Projekt se koristi za praćenje fermentacije domaćeg piva pomoću jednostavnog senzora vibracija (SW-420 NC). Dodavanje senzora temperature (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: Pakovanje

Pakovanje
Pakovanje
Pakovanje
Pakovanje

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 registrator senzora delle vibrazioni che verranno vizualizirajte sull'app Blynk

šta se dešava kada je senzor "montiran" na mjehurić za mjerenje da će svaki put kada se CO2 izbaci senzor zabilježiti vibracije koje će se prikazati u aplikaciji Blynk

Korak 3: Kodirajte

kodovi po permetteru funkcioniraju kao tutorijal i mogu se koristiti samo kao glavni softver za Arduino IDE

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

#include Adafruit_Sensor.h

#include 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 literatura

int conteggio = 0; // varijabile 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; // varijabile 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

String maxt; // stringa visualizzata su Blynk

Nana; // 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 senzor DHT

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

SimpleTimer timer; // mjerač vremena

WidgetRTC rtc; // orologio di system Blynk

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

BLYNK_CONNECTED () {

rtc.begin (); // avvio RTC

}

BLYNK_WRITE (V0) // rutina za resetovanje tasto za 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, nana);

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 promjene

{

String currentTime = String (sat ()) + ":" + minut ();

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

float h = dht.readHumidity ();

float t = dht.readTemperature ();

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

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

led1.on ();

return;

}

else {

led1.off ();

}

if (t> tmax) {

tmax = t;

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

}

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

Blynk.virtualWrite (V12, najviše);

Blynk.virtualWrite (V13, minuta);

}

void calcolo_media () // procedure za registraciju medija

{

lettura [nume_Letture] = dht.readTemperature ();

if (isnan (lettura [nume_Letture])) {

led1.on ();

return;

}

// 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 podijeli sempor na 24ore (48mezzore)

}

else {

// 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); // dozvoljena temperatura umidit ogni 5 min

timer.setInterval (1800000, calcolo_media); // lettura i mediji ognji 30 min

}

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čuje se: