Luftfeuchtigkeit, Temperatur und Druck sind drei grundlegende Parameter, um eine Wetterstation zu bauen und die Umgebungsbedingungen zu messen. Wir haben zuvor eine Mini-Wetterstation mit Arduino gebaut und dieses Mal erweitern wir die Wetterstation mit Raspberry Pi. Dieses IoT-basierte Projekt zielt darauf ab, die aktuellen Parameter für Luftfeuchtigkeit, Temperatur und Druck auf dem LCD sowie auf dem Internet-Server mithilfe von Raspberry Pi anzuzeigen, was es zu einer Raspberry Pi-Wetterstation macht. Sie können dieses Setup überall installieren und die Wetterbedingungen dieses Ortes von überall auf der Welt über das Internet überwachen. Es zeigt nicht nur die aktuellen Daten an, sondern auch die vergangenen Werte in Form von Diagrammen.
Wir haben den Feuchtigkeits- und Temperatursensor DHT11 zur Erfassung der Temperatur und das Drucksensormodul BM180 zur Messung des Luftdrucks verwendet. Dieses Thermometer mit Celsius-Skala und das Feuchtigkeitsmessgerät mit Prozentskala zeigen die Umgebungstemperatur und Luftfeuchtigkeit über ein LCD-Display an. Der Luftdruck wird in Millibar oder hPa (Hektopascal) angezeigt. Alle diese Daten werden zur Live-Überwachung von überall auf der Welt über das Internet an den ThingSpeak- Server gesendet. Überprüfen Sie das Demonstrationsvideo und das Python-Programm am Ende dieses Tutorials.
Arbeits- und ThingSpeak-Setup:
Dieses IoT-basierte Projekt besteht aus vier Abschnitten. Zunächst erfasst der DHT11-Sensor die Feuchtigkeits- und Temperaturdaten und der BM180-Sensor den atmosphärischen Druck. Zweitens liest Raspberry Pi die Ausgabe des DHT11-Sensormoduls mithilfe des Single-Wire-Protokolls und die Ausgabe des BM180-Drucksensors mithilfe des I2C-Protokolls und extrahiert beide Sensorwerte in eine geeignete Zahl in Prozent (Luftfeuchtigkeit), Celsius-Skala (Temperatur), HektoPascal oder Millibar (Druck).. Drittens werden diese Werte mithilfe des integrierten Wi-Fi von Raspberry Pi 3 an den ThingSpeak-Server gesendet. Und schließlich analysiert ThingSpeak die Daten und zeigt sie in grafischer Form an. Ein LCD wird auch verwendet, um diese Werte lokal anzuzeigen.
ThingSpeak bietet ein sehr gutes Tool für IoT-basierte Projekte. Mithilfe der ThingSpeak-Website können wir unsere Daten überwachen und unser System über das Internet mithilfe der von ThingSpeak bereitgestellten Kanäle und Webseiten steuern. ThingSpeak 'sammelt' die Daten von den Sensoren, 'analysiert und visualisiert' die Daten und 'handelt', indem es eine Reaktion auslöst. Wir haben zuvor ausführlich erklärt, wie Daten an ThingSpeak gesendet werden. Sie können dies dort überprüfen. Hier erklären wir kurz, wie ThingSpeak für diese Raspberry Pi-Wetterstation verwendet wird.
Zuerst müssen Sie ein Konto auf der ThingSpeak-Website erstellen und darin einen neuen Kanal erstellen. In einem neuen Kanal müssen Sie einige Felder für die Daten definieren, die Sie überwachen möchten. In diesem Projekt werden drei Felder für Feuchtigkeits-, Temperatur- und Druckdaten erstellt.
Klicken Sie nun auf die Registerkarte "API-Schlüssel" und speichern Sie die API-Schlüssel " Schreiben" und "Lesen". Hier verwenden wir nur den Schlüssel "Schreiben". Sie müssen diesen Schlüssel in die Variable 'key' im Code kopieren.
Klicken Sie anschließend auf "Datenimport / -export" und kopieren Sie die Update Channel Feed GET-Anforderungs-URL:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Jetzt benötigen wir diese 'Feed Get Request URL' in unserem Python-Code, um "api.thingspeak.com" zu öffnen und dann Daten mit dieser Feed Request als Abfragezeichenfolge zu senden. Bevor Sie Daten senden, muss der Benutzer die Temperatur-, Feuchtigkeits- und Druckdaten in diese Abfragezeichenfolge mithilfe von Programmvariablen eingeben. Überprüfen Sie den Code am Ende dieses Artikels.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (Druck)
Die Arbeitsweise von DHT11 basiert auf der seriellen Einleitungskommunikation zum Abrufen von Daten von DHT11. Hier haben wir die AdaFruit DHT11-Bibliothek verwendet, um DHT11 mit Raspberry Pi zu verbinden. Raspberry Pi sammelt hier die Feuchtigkeits- und Temperaturdaten von DHT11 und den Luftdruck vom BMP180-Sensor und sendet sie dann an das 16x2-LCD und den ThingSpeak-Server. ThingSpeak zeigt die Daten in Form eines Diagramms wie folgt an:
Weitere Informationen zum DHT11-Sensor und seiner Schnittstelle zu Arduino finden Sie hier.
Schaltplan:
Raspberry Pi Konfiguration und Python Programm:
Wir verwenden hier die Python-Sprache für das Programm. Vor dem Codieren muss der Benutzer Raspberry Pi konfigurieren. In unseren vorherigen Tutorials finden Sie Informationen zu den ersten Schritten mit Raspberry Pi und zum Installieren und Konfigurieren von Raspbian Jessie OS in Pi.
Zunächst müssen wir die Adafruit Python DHT-Sensorbibliotheksdateien installieren, um dieses Projekt auf Raspberry Pi auszuführen. Dazu müssen wir den angegebenen Befehlen folgen:
sudo apt-get install git-core sudo apt-get update git klon https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT
Danach muss der Benutzer Raspberry Pi I2C aktivieren, indem er auch in die RPi-Softwarekonfiguration geht:
sudo raspi-config
Gehen Sie dann zu "Erweiterte Optionen", wählen Sie "I2C" und "Aktivieren".
Die Programmierung eines Teils dieses Projekts spielt eine sehr wichtige Rolle für die Ausführung aller Operationen. Zunächst schließen wir alle erforderlichen Bibliotheken ein, initiieren Variablen und definieren Pins für LCD und DHT11.
import sys import RPi.GPIO als GPIO import os importieren Adafruit_DHT importieren urllib2 importieren smbus importieren von ctypes importieren c_short #Register Address regCall = 0xAA……………..
In der Funktion def main (): wird der folgende Code verwendet, um die Daten an den Server zu senden und sie kontinuierlich in der while- Schleife über dem LCD anzuzeigen.
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." während True: (humi, temp) = readDHT () (Druck) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (Temp, Druck)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (Druck) print finalURL s = urllib2.urlopen (finalURL); print humi + "" + temp + "" + druck s.close () time.sleep (10)
Für LCD wird die Funktion def lcd_init () verwendet, um das LCD im Vier-Bit-Modus zu initialisieren, die Funktion def lcdcmd (ch) wird zum Senden des Befehls an das LCD verwendet, die Funktion def lcddata (ch) wird zum Senden von Daten an das LCD und die Funktion def lcdstring (Str ) Funktion wird verwendet, um eine Datenzeichenfolge an das LCD zu senden. Sie können alle diese Funktionen im nachfolgenden Code überprüfen.
Die angegebene Funktion def readDHT () wird zum Lesen des DHT11-Sensors verwendet:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
Die Funktion def readBmp180 wird zum Ablesen des Drucks vom BM180-Sensor verwendet. Der BM180-Sensor kann auch die Temperatur anzeigen, aber hier haben wir ihn nur zur Berechnung des Drucks verwendet.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Kalibrierungsdaten lesen # Byte-Daten in Wortwerte konvertieren AC1 = convert1 (Wert, 0) AC2 = convert1 (Wert, 2) AC3 = convert1 (Wert 4) AC4 = convert2 (Wert 6)……………………..
Dies ist also die grundlegende Raspberry Pi-Wetterstation. Sie können sie weiter erweitern, um verschiedene wetterbezogene Parameter wie Windgeschwindigkeit, Bodentemperatur, Beleuchtungsstärke (Lux), Niederschlag, Luftqualität usw. zu messen.