Das sechzehnte Türchen

Nachdem wir in unserem Blog am 22. November den neuen AZ-Envy kurz vorgestellt und dabei die Werte der eingebauten Sensoren mithilfe der empfohlenen Bibliotheken ausgelesen und im Serial Monitor angezeigt hatten, möchte ich nun tiefer einsteigen, den großen Vorteil der ESP-Micro Controller mit eingebautem WiFi nutzen und die bisher ungeklärten Fragen zu den Sensoren weiter untersuchen. Auch wenn der MQ-2 ausdrücklich kein CO2-Sensor ist (sondern LPG, i-Butan, Propan, Methan, Alkohol, Wasserstoff und Rauch), möchte ich am Ende zeigen, wie man eine Ampel für die Luftqualität anschließen kann.

Untersuchung zu Sensor SHT30 für Temperatur und Rel. Luftfeuchte

Wir hatten gesehen, dass Temperaturanzeige ein wenig zu hoch und damit einhergehend der Wert der Rel. Luftfeuchtigkeit etwas zu niedrig war, und das trotz der Aussparungen in der Platine, die wir auf dem folgenden Bild gut erkennen können. Damit ist Wärmeleitung über die Platine weitgehend reduziert. Aber die Nähe zum beheizten Gas-Sensor MQ-2 macht sich dennoch bemerkbar. Hier hilft nur die Kombination aus allen Tricks, die wir zum Teil auch von unseren Kunden bekommen haben: Plastikstreifen, Envy schräg oder hochkant aufstellen mit MQ-2 oberhalb des SHT30, kleiner Lüfter, um Umgebungsluft zuzufächeln und die warme Luft weg zu blasen und schließlich ein Korrekturwert im Sketch. Mehr dazu beim Sketch Envy_WebServer_MQ2_SHT30.ino.

 

Untersuchung zum Sensor MQ-2

Wir hatten im ersten Teil geschrieben, dass MOS-Sensoren die Widerstandsänderung messen, wenn Gase vorhanden sind. Die empfohlene MQ-2 libary von labay11 zeigte dann mittels eines unbekannten Algorithmus Werte für LPG, CO und Smoke an. Alle diese Werte beruhen auf einem einzigen gemessenen Wert am analogen Eingang A0. Wenn es also bekannte Grenzwerte für diese Stoffe gibt, kann man diese Bibliothek gut benutzen.

Aber die einfache Lösung, die Niklas Heinzel in seinem Easy-Start Sketch (Download auf der Produktseite) benutzt, genügt vollkommen. Die analogen Werte liegen zwischen 1 und 1024. In unserem Wohnzimmer lag der Wert zwischen 70 und 110; nachdem ich ein Stück Küchenpapier mit Rum getränkt auf den MQ-2 gelegt hatte, wurde sofort 1024, nach einiger Zeit abnehmend auf 900 und 800 angezeigt. Welchen Schwellwert Sie am Ende benutzen wollen, um die gelbe oder rote Kontrollleuchte anzumachen, können Sie selbst festlegen, vielleicht 200 für gelb und 250 für rot?

Wir verbinden unseren AZ-Envy mit dem WLAN

Mit dem folgenden Sketch verbinden wir den AZ-Envy mit dem WLAN und benutzen ihn als Server für die Messdaten. Bitte beachten Sie, dass Sie vor dem Hochladen Ihre SSID und Ihr WLAN-Passwort im Code eingeben müssen, damit Sie die Sensordaten im Browser Ihres PCs oder Smartphones sehen können. Download Sketch Envy_WebServer_MQ2_SHT30.ino.

Mit dem schräg gestellten AZ-Envy, einem kleinen 5V-Lüfter, mit 3,3 Volt betrieben wegen der deutlichen Reduzierung des Geräuschpegels, und einem Korrekturwert von 0,5 habe ich brauchbare Ergebnisse erzielt.

 


Eine zweite Möglichkeit, den AZ-Envy im heimischen WLAN anzumelden, hat Gerald Lechner in seinem Blog im April 2019 beschrieben: die Benutzung von WPS (=WiFi-Protected-Setup).

Dafür nutzen wir am AZ-Envy die eingebaute Taste: den FLASH button. Der wird ja nur beim Starten benötigt, wenn wir den ESP8266 in den Flash-Modus versetzen wollen. Nach dem Start des Programms mittels RESET haben wir hier einen „normalen“ Taster an GPIO0 (Null). Wir brauchen also nur im Sketch die zweite Codezeile in       #define WPS 0       ändern.

Hier der angepasste Code für die Anmeldung im WLAN mittels WPS-Taste zum Download.

Wenn Sie im Serial Monitor die Baud-Rate auf 74880 stellen, sehen Sie alle Ausgaben während des Starts des ESP8266. Nach Aufforderung dann erst die WPS-Taste am Router drücken, dann den FLASH button am AZ-Envy. Nach einer erfolgreichen Anmeldung werden übrigens die Zugangsdaten im nicht-flüchtigen Speicher des ESP8266 gespeichert. Sie brauchen also nicht jedes Mal die WPS-Taste drücken.

Um die WLAN-Daten wieder zu löschen, bietet die Arduino IDE unter Werkzeuge ein praktisches Tool. Unter Erase Flash hat man drei Möglichkeiten zur Auswahl:

  • Only Sketch //löscht nur den Code
  • Sketch + WiFi Settings // löscht Code und WiFi Passwort
  • All Flash Contents //löscht alles einschl. SSID und Passwort


GPIO-Ausgänge

Nachdem wir nun bereits den Taster als GPIO-Eingang entdeckt haben, möchte ich die beiden (versteckten) GPIO-Ausgänge zeigen, um damit eine Ampel für die Luftqualität anzusteuern.

Dazu zeige ich zunächst das Schaltbild des AZ-Envy:


Wie oben zu lesen war, liegt der FLASH button an GPIO0. Die einzigen GPIO-Anschlüsse, die herausgeführt sind, heißen hier im Bild rechts oben TX und RX. Diese werden als Serial Port für das Programmieren und für die Anzeige von Sensordaten im Serial Monitor verwendet.

Wenn wir jedoch die Sensordaten ohnehin im WLAN anzeigen, können wir diese Pins auch mit einer Bi-color-LED belegen. Unsere Pins heißen dann GPIO1 und GPIO3. Und was gibt es dabei zu beachten?

Erstens müssen wir, sofern wir den Serial Monitor für die Startphase mit Serial.begin(baud_rate) geöffnet hatten, diesen mit Serial.end() schließen. Dann können GPIO1 und GPIO3 verwendet werden.

Und zweitens soll unsere Ampel selbstverständlich die drei Farben Rot, Gelb und Grün darstellen. Das geht mit der Bi-color-LED mit ihren drei Beinchen GND, R und G und der Pulsweitenmodulation. Also entweder den Pin für den Rot-Anteil auf „On“ oder den Pin für den Grün-Anteil auf „On“. Und Gelb ist die Mischfarbe aus Rot und Grün, allerdings habe ich dafür mit PWM den Grün-Anteil halbiert.

 

/********************************************************************
Ampel mit bi-color LED
gelb = rot(255) + grün(128)
********************************************************************/

int ledred = 1; // RX = the PWM pin the red LED is attached to
int ledgreen = 3; // TX = the PWM pin the green LED is attached to

// the setup routine runs once when you press reset:
void setup() {
  // declare pin 9 to be an output:
  pinMode(ledred, OUTPUT);
  pinMode(ledgreen, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // set the brightness of pin 9:
  analogWrite(ledred, 255);
  delay(1000);
  analogWrite(ledgreen, 128);
  delay(1000);
  analogWrite(ledred, 0);
  analogWrite(ledgreen, 255);
  delay(1000);
  analogWrite(ledgreen, 0);
  delay(1000);

Download Sketch

Wer hätte gedacht, was alles in dem kleinen AZ-Envy steckt. Und das ist noch nicht alles. Denn unser „Altmeister“ Gerald Lechner, dessen Buch „SMARTHOME“ gerade in die Regale gekommen ist, hat sich noch etwas mehr ausgedacht, wofür Sie die Teile hinter dem heutigen Türchen sinnvoll verwenden können. Aber das ist eine andere Geschichte.


Weiterhin eine schöne Vorweihnachtszeit!

Specials

3 Kommentare

Bernd Albrecht

Bernd Albrecht

Hallo und vielen Dank für Ihr Interesse an unseren Produkten und Blog-Beiträgen.
Auszug aus dem Datenblatt des MQ-2
MQ-2 Sensors are used in gas leakage detecting equipments in family and industry, are suitable for detecting
of LPG, i-butane, propane, methane, alcohol, Hydrogen, smoke.
Der Sensor kann nicht zwischen den Gasen unterscheiden. Das Prinzip ist eine Widerstandsänderung in Abhängigkeit von der Gaskonzentration. Deshalb wird lediglich ein analoger Wert am ADC (Eingang A0) gemessen. Sie können einen Grenzwert angeben, bei dem Alarm ausgelöst werden soll. Dafür sollten Sie ggf. die Werte im Normalbetrieb einige Tage messen und den Grenzwert dementsprechend festlegen. Das Schöne beim AZ-Envy ist, dass der Alarm sowohl über WLAN ausgelöst werden kann als auch über eine rote LED oder Buzzer an den umfunktionierten GPIO pins für TX und RX.

Martin Vierbücher

Martin Vierbücher

Ich habe mir kürzlich ein 3-er Set bestellt und über die Feiertage in Betrieb genommen. Mit der Anleitung war das kein Problem und das Gehäuse war auch schnell Dank der stl Dateien gedruckt. Leider musste ich im Deckel eine Nut fräsen damit der Deckel wegen der Stiftleiste auch zuging. Vielleicht die Nut schon im 3D Modell aufnehmen? Mit offenem Gehäuse bin ich so etwa mir dem im Sketch angegebenen Offset hingekommen, mit geschlossenem Gehäuse bin ich dann aber wieder um fast 4°C und somit um über 10°C daneben. Damit ist der Messfehler größer als die zu erwartende Temperaturdifferenz im Zimmer! Das schreit eher nach einer Korrekturkurve, oder? Der Gassensor funktioniert sehr gut, ich zweifle aber auch die Werte für Monoxid an, danach müsste ich öfter Kopfweh haben. Habe mal gelesen dass er 24h an der frischen Luft eingebrannt werden muss? Dynamisch, d.h. angepustet, reagiert er wunderbar. Und jetzt meine eigentliche Frage, ich würde einen der Sensoren im Heizungsraum platzieren und frage mich nun was ich anwählen soll. Erdgas ist laut google Methan und Methan kann der Sensor nur weiß ich nicht was ich im Web Interface selektieren soll. Wurde Methan vergessen?

Cretel

Cretel

Bonjour, je souhaiterai intégrer l’azenvy a mon serveur domoticz et mysensors, pourriez vous m’indiquer un exemple de croquis.
Merci pour toutes vos innovations et votre sérieux.
Cordialement.

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi