Daftar Isi:

Birra_Monitor: 3 Langkah
Birra_Monitor: 3 Langkah

Video: Birra_Monitor: 3 Langkah

Video: Birra_Monitor: 3 Langkah
Video: ВСЯ НОЧЬ С ПОЛТЕРГЕЙСТОМ В ЖИЛОМ ДОМЕ, я заснял жуткую активность. 2024, Juli
Anonim
Birra_Monitor
Birra_Monitor

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

Kemasan
Kemasan
Kemasan
Kemasan

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

Sensor di Tempat Kerja
Sensor di Tempat Kerja
Sensor di Tempat Kerja
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;

}

Direkomendasikan: