Nel nostro cottage giardino conserviamo falciatrici a benzina e lattine, grill a gas e alcune lattine con colori e diluenti nitrici.Quando i gas infiammabili o i liquidi finiscono o scoppia anche un incendio, voglio essere avvisato.Poiché il capanno è ancora nell'area del nostro WLAN, ho scelto una D1 Mini (ESP8266) con sensore di temperatura DHT22 e sensore di gas MQ-2.I dati vengono trasmessi usando l'ESP come server web
Necessita di hardware
Numero | Componente |
---|---|
1 | D1 Mini NodeMcu con modulo ESP8266-12F WLAN |
facoltativo | Battery Shield per batterie al litio per D1 Mini |
facoltativo | Litio Batteria 3,7V |
1 | DHT22 AM2302 Sensore di temperatura e umidità |
1 | MQ-2 Gas Sensor Smoke Sensor Air Quality Module |
Mini breadboard, cavo per Jumper |
Per lo schizzo, sono riuscito ad usare pezzi di altri programmi.Il più semplice è chiedere il sensore a gas MQ-2, che è fornito con una tensione di 5V per il riscaldamento interno.Come leader dati, hai la scelta tra un output digitale e un output analogico.Entrambe le opzioni richiedono un divisore di tensione (ad esempio 1 kOhm e 2,2 kOhm), poiché gli input ESP8266 supportano solo 3.3V.Anche se il piccolo microcontrollore ha un solo input analogico, io uso questo.Perché qui puoi impostare il valore limite con un certo valore nello schizzo.In alternativa, è possibile impostare il limite di uscita digitale con un potenziometro integrato.Anche se la condizione ALTA è indicata anche su un LED verde, la taratura è difficile a causa della mancanza di confronti.Per interrogare il perno analogico ci serve solo:
sensorValue = analogico(0);
Il DHT22 (AM2302) è un misuratore combinato di temperatura e umidità della famiglia dei sensori wireless (1-wire).La fornitura di tensione è flessibile tra 3 e 6 V, i dati vengono inviati ad un perno digitale.Una libreria di programma è opportunamente usata per interrogare i valori di misurazione, come spesso accade con il team Adafruit intorno Limor Fried.Quindi dobbiamo riparare l'oggetto, cioè:
//D6-GPIO12
// DHT22(AM2302)
DHT t(DHTPINA, OGGETTO);
Dal momento che usiamo i valori misurati in diverse funzioni, li definiamo come una variabile globale prima voide setup() :
galleggiante t = 0.0;
galleggiante h = 0.0;
int sensorValue = 0;
Programmare il server web su ESP8266 non è una scienza segreta.Ci sono esempi nell'Arduino IDE durante l'installazione delle seguenti librerie di programma.
Tuttavia, lo schizzo può già essere molto esteso se l'output nel browser del PC o smartphone è anche per apparire bene e essere aggiornato automaticamente.Un collega per il nuovo eBook Smart Home Starter Set Ho sviluppato un blocco di codice che non avevo molto da adattare.Il codice HTML può essere trovato nel disegno completo:Scarica)
/*
Questo disegno legge i dati dei sensori e fornisce questi
come HTML-Text su un server TCP nella tua rete locale.
di Mihajlo Manojlovic e Bernd Albrecht per AZ-Delivery*/
//D6-GPIO12
// DHT22(AM2302)
DHT t(DHTPINA, OGGETTO);
to Heavyiron pagina = ...";
to Heavyiron password = ...";
galleggiante t = 0.0;
galleggiante h = 0.0;
int sensorValue = 0;
ESP8266WebServer server(80);
vuoto setComment () {
Serial.Inizio(9600);
t.Inizio();
Connessione a wifi
Serial.Stampa("");
Serial.stampa("Connessione...");
Serial.stampa(pagina);
WiFi.Inizio(pagina, password);
mentre (WiFi.status() != WL CONNEGATO)
{
ritardo(500);
Serial.stampa(".");
}
Serial.Stampa("");
Serial.stampa(Connessione al WiFi...);
Serial.stampa(WiFi.localIP());
Serial.Stampa("");
ritardo(5000);
//start server
server.su("/", negozio a OnConnect);
server.onNotefound(atto a Notfound);
server.Inizio();
Serial.Stampa("Inizio del server HTTP");
//fine
}
vuoto readData() {
ritardo(2000);
h = t.readUmidità();
t = t.riadattamento();
Serial.stampa(F("Temperatura:));
Serial.stampa(t);
Serial.stampa(F("C Umidità:));
Serial.stampa(h);
Serial.Stampa(F(" %"));
sensorValue = analogico(0);
Serial.stampa("Valore del sensore:);
Serial.Stampa(sensorValue);
se(sensorValue > 100) {
Serial.Stampa(Rilevato gas!); }
Serial.Stampa();
}
vuoto Esecuzione() {
server.handleClient();
//
readData();
//
se (WiFi.status() == WL CONNEGATO) //Verificare lo stato di connessione WiFi
{
negozio a OnConnect();
}
e // cerca di connettersi nuovamente a wifi se scollegato
{
Serial.stampa(Riconnettere);
WiFi.Inizio(pagina, password);
Serial.stampa(Connesso!);
ritardo(1000);
}
}
vuoto negozio a OnConnect() {
server.inviare(200, "text/html", SendHTML());
}
vuoto atto a Notfound() {
server.inviare(404, "testo/pianura", Non trovato);
}
Stringa SendHTML() {
Stringa p = "n";
p += "\n";
p += "ESP8266 Web Server n";
p += "n";
//ajax refresh start
p += "n";
//ajax refresh end
p += "n";
p += "n";
p += "n";
p += "AZ-Delivery
n";
p += "Controllo Ambientale
n";
DATI RICEVENTI//ATTUALI
p += "Temperatura:
;
p += (t);
p += "'C'C;
p += "/p>";
p += "Umidità:
;
p += (h);
p += " %";
p += "/p>";
p += "concentrazione di gas:
;
p += (sensorValue);
se(sensorValue > 100) {
p += "gas rilevato!"
; }
//
p += "/div>n";
p += "
n";
p += "n";
ritorno p;
}
Il nostro capanno da giardino è costruito abbastanza robusto e la porta è protetta con una serratura di sicurezza.Per questo ho rinunciato ai rilevatori di movimento o ad altri sensori per prevenire furti.Sarebbe facile regolare il codice per questo.
Nella second a parte vorrei mostrare come posso visualizzare i dati trasmessi non solo nel browser sul PC o smartphone, ma anche con l'aiuto di un Raspberry Pi o un Micro Controller.Questo ha il vantaggio di poter anche collegare un campanello e/o un LED per attivare un allarme.
4 commenti
Andreas Wolter
Norbert Dunker: das zweite Bild ist ein Fritzing Schaltplan und sollte theoretisch direkt nachgebaut werden können.
Norbert Dunker
Mit den Fotos komme ich nicht ganz zurecht gibt es auch eine Schaltung
Danke
Juergen Eggers
Herr Kühnel hat im Gegensatz zu AZ-Delivery und dem Entwickler des Board´s ganz nah aus meiner Heimat das Problem mit der Temperaturkompensation thematisiert und auch Lösungsansätze gezeigt. Warum haben die Schweizer im Gegensatz zu den Wolfsburgern bessere Lösungsansätze. Ich empfehle die Kühnel-sche Lösund auf Seiten AZ zu verfolgen, mit der bisherigen Beispiel Datei ist das AZ-Envy kein Freude-spender, übrigens auch nicht die Tasmota Variante, die zwar MQTT beherrscht aber bei der Temperatur eindeutig “schummelt” Vielen Dank Herr Kühnel, auch für die Ausarbeitung bei den Gassensoren.
Claus Kühnel
Ich habe etwas sehr ähnliches mit einem AZ-Envy aufgebaut. Das kompakte Board ist für diesen Zweck sehr gut geeignet. Detail unter https://wp.me/pbNO7T-lc.