Hey! Sie scheinen aus United States zu kommen, möchten Sie auf die Englisch Webseite wechseln?
Switch to Englisch site
Skip to main content

Die interaktive Luftqualitätskarte – Teil 2: Herstellung eines mobilen ESDK-Luftqualitätsloggers

Einen Großteil der Luftqualitätskarte machen die Live-Daten aus, die für ihren Betrieb benötigt werden. In diesem Artikel werde ich Ihnen zeigen, wie ich mein ESDK in einen mobilen Datenlogger für die Luftqualität umgewandelt habe.

Bauteile und Verbindungen

Leider lag meinem Sensor-Kit keine GPS-Antenne bei, so dass ich die im ESDK integrierte GPS-Positionsfunktion nicht nutzen konnte. Glücklicherweise hängt mein Plan nicht davon ab, da ich bereits ein GSM/GPRS/GPS-Modul gekauft habe, das mit dem Kit verbunden werden kann. Ich dachte mir, wenn ich unterwegs Live-Sensordaten sammeln möchte, ist mobiles Internet unerlässlich. Deshalb kaufte ich das A9G-Modul mit GPRS- und GPS-Funktionen.

A9G module with GPRS and GPS functions

Das A9G-Modul wird durch vordefinierte Befehle, so genannte AT-Befehle, gesteuert, die über eine serielle Verbindung gesendet werden. Über diese Verbindung können auch die GPS-Daten des Moduls ausgelesen werden. Ich nahm mein ESDK auseinander und entfernte die erforderlichen seriellen Leitungen sowie 5V und GND.

ESDK Main board - Screen side

ESDK Main board - PCB Side

Mein Plan war es, ein separates Python-Skript auf dem Pi auszuführen, das die GPS-Daten vom Modul ausliest und an die vom Sensor-Kit ausgelesenen Luftqualitätsdaten anhängt. Die Umsetzung war jedoch nicht so einfach: Zum einen fand ich heraus, dass ich aufgrund von Timing- und Synchronisationsproblemen nicht direkt über die seriellen Pins des Raspberry Pi mit dem A9G-Modul kommunizieren konnte. Die einzige Möglichkeit zur Kommunikation mit dem Modul von einem Raspberry Pi aus war also die Verwendung eines USB-Seriell-Adapters (FTDI), den ich leider nicht zur Hand hatte. Davon wollte ich mich jedoch nicht abhalten lassen. Also programmierte ich einen meiner Arduinos als serielles Relais um. Danach konnte ich den Arduino mit dem Raspberry Pi verbinden, der dann serielle Daten zum und vom A9G-Modul weiterleitet; ähnlich einem regulären USB-zu-Seriell-Gerät, nur eben über Software. Meine Verbindungen sehen Sie weiter unten, und der Code ist ebenfalls an diesen Artikel angehängt.

Circuit Schematic

A9G Board and Arduino housed in 3D Printed Enclosure

Stromversorgung des mobilen ESDK-Loggers

Damit das ESDK mobil ist, musste ich es unterwegs mit Strom versorgen können. Dafür besorgte ich mir eine ziemlich starke Powerbank mit 27.000 mAh. Danach modellierte und druckte ich ein paar Bauteile, mit denen ich die Powerbank am Kit befestigen konnte.

Finished Mobile ESDK Air Quality Logger - Front View

Finished Mobile ESDK Air Quality Logger - Rear View

Die Software

Das Python-Skript, das auf dem Pi ausgeführt wird, hat die einfache Aufgabe, Sensordaten über MQTT vom ESDK auszulesen. Es liest auch die GPS-Daten vom A9G-Modul aus und verkettet dann die Informationen zu einem einzigen String, der dann in eine .csv-Datei geschrieben wird. Ich habe das Skript außerdem so programmiert, dass es aus den GPS- und Sensordaten eine .kml-Datei erstellt. Dadurch erhalte ich sowohl eine normale Excel-Tabelle als auch eine Datei (.kml), die ich direkt in Google Earth laden kann, um die Live-Daten aus dem Kit richtig visualisieren zu können.

Der Code besteht aus vier Hauptabschnitten:

Der Erste enthält die MQTT-Einrichtung, dank der sich das Skript mit dem MQTT Broker des ESDK verbinden kann, um die aktuellen Sensormesswerte zu erhalten.

Der zweite Abschnitt enthält die Einrichtung der seriellen Kommunikation. Hier habe ich einfach den Raspberry Pi so eingerichtet, dass er mit dem Arduino kommuniziert, den ich als behelfsmäßigen USB-Seriell-Adapter verwende. Das funktioniert genauso, wenn ich dann ein richtiges FTDI-Modul habe.

Der dritte Abschnitt des Codes sendet einige grundlegende AT-Befehle an die GPS-Platine, so dass sie die GPS-Daten über die serielle Schnittstelle meldet.

In der Hauptschleife des Codes passieren die coolen Sachen. Als Erstes lasse ich prüfen, ob es brauchbare Daten zum Verarbeiten gibt. Daher die ganzen if-Anweisungen.

Wenn sowohl gültige Luftqualitätsdaten vom Kit als auch gültige GPS-Daten von der A9G-Platine vorliegen, fügen die nächsten drei Codezeilen die Luftqualitätsdaten und die GPS-Daten zu einem einzigen String zusammen, der dann in das .csv-Protokoll für diesen Tag geschrieben wird. Die Zeile „datalogfile = open(strftime('%d-%m-%Y') + "_airqlog.csv", "a")“ sorgt dafür, dass nur eine .csv-Datei pro Tag erstellt wird, so dass das Skript nicht jedes Mal eine neue Datei erzeugt, wenn das Kit am selben Tag neu gestartet wird.

Nach dem Schreiben in die .csv-Datei fährt das Skript mit dem Schreiben in die .kml-Datei fort. kml-Dateien benötigen Breitengrad, Längengrad und Höhe, um einen gültigen Punkt auf einer Karte zu erzeugen. Also schrieb ich ein paar Codezeilen, die den Längengrad, Breitengrad und die Höhe aus dem NMEA-Datenformat extrahieren, das von der A9G-Platine übertragen wird.

Die .kml-Datei ist eine sehr spezifische Datei, so dass die Strings ziemlich verschachtelt sind, damit Google Earth die Datei korrekt lesen kann. Ich empfehle Ihnen, hier mehr über .kml-Dateien zu lesen, um das Dateiformat und die Syntax besser zu verstehen. Mein vollständiger Code hängt auch diesem Artikel zu Ihrer Referenz an.

Ich möchte auch darauf hinweisen, dass das ESDK für die Messung der Luftqualität in Innenräumen konzipiert ist. Für diesen Zweck ist die derzeit im Kit enthaltene Sensorkombination perfekt geeignet. Im Freien sind CO2, flüchtige organische Verbindungen (VOC), Temperatur, Luftfeuchtigkeit und Partikel wohl nicht ausreichend, um die ganze Geschichte zu erzählen. Kohlenmonoxid (CO) und Stickstoffdioxid (NO2) wären in einem Logger für die Außenluftqualität aussagekräftiger. Also werde ich wahrscheinlich einen Weg finden, diese Sensoren bald zu implementieren.

Alle CAD-Daten und der Code, die ich in diesem Artikel verwendet habe, sind unten angehängt, so dass Sie sie bei Bedarf nachschlagen können.

Teil 1 dieser Serie zeigt den Bau der Zellen für die Luftqualitätskarte.

Herunterladen

I am a passionate Hardware Engineer, with a deep interest in Robotics and Embedded hardware/software. I enjoy picking up new skills and challenging myself with finding innovative technological solutions.