Video: Birra_Monitor: 3 bước
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Il progetto phục vụ monitorare la fermentazione della birra fatta trong casa tramite un semplice sensore di vibrazione (SW-420 NC). l'aggiunta del sensore di temperatura (DHT22) phục vụ monitorare temperatura e umidità della stanza atta alla fermentazione. Câu hỏi dati vengono gestiti da una lịch trình gật gù e visualizzati tramite ứng dụng Blynk deputata allo sviluppo di soluzioni IoT.
Dự án được sử dụng để theo dõi quá trình lên men bia tự chế bằng cảm biến rung đơn giản (SW-420 NC). việc bổ sung cảm biến nhiệt độ (DHT22) phục vụ cho việc theo dõi nhiệt độ và độ ẩm của phòng thích hợp cho quá trình lên men. Dữ liệu này được quản lý bằng thẻ gật gù và được hiển thị trực quan thông qua ứng dụng Blynk được chỉ định để phát triển các giải pháp IoT.
Bước 1: Đóng gói
Scheda e sensori sono alloggiate trong una semplice scola di dẫn xuất.
Bo mạch và cảm biến được đặt trong một hộp nối đơn giản.
Bước 2: Cảm biến tại nơi làm việc
quello che succede quando il sensore è "montato" sul gorgogliatore che ad ogni espulsione di CO2 il sensore registerrerà delle vibrazioni che verranno visualizzate sull'app Blynk
điều gì sẽ xảy ra khi cảm biến được "gắn" trên bình bọt khí mà mỗi khi CO2 thoát ra, cảm biến sẽ ghi lại các rung động sẽ hiển thị trên ứng dụng Blynk
Bước 3: Mã
il codice per permettere il funzionamento del tutto è il seguente che basterà caricare sulla Scheda tramide il Phần mềm Arduino IDE
mã để cho phép toàn bộ hoạt động như sau sẽ đủ để tải vào thẻ phần mềm Arduino IDE
#include Adafruit_Sensor.h
#include DHT.h
#define BLYNK_PRINT Sê-ri
#include ESP8266WiFi.h;
#include BlynkSimpleEsp8266.h;
#include SimpleTimer.h;
#include WidgetRTC.h;
float lettura [50]; // phương tiện Arrayper kích thước
int number_Letture = 0; // processivo letture
float tot_Letture = 0; // somma letture
float media_Letture = 0; // chữ ghi phương tiện
int Conteggio = 0; // variabile di Conteggio primario
// inizio dichiarazioni variabili per media Continua
int i = 0;
int cc = 0;
int togli = 0;
// dichiarazioni variabili tốt trên mỗi phương tiện liên tục
int val; // variabile registerrazione 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
unsigned long prima = 0; // vô ích mỗi lần hoán đổi tối thiểu / tối đa
dài Tempmax = 660000; // vô ích mỗi lần hoán đổi tối thiểu / tối đa
float tmax = -100; // impostazione impossibile per la temperatura massima
float tmin = 100; // impostazione impossibile per il temperatura minima
float umax = 0; // impostazione impossibile per umidità massima
float umin = 100; // impostazione impossibile per umidità minima
Chuỗi maxt; // stringa visualizzata su Blynk
Bạc hà dây; // stringa visualizzata su Blynk
Chuỗi maxu; // stringa visualizzata su Blynk
Chuỗi minu; // stringa visualizzata su Blynk
char auth = a °osystem ° C ° C …
char ssid = "T ° ° C ° C ° C ° C ° C 9"; //wifi
char vượt qua = "O ° ° ° CỘNG HÒA RỘNG RỒI"; // psw
#define DHTPIN 2 // pin sensore DHT
#define DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);
Bộ đếm thời gian SimpleTimer; // bộ đếm thời gian
WidgetRTC rtc; // orologio di sistema Blynk
WidgetLED led1 (V15); // Led Blynk sul chân V15
BLYNK_CONNECTED () {
rtc.begin (); // avvio RTC
}
BLYNK_WRITE (V0) // thiết lập lại quy trình mỗi ngày một ngon miệng trên da Blynk
{
int attiva = param.asInt ();
nếu (attiva == 1) {
tmax = -100;
tmin = 100;
umax = 0;
umin = 100;
maxt = "------------";
bạc hà = "------------";
maxu = "------------";
minu = "------------";
media_Letture = 0;
tot_Letture = 0;
number_Letture = 0;
Conteggio = 0;
cc = 0;
Serial.println (Conteggio);
Blynk.virtualWrite (V8, media_Letture);
Blynk.virtualWrite (V10, maxt);
Blynk.virtualWrite (V11, bạc hà);
Blynk.virtualWrite (V12, maxu);
Blynk.virtualWrite (V13, minu);
Blynk.virtualWrite (V1, Conteggio);
Serial.println ("Resetta");
chậm trễ (200);
Blynk.virtualWrite (V0, LOW);
}
}
void sendSensor () // normale procedureura di lettura
{
String currentTime = String (giờ ()) + ":" + phút ();
String currentDate = String (day ()) + "/" + month ();
float h = dht.readHumidity ();
float t = dht.readTempe Heat ();
if (isnan (h) || isnan (t)) {
Serial.println ("Không thể đọc từ cảm biến DHT!");
led1.on ();
trở lại;
}
khác {
led1.off ();
}
nếu (t> tmax) {
tmax = t;
maxt = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
nếu (t <tmin) {
tmin = t;
bạc hà = String (t) + "° C (" + currentTime + "-" + currentDate + ")";
}
nếu (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, bạc hà);
Blynk.virtualWrite (V12, maxu);
Blynk.virtualWrite (V13, minu);
}
void calcolo_media () // procedureura per registerrazioni dati media
{
lettura [number_Letture] = dht.readTempeosystem ();
if (isnan (lettura [num_Letture])) {
led1.on ();
trở lại;
}
// thủ tục media circleolare
if (number_Letture> = 48) {
togli = number_Letture-48;
tot_Letture - = (lettura [togli]);
tot_Letture + = (lettura [số_Letture]);
number_Letture = 0; // setta a zero e riparte tutto
cc = 1; // Idifica primo passaggio dopo 48 letture (24ore)
}
if (cc == 1) {
Conteggio = 48; // DOPO le prime 24ore chia semper cho 24ore (48mezzore)
}
khác{
// media prima dello scadere delle 24ore
tot_Letture + = (lettura [số_Letture]);
Conteggio = Conteggio + 1;
}
media_Letture = tot_Letture / Conteggio;
number_Letture = number_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 phút
timer.setInterval (1800000, calcolo_media); // lettura e media ogni 30 phút
}
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;
}