İçindekiler:

Birra_Monitor: 3 Adım
Birra_Monitor: 3 Adım

Video: Birra_Monitor: 3 Adım

Video: Birra_Monitor: 3 Adım
Video: 2999 TL’ Ye Akıllı TV Mi Olur 2024, Temmuz
Anonim
Birra_Monitor
Birra_Monitor

Il progetto, casa tramite un semplice di vibrazione (SW-420 NC) içinde bir monitöre la fermentazione della birra fatta hizmet vermektedir. l'aggiunta del sensore di temperatura (DHT22), bir izleme sıcaklığı ve umidità della stanza atta alla fermentazione hizmet eder. Blynk uygulaması, IoT'nin tüm işlevlerinin yanı sıra, IoT'yi de içerir.

Proje, basit bir titreşim sensörü (SW-420 NC) kullanarak ev yapımı biranın fermantasyonunu izlemek için kullanılıyor. sıcaklık sensörünün (DHT22) eklenmesi, fermantasyona uygun odanın sıcaklığını ve nemini izlemeye yarar. Bu veriler bir nodemcu kartı tarafından yönetilir ve IoT çözümleri geliştirmek için atanan Blynk uygulaması aracılığıyla görselleştirilir.

Adım 1: Paketleme

Ambalajlama
Ambalajlama
Ambalajlama
Ambalajlama

Scheda e sensori sono alloggiate in semplice scatola di derivazione.

Kart ve sensörler basit bir bağlantı kutusuna yerleştirilmiştir.

2. Adım: Sensör İş Başında

Sensör İş Başında
Sensör İş Başında
Sensör İş Başında
Sensör İş Başında

quello che başarılı qudo il sensore è "montato" sul gorgogliatore che ad ogni spulsione di CO2 il sensore kayıt delle vibrazioni che verranno görselleştirme sull'app Blynk

sensör, CO2'nin her dışarı atılmasında sensör, Blynk uygulamasında görüntülenecek olan titreşimleri kaydedeceği fıskiyeye "takıldığında" ne olur?

3. Adım: Kodlayın

permettere başına il kodlar il funzionamento del tutto è il seguente che basterà caricare sulla scheda tramide il yazılımı Arduino IDE

Arduino IDE yazılımını karta yüklemeye yetecek olan bütünün çalışmasını sağlayacak kod aşağıdaki gibidir.

#include Adafruit_Sensor.h

#include DHT.h

#define BLYNK_PRINT Seri

#include ESP8266WiFi.h;

#include BlynkSimpleEsp8266.h;

#include SimpleTimer.h;

#include WidgetRTC.h;

yüzen lettura[50]; // boyut Dizici ortamı

int nume_Letture=0; //ilerleyen harf

float tot_Letture=0; // somma harfi

kayan media_Letture=0; //medya yazısı

int conteggio=0; //değişken di conteggio primario

//inizio dichiarazioni değişken medya sürekliliği başına

int i=0;

int cc=0;

int togli=0;

//medya sürekliliği başına ince dichiarazioni variabili

int değeri; //değişken kayıt 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; //İnizializzo vbinit a 0

işaretsiz uzun prima=0; //takas başına kullanım min/maks

uzun Tempmax=660000; //takas başına kullanım min/maks

kayan nokta tmaks=-100; // impossibile per la temperatura massima

kayan nokta tmin=100; // sıcaklık minimumu başına imkansız imppostazione

kayan umax=0; //impostazione impossibile per umidità massima

yüzer umin=100; // umidità minimum başına imppostazione impossibile

dize maxt; //stringa visualizzata ve Blynk

Dize nane; //stringa visualizzata ve Blynk

Dize maxu; //stringa visualizzata ve Blynk

Dize eksi; //stringa visualizzata ve Blynk

char auth = "a°°°°°°°°°°°°d";//token Blynk

char ssid = "T°°°°°°°°°°°°9"; //Wifi

karakter geçişi = "O°°°°°°°°°°°°R"; //psw

#define DHTPIN 2 //pin sensore DHT

#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

SimpleTimer zamanlayıcı; //zamanlayıcı

WidgetRTC rtc; //orologio di sistema Blynk

WidgetLED led1(V15); //Led Blynk sul pimi V15

BLYNK_CONNECTED () {

rtc.begin(); //avvio RTC

}

BLYNK_WRITE(V0) // Blynk'te her tatto sıfırlama için rutin

{

int attiva = param.asInt();

eğer (attiva==1){

tmaks=-100;

tmin=100;

umaks=0;

umin=100;

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

nane= "------------";

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

eksi= "------------";

media_Letture=0;

tot_Letture=0;

nume_Letture = 0;

contej = 0;

cc=0;

Serial.println(conteggio);

Blynk.virtualWrite(V8, media_Letture);

Blynk.virtualWrite(V10, maxt);

Blynk.virtualWrite(V11, nane);

Blynk.virtualWrite(V12, maxu);

Blynk.virtualWrite(V13, eksi);

Blynk.virtualWrite(V1, conteggio);

Serial.println("Sıfırla");

gecikme(200);

Blynk.virtualWrite(V0, DÜŞÜK);

}

}

void sendSensor() // prosedürün normalleştirilmesi

{

String currentTime = String(saat()) + ":" + dakika();

String currentDate = String(day()) + "/" + ay();

float h = dht.readHumidity();

float t = dht.readTemperature();

if (isnan(h) || isnan(t)) {

Serial.println("DHT sensöründen okunamadı!");

led1.on();

dönüş;

}

Başka {

led1.off();

}

if (t > tmaks) {

tmaks=t;

maxt= String(t) + "°C (" + currentTime + "-" +currentDate+ ")";

}

eğer (t < tmin) {

tmin=t;

mint= String(t) + "°C (" + currentTime + "-" +currentDate+ ")";

}

if (h > umaks) {

umaks=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, nane);

Blynk.virtualWrite(V12, maxu);

Blynk.virtualWrite(V13, eksi);

}

void calcolo_media() // kayıt veri ortamı başına prosedür

{

lettura[nume_Letture] = dht.readTemperature();

if (isnan(lettura[nume_Letture])) {

led1.on();

dönüş;

}

// prosedür medya sirkülasyonu

if (nume_Letture>=48){

togli=nume_Letture-48;

tot_Letture -=(lettura[togli]);

tot_Letture +=(lettura[nume_Letture]);

nume_Letture=0; // bir sıfır ve parçalı tutto ayarla

cc=1; //identifica primo passaggio dopo 48 harf (24ore)

}

if (cc==1) {

conteggio=48; //DOPO le prime 24ore bölü semper başına 24ore (48mezzore)

}

Başka{

//medya 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);

}

geçersiz kurulum()

{

Seri.başla(115200);

Blynk.begin(auth, ssid, pass);

dht.begin();

timer.setInterval(10000, sendSensor); //Hava sıcaklığı umidità ogni 5 dk

timer.setInterval(1800000, calcolo_media); //lettura e media ogni 30dk

}

boşluk döngüsü()

{

Blynk.run();

zamanlayıcı.run();

uzun adesso=millis();

val = digitalRead (vibr_pin);

vb=vb+val;

if (adesso - prima >= Tempmax)

{

vb=0;

vbinit=vb;

prima=adesso;

}

Önerilen: