Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Softwaredoku
Hochschule Karlsruhe Logo Informationstechnik
Sensorik Ventilator
Sommersemester 2021
bawa1011@hs-karlsruhe.de
mojo1018@hs-karlsruhe.de

Software Dokumentation

MySQL

Um die erfassten Sensordaten zu Visualisieren und für die weitere Verarbeitung bereitzustellen gibt es mehrere Möglichkeiten. So können die Sensordaten über ein Display oder den seriellen Monitor innerhalb der Arduino IDE ausgegeben werden. Eine Alternative besteht darin, die Sensordaten über einen Webserver an eine MySQL-Datenbank zu senden. Auf die Einrichtung einer solchen Datenbank wir im Folgenden eingegangen.

Um Daten vom ESP in einer MySQL-Datenbank zu speichern, wird ein Webserver und ein MySQL Sever benötigt. Anschließend muss noch ein php Skript geschrieben werden, um die gesendeten Daten zu verarbeiten und an die MySQL-Datenbank zu senden. Alle verwendeten Programme sind Open Source Programme, so entstehen keine zusätzlichen Kosten.

Im ersten Schritt wird ein Webserver installiert, dazu wird die XAMPP Apache Distribution verwendet. Diese ermöglicht es unter anderem, einen MySQL-Server zu starten. Da hierbei aber die Eingabeaufforderung als grafische Benutzeroberfläche verwendet wird, wurde ein separates Programm für den MySQL-Server installiert.

Die aktuelle Version des MySQL Community Webserver kann auf mysql.com heruntergeladen werden. Die XAMPP Apache Distribution kann auf apachefriends.org heruntergeladen werden. Für die Installation des MySQL Community Webserver kann die Anleitung von „Programmieren Starten“ verwendet werden.

 Der Webserver kann nach erfolgreicher Installation über das XAMPP Control Pannel gestartet werden. Dazu muss lediglich der START Knopf in der Zeile Apache betätigt werden. Wenn alles funktioniert hat, ist der Name Apache grün hinterlegt und symbolisiert somit, dass der Server online ist.

Anschließen kann innerhalb der MySQL Workbench eine Datenbank erstellt werden, in der die erfassten Sensordaten gespeichert werden können. Es wird empfohlen, der Datenbank sowie den Tabellen die gleichen Namen wie innerhalb dieser Dokumentation zu geben. Es können auch andere Namen verwendet werden jedoch ist zu beachten, dass diese auch in allen Programmen abgeändert werden müssen.

 Auf der folgenden Abbildung ist gezeigt, wie eine Datenbank erstellt werden kann. Des Weiteren ist beispielhaft für einen Sensor die Erstellung einer Tabelle gezeigt. Für jeden weiteren Sensor wird ebenfalls eine Tabelle erstellt. Die finale Struktur ist der unten stehenden Abbildung zu entnehmen.

Als letztes muss noch das php Skript geschrieben werden, das die Anfragen des Webservers bearbeitet und an den MySQL-Server übergibt. Das Skript kann in einem beliebigen Editor erstellt werden. Im Folgenden wir das php Skript beispielhaft am Sensor SFM3019 gezeigt. Alle weiteren Programme können im Kapitel Quellcode eingesehen werden.

ESP32 Programm

Innerhalb dieser Dokumentation wird nur auf die für die Gruppe „Ventilator Sensorik“ relevanten Teile des ESP32 Programmes eingegangen. Für den „Remote Control“ Teil des Programmes kann die Dokumentation der Gruppe „Entwicklung und Updates“ zu Hilfe genommen werden.

Zu Beginn werden alle benötigten Bibliotheken eingebunden. Anschließend werden die Sensoren initialisiert und erhalten Variablen, in denen die ausgelesenen Sensorwerte gespeichert werden können.



Anschließend werden die Strings für die Serveranfrage erstellt. Diese sind nach dem Schema <http://lokale_ipadresse:port/name_php_skript> aufgebaut.

Danach wird für jede Serveranfrage ein Client erstellt und die Strings für die Serveranfrage werden mit den erfassten Werten der Sensoren befüllt. Wichtig ist hierbei, dass der Name der GET Anfrage mit dem Namen in dem php Skript übereinstimmt. So lautet die GET Anfrage für den SFM3019 Sensor: "?flow=" + String (Sensorwert).

Nachdem die Strings für die Serveranfrage mit den aktuellen Sensorwerten befüllt wurden, werden die Clients gestartet und die einzelnen GET Anfragen werden gesendet. Nach dem erfolgreichem Senden werden alle Clients beendet.


In der Setup Void wird die Verbindung zu den Sensoren hergestellt und der I2C Bus wird initialisiert.



Innerhalb der ausgelagerten Funktion „Sensoren_lesen“ werden alle Sensoren ausgelesen und deren Werte in den entsprechenden Variablen gespeichert


In der Main wird die Funktion „Sensoren_lesen“ aufgerufen. Anschließend wird über die Funktion „serielle_ausgabe“ eine Ausgabe aller erfassten Sensorwerte auf dem seriellen Monitor in der Arduino IDE erzeugt. Über den Onboard „BOOT“ Knopf des ESP32 können nun die Sensordaten über den Webserver an die MySQL-Datenbank weitergegeben werden. Anstelle des Boot Knopfes können im späteren Verlauf auch andere Trigger Methoden verwendet werden. So könnte zum Beispiel alle 5 min ein Wert aufgenommen werden.

 

MySQL und Exel

Ein Vorteil einer MySQL-Datenbank ist unter anderem, dass die erfassten Daten schnell in einer Exceltabelle aufbereitet werden können. Dies wurde für dieses Projekt beispielhaft durchgeführt. Zu demonstrativen Zwecken wurde die erstellte Datenbank mit Dummy Werten versehen, da zum Zeitpunkt der Erstellung keine realen Sensordaten vorlagen.

 


  Mit Unterstützung von Prof. J. Walter Sommersemester 2021