Nach dem Einbinden der notwendigen Bibliotheken sowie der
Deklarierung der Defines werden die Objekte und globalen Variablen
für das Auslesen der Sensoren deklariert. Da für den Feinstabsensor
sowie mit den GPS-Sensor eine serielle Kommunikation verwendet wird,
wird diese ebenfalls zu Beginn definiert (Softwareserial an Pin 27 &
26 für den Feinstaubsensor und HardwareSerial2 für den GPS-Sensor).
Um die Daten des Feinstaubsensors zwischenspeichern zu können wird
außerdem der struct 'pms5003data' erstellt.
In der void setup() werden zuerst wie gewohnt alle seriellen
Schnittstellen initialisiert und gestartet. Außerdem werden hier
auch die Sensorobjekte konfiguriert und initialisiert. Hier wird
beispielsweise die Updaterate des GPS-Sensors auf 1Hz eingestellt
und der Umfang der Ouputdaten konfiguriert. Im Anschluss an die
Konfiguration der Sensoren wird geprüft ob eine SD-Karte vorhanden
ist. Ist dies nicht der Fall wird ein Fehler ausgegeben und das
System gestoppt. Ist eine SD-Karte gefunden wird, falls nicht schon
vorhanden, eine csv-Datei für die Messdaten erstellt. Über das
Auslesen des Wertes an der Adresse 0 im EEPROM wird geprüft, ob es
sich um eine neue Messung handelt oder ob sich der ESP aufgrund
eines Sensorfehlers selbst neugestartet hat. Abhängig davon wird die
Überschrift einmalig in die neu erstellte csv-Datei geschrieben.
In der loop() wird auf neue Messwerte des
Feinstaubsensors gewartet. Sind diese vorhanden beginnt das System
alle Sensoren auszulesen und die Messwerte in einem Datenstring zu
formulieren. Dieser Datenstring wird dann in die csv-Datei
geschrieben und die Schleife startet von neuem. Da der Code in der
loop() zu umfangreich ist, um ihn hier übersichtlich darstellen zu
können, wird auf den Link zum Github repository auf der Seite
"Quellcode" verwiesen.
Flussdiagramm der Software des Feinstaubmesssystems
|