Daten senden und empfangen ohne Zeitverzögerung

Dieses Sketch sendet in einem vorgegebenen Intervall die Temperaturwerte mehrerer DS1820 Temperatursendoren (DS18S20 und DS18B20) an ein PHP-Script das diese Daten wiederum in eine MySQL-Datenbank speichert. Gleichzeitig können über verschiedene Kommandos, die über das Netzwerk gesendet werden, Pins des Arduino geschaltet werden. Wenn man weitere Temperatursensoren anschließen und dessen Werte in der Datenbank speichern will, geht man wie folgt vor.

  • Anpassen der Anzahl der angeschlossenen Sensoren hinter #define AnzahlSensoren
  • Den Wert hinter showDeviceAdresses auf true stellen um die DeviceAdressen aller angeschlossenen TemperaturSensoren über den Seriellen Monitor sehen zu können
  • Die DeviceAdresse des neuen Sensors aus dem Seriellen Monitor kopieren und in einer neuen Zeile unter die bereits vorhandenen DeviceAdressen im Arduino Sketch einfügen. Beachten Sie dass, bis auf die letzte DeviceAdresse, alle Adressen durch ein Komma voneinander getrennt sein müssen und dass sich jede Adresse in einer eigenen Zeile befinden muss.
  • Den Wert hinter showDeviceAdresses können Sie nun wieder auf false stellen.
Beim nächsten Aufruf der Funktion zum senden der Temperaturwerte an das phpScript wird nun auch der Wert des neu angeschlossenen Temperatur-Sensors übertragen und in der Datenbank gespeichert. Am php-Script SaveTempToMySQL oder an der Datenbanktabelle arduino_sensorwerte muss nichts geändert werden.

Hinweise zu den Variablen die an die eigenen Gegebenheiten angepasst werden müssen

  • ONE_WIRE_BUS = der digitale Pin des Arduino mit dem die Datenleitung des TemperaturSensors verbunden ist,
  • DeviceAdress = die DeviceAdressen aller Temperatursensoren, Jede Adresse in einer eigenen Zeile und durch Komma getrennt,
  • mac = die MacAdresse des EthernetShields,
  • ip = die IP-Adresse, über die der Arduino ansprechbar sein soll,
  • gateway = IP-Adresse des Gateway,
  • subnet = Teilnetzmaske,
  • serverip = IP-Adresse des Servers auf dem sich das PHP-Script befindet an das die Temperatur-Werte gesendet werden soll. Diese kann man mit ping www.domainname.de herausfinden,
  • SERVERURL = Name der Domain auf der das PHP-Script liegt an das die Temperatur-Werte gesendet werden soll,
  • SERVERPATH = URL zu dem PHP-Script,
  • SERVERKEY = Kennwort das in der PHP-Datei SaveTempToMySQL.php steht,
  • USERAGENT = UserAgenten der in der PHP-Datei SaveTempToMySQL.php steht,
  • interval = Ein Wert der festlegt in welchem Intervall die Temperatur-Daten an das PHP-Script gesendet werden sollen. 58.000 steht dabei für 5 Minuten,
  • showDeviceAdresses = true wenn die DeviceAdressen der TemperaturSensoren im seriellen Monitor ausgegeben werden sollen, false wenn diese nicht angezeigt werden sollen

MySQL-Datenbanktabelle zum speichern der Temperaturwerte

arduino_sensorwerte

PHP Script zum empfangen der Temperaturdaten vom Arduino und speichern dieser Daten in die MySQL-Datenbank

SaveTempToMySQ.php

PHP Script zum senden von Kommandos an das Arduino Board

index.php Die Datei steuerung.php sollte nicht direkt aufgerufen werden wenn man Pins am Arduino schalten will. Vielmehr sollte die Datei index.php beim ersten Start geöffnet werden um direkt den Status der einzelnen Pins am Arduino erkennen zu können. Die Datei index.php prüft ob die die Session Variable firstStart gesetzt ist. Ist diese vorhanden, so wird sie gelöscht. Nur wenn die Session Variable firstStart nicht vorhanden ist, wird der Status aller Pins am Arduino, die auch in der Datei Steuerung.php angegeben sind, abgefragt und im Formular gesetzt. So kann man schon beim öffnen der Seite sehen ob ein Pin HIGH oder LOW ist, also ob z.B. eine Lampe ein- oder ausgeschaltet ist.

steuerung.php Diese Datei zeigt ein Formular an über das sich die einzelnen Pins des Arduino steuern lassen. Beschreibung der einzelnen Variablen die an die eigenen Gegebenheiten angepasst werden sollten.

  • $arduino_ip = die IP die im Arduino-Sketch hinter byte ip[] angegeben wurde. Über diese IP stellt man die Verbindung zum Arduino her.
  • $arduino_port = Der Port über den auf den Arduino zugegriffen werden soll
  • $digitalPinAnzahl = Anzahl der Pins am Arduino die geschaltet werden sollen
  • $digitalPinNummern = Array mit den Pins an denen am Arduino Verbraucher angeschlossen sind und die geschaltet werden sollen. Der Wert hinter => steht dabei für die Pin-Nummer, der Wert vor => ist ein fortlaufender Index, der bei 1 beginnen sollte.
  • $digitalPinNamen = Array mit den Namen die jedem Pin zugewiesen werden sollen. So ist es leichter diese zu unterscheiden. Im Formular werden die Namen der Pins angezeigt und nicht die Nummern.

Über Enrico S.

Programmierer, Webdesigner, Grafiker, Blogger, Screencaster, Arduino- und eMobility Enthusiast.

Kommentare geschlossen.