Benutzer-Werkzeuge

Webseiten-Werkzeuge


temperatur_luftfeuchtigkeit_druck

Dies ist eine alte Version des Dokuments!


Temperatur,Luftfeuchtigkeit, Luftdruck (BME280)

Einige Monate lag der BME280rum. Jetzt Bastellaune gehabt - und es hat nichts mit der Corona-Pandemie zu tun! Anschluß nur von 4 Pins und 3.3V (wegen I2C). Man kann ihn auch mit SPI anschliessen. Dafür dann die anderen Pins. Auf meinem Prototype-Hat erst nur Pin '27' gefunden, da es ja an Pin 27,28 angeschlossen werden sollte. Fehler rechtzeitig bemerkt! Musste es an die Pins SDA und SDL anschliessen. Bei den ganzen Bildern der Pins im Internet muss man auf die Sicht achten. Man schaut wohl 'von unten' drauf.

Man muss I2C im Raspberry erst in raspi-config aktivieren, installieren alleine reicht nicht.

sudo raspi-config
(Interfacing options (5)->P5 I2C Enablen)

sudo nano /etc/modules
i2c-bcm2708
i2c-dev

sudo apt-get install i2c-tools

sudo /boot/config.txt
dtparam=i2c_arm=on
dtoverlay=i2c-gpio,bus=4,i2c_gpio_delay_us=1,i2c_gpio_sda=8,i2c_gpio_scl=27

sudo i2cdetect -y 3
(dann steht irgendwo, welches device er gefunden hat)

sudo i2cdump -y 3 0x76 b
(die 0x76 entspricht der Zahl aus dem i2cdetect)

sudo i2cget -y 3 0x76 0x80 w
(um die zwei Bytes an der Position 0x80 zu lesen)

Auslesen mit Python: Man muss entweder smbus oder smbus2 installieren.

sudo apt-get install python-smbus


sudo pip install smbus2
sudo pip install RPi.bme280
Sollte ein Fehler ('extras_require') kommen, muss man erst:
sudo pip install --user --upgrade setuptools

Mit smbus muss man die Daten erst aufwändig lesen und zusammensetzen. Mit smbus2 geht es in wenigen Zeilen, allerdings mit python3.

sudo python3 bme280_smbus2.py

import smbus2
import bme280

port = 1
address = 0x76
bus = smbus2.SMBus(port)

calibration_params = bme280.load_calibration_params(bus, address)

# the sample method will take a single reading and return a
# compensated_reading object
data = bme280.sample(bus, address, calibration_params)

# the compensated_reading class has the following attributes
print(data.id)
print(data.timestamp)
print(data.temperature)
print(data.pressure)
print(data.humidity)

# there is a handy string representation too
print(data)

Wie man andere Pins als I2C nutzt (Overlay): https://www.instructables.com/id/Raspberry-PI-Multiple-I2c-Devices/

#i2cget -y 0 0x4d 0x00 b -y to force Yes to the question ask by default 0 is the i2c bus number 0x4d is the address of the sensor 0x00 is the address for the temperature b is to read a byte https://www.disk91.com/2013/technology/hardware/raspberry-pi-gpio-and-temperature-sensor/

https://raspberry-projects.com/pi/programming-in-python/i2c-programming-in-python/using-the-i2c-interface-2

overlay benutzen, um 2 andere Pins her zu nehmen!

in boot/conf.txt was eingebaut (damit eeprom Pins gehen) - wird aber auch von der camera genutzt - schlechte ideee

sudo apt install python-smbus damit sudo python bme280.py geht

Chip ID : 96 Version : 0 Temperature : 27.47 C Pressure : 955.338436247 hPa Humidity : 29.3145882492 %

sudo i2cdump -y 0 0x76 b muss was anzeigen

temperatur_luftfeuchtigkeit_druck.1584821826.txt.gz · Zuletzt geändert: 2020/03/21 20:17 von varnholt