Índice:

Birra_Monitor: 3 etapas
Birra_Monitor: 3 etapas

Vídeo: Birra_Monitor: 3 etapas

Vídeo: Birra_Monitor: 3 etapas
Vídeo: Мне стыдно 3. Шоу постыдных историй. В гостях Бека Easy, Асхат Ибитанов и Биржан Кабылбаев 2024, Julho
Anonim
Birra_Monitor
Birra_Monitor

Il progetto serve um monitorare la fermentazione della birra fatta in casa tramite un semplice sensore di vibrazione (SW-420 NC). l'aggiunta del sensore di temperatura (DHT22) serve um monitor de temperatura e umidità della stanza atta alla fermentazione. Questi dati vengono gestiti for un agenda nodemcu and visualizzati tramite Blynk app deputado allo sviluppo di soluzioni IoT.

O projeto é utilizado para monitorar a fermentação da cerveja artesanal por meio de um sensor de vibração simples (SW-420 NC). a adição do sensor de temperatura (DHT22) serve para monitorar a temperatura e a umidade do ambiente adequado para a fermentação. Esses dados são gerenciados por um cartão nodemcu e visualizados por meio do aplicativo Blynk designado para desenvolver soluções de IoT.

Etapa 1: embalagem

Embalagem
Embalagem
Embalagem
Embalagem

Scheda e sensores são alogados em uma simples dispersão de derivação.

A placa e os sensores são alojados em uma caixa de junção simples.

Etapa 2: Sensor em funcionamento

Sensor no Trabalho
Sensor no Trabalho
Sensor no Trabalho
Sensor no Trabalho

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

o que acontece quando o sensor é "montado" no borbulhador que toda vez que o CO2 for expelido o sensor registrará as vibrações que serão exibidas no aplicativo Blynk

Etapa 3: Código

O código para permitir o funcionamento do todo é o seguinte que basterà caricare e agendar tramide o software Arduino IDE

o código para permitir o funcionamento do todo é o seguinte que será suficiente para carregar na placa o software Arduino IDE

#include Adafruit_Sensor.h

#include DHT.h

#define BLYNK_PRINT Serial

#include ESP8266WiFi.h;

#include BlynkSimpleEsp8266.h;

#include 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; // media letture

int conteggio = 0; // variabile di conteggio primario

// inizio dichiarazioni variabili per media continua

int i = 0;

int cc = 0;

int togli = 0;

// variabili dichiarazioni fino por contínuo de mídia

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

prima longo sem sinal = 0; // útil por troca mín. / máx.

longo Tempmax = 660000; // útil por troca mín. / máx.

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

float tmin = 100; // impostazione impossibile per il temperatura mínima

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

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

String maxt; // stringa visualizzata su Blynk

String mint; // 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"; //Wi-fi

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

# define DHTPIN 2 // pin sensore DHT

# define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

Temporizador SimpleTimer; //cronômetro

WidgetRTC rtc; // orologio di sistema Blynk

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

BLYNK_CONNECTED () {

rtc.begin (); // avvio RTC

}

BLYNK_WRITE (V0) // rotina por tasto redefinir da 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");

atraso (200);

Blynk.virtualWrite (V0, LOW);

}

}

void sendSensor () // normale procedura di lettura

{

String currentTime = String (hora ()) + ":" + minuto ();

String currentDate = String (dia ()) + "/" + mês ();

float h = dht.readHumidity ();

float t = dht.readTemperature ();

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

Serial.println ("Falha ao ler do sensor DHT!");

led1.on ();

Retorna;

}

outro {

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

Retorna;

}

// 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 divide sempre por 24ore (48mezzore)

}

outro{

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

adesso longo = millis ();

val = digitalRead (vibr_pin);

vb = vb + val;

if (adesso - prima> = Tempmax)

{

vb = 0;

vbinit = vb;

prima = adesso;

}

Recomendado: