Sisukord:

Birra_Monitor: 3 sammu
Birra_Monitor: 3 sammu

Video: Birra_Monitor: 3 sammu

Video: Birra_Monitor: 3 sammu
Video: Я С НУЛЯ СОБРАЛ НОВЫЙ ПК С OZON за 35000! БРАТЬ ГОТОВУЮ СБОРКУ ИЛИ СОБРАТЬ САМОМУ? 2024, Juuli
Anonim
Birra_Monitor
Birra_Monitor

Projektiks on monitoraar la fermentazione della birra fatta in casa tramite un semplice sensore di vibrazione (SW-420 NC). L'aggiunta del sensore di temperatura (DHT22) pakub monitoraalset temperatuuri ja umidità della stanza atta alla fermentazione. Questi andmed vengono gestiti da una a scheda nodemcu and visualizzati tramite Blynk app deputata all sviluppo di soluzioni IoT.

Projekti kasutatakse koduse õlle kääritamise jälgimiseks lihtsa vibratsioonianduri (SW-420 NC) abil. temperatuurianduri (DHT22) lisamine aitab jälgida käärimiseks sobiva ruumi temperatuuri ja niiskust. Neid andmeid haldab nodemcu -kaart ja neid visualiseeritakse rakenduse Blynk kaudu, mis on määratud IoT -lahenduste väljatöötamiseks.

Samm: pakendamine

Pakendamine
Pakendamine
Pakendamine
Pakendamine

Skeem ja aistingud jagunevad lihtsaks scatola di derivazione.

Tahvel ja andurid on paigutatud lihtsasse jaotuskarbi.

2. samm: andur tööl

Andur tööl
Andur tööl
Andur tööl
Andur tööl

quello che succede quando il sensore è "montato" sul gorgogliatore che ad ogni espulsione di CO2 il sensore registreerumine delle vibrazioni che kasulikno visualizzate sull'app Blynk

mis juhtub, kui andur on mullijale "paigaldatud", et iga kord, kui CO2 on väljutatud, salvestab andur vibratsiooni, mis kuvatakse rakenduses Blynk

3. samm: kood

ilukoodeks permetteri jaoks

Terviku toimimist võimaldav kood on järgmine, millest piisab Arduino IDE tarkvara kaardile laadimiseks

#sisalda Adafruit_Sensor.h

#kaasa DHT.h

#define BLYNK_PRINT seeria

#include ESP8266WiFi.h;

#include BlynkSimpleEsp8266.h;

#kaasake SimpleTimer.h;

#include WidgetRTC.h;

float lettura [50]; // dimensione Arrayper media

int nume_Letture = 0; // progressive letture

float tot_Letture = 0; // somma letture

float media_Letture = 0; // meedia letture

int conteggio = 0; // variabile di conteggio primario

// inizio dichiarazioni variabili per media continua

int i = 0;

int cc = 0;

int togli = 0;

// trahvi dichiarazioni variabili per media continua

int val; // muutuja registreerimine 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

allkirjata pikk prima = 0; // utile swapi kohta min/max

pikk Tempmax = 660000; // utile swapi kohta min/max

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

ujuk tmin = 100; // impostazione impossibile per il temperatura minimum

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

ujuk umin = 100; // impostazione impossibile per umidità minimum

Stringmaxt; // stringa visualizzata su Blynk

String piparmünt; // stringa visualizzata su Blynk

String maxu; // stringa visualizzata su Blynk

String minu; // stringa visualizzata su Blynk

char auth = a ° ° ° ° ° °; // //; // token Blynk

char ssid = "T ° ° ° ° ° °" "9"; // wifi

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

#define DHTPIN 2 // pin sensore DHT

#defineeri DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

SimpleTimer taimer; // taimer

VidinRTC rtc; // orologio di sistema Blynk

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

BLYNK_CONNECTED () {

rtc.begin (); // avvio RTC

}

BLYNK_WRITE (V0) // rutiin Blynk lähtestamiseks

{

int attiva = param.asInt ();

kui (attiva == 1) {

tmax = -100;

tmin = 100;

umax = 0;

umin = 100;

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

piparmünt = "------------";

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

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

meedia_kiri = 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, piparmünt);

Blynk.virtualWrite (V12, maxu);

Blynk.virtualWrite (V13, minu);

Blynk.virtualWrite (V1, conteggio);

Serial.println ("Resetta");

viivitus (200);

Blynk.virtualWrite (V0, LOW);

}

}

void sendSensor () // normaalne protseduur di lettura

{

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

String currentDate = String (päev ()) + "/" + kuu ();

ujuk h = dht.readHumidity ();

ujuk t = dht.readTemperature ();

kui (isnan (h) || isnan (t)) {

Serial.println ("DHT -andurilt ei õnnestunud lugeda!");

led1.on ();

tagasipöördumine;

}

muu {

led1.off ();

}

kui (t> tmax) {

tmax = t;

maxt = String (t) + "° C (" + praegune aeg + "-" + praegune kuupäev + ")";

}

kui (t <tmin) {

tmin = t;

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

}

kui (h> umax) {

umax = h;

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

}

kui (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, piparmünt);

Blynk.virtualWrite (V12, maxu);

Blynk.virtualWrite (V13, minu);

}

void calcolo_media () // protseduur andmete registreerimiseks

{

lettura [nume_Letture] = dht.readTemperature ();

if (isnan (lettura [nume_Letture])) {

led1.on ();

tagasipöördumine;

}

// protseduuriline meedia ringkäik

if (nume_Letture> = 48) {

togli = nume_Letture-48;

tot_Letture -= (lettura [togli]);

tot_Letture += (lettura [number_Letture]);

nume_Letture = 0; // setta a zero e riparte tutto

cc = 1; // identifika primo passaggio dopo 48 letture (24ore)

}

kui (cc == 1) {

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

}

muu {

// meedia prima dello scadere delle 24ore

tot_Letture += (lettura [number_Letture]);

conteggio = conteggio+1;

}

media_Letture = tot_Letture/conteggio;

numbrite_kiri = numbrite_kiri+1;

Blynk.virtualWrite (V8, media_Letture);

Blynk.virtualWrite (V1, conteggio);

}

tühine seadistus ()

{

Seriaalne algus (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

}

tühine tsükkel ()

{

Blynk.run ();

taimer.jooks ();

pikk adesso = millis ();

val = digitalRead (vibr_pin);

vb = vb+val;

kui (adesso - prima> = Tempmax)

{

vb = 0;

vbinit = vb;

prima = adesso;

}

Soovitan: