Table des matières:

Birra_Monitor : 3 étapes
Birra_Monitor : 3 étapes

Vidéo: Birra_Monitor : 3 étapes

Vidéo: Birra_Monitor : 3 étapes
Vidéo: ЮЛЯ ФИНЕСС: Как я вышла с 8 этажа! Групповое изнасилование под мефедроном, психиатрическая больница 2024, Décembre
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) sert un monitorare temperature e umidità della sanza atta alla fermentazione. Questi dati vengono gestiti da una scheda nodemcu e visualizzati tramite Blynk app deputata allo sviluppo di soluzioni IoT.

Le projet est utilisé pour surveiller la fermentation de la bière maison à l'aide d'un simple capteur de vibration (SW-420 NC). l'ajout du capteur de température (DHT22) sert à surveiller la température et l'humidité de la pièce propice à la fermentation. Ces données sont gérées par une carte nodemcu et visualisées via l'application Blynk désignée pour développer des solutions IoT.

Étape 1: Emballage

Emballage
Emballage
Emballage
Emballage

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

La carte et les capteurs sont logés dans une simple boîte de jonction.

Étape 2: Capteur au travail

Capteur au travail
Capteur au travail
Capteur au travail
Capteur au travail

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

que se passe-t-il lorsque le capteur est "monté" sur le barboteur qu'à chaque fois que le CO2 est expulsé le capteur enregistrera des vibrations qui seront affichées sur l'application Blynk

Étape 3: Coder

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

le code pour permettre le fonctionnement de l'ensemble est le suivant qui suffira pour charger sur la carte le logiciel Arduino IDE

#include Adafruit_Sensor.h

#include DHT.h

#define BLYNK_PRINT Série

#include ESP8266WiFi.h;

#include BlynkSimpleEsp8266.h;

#include SimpleTimer.h;

#include WidgetRTC.h;

flotteur lettur[50]; //dimensione Arrayper media

int nume_Letture=0; //lettre progressiste

float tot_Letture=0; //somme leçon

float media_Letture=0; //lettre médiatique

int conteggio=0; //variabile di conteggio primario

//inizio dichiarazioni variabili per media continua

entier i=0;

int cc=0;

int togli=0;

//fine dichiarazioni variabili per media continua

valeur int; //variabile registrazione vibrazione

int vibr_pin=5; //Piedino x Sensore di Vibrazione D1

entier vb=0; //Inizializzo vb a 0

entier vbr=0; //Inizializzo vb a 0

int vbinit=0; //Inizializzo vbinit a 0

non signé long prima=0; //utile par échange min/max

long Tempmax=660000; //utile par échange min/max

flottant tmax=-100; //impostazione impossible per la temperatura massima

flottant tmin=100; //impostazione impossible per il temperatura minima

flotteur umax=0; //impostazione impossible per umidità massima

flottant umin=100; //impostazione impossible per umidità minima

Chaîne maxt; //chaîne de visualisation sur Blynk

Menthe à cordes; //chaîne de visualisation sur Blynk

Chaîne maxu; //chaîne de visualisation sur Blynk

Chaîne moins; //chaîne de visualisation sur Blynk

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

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

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

#define DHTPIN 2 //pin sensore DHT

#définir DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

minuteur SimpleTimer; //minuteur

WidgetRTC rtc; //orologio di sistema Blynk

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

BLYNK_CONNECTÉ () {

rtc.begin(); //avvio RTC

}

BLYNK_WRITE(V0) //routine par goût réinitialiser da Blynk

{

int attiva = param.asInt();

si (attiva==1){

tmax=-100;

tmin=100;

umax=0;

um = 100;

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

menthe= "------------";

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

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

media_Letture=0;

tot_Letture=0;

nombre_Letture = 0;

contege = 0;

cc=0;

Serial.println(conteggio);

Blynk.virtualWrite(V8, media_Letture);

Blynk.virtualWrite(V10, maxt);

Blynk.virtualWrite(V11, menthe);

Blynk.virtualWrite(V12, maxu);

Blynk.virtualWrite(V13, moins);

Blynk.virtualWrite(V1, conteggio);

Serial.println("Reset");

retard (200);

Blynk.virtualWrite(V0, LOW);

}

}

void sendSensor() //procédure normale de lettrage

{

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

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

float h = dht.readHumidity();

float t = dht.readTemperature();

si (isnan(h) || isnan(t)) {

Serial.println("Impossible de lire à partir du capteur DHT !");

led1.on();

revenir;

}

autre {

led1.off();

}

si (t > tmax) {

tmax=t;

maxt= Chaîne(t) + "°C (" + CurrentTime + "-" +currentDate+ ")";

}

si (t < tmin) {

tmin=t;

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

}

si (h > umax) {

umax=h;

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

}

si (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, menthe);

Blynk.virtualWrite(V12, maxu);

Blynk.virtualWrite(V13, moins);

}

void calcolo_media() //procedura per registrazioni dati media

{

lettura[nume_Letture] = dht.readTemperature();

if (isnan(lettura[nume_Letture])) {

led1.on();

revenir;

}

//procedura media circolare

if (nume_Letture>=48){

togli=nume_Letture-48;

tot_Letture -=(lettre[togli]);

tot_Letture +=(lettura[nume_Letture]);

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

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

}

si (cc==1) {

contege=48; //DOPO le premier 24ore divise semper par 24ore (48mezzore)

}

autre{

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

}

boucle vide()

{

Blynk.run();

timer.run();

long adesso=millis();

val = digitalRead (vibr_pin);

vb=vb+val;

si (adesso - prima >= Tempmax)

{

vb=0;

vbinit=vb;

prima=adesso;

}

Conseillé: