Índice:
Vídeo: Birra_Monitor: 3 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
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
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
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:
Como fazer uma antena dupla BiQuade 4G LTE Etapas fáceis: 3 etapas
Como Fazer Antena Dupla BiQuade 4G LTE Etapas fáceis: Na maioria das vezes que enfrentei, não tenho uma boa intensidade de sinal para meus trabalhos do dia-a-dia. Então. Procuro e tento diferentes tipos de antena, mas não funciona. Depois de perder tempo, encontrei uma antena que espero fazer e testar, porque não é um princípio de construção
Design de jogo no Flick em 5 etapas: 5 etapas
Design de jogos no Flick em 5 etapas: o Flick é uma maneira realmente simples de fazer um jogo, especialmente algo como um quebra-cabeça, romance visual ou jogo de aventura
Detecção de rosto no Raspberry Pi 4B em 3 etapas: 3 etapas
Detecção de rosto no Raspberry Pi 4B em 3 etapas: Neste Instructable, vamos realizar a detecção de rosto no Raspberry Pi 4 com Shunya O / S usando a Biblioteca Shunyaface. Shunyaface é uma biblioteca de reconhecimento / detecção de rosto. O projeto visa alcançar a detecção mais rápida e velocidade de reconhecimento com
Espelho de cortesia DIY em etapas fáceis (usando luzes de tira LED): 4 etapas
Espelho de toucador DIY em etapas fáceis (usando tiras de LED): Neste post, fiz um espelho de toucador DIY com a ajuda de tiras de LED. É muito legal e você deve experimentá-los também
Arduino Halloween Edition - Tela pop-out de zumbis (etapas com imagens): 6 etapas
Arduino Halloween Edition - Tela pop-out de zumbis (etapas com imagens): Quer assustar seus amigos e fazer barulho no Halloween? Ou apenas quer fazer uma boa pegadinha? Esta tela pop-out de zumbis pode fazer isso! Neste Instructable, vou ensiná-lo a criar facilmente zumbis usando o Arduino. O HC-SR0