Video: Birra_Monitor: 3 Langkah
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Il progetto melayani monitorare la fermentazione della birra fatta di casa tramite un semplice sensore di vibrazione (SW-420 NC). l'aggiunta del sensore di temperaturea (DHT22) melayani pemantau suhu dan umidità della stanza atta alla fermentazione. Questi dati vengono gestiti da una scheda nodemcu e visualizzati tramite Blynk app deputata allo sviluppo di soluzioni IoT.
Proyek ini digunakan untuk memantau fermentasi bir buatan sendiri menggunakan sensor getaran sederhana (SW-420 NC). penambahan sensor suhu (DHT22) berfungsi untuk memantau suhu dan kelembaban ruangan yang cocok untuk fermentasi. Data ini dikelola oleh kartu nodemcu dan divisualisasikan melalui aplikasi Blynk yang ditunjuk untuk mengembangkan solusi IoT.
Langkah 1: Pengemasan
Skema dan sensori sono alloggiate in una semplice scatola di derivazione.
Papan dan sensor ditempatkan di kotak persimpangan sederhana.
Langkah 2: Sensor di Tempat Kerja
quello che succede quando il sensore "montato" sul gorgogliatore che ad ogni espulsione di CO2 il sensor registrerà delle vibrazioni che verranno visualizzate sull'app Blynk
apa yang terjadi ketika sensor "dipasang" pada bubbler yang setiap kali CO2 dikeluarkan sensor akan merekam getaran yang akan ditampilkan di aplikasi Blynk
Langkah 3: Kode
il codice per permettere il funzionamento del tutto il seguente che basterà caricare sulla scheda tramide il perangkat lunak Arduino IDE
kode untuk memungkinkan berfungsinya keseluruhan adalah yang berikut ini yang akan cukup untuk memuat pada kartu perangkat lunak Arduino IDE
#sertakan Adafruit_Sensor.h
#sertakan DHT.h
#tentukan Serial BLYNK_PRINT
#sertakan ESP8266WiFi.h;
#sertakan BlynkSimpleEsp8266.h;
#sertakan SimpleTimer.h;
#include WidgetRTC.h;
mengapung lettura[50]; //dimension Arrayper media
int angka_Surat=0; //huruf progressivo
float tot_Letture=0; // somma surat
float media_Letture=0; //huruf media
int conteggio=0; //variabel di conteggio primario
//inizio dichiarazioni variabili per media continua
int i=0;
int cc=0;
int togli=0;
//variasi dichiarazioni halus per media continua
int nilai; //pendaftaran variabel vibrazione
int vibr_pin=5; //Piedino x Sensore di Vibrazione D1
intvb=0; //Inizializzo vb a 0
int vbr=0; //Inizializzo vb a 0
int vbinit=0; //Inizializzo vbinit a 0
prima panjang tanpa tanda=0; //util per swap min/maks
Tempmax panjang = 660000; //util per swap min/maks
float tmax=-100; //impostazione mustahil untuk setiap suhu massa
mengambang tmin=100; //impostazione mustahil untuk setiap suhu minimum
float umax=0; //impostazione impossibile per umidità massima
mengapung umin=100; //impostazione impossibile per umidità minima
string maks; //stringa visualizzata su Blynk
String mint; //stringa visualizzata su Blynk
string maksimum; //stringa visualizzata su Blynk
string dikurangi; //stringa visualizzata su Blynk
char auth = "a°°°°°°°°°°°°°d";//token Blynk
char ssid = "T°°°°°°°°°°°°°9"; //Wifi
char pass = "O°°°°°°°°°°°°R"; //psw
#define DHTPIN 2 //pin sensor DHT
#definisikan DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
Pengatur waktu sederhana; //pengatur waktu
WidgetRTC rtc; //orologi di sistem Blynk
WidgetLED led1 (V15); //Led Blynk sul pin V15
BLYNK_CONNECTED () {
rtc.mulai(); //avvio RTC
}
BLYNK_WRITE(V0) //rutin per selera untuk reset da Blynk
{
int attiva = param.asInt();
jika (attiva==1){
tmaks=-100;
menit=100;
umax=0;
umin=100;
maxt= "------------";
mint= "------------";
maxu= "-------------";
minu= "-------------";
media_Letture=0;
tot_Surat=0;
angka_Surat = 0;
contegio = 0;
cc=0;
Serial.println(conteggio);
Blynk.virtualWrite(V8, media_Letture);
Blynk.virtualWrite(V10, maks);
Blynk.virtualWrite(V11, mint);
Blynk.virtualWrite(V12, maxu);
Blynk.virtualWrite(V13, minu);
Blynk.virtualWrite(V1, conteggio);
Serial.println("Reset");
penundaan (200);
Blynk.virtualWrite(V0, RENDAH);
}
}
void sendSensor() //prosedur normal di lettura
{
String currentTime = String(jam()) + ":" + menit();
String tanggal saat ini = String(hari()) + "/" + bulan();
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Gagal membaca dari sensor DHT!");
led1.on();
kembali;
}
lain {
led1.off();
}
jika (t > tmaks) {
tmaks=t;
maxt= String(t) + "°C (" + currentTime + "-" +currentDate+ ")";
}
jika (t < tmnt) {
tmin=t;
mint= String(t) + "°C (" + currentTime + "-" +currentDate+ ")";
}
jika (h > umax) {
umax=j;
maxu= String(h) + "% (" + currentTime + "-" +currentDate+ ")";
}
jika (h < um) {
umin=j;
minu= String(h) + "% (" + currentTime + "-" +currentDate+ ")";
}
Blynk.virtualWrite(V5, h);
Blynk.virtualWrite(V6, t);
Blynk.virtualWrite(V7, vb);
Blynk.virtualWrite(V10, maks);
Blynk.virtualWrite(V11, mint);
Blynk.virtualWrite(V12, maxu);
Blynk.virtualWrite(V13, minu);
}
void calcolo_media() //prosedura per registrazioni dati media
{
lettura[angka_Surat] = dht.readTemperature();
if (isnan(lettura[angka_Surat])) {
led1.on();
kembali;
}
//prosedura media lingkaran
if (angka_Surat>=48){
togli=angka_Surat-48;
tot_Letture -=(lettura[togli]);
tot_Surat +=(lettura[angka_Surat]);
angka_Surat=0; //setta a zero e riparte tutto
cc=1; //identifica primo passaggio dopo 48 surat (24ore)
}
jika (cc==1) {
conteggio=48; //DOPO le prime 24ore bagi semper per 24ore (48mezzore)
}
lain{
//media prima dello scadere delle 24ore
tot_Surat +=(lettura[angka_Surat]);
conteggio=conteggio+1;
}
media_Letture=tot_Letture/conteggio;
angka_Surat=angka_Surat+1;
Blynk.virtualWrite(V8, media_Letture);
Blynk.virtualWrite(V1, conteggio);
}
batalkan pengaturan()
{
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
dht.mulai();
timer.setInterval(10000, sendSensor); //lettura temperaturea umidità ogni 5 menit
timer.setInterval(1800000, calcolo_media); //lettura dan media ogni 30 menit
}
lingkaran kosong()
{
Blynk.run();
timer.run();
panjang adesso=milis();
val = digitalRead (vibr_pin);
vb=vb+val;
if (adesso - prima >= Tempmax)
{
vb=0;
vbinit=vb;
prima=adesso;
}