Gartenhäuschen mit Micro Controller und Sensoren überwachen - Teil 1

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è:

  "35; include"DHT.h"
 
 35; definisce DHTPIN 12//D6-GPIO12
 35; definisce DHTTYPE DHT22 // 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.

 "35; include 
 '35; includono
 '35; includono

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*/
 
 "35; include
 '35; includono
 '35; includono
 "35; include"DHT.h"
 
 35; definisce DHTPIN 12 //D6-GPIO12
 35; definisce DHTTYPE DHT22 // 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 Servern";
   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.


Scarica in pdf

Esp-8266Progetti per principiantiCasa intelligente

4 Kommentare

Andreas Wolter

Andreas Wolter

Norbert Dunker: das zweite Bild ist ein Fritzing Schaltplan und sollte theoretisch direkt nachgebaut werden können.

Norbert Dunker

Norbert Dunker

Mit den Fotos komme ich nicht ganz zurecht gibt es auch eine Schaltung
Danke

Juergen Eggers

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

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.

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Post di blog consigliati

  1. Installa ESP32 ora dal gestore del consiglio di amministrazione
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - Programmazione ESP tramite WLAN