Einsteiger IoT Tutorial: Temperaturdaten vom Raspberry Pi streamen
„Hello World!“ – Das ist wahrscheinlich die Ausgabe des ersten Programms, das Sie je beim Programmieren lernen geschrieben haben. Ein Gerät einzurichten, das Temperaturdaten streamt, wird schnell zum de-facto Internet of Things (IoT) „Hello World!“ Projekt. Wenn das Ausdrucken von „Hello World!“ beim ersten Mal eine lange, frustrierende Aufgabe war, hätten Sie vielleicht nie ein weiteres Programm geschrieben. Ihr erstes IoT-Projekt sollte nur ein breites Grinsen auf Ihr Gesicht zaubern. Dieses spaßige, einfache Projekt führt Sie in die wunderbare Welt des IoT-Datenstreamings ein.
Ein Video-Tutorial zu diesem gesamten Projekt finden Sie unter:
https://youtu.be/HMqPbfvCshs
Benötigte Materialien:
- Ein internetverbundener Raspberry Pi oder Ihr Single-Board-Computer der Wahl.
- Ein DS18B20 Temperatursensor (https://www.adafruit.com/product/381).
- Ein Breadboard für die Verkabelung eines einfachen Schaltkreises (im Adafruit Pi Starter Kit).
- Ein 4,7K bis 10K Widerstand (ebenfalls im Adafruit Pi Starter Kit).
Schritt 1: Hardware-Setup
Der DS18B20 Temperatursensor funktioniert gut mit dem Raspberry Pi, da er einen digitalen Ausgang hat und der Pi keinen On-Board Analog-Digital-Wandler (ADC) besitzt. Raspberry Pi OS beinhaltet eine Schnittstelle zum Auslesen der Sensorausgabe. Wir müssen nur etwas Code schreiben, um die Temperatur zu erfassen und zu parsen. Adafruit hat hier ein großartiges Tutorial für die DS18B20-Nutzung, das wir einfach befolgen und modifizieren, um die Temperatur zu streamen statt nur auf dem Bildschirm auszugeben.
Das Hardware-Setup ist simpel: DS18B20 rotes Kabel an 3,3V. Schwarzes Kabel an GND. Blaues Kabel an einen Pull-Up-Widerstand und an GPIO Pin 4 Ihres Pi.
Schritt 2: Temperatur auslesen
Um die Temperatursensor-Lese-Schnittstelle zu starten, müssen wir zwei Befehle ausführen. Gehen Sie zu einer Kommandozeile auf Ihrem Pi oder SSH hinein. Tippen Sie folgende Befehle:
sudo modprobe w1-gpio sudo modprobe w1-therm
Die Ausgabe Ihres Temperatursensors wird nun in eine Datei auf Ihrem Pi geschrieben. Um diese Datei zu finden:
cd /sys/bus/w1/devices
In diesem Verzeichnis gibt es ein Unterverzeichnis, das mit „28-“ beginnt. Was nach dem „28-“ kommt, ist die Seriennummer Ihres Sensors. Wechseln Sie in dieses Verzeichnis. Darin befindet sich eine Datei namens w1_slave, die die Ausgabe Ihres Sensors enthält. Der Inhalt sieht etwa so aus:
a2 01 4b 46 7f ff 0e 10 d8 : crc=d8 YES a2 01 4b 46 7f ff 0e 10 d8 t=26125
Die Zahl nach „t=“ ist die gesuchte. Dies ist die Temperatur in 1/1000 Grad Celsius (im Beispiel oben 26,125 °C). Wir brauchen nur ein einfaches Programm, das diese Datei liest und diese Zahl parst. Glücklicherweise hat Adafruit bereits ein Python-Skript erstellt, das genau dies tut und die Temperatur auf dem Bildschirm ausgibt. Erstellen Sie eine neue Datei auf Ihrem Pi (z. B. temperature.py) und kopieren Sie folgenden Code hinein:
Hier Code ansehen
Skript ausführen (sudo python temperature.py) um die Ausgabe Ihres Temperatursensors auf dem Bildschirm zu sehen.
Schritt 3: Temperatur streamen
An diesem Punkt weichen wir vom Adafruit-Tutorial ab. Temperatur an den Bildschirm zu senden ist langweilig. Wir wollen diese Daten an einen Ort streamen, wo wir nicht nur die aktuelle Temperatur sehen, sondern einen Verlauf der erfassten Temperaturdaten (und wer will schon „eine Menge Temperaturen als Text lesen“; wir wollen eine schöne Datenvisualisierung). Zuerst den Initial State Streamer installieren, um unseren Temperaturmessungen ein Ziel zu geben (hier für Anweisungen zur Einrichtung des Initial State Streamers; es ist super einfach und dauert weniger als zwei Minuten). Wir modifizieren das obige Skript, um die Temperatur an unseren Initial State Account zu streamen statt sie auf dem Bildschirm auszugeben. Hier sind die Modifikationen:
Hier Code ansehen
Sie müssen den Client Key Ihres Initial State Accounts zwischen den Anführungszeichen in Zeile 6 einfügen, wo client_key = "" steht. Den Client Key finden Sie unter Ihren Account-Einstellungen oder auf der Landing Page nach dem Login in Ihrem Account.
Das sind die Änderungen, die wir gerade gemacht haben:
- In Zeile 4 importierten wir das Initial State Data Streamer Modul.
- In Zeile 6 erstellten wir einen neuen Bucket namens „Temperature Stream“ und verknüpften ihn mit unserem Account via Client Key.
- In Zeile 30 modifizierten wir die
read_temp()Funktion, um nur die Temperatur in Celsius zurückzugeben. - In Zeile 34 konvertierten wir die Ausgabe von
read_temp()in Fahrenheit. - In Zeile 35 und 36 streamten wir die beiden Temperaturen.
Für mehr Details: IoT 101 Project: Stream Temperature from your Raspberry Pi
Herstellungsprozess
- Raspberry Pi Temperaturlogger mit 5 $ I2C Sensor bauen
- Präzises Raspberry Pi Temperaturprofiling mit Python, SQLite und LabVIEW
- Raspberry Pi Temperatur- & Feuchtigkeits-Netzwerkmonitor – DIY Setup Guide
- Temperatur mit DS18B20 am Raspberry Pi 2 auslesen
- Professionelle Temperaturüberwachung mit Raspberry Pi und DS18B20
- Temperaturmessung mit Maxim 1-Wire Sensoren und DS2482 I2C-Bridge am Raspberry Pi
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Präzise Temperaturüberwachung im Server-Schrank mit Raspberry Pi
- Raspberry Pi BMP085: Präzise Temperatur- & Druckmessung via I2C
- Multi-Sensor Temperatur- & Licht-Überwachung mit Raspberry Pi & DS18B20