Spisu treści:

Birra_Monitor: 3 kroki
Birra_Monitor: 3 kroki

Wideo: Birra_Monitor: 3 kroki

Wideo: Birra_Monitor: 3 kroki
Wideo: Мне стыдно 3. Шоу постыдных историй. В гостях Бека Easy, Асхат Ибитанов и Биржан Кабылбаев 2024, Listopad
Anonim
Birra_Monitor
Birra_Monitor

Il progetto służyć monitorre la fermentazione della birra fatta in casa tramite un semplice sensore di vibrazione (SW-420 NC). l'aggiunta del sensore di temperatura (DHT22) służy monitorre temperatura e umidità della stanza atta alla fermentazione. Ta aplikacja służy do zarządzania schematami i wizualizacjami w aplikacji Blynk, która pomaga opracować rozwiązania IoT.

Projekt służy do monitorowania procesu fermentacji domowego piwa za pomocą prostego czujnika drgań (SW-420 NC). dodanie czujnika temperatury (DHT22) służy do monitorowania temperatury i wilgotności pomieszczenia odpowiedniego do fermentacji. Dane te są zarządzane przez kartę nodemcu i wizualizowane przez aplikację Blynk wyznaczoną do opracowywania rozwiązań IoT.

Krok 1: Pakowanie

Opakowania
Opakowania
Opakowania
Opakowania

Scheda e sensori sono alloggiate in una semplice scatola di derivazione.

Płytka i czujniki są umieszczone w prostej puszce połączeniowej.

Krok 2: Czujnik w pracy

Czujnik w pracy
Czujnik w pracy
Czujnik w pracy
Czujnik w pracy

quello che succede quando il sensore è "montato" sul gorgogliatore che ad ogni espulsione di CO2 il sensore registrerà delle vibrazioni che verranno visualizzate sull'app Blynk

co się dzieje, gdy czujnik jest „zamontowany” na bełkocie, że za każdym razem, gdy CO2 jest wyrzucany, czujnik rejestruje wibracje, które będą wyświetlane w aplikacji Blynk

Krok 3: Kod

il codice permittere il funzionamento tutto e il seguente che basterà a caricare sulla scheda il software Arduino IDE

kod umożliwiający funkcjonowanie całości jest następujący, który wystarczy do załadowania na kartę oprogramowania Arduino IDE

#dołącz Adafruit_Sensor.h

#dołącz DHT.h

#define BLYNK_PRINT Serial

#dołącz ESP8266WiFi.h;

#include BlynkSimpleEsp8266.h;

#include SimpleTimer.h;

#include WidgetRTC.h;

pływająca lettura[50]; //wymiar nośnika tablicy

int liczba_Letture=0; //progresivo sałata

pływak tot_Letture=0; //somma sałata

pływak media_Letture=0; //wykład medialny

int conteggio=0; //variabile di conteggio primario

//inizio dichiarazioni variabili per media continua

int i=0;

intcc=0;

int togli=0;

//drobne dichiarazioni variabili per media continua

wewn wart; //zmienna rejestracja vibrazione

int vibr_pin=5; //Piedino x Sensore di Vibrazione D1

int vb=0; //Inicjalizo vb a 0

int vbr=0; //Inicjalizo vb a 0

int vbinit=0; //Inicjalizo vbinit a 0

prima długa bez znaku=0; //utile na swap min/max

długi Tempmax=660000; //utile na swap min/max

pływak tmax=-100; //impostazione impossibile per la temperatura massima

pływak tmin=100; //impostazione impossibile per il temperatura minima

pływak umax=0; //impostazione impossibile per umidità massima

pływak umin=100; //impostazione impossibile per minima

Maks. ciąg; //stringa wizualizacja na Blynk

mięta sznurkowa; //stringa wizualizacja na Blynk

Maks. ciąg; //stringa wizualizacja na Blynk

Ciąg minus; //stringa wizualizacja na Blynk

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

char ssid = „T°°°°°°°°°°°°°9”; //wifi

znak = „O°°°°°°°°°°°°R”; //psw

#define DHTPIN 2 //pin czujnik DHT

#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

Zegar SimpleTimer; //regulator czasowy

WidgetRTC RTC; //orologia systemu Blynk

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

BLYNK_CONNECTED () {

rtc.początek(); //avvio RTC

}

BLYNK_WRITE(V0) //rutynę na resetowanie przez Blynk

{

int attiva = param.asInt();

jeśli (attiva==1){

tmax=-100;

tmin=100;

umaks=0;

mmin=100;

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

mennica= "------------";

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

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

media_Letture=0;

tot_Letture=0;

liczba_nauczanie = 0;

conteggio = 0;

cc=0;

Serial.println(conteggio);

Blynk.virtualWrite(V8, media_Letture);

Blynk.virtualWrite(V10, maxt);

Blynk.virtualWrite(V11, mięta);

Blynk.virtualWrite(V12, maxu);

Blynk.virtualWrite(V13, min);

Blynk.virtualWrite(V1, conteggio);

Serial.println("Resetuj");

opóźnienie(200);

Blynk.virtualWrite(V0, LOW);

}

}

void sendSensor() //normalna procedura czytania

{

String currentTime = String(godzina()) + ":" + minuta();

Ciąg bieżącaData = Ciąg(dzień()) + "/" + miesiąc();

float h = dht.odczytWilgotność();

float t = dht.odczytTemperatura();

jeśli (isnan(h) || isnan(t)) {

Serial.println("Nie udało się odczytać z czujnika DHT!");

led1.on();

powrót;

}

w przeciwnym razie {

led1.off();

}

jeśli (t > tmax) {

tmax=t;

maxt= String(t) + "°C (" + aktualnyCzas + "-" +bieżącaData+ ")";

}

jeśli (t < tmin) {

tmin=t;

mint= String(t) + "°C (" + aktualnyCzas + "-" +bieżącaData+ ")";

}

jeśli (h > umax) {

umax=h;

maxu= String(h) + "% (" + aktualnyCzas + "-" +bieżącaData+ ")";

}

jeśli (h < min) {

umin=h;

minu= String(h) + "% (" + aktualnyCzas + "-" +bieżącaData+ ")";

}

Blynk.virtualWrite(V5, h);

Blynk.virtualWrite(V6, t);

Blynk.virtualWrite(V7, vb);

Blynk.virtualWrite(V10, maxt);

Blynk.virtualWrite(V11, mięta);

Blynk.virtualWrite(V12, maxu);

Blynk.virtualWrite(V13, min);

}

void calcolo_media() //procedura rejestracji mediów danych

{

lettura[liczba_napisu] = dht.odczytTemperatura();

if (isnan(lettura[numer_Letture])) {

led1.on();

powrót;

}

//procedura media circolare

if (numer_Letture>=48){

togli=numer_Letture-48;

tot_Letture -=(lettura[togli]);

tot_Letture +=(lettura[numer_Letture]);

liczba_Wykład=0; //setta a zero e riparte tutto

cc=1; //identifica primo passaggio dopo 48 sałata (24ore)

}

jeśli (cc==1) {

conteggio=48; //DOPO le prime 24ore podzielić semper na 24ore (48mezzore)

}

w przeciwnym razie{

//media prima dello scadere delle 24ore

tot_Letture +=(lettura[numer_Letture]);

conteggio=conteggio+1;

}

media_Letture=tot_Letture/conteggio;

liczba_naucza=liczba_naucza+1;

Blynk.virtualWrite(V8, media_Letture);

Blynk.virtualWrite(V1, conteggio);

}

pusta konfiguracja()

{

Serial.początek(115200);

Blynk.begin(auth, ssid, pass);

dht.początek();

timer.setInterval(10000, sendSensor); //lettura temperatura umidità ogni 5 min

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

}

pusta pętla()

{

Blynk.run();

timer.uruchom();

długie adesso=millis();

val = digitalRead (wibr_pin);

vb=vb+val;

if (adesso - prima >= Tempmax)

{

vb=0;

vbinit=vb;

prima=adesso;

}

Zalecana: