In diesem Beitrag möchte ich dir zeigen, wie du die Sensordaten des AZ-Envy auslesen kannst.
Den AZ-Envy habe ich dir bereits im Beitrag Vorstellung AZ-Envy vorgestellt und gezeigt, wie dieser angeschlossen und programmiert wird.
Auf dem AZ-Envy ist ein ESP8266 verbaut und zwei Sensoren. Der SHT30 Sensor dient für die Erfassung von Luftfeuchtigkeit und Temperatur sowie ein MQ-2 für Luftqualität.
Benötigte Ressourcen
Wenn du dieses Board wie nachfolgend programmieren und die Sensordaten vom AZ-Envy auslesen möchtest, dann benötigst du:
- einen AZ-Envy,
- ein Micro-USB Datenkabel,
- ein FTDI232 Adapter,
- ein Mini-USB Datenkabel,
- drei Breadboardkabel, weiblich-weiblich, 10 cm
Anschluss des FTDI232 Adapters an den AZ-Envy
Der FTDI232 Adapter wird mit drei Breadboardkabel mit dem AZ-Envy verbunden.
AZ-Envy | FTDI232 Adapter |
---|---|
RX | RX |
TX | TX |
GND | GND |
Zusätzlich musst du das Board mit einem Micro-USB-Kabel verbinden, damit dieser Strom erhält.
Probleme mit dem Sensor MQ-2 & SHT30
Der Luftqualitätssensor MQ-2 wird im Betrieb sehr warm und durch die ungünstige Platzierung zur Nähe des Sensors SHT30 erhältst du von letzterem ggf. sehr ungenaue Werte.
In einigen Foren wurde bereits darüber sehr ausgiebig diskutiert.
Eine Lösung dazu ist den Sensor SHT30 abzuschirmen, in der Platine ist eine kleine Rinne eingelassen, in welche man ein Schild einlassen kann und somit zumindest etwas Wärme vom Sensor ableiten kann.
Programmieren in der Arduino IDE
Wie du den Mikrocontroller in der Arduino IDE einrichtest, habe ich dir bereits im oben verlinkten Beitrag gezeigt. Im nachfolgenden YouTube-Video zeige ich dir, wie du am AZ-Envy die Sensordaten auslesen kannst.
Bibliotheken für die verbauten Sensoren
Für das Auslesen der Sensoren benötigen wir zwei Bibliotheken, diese können wir über die Shopseite von AZ-Delivery zum Board als ZIP-Datei herunterladen und über Sketch > Include Library > Add .ZIP Library in der Arduino IDE importieren.
Auslesen der Luftfeuchtigkeit und Temperatur vom SHT30 Sensor
Der Sensor SHT30 liefert wie erwähnt die Temperatur sowie die relative Luftfeuchtigkeit. Nachfolgend nun ein kleines Programm, welches diese Daten ausließt und auf der seriellen Schnittstelle ausgibt.
//Bibliothek zum auslesen der Sensorwerte //vom SHT30 Sensor #include <WEMOS_SHT3X.h> //instanziieren eines Objektes vom Typ SHT3X //mit der I2C Adresse 0x44 SHT3X sht30(0x44); void setup() { //beginn der seriellen Kommunikation mit 9600 baud Serial.begin(9600); } void loop() { //Wenn die kommunikation per I2C mit dem Sensor //erfolgreich war, dann... if (sht30.get() == 0) { //lesen der Temperatur in Grad Celsius float temperature = sht30.cTemp; //lesen der rel. Luftfeuchtigkeit in % float humidity = sht30.humidity; //ausgeben der Temperatur Serial.print("Temperatur: "); Serial.print(temperature); Serial.println("°C"); //ausgeben der rel. Luftfeuchtigkeit Serial.print("rel. Luftfeuchtigkeit: "); Serial.println(humidity); Serial.println("%"); } //eine kleine Pause von 5 Sekunden delay(5000); }
Auslesen der Luftqualität des MQ-2 Sensors
Der Luftqualitätssensor MQ-2 wird im Betrieb warm und liefert je länger die Läuft genauere Messwerte, daher würde ich dir empfehlen diesen für min. 1h laufen zu lassen, bevor du die echten Werte verwenden kannst.
//Luftqualitätssensor MQ-2 ist //am analogen Pin A0 angeschlossen #define MQ2Pin A0 void setup() { //beginn der seriellen Kommunikation mit 9600 baud Serial.begin(9600); //analogen Pin als Ausgang definieren pinMode(MQ2Pin, INPUT); } void loop() { //lesen des analogen Wertes int sensorValue = analogRead(MQ2Pin); //Ausgeben des gelesenen Wertes auf //der seriellen Schnittstelle Serial.print("Luftqualität: "); Serial.print(sensorValue); Serial.println("ppm"); //eine kleine Pause von 2 Sekunden delay(2000); }
Wert im seriellen Plotter der Arduino IDE visualisieren
Die Arduino IDE verfügt über einen seriellen Plotter, welchen wir nutzen können, um Sensorwerte in einem Liniendiagramm zu visualisieren.
Dazu müssen wir die Legende und die Werte in einem bestimmten Format auf der seriellen Schnittstelle ausgeben.
#include <WEMOS_SHT3X.h> SHT3X sht30(0x44); #define MQ2Pin A0 float temperature = 0; float humidity = 0; void setup() { Serial.begin(9600); pinMode(MQ2Pin, INPUT); } void loop() { if (sht30.get() == 0) { temperature = sht30.cTemp; humidity = sht30.humidity; } int sensorValue = analogRead(MQ2Pin); Serial.print("Temperatur(°C):"); Serial.print(String(temperature, 2)); Serial.print("\t"); Serial.print("rel.Luftfeuchtigkeit(%):"); Serial.print(String(humidity, 2)); Serial.print("\t"); Serial.print("Luftqualität(analog):"); Serial.print(String(sensorValue, DEC)); Serial.println(); delay(2000); }
Download der Programme
Hier nun die gezeigten Programme zum einfachen Download als ZIP-Datei für die Arduino IDE.
1 thought on “AZ-Envy – auslesen der Sensordaten”