สารบัญ:

Birra_Monitor: 3 ขั้นตอน
Birra_Monitor: 3 ขั้นตอน

วีดีโอ: Birra_Monitor: 3 ขั้นตอน

วีดีโอ: Birra_Monitor: 3 ขั้นตอน
วีดีโอ: แนะนำ AOC 29-inch Q2963PM 2024, พฤศจิกายน
Anonim
Birra_Monitor
Birra_Monitor

Il progetto ให้บริการจอภาพ la fermentazione della birra fatta ใน casa tramite un semplice sensore di vibrazione (SW-420 NC) l'aggiunta del sensore di temperatura (DHT22) ทำหน้าที่ตรวจสอบอุณหภูมิ e umidità della stanza atta alla fermentazione คำถาม ข้อมูล vengono gestiti da una scheda nodemcu และ visualizzati tramite แอป Blynk deputata allo sviluppo di soluzioni IoT

โปรเจ็กต์นี้ใช้เพื่อติดตามการหมักเบียร์โฮมเมดโดยใช้เซ็นเซอร์ตรวจจับการสั่นสะเทือนอย่างง่าย (SW-420 NC) การเพิ่มเซ็นเซอร์อุณหภูมิ (DHT22) ทำหน้าที่ตรวจสอบอุณหภูมิและความชื้นของห้องที่เหมาะสมกับการหมัก ข้อมูลนี้จัดการโดยการ์ด nodemcu และแสดงภาพผ่านแอป Blynk ที่ได้รับการแต่งตั้งให้พัฒนาโซลูชัน IoT

ขั้นตอนที่ 1: บรรจุภัณฑ์

บรรจุภัณฑ์
บรรจุภัณฑ์
บรรจุภัณฑ์
บรรจุภัณฑ์

Scheda e sensori sono alloggiate ใน una semplice scatola di derivazione

บอร์ดและเซ็นเซอร์อยู่ในกล่องรวมสัญญาณที่เรียบง่าย

ขั้นตอนที่ 2: เซ็นเซอร์ในที่ทำงาน

เซ็นเซอร์ในที่ทำงาน
เซ็นเซอร์ในที่ทำงาน
เซ็นเซอร์ในที่ทำงาน
เซ็นเซอร์ในที่ทำงาน

quello che succede quando il sensore è "montato" sul gorgogliatore che ad ogni espulsione di CO2 เซ็นเซอร์ การลงทะเบียน delle vibrazioni che verranno visualizzate sull'app Blynk

จะเกิดอะไรขึ้นเมื่อเซ็นเซอร์ถูก "ติดตั้ง" บน bubbler ซึ่งทุกครั้งที่ CO2 ถูกขับออก เซ็นเซอร์จะบันทึกการสั่นที่จะแสดงบนแอป Blynk

ขั้นตอนที่ 3: รหัส

il codice ต่อ permettere il funzionamento del tutto è il seguente che basterà caricare sulla scheda traamide il software Arduino IDE

รหัสเพื่อให้การทำงานของทั้งหมดมีดังต่อไปนี้ที่จะเพียงพอที่จะโหลดบนการ์ดซอฟต์แวร์ Arduino IDE

#รวม Adafruit_Sensor.h

#รวม DHT.h

#define BLYNK_PRINT ซีเรียล

#รวม ESP8266WiFi.h;

#รวม BlynkSimpleEsp8266.h;

#include SimpleTimer.h;

#include WidgetRTC.h;

ผักสลัดลอยน้ำ[50]; //dimensione Arrayper media

int nume_Letture=0; //จดหมายก้าวหน้า

ลอย tot_Letture=0; //ซอมม่าจดหมาย

float media_Letture=0; //จดหมายสื่อ

int conteggio=0; //ตัวแปร di conteggio primario

//inizio dichiarazioni Variabili ต่อสื่อที่ต่อเนื่อง

int i=0;

int ซีซี=0;

int togli=0;

//ปรับ dichiarazioni ตัวแปรต่อสื่อต่อเนื่อง

ค่า int; //ตัวแปร registrazione vibrazione

int vibr_pin=5; //Piedino x Sensore ดิ Vibrazione D1

int vb=0; //Inizializzo vb a 0

int vbr=0; //Inizializzo vb a 0

int vbinit=0; //Inizializzo vbinit a 0

พรีมาแบบยาวที่ไม่ได้ลงนาม=0; //utile ต่อการแลกเปลี่ยน min/max

อุณหภูมิสูงสุดยาว = 660000; //utile ต่อการแลกเปลี่ยน ขั้นต่ำ/สูงสุด

ลอย tmax=-100; //impostazione impossibile per la temperatura massima

ลอย tmin=100; //impostazione เป็นไปไม่ได้ต่อ il temperatura minima

ทุ่น umax=0; //impostazione impossibile ต่อ umidità massima

ลอย umin=100; //impostazione impossibile ต่อ umidità minima

สตริงสูงสุด; //stringa visualizzata su Blynk

สะระแหน่สตริง; //stringa visualizzata su Blynk

สตริงแมกซ์ซู; //stringa visualizzata su Blynk

สตริงลบ; //stringa visualizzata su Blynk

char auth = "a°°°°°°°°°°°°°°d"; // โทเค็น Blynk

ถ่าน ssid = "T°°°°°°°°°°°°° 9"; //wifi

ถ่านผ่าน = "O°°°°°°°°°°°° R"; //psw

#define DHTPIN 2 // ปักหมุดเซ็นเซอร์ DHT

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

SimpleTimer จับเวลา; //จับเวลา

WidgetRTC rtc; //orologio di sistema Blynk

WidgetLED led1(V15); //Led Blynk โซลพิน V15

BLYNK_CONNECTED () {

rtc.begin(); //avvio RTC

}

BLYNK_WRITE(V0) // กิจวัตรต่อการรีเซ็ต tasto da Blynk

{

int อัตติวา = param.asInt();

ถ้า (อัตติวา==1){

tmax=-100;

tmin=100;

umax=0;

อูมิน=100;

maxt= "-----------";

มิ้นต์= "-----------";

maxu= "-----------";

minu= "-----------";

media_Letture=0;

tot_Letture=0;

nume_Letture = 0;

คอนเทจจิโอ = 0;

ซีซี=0;

Serial.println (คอนเทจจิโอ);

Blynk.virtualWrite (V8, media_Letture);

Blynk.virtualWrite (V10, สูงสุด);

Blynk.virtualWrite (V11 มิ้นต์);

Blynk.virtualWrite (V12, สูงสุด);

Blynk.virtualWrite (V13, ลบ);

Blynk.virtualWrite (V1, conteggio);

Serial.println("รีเซตตา");

ล่าช้า(200);

Blynk.virtualWrite (V0, ต่ำ);

}

}

ถือเป็นโมฆะ sendSensor () // กระบวนการปกติของ lettura

{

สตริง currentTime = สตริง (ชั่วโมง ()) + ":" + นาที ();

สตริง currentDate = สตริง (วัน ()) + "/" + เดือน ();

ลอย h = dht.readHumidity();

float t = dht.readTemperature();

ถ้า (isnan (h) || isnan (t)) {

Serial.println("ไม่สามารถอ่านจากเซ็นเซอร์ DHT!");

led1.on();

กลับ;

}

อื่น {

led1.off();

}

ถ้า (t > tmax) {

tmax=t;

maxt= สตริง(t) + "°C (" + currentTime + "-" +currentDate+ ")";

}

ถ้า (t <tmin) {

tmin=t;

มิ้นต์= สตริง(t) + "°C (" + currentTime + "-" +currentDate+ ")";

}

ถ้า (h > umax) {

umax=h;

maxu= สตริง(h) + "% (" + currentTime + "-" +currentDate+ ")";

}

ถ้า (h < umin) {

อูมิน=h;

minu= String(h) + "% (" + currentTime + "-" +currentDate+ ")";

}

Blynk.virtualWrite(V5, ชั่วโมง);

Blynk.virtualWrite(V6, เสื้อ);

Blynk.virtualWrite (V7, vb);

Blynk.virtualWrite (V10, สูงสุด);

Blynk.virtualWrite (V11, มิ้นต์);

Blynk.virtualWrite (V12, สูงสุด);

Blynk.virtualWrite (V13, ลบ);

}

ถือเป็นโมฆะ calcolo_media () // ขั้นตอนต่อการลงทะเบียนข้อมูลสื่อ

{

lettura[nume_Letture] = dht.readTemperature();

if (isnan (ผักกาดหอม [nume_Letture])) {

led1.on();

กลับ;

}

//procedura สื่อ circolare

ถ้า (nume_Letture>=48){

togli=nume_Letture-48;

tot_Letture -=(ผักกาดหอม[togli]);

tot_Letture +=(ผักกาดหอม[nume_Letture]);

nume_Letture=0; //setta a zero e riparte tutto

ซีซี=1; //identifica พรีโม passaggio dopo 48 letture (24ore)

}

ถ้า (cc==1) {

คอนเทจจิโอ=48; // DOPO le prime 24ore แบ่ง semper ต่อ 24ore (48mezzore)

}

อื่น{

//media prima dello scadere delle 24ore

tot_Letture +=(ผักกาดหอม[nume_Letture]);

conteggio=conteggio+1;

}

media_Letture=tot_Letture/conteggio;

nume_Letture=nume_Letture+1;

Blynk.virtualWrite (V8, media_Letture);

Blynk.virtualWrite (V1, conteggio);

}

การตั้งค่าเป็นโมฆะ ()

{

Serial.begin(115200);

Blynk.begin(รับรองความถูกต้อง, ssid, ผ่าน);

dht.begin();

timer.setInterval (10000, sendSensor); //lettura temperatura umidità ogni 5 นาที

timer.setInterval (1800000, calcolo_media); //letter e media ogni 30 นาที

}

วงเป็นโมฆะ ()

{

Blynk.run();

timer.run();

adesso ยาว = millis();

val = digitalRead (vibr_pin);

vb=vb+val;

ถ้า (adesso - พรีมา >= Tempmax)

{

vb=0;

vbinit=vb;

พรีมา=อเดสโซ;

}

แนะนำ: