Mrz 162011
 

Überwachung der Wassertemperatur eines Aquariums mit ARDUINO und LM 35 Temperatur-Sensor. Datenspeicherung in einer MySQL-Datenbank unter Zuhilfenahme von PHP,  sowie Visualisierung der Daten im Webbrowser mit JpGraph.

 

Verwendete Hardware:

  • Arduino
  • Ethernet Shield
  • LM35 Temperatur-Sensor

Benötigte Software:

  • Web-Server mit PHP und MySQL
  • JPGRAPH

 

MySQL

Zum Anlegen der Datenbank braucht man natürlich seine Daten zum Webspace. Wer (so wie ich) noch nie eine solche Datenbank selber „von Hand“ (mit phpMyAdmin) angelegt hat, sollte einen Blick auf die Links unten werfen. Nach dem verlinkten Tutorial habe ich folgende Datenbank mit entsprechenden Feldern erzeugt:

 

Arduino

Für das Arduino-Board habe ich ein Beispiel-Code aus dem Internet verwendet und diesen modifiziert (siehe Links). Der Wert des Temperatur-Sensors wird alle 15 Minuten ausgelesen und übertragen. Hierzu wird per Ethernet-Shield ein auf dem Webspace gespeichertes PHP-Skript aufgerufen. Der Wert wird einfach in der „Adresszeile“ mit übergeben. Arduino macht also das gleiche, was man im Browser durch Aufruf der URL

www.EigenerServer.de/Arduino_push_data.php?TEMP=20&KEY=XXXXX

bewirkt. Das ist hier auch schon alles. Alles Weitere übernimmt PHP.

 

PHP

Das angesprochene PHP-Skript „Arduino_push_data.php“ steckt die zusätzlich erhaltenen Daten in zwei Variablen („TEMP“ & „KEY“). Der Inhalt in „KEY“ wird mit einem im Quellcode enthaltenen Wert verglichen. Sind die Kennwörter identisch wird eine Verbindung zur Datenbank geöffnet und der Wert aus „TEMP“ ins gleichnamige Feld eingetragen. Die Felder „ID“ und „DATE“ werden automatisch gefüllt. ID zählt um Eins hoch (durch die Option „auto_increment“ in MySQL; bei „DATE“ wird der Befehl „now();“ zur Hilfe genommen. Dieser übernimmt die Zeit des Servers für den Datenbankeintrag.

Außerdem ist im Skript eine kleine Datenausgabe des aktuellsten Wertes integriert. Ruft man das PHP-Skript ohne den Zusatz „?TEMP=20……“ auf, erhält man diese Ausgabe.

Die Zugangsdaten für die MySQL-Datenbank sind zudem noch ausgelagert. Durch „include(„db.php“);“ wird eine weitere, kleine PHP-Datei integriert.

An dieser Stelle ist alles getan, um Werte zu erfassen. Diese können wie beschrieben (aktueller Wert), oder durch das phpMyAdmin-Interface (alle Werte) jederzeit kontrolliert werden.

Kleiner Hinweis noch, welcher mir beim Löschen von Werten in der Datenbank aufgefallen ist:

Löscht man einzelne, mehrere oder alle Datensätze von Hand, muss der Wert für „auto_increment“ ebenfalls zurück gesetzt werden. Andernfalls wird einfach weitergezählt. Ändern kann man diesen unter „Operationen“ -> „Tabellenoptionen“.

 

VISUALISIERUNG

Um die Werte nun ohne eine nötige Anmeldung an phpMyAdmin und vor allem übersichtlicher darzustellen habe ich ein wenig recherchiert und mich dann am Ende für JPGRAPH entschieden. Die Möglichkeiten sind vielfältig, das Handling recht einfach. Bis mein Diagramm dann aber so war, wie ich es gerne haben wollte, vergingen aber auch ein paar Stunden.

Um JPGRAPH nutzen zu können wird das heruntergeladene Verzeichnis einfach in einen Unterordner auf den Server entpackt. Der gewählte Pfad wird dann einfach in der PHP-Datei verlinkt. Apropos PHP-Datei. Diese wird ebenfalls auf dem Server gespeichert. Meine habe ich „show_data.php“ genannt. Sie kann dann einfach in eine vorhandene Webseite eingebunden werden:

<img src="show_data.php" alt="Diagramm wird geladen..." align="middle" width="800" height="500">

 

ERGEBNIS

Weiter möchte ich an dieser Stelle nicht auf die einzelnen Dateien eingehen. Mit ein wenig Fleiß kommt man schnell zu diesem Ergebnis. Schließlich habe ich es ja auch hinbekommen 😉 Kleiner Tipp: Ich habe meine Dateien unten angehängt.

LINKS zum Projekt:

gute MySQL und PHP – Seite

Arduino Code LM35 (aus dem Netz)

PHP Tutorial

JPGRAPH – Most powerful PHP-driven Charts – Herstellerseite

JPGRAPH – Einführung – in Deutsch

Arduino-Datei:

Arduino-Code

PHP-Dateien auf dem Webspace:

arduino_push_data.php

db.php

show_data.php