← Raspberry-Projekte Udo Müller

Projekt 04 · Sensorik

Wetterdaten mit BME280 messen.

Temperatur, Luftfeuchtigkeit und Luftdruck erfassen und regelmäßig in einer CSV-Datei protokollieren.

Mittel 120 Minuten I²C & Python
Schritt 01

Das brauchst du

  • Raspberry Pi mit GPIO
  • BME280 Breakout Board
  • Vier Jumper-Kabel
  • Breadboard optional
  • Raspberry Pi OS
  • Belüftetes Gehäuse
Nur 3,3 Volt verwenden und Beschriftung des konkreten Moduls prüfen.
Schritt 02

Sensor verkabeln

  • VIN → 3V3, physischer Pin 1
  • GND → Masse, Pin 6
  • SDA → GPIO 2, Pin 3
  • SCL → GPIO 3, Pin 5

Pi vor Änderungen an der Verkabelung ausschalten.

Schritt 03

I²C aktivieren

sudo raspi-config
# Interface Options → I2C → Enable
sudo reboot
sudo apt update
sudo apt install -y i2c-tools python3-venv python3-pip
sudo i2cdetect -y 1

Der Sensor erscheint meist unter 0x76 oder 0x77.

Schritt 04

Messprogramm

python3 -m venv ~/weather-venv
~/weather-venv/bin/pip install adafruit-blinka adafruit-circuitpython-bme280
mkdir -p ~/weather
nano ~/weather/read.py

Code für read.py:

from datetime import datetime
import csv, board
from adafruit_bme280 import basic as bme

sensor = bme.Adafruit_BME280_I2C(board.I2C())
row = [datetime.now().isoformat(timespec="seconds"), round(sensor.temperature,1), round(sensor.relative_humidity,1), round(sensor.pressure,1)]
with open("/home/BENUTZER/weather/data.csv","a",newline="") as f:
csv.writer(f).writerow(row)
print(row)
~/weather-venv/bin/python ~/weather/read.py
cat ~/weather/data.csv
Schritt 05

Alle fünf Minuten messen

crontab -e
*/5 * * * * /home/BENUTZER/weather-venv/bin/python /home/BENUTZER/weather/read.py >> /home/BENUTZER/weather/weather.log 2>&1
  • Sensor bei i2cdetect sichtbar
  • Messwerte plausibel
  • CSV wächst alle fünf Minuten
  • Sensor vor Sonne und Regen geschützt
Für Außenmessungen ein belüftetes Strahlungsschutzgehäuse verwenden.
Quelle

Dokumentation

Raspberry Pi GPIO ↗