Inhaltsverzeichnis:

Wetterstation mit Raspberry Pi mit BME280 in Python - Gunook
Wetterstation mit Raspberry Pi mit BME280 in Python - Gunook

Video: Wetterstation mit Raspberry Pi mit BME280 in Python - Gunook

Video: Wetterstation mit Raspberry Pi mit BME280 in Python - Gunook
Video: Raspberry Pi Pico W: Wireless Weather Station 2024, November
Anonim
Image
Image
Unerlässliche Ausrüstungsrechnung
Unerlässliche Ausrüstungsrechnung

ist maith an scéalaí an aimir (Das Wetter ist ein guter Geschichtenerzähler)

Angesichts der Probleme der globalen Erwärmung und des Klimawandels wird das globale Wettermuster auf unserer ganzen Welt unberechenbar, was zu einer Reihe von wetterbedingten Naturkatastrophen (Dürren, extreme Temperaturen, Überschwemmungen, Stürme und Waldbrände) führt, eine Wetterstation scheint eine Notwendigkeit zu sein Böse zu Hause. Sie lernen viel über grundlegende Elektronik aus einem Wetterstationsprojekt mit einer Reihe billiger Teile und Sensoren. Es ist ziemlich einfach einzurichten und in kürzester Zeit können Sie es haben.

Schritt 1: Unerlässliche Ausrüstungsrechnung

Unerlässliche Ausrüstungsrechnung
Unerlässliche Ausrüstungsrechnung
Unerlässliche Ausrüstungsrechnung
Unerlässliche Ausrüstungsrechnung
Unerlässliche Ausrüstungsrechnung
Unerlässliche Ausrüstungsrechnung

1. Ein Himbeer-Pi

Holen Sie sich ein Raspberry Pi-Board in die Hände. Raspberry Pi ist ein Linux-betriebener Einplatinencomputer. Der Raspberry Pi ist wirklich billig, winzig und vielseitig und besteht aus einem zugänglichen und funktionalen Computer, mit dem Lernende die Grundlagen der Programmierung und Softwareentwicklung üben können.

2. I2C-Schild für Raspberry Pi

Der INPI2 (I2C-Adapter) bietet dem Raspberry Pi 2/3 einen I²C-Port zur Verwendung mit mehreren I2C-Geräten. Es ist im DCUBE Store erhältlich.

3. Digitaler Feuchtigkeits-, Druck- und Temperatursensor, BME280

Der BME280 ist ein Feuchtigkeits-, Druck- und Temperatursensor mit schneller Reaktionszeit und hoher Gesamtgenauigkeit. Wir haben diesen Sensor im DCUBE Store gekauft.

4. I2C-Verbindungskabel

Wir haben das hier im DCUBE Store erhältliche I²C-Kabel verwendet.

5. Micro-USB-Kabel

Das Micro-USB-Kabel Netzteil ist eine ideale Wahl für die Stromversorgung des Raspberry Pi.

6. Interpretieren des Internetzugangs über Ethernet-Kabel/WiFi-Adapter

Der Internetzugang kann über ein Ethernet-Kabel aktiviert werden, das mit einem lokalen Netzwerk und dem Internet verbunden ist. Alternativ können Sie über einen USB-Wireless-Dongle eine Verbindung zu einem drahtlosen Netzwerk herstellen, was eine Konfiguration erfordert.

7. HDMI-Kabel (Display- und Verbindungskabel)

Jeder HDMI/DVI-Monitor und jedes Fernsehgerät sollte als Anzeige für den Pi funktionieren. Alternativ können Sie über SSH auf den Pi remote zugreifen, ohne dass ein Monitor erforderlich ist (nur fortgeschrittene Benutzer).

Schritt 2: Hardwareverbindungen für Circuit

Hardware-Anschlüsse für Circuit
Hardware-Anschlüsse für Circuit
Hardware-Anschlüsse für Circuit
Hardware-Anschlüsse für Circuit

Stellen Sie die Schaltung gemäß dem gezeigten Schaltplan her. Im Allgemeinen sind die Verbindungen sehr einfach. Bleiben Sie ruhig und folgen Sie den Anweisungen und Bildern oben, und Sie sollten keine Probleme haben. Während des Lernens haben wir uns gründlich mit den Grundlagen der Elektronik in Bezug auf Hardware- und Softwarekenntnisse vertraut gemacht. Wir wollten für dieses Projekt einen einfachen Elektronikschaltplan erstellen. Elektronische Schaltpläne sind wie Baupläne. Erstellen Sie eine Blaupause und folgen Sie dem Design sorgfältig. Ein paar Grundbegriffe der Elektronik könnten hier hilfreich sein!

Anschluss von Raspberry Pi und I2C Shield

Nimm zuerst den Raspberry Pi und platziere das I²C Shield darauf. Drücken Sie leicht auf das Schild und wir sind mit diesem Schritt kinderleicht fertig (siehe Bild).

Anschluss von Sensor und Raspberry Pi

Nehmen Sie den Sensor und verbinden Sie das I²C-Kabel damit. Stellen Sie sicher, dass der I²C-Ausgang IMMER mit dem I²C-Eingang verbunden ist. Das gleiche gilt für den Raspberry Pi mit dem I²C-Shield, das über den GPIO-Pins angebracht ist. Wir empfehlen die Verwendung der I²C-Kabel, da dies das Auslesen von Pinbelegungen, Löten und Unwohlsein durch selbst kleinste Ausrutscher vermeidet. Mit diesem einfachen Plug-and-Play-Kabel können Sie ganz einfach Boards installieren, austauschen oder einer Anwendung weitere Boards hinzufügen.

Hinweis: Das braune Kabel sollte immer der Masseverbindung (GND) zwischen dem Ausgang eines Geräts und dem Eingang eines anderen Geräts folgen

Internet-Konnektivität ist der Schlüssel

Sie haben hier zwei Möglichkeiten. Entweder Sie können den Raspberry Pi über ein Ethernet-Kabel mit dem Netzwerk verbinden oder einen USB-zu-WLAN-Adapter für die WIFI-Konnektivität verwenden. So oder so, solange es mit dem Internet verbunden ist, sind Sie abgesichert.

Einschalten der Schaltung

Stecken Sie das Micro-USB-Kabel in die Strombuchse des Raspberry Pi. Zuschlagen und voila! Unser Kader ist Information.

Verbindung zum Bildschirm

Wir können das HDMI-Kabel entweder an einen Monitor oder an einen Fernseher anschließen. Darüber hinaus können wir auf einen Raspberry Pi zugreifen, ohne ihn per Fernzugriff mit einem Monitor zu verbinden. SSH ist ein praktisches Tool für den sicheren Fernzugriff. Sie können dafür auch die PUTTY-Software verwenden. Diese Option ist für fortgeschrittene Benutzer gedacht, daher werden wir sie hier nicht im Detail behandeln.

Es ist eine wirtschaftliche Methode, wenn Sie nicht viel ausgeben möchten

Schritt 3: Raspberry Pi-Programmierung in Python

Raspberry Pi-Programmierung in Python
Raspberry Pi-Programmierung in Python

Der Python-Code für den Raspberry Pi und den BME280-Sensor. Es ist in unserem Github-Repository verfügbar.

Bevor Sie mit dem Code fortfahren, lesen Sie die Anweisungen in der Readme-Datei und richten Sie Ihren Raspberry Pi entsprechend ein. Nur ein wenig Zeit wird Sie für den Aufbau vorbereiten. Eine Wetterstation ist eine Einrichtung, entweder an Land oder auf See, mit Instrumenten und Geräten zur Messung der atmosphärischen Bedingungen, um Informationen für Wettervorhersagen zu liefern und das Wetter und das Klima zu studieren.

Der Code liegt klar vor Ihnen und ist in der einfachsten Form, die Sie sich vorstellen können, und Sie sollten keine Probleme haben. Fragen Sie immer noch, wenn überhaupt (auch wenn Sie tausend Dinge wissen, fragen Sie immer noch jemanden, der es weiß).

Von hier aus können Sie auch den funktionierenden Python-Code für diesen Sensor kopieren.

# Wird mit einer frei wählbaren Lizenz vertrieben. # Verwenden Sie es, wie Sie wollen, gewinnbringend oder kostenlos, vorausgesetzt, es passt zu den Lizenzen der zugehörigen Werke. # BME280 # Dieser Code wurde entwickelt, um mit dem BME280_I2CS I2C Mini-Modul zu arbeiten, das von ControlEverything.com erhältlich ist. #

smbus importieren

Importzeit

# Holen Sie sich den I2C-Bus

bus = smbus. SMBus(1)

# BME280-Adresse, 0x76(118)

# Daten von 0x88(136), 24 Bytes zurücklesen b1 = bus.read_i2c_block_data(0x76, 0x88, 24)

# Konvertieren Sie die Daten

# Temp-Koeffizienten dig_T1 = b1[1] * 256 + b1[0] dig_T2 = b1[3] * 256 + b1[2] if dig_T2 > 32767: dig_T2 -= 65536 dig_T3 = b1[5] * 256 + b1[4] wenn dig_T3 > 32767: dig_T3 -= 65536

# Druckbeiwerte

dig_P1 = b1[7] * 256 + b1[6] dig_P2 = b1[9] * 256 + b1[8] wenn dig_P2 > 32767: dig_P2 -= 65536 dig_P3 = b1[11] * 256 + b1[10] wenn dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1[13] * 256 + b1[12] wenn dig_P4 > 32767: dig_P4 -= 65536 dig_P5 = b1[15] * 256 + b1[14] wenn dig_P5 > 32767: dig_P5 -= 65536 dig_P6 = b1[17] * 256 + b1[16] wenn dig_P6 > 32767: dig_P6 -= 65536 dig_P7 = b1[19] * 256 + b1[18] wenn dig_P7 > 32767: dig_P7 -= 65536 dig_P8 = b1[21] * 256 + b1[20] if dig_P8 > 32767: dig_P8 -= 65536 dig_P9 = b1[23] * 256 + b1[22] if dig_P9 > 32767: dig_P9 -= 65536

# BME280-Adresse, 0x76(118)

# Daten zurücklesen von 0xA1(161), 1 Byte dig_H1 = bus.read_byte_data(0x76, 0xA1)

# BME280-Adresse, 0x76(118)

# Daten von 0xE1(225), 7 Bytes zurücklesen b1 = bus.read_i2c_block_data(0x76, 0xE1, 7)

# Konvertieren Sie die Daten

# Feuchtigkeitskoeffizienten dig_H2 = b1[1] * 256 + b1[0] if dig_H2 > 32767: dig_H2 -= 65536 dig_H3 = (b1[2] & 0xFF) dig_H4 = (b1[3] * 16) + (b1[4] & 0xF) if dig_H4 > 32767: dig_H4 -= 65536 dig_H5 = (b1[4] / 16) + (b1[5] * 16) if dig_H5 > 32767: dig_H5 -= 65536 dig_H6 = b1[6] if dig_H6 > 127: dig_H6 -= 256

# BME280-Adresse, 0x76(118)

# Regelfeuchteregister auswählen, 0xF2(242) # 0x01(01) Humidity Oversampling = 1 bus.write_byte_data(0x76, 0xF2, 0x01) # BME280-Adresse, 0x76(118) # Regelmessregister auswählen, 0xF4(244) # 0x27(39) Druck- und Temperatur-Überabtastrate = 1 # Normalmodus bus.write_byte_data(0x76, 0xF4, 0x27) # BME280-Adresse, 0x76(118) # Konfigurationsregister auswählen, 0xF5(245) # 0xA0(00) Standby-Zeit = 1000 ms Bus.write_byte_data(0x76, 0xF5, 0xA0)

time.sleep(0.5)

# BME280-Adresse, 0x76(118)

# Daten aus 0xF7(247), 8 Bytes zurücklesen # Druck MSB, Druck LSB, Druck xLSB, Temperatur MSB, Temperatur LSB # Temperatur xLSB, Feuchte MSB, Feuchte LSB data = bus.read_i2c_block_data(0x76, 0xF7, 8)

# Druck- und Temperaturdaten in 19-Bit umwandeln

adc_p = ((data[0] * 65536) + (data[1] * 256) + (data[2] & 0xF0)) / 16 adc_t = ((data[3] * 65536) + (data[4] * 256) + (Daten[5] & 0xF0)) / 16

# Konvertieren Sie die Feuchtigkeitsdaten

adc_h = Daten[6] * 256 + Daten[7]

# Temperatur-Offset-Berechnungen

var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t)/131072.0 - (dig_T1)/8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120,0 fTemp = cTemp * 1,8 + 32

# Druck-Offset-Berechnungen

var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1.0 + var1 / 32768.0) * (dig_P1) p = 1048576.0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648.0 var2 = p * (dig_P8) / 32768.0 Druck = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# Feuchtigkeits-Offset-Berechnungen

var_H = ((t_fine) - 76800.0) var_H = (adc_h - (dig_H4 * 64,0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536,0 * (1,0 + dig_H6 / 67108864.0 * var_H * (1,0 + dig_H3 / 67_10886))) Feuchte = var_H * (1.0 - dig_H1 * var_H / 524288.0) wenn Feuchte > 100.0: Feuchte = 100.0 elif Feuchte < 0.0: Feuchte = 0.0

# Daten auf den Bildschirm ausgeben

print "Temperatur in Celsius: %.2f C" %cTemp print "Temperatur in Fahrenheit: %.2f F" %fTemp print "Pressure: %.2f hPa " %pressure print "Relative Humidity: %.2f %%" %humidity

Schritt 4: Der Laufcode

Der Laufcode
Der Laufcode

Laden Sie nun den Code herunter (oder git pull) und öffnen Sie ihn auf dem Raspberry Pi.

Führen Sie die Befehle zum Kompilieren und Hochladen des Codes auf dem Terminal aus und sehen Sie sich die Ausgabe auf dem Display an. Nach einigen Sekunden werden alle Parameter angezeigt. Nachdem Sie sichergestellt haben, dass alles gut funktioniert, können Sie weitere interessante entwickeln.

Schritt 5: Nutzung in der praktischen Welt

Der BME280 erreicht eine hohe Leistung in allen Anwendungen, die Feuchtigkeits- und Druckmessungen erfordern. Diese neuen Anwendungen sind Kontextbewusstsein, z. B. Hauterkennung, Raumveränderungserkennung, Fitnessüberwachung / Wohlbefinden, Warnung vor Trockenheit oder hohen Temperaturen, Messung von Volumen und Luftstrom, Hausautomationssteuerung, Steuerung von Heizung, Lüftung, Klimaanlage (HVAC), Internet of Things (IoT), GPS-Verbesserung (z. B. Verbesserung der Zeit bis zur ersten Fehlerbehebung, Koppelnavigation, Neigungserkennung), Indoor-Navigation (Bodenwechselerkennung, Aufzugserkennung), Outdoor-Navigation, Freizeit- und Sportanwendungen, Wettervorhersage und Anzeige der vertikalen Geschwindigkeit (Anstieg/Sink) Geschwindigkeit).

Schritt 6: Fazit

Ich hoffe, dieses Projekt inspiriert zu weiteren Experimenten. Die Herstellung einer komplexeren Wetterstation kann einige weitere Sensoren wie Regenmesser, Lichtsensor, Anemometer (Windgeschwindigkeit) usw. umfassen. Sie können sie hinzufügen und den Code ändern. Wir haben ein Video-Tutorial auf YouTube, das die grundlegende Funktionsweise des I²C-Sensors mit RasPi zeigt. Es ist wirklich erstaunlich, die Ergebnisse und das Funktionieren der I²C-Kommunikation zu sehen. Überprüfen Sie es auch. Viel Spaß beim Bauen und Lernen! Bitte lassen Sie uns wissen, was Sie von diesem instructable halten. Bei Bedarf würden wir gerne einige Verbesserungen vornehmen.

Empfohlen: