Diese Variante findet im Dachgeschoss meines Hauses Verwendung.
Hardware Basis
Hardware Liste:
1 Arduino Uno (bei mir ein R3 kompatibles Board) samt USB-Anschlusskabel
1 Arduino Ethernet Shield
1 BMP-180 (BMP-085 geht auch) Sensor zur Messung von Temperatur und Luftdruck
Als Hardware Basis, um Sensoren in meine Messung einzubinden, verwende ich einen Arduino Uno R3, Kosten im 1-stelligen EUR-Bereich, wenn man China Klone wie z.B. in ebay erhälltich, verwendet).
Nun müssen die Daten auch noch ins Internet übertragen werden. Gottseidank bot sich bei mir auch bei dieser Temperaturmessstation eine direkte Anbindung an einen vorhandenen Router an. Ich verwende somit ein Arduino Ethernet Shield („Shield“ nennen sich die „Huckepack“-Boards, die auf andere Arduinos aufgesteckt werden können). Als China Klon um unter 10 EUR erhältlich. Mit diesem Shield habe ich sehr gute Erfahrungen hinsichtlich Stabilität gemacht. Wenn kein Switch in der Nähe vorhanden gewesen wäre, wäre auch die Verwendung eines Wifi Shields denkbar gewesen, mit welchem ich allerdings stabilitätstechnisch keine sehr guten Erfahrungen gemacht habe – dazu aber später.

Als Sensor verwende ich einen BMP-180, der sowohl Temperatur als auch Luftdruck messen kann. Der BMP-180 ist der Nachfolger des BMP-085, der genauso gut verwendet werden kann und pinkompatibel ist. Der BMP-180 kostete mich in ebay ganze 1,45 EUR und wurde nach einigen Wochen aus China geliefert…

Verdrahtungsschema
Code
Wenn man nun noch das Thingspeak Tutorial zum Einbinden eines Arduino Boards als Referenz heranzieht und den entsprechenden Code anpasst, kommt man dann sehr schnell zum gewünschten Ergebnis.
Hier nun mein Arduino Code im PDF Format aus Codebender bzw. im Word Format (der Text kann direkt in die Arduino Software oder in Codebender kopiert werden) – ein paar Extra Erklärungen hier – die Zeilennummern beziehen sich auf die Zeilennummern im PDF-Code:
Nach dem allgemeinen Teil des Programms werden in Zeilen 36 bis 40 die libraries inkludiert. Die ersten 4 libraries sind Codebender bereits bekannt, die BMP-085 library, die die Arbeit mit dem BMP-180 (kein Schreibfehler, beide Module sind kompatibel) Modul erleichtert, gibt es hier zum Download – sie kann in Codebender eingebunden werden.
Zeile 42: Hier ist die Höhe der Messstation über dem Meeresspiegel als Referenz anzugeben
Zeile 44-48: Bei meinem Programm findet alle 30 sec eine Messung statt. Nur wenn sich der gemessene Temperaturwert vom letzten gemessenen Wert um min 0,2 °C (ERKENNUNGSSCHWELLE) unterscheidet, wird dieser Wert alle 5 min (updateThingSpeakInterval) in thingspeak.com gespeichert. Wenn der Unterschied zum letzten Wert < 0,2 °C beträgt, wird kein Wert gespeichert. Sollte der Wert sehr lange konstant bleiben, wird alle 30 min (maxThingSpeakInterval) ein Wert gespeichert. All dies dient dazu, die Datenmenge in Thingspeak nicht explodieren zu lassen.
Zeile 53: Hier ist der eigene API-Key, den man bei der Registrierung in Thingspeak erhält, einzutragen
Zeile 65-67: Hier sind IP-Adressen des Ethernet Shields und des Gateway Routers sowie die Subnet Adresse einzutragen
Zeile 76: wird nicht benötigt
Zeile 84-91: Hier werden Vorhandensein und Funktion des Ethernet Shields getestet, wenn irgendetwas nicht funktioniert, stoppt das Programm hier
Zeile 93-100: Zeigt die aktuelle IP Adresse auf der seriellen Ausgabe an
Zeile 107-112: Wenn noch irgendwelche Meldungen auf dem Ethernet Client vorhanden sind, werden diese hier ausgegeben. ACHTUNG: Im originalen Code lt. Thingspeak Tutorial befand sich ein Fehler (es war ein IF statt dem WHILE vorhanden)
Zeile 114-120: Wenn der Client noch mit Thingspeak verbunden ist, wird die Verbindung hier getrennt
Zeile 122-124: Hier wird der alle 50 Tage vorkommende Überlauf der Arduino Zeit korrigiert
Zeile 127: Durchlauf dieses Programmteils nur alle 5 min
Zeile 131-132: Einlesen von Temperatur und Luftdruck
Zeile 134: Ausgabe zu Thingspeak wird nur nach Temperaturänderung um min. 0,2 °C oder Überschreitung von 30 min seit letzter Datenübermittlung gestartet
Zeile 138-139: Wandelt die numerischen Werte für die Ausgabe auf Thingspeak in formatierte Strings um
Zeile 142: Start der Ausgabe zu Thingspeak
Zeile 150-155: Wenn sich das Ethernet Shield mal aufhängen sollte, wird hier ein Neustart durchgeführt
Zeile 160-197: In dieser Prozedur erfolgt die eigentliche Ausgabe auf Thingspeak, diese Zeilen sind gegenüber dem Tutorial auf der Thingspeak-Seite unverändert.
Foto der Schaltung
Wenn man das ganze mal in Betrieb genommen hat, sieht das Ergebnis wie folgt aus:
Foto der Schaltung mit BMP-180 Sensor
Ethernet Kabel und Stromversorgung über USB
Mein Router darf auch gleich den Arduino über USB mit Strom versorgen
So sieht dann das Ergebnis auf Thingspeak.com aus (Detail). Hier ein Live Link zu meinen gesamten Messdaten.
Zusammenfassung
Kosten: Max. 30-40 EUR inkl. Arduino Uno, Ethernet Shield und BMP-180 Sensor.
Aufwand: Wenn keine Änderungen an der Software durchgeführt werden, sollte das in wenigen Stunden komplett machbar sein (exkl. Registrierung bei Codebender und Thingspeak)
Voraussetzungen: Ein wenig elektrotechnische und/oder IT-Kenntnisse schaden nicht, um den Umgang mit einem Arduino Board, das Software uploaden etc. in kurzer Zeit bewerkstelligen zu können, man kann sich aber auch ohne diese Kenntnisse in die Materie einlesen. Hierzu wird das Studium einer oder auch mehrerer Arduino Einführungen im Internet empfohlen.
Genauigkeit: Lt. BMP-180 Hersteller bei 25°C bis zu +/- 1,5°C, Druck -4 bis +2 hPa. Ich habe die Schaltung mit einem Digitalthermometer bei mir zuhause abgeglichen – die Abweichung war bei mir genau 0,0°C, dies hätte man ansonsten aber einfach mit einem Korrekturfaktor in der Software korrigieren können. Wichtiger als die Genauigkeit ist mir, dass sich all meine Temperaturmessungen auf dasselbe Referenzniveau beziehen d.h. direkt vergleichbar sind.
Referenzen:
– Plattform für die Kodierung: www.codebender.com
– Internet of Things Platform für Temperaturdatenspeicherung und -visualisierung: www.thingspeak.com
– Lieferanten für Hardware: Ebay, Amazon und viele andere
Ein Gedanke zu “Messung von Innentemperatur und Luftdruck mit einem BMP-180 Sensor”