Original-URL des Artikels: https://www.golem.de/news/mitmachprojekt-temperatur-messen-und-senden-mit-dem-particle-photon-1604-120240.html    Veröffentlicht: 22.04.2016 10:24    Kurz-URL: https://glm.io/120240

Mitmachprojekt

Temperatur messen und senden mit dem Particle Photon

Die Bürotemperatur messen und ins Internet übertragen - mit ein wenig Code und preiswerten Bauelementen geht das mit einem kleinen WLAN-Modul. Wir zeigen, wie es funktioniert.

Der Particle Photon ist ein kleines WLAN-fähiges Microcontroller-Modul, mit dem auch Einsteiger Sensordaten erheben und über das Internet bereitstellen können. Der Hersteller empfiehlt dabei zwar den Einsatz seiner Webservices, aber auch beliebige Zugriffe auf andere Server sind möglich. In unserer Anleitung zeigen wir, wie mit einem Sensor die Temperatur gemessen und der Wert an einen Internetserver übermittelt wird. Fehler werden dabei mit Hilfe einer LED angezeigt. Mit dem fertigen Aufbau kann der Leser an unserem großen Projekt zur Messung der Bürotemperatur teilnehmen.

Der Particle Photon, ursprünglich Spark Photon, wurde erstmals Ende 2014 durch eine Kickstarter-Kampagne bekannt. Das Modul kombiniert einen leistungsfähigen Mikrocontroller mit einem WLAN-Chip. Der Preis für das Modul liegt bei circa 20 Euro in Deutschland, ein Einsteigerset inklusive Steckbrett, Kleinmaterial und fertig aufgelöteten Stiftleisten kostet um die 30 Euro. Der Hersteller hat mittlerweile auch den Particle Electron im Angebot, der vollständig kompatibel zum Photon sein soll, aber über das Mobilfunknetz senden kann statt per WLAN.

Die Liste der erforderlichen Bauelemente ist kurz, es gibt sie für wenig Geld bei allen Elektronikhändlern:



Wer das Einsteigerset für den Photon kauft, muss sich um das Steckbrett und die LED mit zugehörigem Widerstand nicht kümmern, da diese enthalten sind.



Das Steckbrett vorbereiten



Der Photon wird einfach an einer der Enden des Steckbretts eingesteckt. Dabei sollte der Micro-USB-Anschluss nach außen zeigen. Als Nächstes muss die Stromversorgung auf dem Steckbrett hergestellt werden. Es verfügt am Rand üblicherweise über zwei Leisten, die jeweils mit einer roten und einer blauen Linie markiert sind. Die Leiste mit der blauen Linie verbinden wir mit einem der Pins des Photons, die mit GND markiert sind. Die Leiste mit der roten Linie wird mit dem Pin verbunden, welcher die Markierung 3V3 trägt.

Den DS18B20 und die LED anschließen

Einige Informationen zum Temperatursensor DS18B20 haben wir bereits in einem identischen Artikel für den Aufbau mit dem Raspberry Pi vermittelt. Dort ist auch der Aufbau der Schaltung umfangreich beschrieben, der sich beim Particle Photon nicht wesentlich unterscheidet. Wir benutzen hier nur andere Pins, um die Schaltung mit dem Mikrocontroller zu verknüpfen: Die Datenleitung vom mittleren Beinchen des DS18B20 muss mit dem Pin D4 des Photon verbunden werden. Das lange oder abgeknickte Beinchen der LED (die Anode) wird mit Pin D5 verbunden.

Den Photon mit dem WLAN verbinden

Einer der Vorteile des Photon ist die einfache Einbindung ins eigene Netzwerk, dazu ist eine Smartphone-App der Herstellers erforderlich. Zuerst muss aber der Photon über die Micro-USB-Buchse mit Strom versorgt werden. Ein Anschluss an einen Computer ist dazu nicht notwendig, ein Netzteil reicht. Jetzt kann die App gestartet werden, für die weitere Einrichtung ist leider eine Anmeldung erforderlich. Der weitere Vorgang wird ausführlich vom Hersteller beschrieben.

Den Photon programmieren

Für die Programmierung ist natürlich ein Computer notwendig. Allerdings müssen keine Programme heruntergeladen und der Photon muss nicht mit dem Computer verbunden werden. Der Hersteller stellt eine Online-IDE bereit, das Programm wird per WLAN auf den Photon übertragen. Als Programmiersprache kommt Wiring wie beim Arduino zum Einsatz. Der Hersteller stellt allerdings einige zusätzlich Funktionen für die WLAN-Funktionalität und den Internetzugriff zur Verfügung.

Das Login für die Online-IDE ist identisch mit dem Login in der Smartphone-App. Zuerst muss ein neues Programm erzeugt werden, in dem einfach ein App-Name eingegeben wird.

Dann müssen zwei Bibliotheken eingebunden werden. Dazu ist ein Klick auf das Libraries-Icon notwendig. Über die Suchfunktion wird nach der One-Wire-Bibliothek und der Spark-Dallas-Temperature-Bibliothek gefahndet. Durch einen Klick auf den jeweiligen Bibliotheksnamen erscheint der Button "Include in app". Beim Klick darauf kommt die Frage, in welche App die Bibliothek eingebunden werden soll. Hier wird die App ausgewählt, welche eingangs angelegt wurde.



Das Programm schreiben



Das eigentliche Programm ist bemerkenswert kurz, den erforderlichen Code haben wir vollständig auf Github zur Verfügung gestellt. Wir gehen hier nur auf die wichtigsten Details ein.

Neben den beiden bereits oben eingebundenen Bibliotheken ist auch die Http-Client-Bibliothek erforderlich. Darüber wickeln wir später die Serverabfrage ab.

#include "HttpClient/HttpClient.h" #include "OneWire/OneWire.h" #include "spark-dallas-temperature/spark-dallas-temperature.h"

Danach werden einige Konstanten definiert:

#define ONE_WIRE_BUS D4 #define LED D5 #define URL ""

Die ersten beiden Konstanten geben die Pins an, an denen der Temperatursensor und die LED angeschlossen sind. Mit der dritten Konstante wird die URL angegeben, mit welcher der Temperaturwert übermittelt wird. Auf der Dokumentationsseite für unser Projekt steht ein Formular bereit, um die URL einfach zu erzeugen. Im Formular müssen die Optionen "Servername in die URL einfügen" und "Temperatur einfügen" ausgewählt werden, die übrigen Parameter nach Wunsch.

Programm initialisieren

Als Nächstes werden die Bibliotheken für den Temperatursensor initialisiert und die Variablen für die Serverabfrage:

OneWire ds(ONE_WIRE_BUS); DallasTemperature dt(&ds); HttpClient http; http_request_t request; http_response_t response;

Die nachfolgende setup()-Methode wird vom Photon am Anfang einmal ausgeführt. Auch hier nehmen wir nur eine Initialisierungen und Wertzuweisungen vor. Der pinMode()-Aufruf sorgt dafür, dass später die LED mit Strom versorgt werden kann.

void setup() { pinMode(LED, OUTPUT); request.hostname = SERVER; request.port = 80; }



Temperatur messen und senden



Die eigentliche Arbeit des Programms wird in der loop()-Funktion getätigt. Sie wird vom Photon kontinuierlich ausgeführt, solange er mit Strom versorgt wird. Sie besteht aus zwei Teilen: Im ersten Teil wird geprüft, ob die Variable errormode den Wert 1 besitzt. Ist dies der Fall, ist irgendwann ein Fehler aufgetreten. Dann blinkt die LED viermal.

if(1 == errormode) { for(int i = 0; 4 > i; i++) { digitalWrite(LED, HIGH); delay(500); digitalWrite(LED, LOW); delay(500); } }

Im zweiten Teil der loop()-Funktion wird zuerst geprüft, ob seit dem letzten Aufruf der Funktion mehr als 30 Minuten vergangen sind. In dem Fall wird die Temperatur-Bibliothek angewiesen, den aktuellen Temperaturwert vom Sensor zu erfragen und den Wert in Grad Celsius zu liefern. Mit dem Temperaturwert und der URL-Konstante wird dann die HTTP-Anfrage an den Golem.de-Server erzeugt und schließlich mit dem Aufruf http.get() abgeschickt.

if(millis() > nextTime) { dt.requestTemperatures(); float ct = dt.getTempCByIndex(0); String path = String::format(URL, ct); request.path = path; request.body = ""; http.get(request, response, headers); if(200 == response.status) { errormode = 0; } else { errormode = 1; } nextTime = millis() + 1000 * 60 * PERIOD; }

Wenn die Abfrage keinen Erfolg hatte, wird das als Fehler gewertet: Das kann passieren, wenn die URL falsch aufgebaut war, fehlerhafte Werte enthielt, oder keine WLAN-Verbindung bestand. Zum Schluss wird noch berechnet, wann die Messung das nächste Mal erfolgen soll.

Jetzt zum Freizeitforscher werden

Mit dem Schaltungsaufbau und fertig programmierten Particle Photon ist alles beisammen, um an unserem großen Projekt teilzunehmen: "Wie warm ist es in euren Büros?". Wir hoffen, dass möglichst viele Bastler mitmachen - jetzt vielleicht auch Du?

In dieser Serie bisher veröffentlichte Anleitungen:



 (am)


Verwandte Artikel:
US Air Force: Biegbares Arduino-Board für die Uniform oder den Jetflügel   
(12.02.2018, https://glm.io/132721 )
Android-App für Raspberry programmieren: werGoogelnKann (kann auch Java)   
(23.08.2017, https://glm.io/129559 )
Deutsche Telekom: Tarif für IoT-Einsteiger beträgt 10 Euro für 10 Jahre   
(28.02.2018, https://glm.io/133056 )
Mitmachprojekt: HTTPS vermiest uns den Wetterbericht   
(10.08.2017, https://glm.io/129378 )
Mitmachprojekt: Frostbeulen, zieht nach Österreich!   
(08.03.2017, https://glm.io/126288 )

© 1997–2019 Golem.de, https://www.golem.de/