Wetterstation Anfang

Wetterstation Anfang Titelbild

Folgende Teile braucht ihr für die Anleitung

Raspberry Pi Wetterstation Kit Produktbild

Raspberry Pi Wetterstation Kit | 19.95€


Hallo und herzlich willkommen bei dem Jugend Programmiert Projekt Wetterstation .
In diesem Projekt bauen wir zusammen mit dir eine digitale Wetterstation. Dabei lernst du, wie man verschiedene Sensoren für Temperatur und Luftfeuchtigkeit ausliest und die Daten verarbeitet. Außerdem steuern wir ein Siebensegment Display an und geben auf diesem unsere Daten aus.

Inhalte Seite
Einleitung & Vorbereitung Seite 2
DS18B20 anschließen & auslesen Seite 3
DHT11 anschließen & auslesen Seite 6
Sieben Segment Display Seite 9
Daten verarbeiten Seite 13
Daten auf das Display bringen Seite 17
Ideen und Projekte Seite 20

Einleitung & Vorbereitung

Wir freuen uns, dass du dich für eines unserer Projekte entschieden hast. Wie immer gehen wir von einer frischen und aktuellen Raspbian Installation auf deinem Raspberry Pi aus. Bringe den System auf einen aktuellen Stand. Öffne ein Terminal und gebe den folgenden Befehl ein:

sudo apt-get update && sudo apt-get upgrade

Als nächstes aktivieren wir ein paar Einstellungen in der Raspberry Pi Konfiguration. Dies ist notwendig, damit der Pi ein paar GPIO Pins anders ansteuert. Dies brauchen wir für die Sensoren. Aber keine Angst, das ist ganz einfach. Gebe in deinem Terminal den Befehl ein:

sudo raspi-config

SPI für das Display

In dem Menü wählen wir zuerst Punkt Nr. 7 aus, 7 Advanced Options. Jetzt wählst du Punkt A6 SPI aus. Auf die Frage, ob wir das SPI Interface aktivieren wollen, antworten wir mit und bestätigen das mit OK .

1-Wire für den Outdoor Sensor

Im raspi-ronfig Menü gehst du wieder auf Nr. 7 Advanced Options und dort auf AA 1-Wire . Das Aktivieren des one-wire Interace bestätigen wir mit und , der Pi startet nun einmal neu.
Das war es schon. Jetzt ist dein Pi bereit, die Sensoren auszulesen.

DS18B20 - Der Outdoor Sensor

Der DS18B20 ist ein Temperatursensor, der über das One-Wire Interface ausgelesen wird. Das bedeutet, dass der Sensor nur einen GPIO Pin für die Datenübertragung braucht. Dazu kommen aber noch Strom, also + und - . Der Sensor ist wasserdicht und kann daher auch unter Wasser genutzt werden. Das gilt natürlich nur für die Spitze und das Schwarze Kabel. Am anderen Ende findest du drei Kabel in den Farben rot, schwarz und gelb. Rot ist für Strom, schwarz für Ground (minus) und über das gelbe Kabel werden die Daten übertragen. Bei dem Sensor ist auch ein 4,7kΩ (Ohm) Widerstand dabei, den werden wir gleich brauchen.

Entferne ein kleines Stück, ca. 0,5 cm der Isolierung der drei Kabel. Falls du keine Abisolierzange hast, kannst du das vorsichtig mit einem Cuttermesser machen. Jetzt nimmst du dein Breadboard und drei Jumperkabel F/M. Das steht für Male und Female, männlich und weiblich, damit ist einfach der Stecker mit Pin auf der einen und ohne Pin auf der anderen Seite gemeint. Jetzt steckst du das Kabelende ohne Isolierung in das Breadboard und fixierst es mit einem der Stecker. Wenn du mehr über die Funktionsweise des Breadboards erfahren möchtest, dann kannst du online unser Tutorial dazu schauen:
https://codingworld.io/project/gpio

Der One-Wire Sensor ist super einfach auszulesen. Alle paar Sekunden schickt der Sensor Daten an den GPIO Pin 4. Dieser überträgt die Daten in eine Datei und speichert sie auf deinem Raspberry Pi. Öffne das Terminal und gebe den folgenden Befehl ein:

cd cd /sys/bus/w1/devices/

Mit cd (Change Direcory) gehen wir in einen bestimmten Ordner. In diesem Ordner gibt es einen Ordner mit einer Nummer. Lasse dir alle Dateien und Ordner mit dem Befehl ls anzeigen. Einer der Ordner heißt 28-XXXXX. Die Nummer ist die ID deines Sensors. Jeder Sensor hat eine eigene ID und auch einen eigenen Ordner, es ist sogar möglich mehrere DS18B20 Sensoren an einem GPIO Pi an zu schließen. Wir wechseln in den Ordner des Sensors.

cd 28-XXXXXXX

In diesem Ordner gibt es eine Datei mit dem Namen w1_slave, in der stehen die Temperaturdaten. Der Befehl cat gibt den Inhalt einer Datei direkt aus. Das machen wir jetzt.

cat w1_slave

Die Ausgabe sollte so aussehen:

0a 00 4b 46 7f ff 0c 10 64 : crc=64 YES
0a 00 4b 46 7f ff 0c 10 64 t=16625

Die erste Zeile ist eine Prüfnummer, damit der Pi weiß, dass er die richtigen Daten bekommen hat. Die zweite Zeile ist die interessante. Am Ende steht dort t=16625 Das ist die Temperatur.

Natürlich wäre es immer etwas umständlich, den Ordner heraus zu suchen und sich dann die Temperatur ausgeben zu lassen. Wechsel zurück in dein Heimverzeichnis mit dem Befehl

cd


Der Terminal hat sehr viele praktische Funktionen. Es gibt auch eine, die es erlaubt, den Inhalt der w1_slave direkt auszugeben. Der Befehl dazu lautet:

cat /sys/bus/w1/devices/??-*/w1_slave

Dieser Befehl sollte auf jedem Raspberry Pi funktionieren. Die ? stehen für jedes mögliche Zeichen, der * steht für jede beliebige Zeichenfolge. Einzig das - ist fest. Es wird ein Ordner benutzt der an dritter Position ein - hat. Aus diesem Ordner wird der Inhalt der Datei w1_slave** ausgegeben.

DHT11 Luftfeuchtigkeit und Temperatur

Der zweite Sensor in unserem Kit ist der DHT11. Der Sensor kann die Temperatur und die Luftfeuchtigkeit in einem Raum messen. Um Ihn anzusprechen, müssen wir ein paar Dinge vorbereiten. Als erstes laden wir uns eine Bibliothek herunter, mit der wir den Sensor auslesen können.



git clone 
     https://github.com/coding-world/Python_DHT.git

Der Befehl lädt die ganze Bibliothek in den Ordner Python_DHT. In diesen Ordner wechseln wir mit dem Befehl:

cd Python_DHT

Jetzt installieren wir die Bibliothek mit diesem Befehl:

sudo python3 setup.py install

Die Bibliothek ist nun auf deinem PI installiert und wir können sie in unser Pythonprogramm einlesen.

Anschließen

Anschlüsse am Pi Anschlüsse am DHT
3,3V 1. Pin DHT
GPIO17 2. Pin DHT
Widerstand 4,7kΩ Zwischen 1. Pin DHT und 2. Pin DHT
GND (Ground) 4. Pin DHT

Wenn du den DS18B20 schon angeschlossen hast, wirst du merken, dass GPIO Pin 4 schon belegt ist. Deswegen verbinden wir die Datenleitung des DHT11 mit dem GPIO Pin 17 !

  • Zwischen dem 1. und dem 2. Pin am DHT musst du noch einen Widerstand anschließen. Das dient nicht nur zur Stromversorgung des Sensors, sondern auch dazu, dass dieser Messwerte liefern kann, die akkurater sind. Am besten eignet sich dafür der Widerstand mit 4,7kΩ. Widerstände erkennst du an ihrem aufgemalten Farbcode. Beim 4,7kΩ lautet dieser: Gelb, Lila, Schwarz, Braun und Gold.

Bitte achte genau darauf, den Sensor in dieser Reinfolge anzuschließen! Wenn du den 3,3V und den GND Pin verwechselst, kommt es zu einem Kurzschluss und der Sensor kann dadurch kaputt gehen und sehr sehr warm werden. Achte darauf! Solltest du bemerken, dass der Sensor unnnormal warm wird oder sich sogar das Plastik verbiegt, schalte sofort deinen Raspberry Pi aus oder entferne die Verbindung zwischen dem Breadboard und dem Sensor!

Wenn du alles richtig angeschlossen hast, können wir den Sensor auslesen. Dafür erstellen wir eine neue Datei und schreiben ein kleines Script zum Testen.

nano dht11_einfach.py

Das unbeschriebene Blatt mit Code füllen…

import Python_DHT

sensor = Python_DHT.DHT11
pin = 17
feuchtigkeit, temperatur = Python_DHT
                  .read_retry(sensor, pin)
print("Temperatur = "+str(temperatur)+ 
                  "C Feuchtigkeit = "+str( feuchtigkeit)+"%")

Am Anfang binden wir wie immer die benötigte Bibliothek ein. In Zeile 3 erstellen wir eine Variable namens sensor und speichern in ihr einfach nur die Art des Sensors, den wir auslesen möchten. In unserem Fall ist das der DHT11.

In Zeile 4 legen wir den Pin am Pi fest, den wir nutzen möchten.

In Zeile 5 lernst du wieder etwas Neues. Man kann nämlich auch mehrere Variablen durch ein Komma getrennt hintereinander erzeugen und ihnen hinter dem Gleichheitszeichen, wieder durch Kommata getrennt, verschiedene Werte zuweisen. In diesem Fall geben wir mit der Funktion .read_retry() an, welchen Sensor und welchen Pin wir nutzen wollen.

Ab Zeile 7 geben wir wie gewohnt alle Informationen in der Konsole aus.

In Zeile 5 auf 6 und in Zeile 7 auf 8 gibt es Drucktechnischen gründen einen Zeilenumbruch.

Führe deinen Code aus mit diesem Befehl:

 python3 dht11_einfach.py

Die Ausgabe sollte ungefähr so aussehen:

Temperatur = 19.0°C Feuchtigkeit = 21.0%

Falls es zu Fehlern kommt, kontrolliere bitte ob du die Bibliothek mit dem Befehl sudo python**3** installiert hast und der Sensor richtig verbunden ist.

Noch Fragen oder Feedback?

Bevor du eine Frage stellen kannst musst du dich zuerst Anmelden oder Regestrieren!