temperatur_luftfeuchtigkeit_druck
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
temperatur_luftfeuchtigkeit_druck [2020/03/21 14:31] – varnholt | temperatur_luftfeuchtigkeit_druck [2021/02/26 16:39] (aktuell) – varnholt | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
===== Temperatur, | ===== Temperatur, | ||
- | Einige Monate lag der[[https:// | + | Einige Monate lag der[[https:// |
- | 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 ' | + | Anschluß nur von 4 Pins und **3.3V** (wegen I2C). Man kann ihn auch mit SPI anschliessen. Dafür dann die anderen Pins. |
+ | |||
+ | **Fehler**: | ||
+ | **Meine Pins waren belegt. Ich musste mittels Overlay (s.u.) zwei andere Pins nehmen ([[gpio|GPIO27, | ||
Man muss I2C im Raspberry erst in raspi-config aktivieren, installieren alleine reicht nicht. | Man muss I2C im Raspberry erst in raspi-config aktivieren, installieren alleine reicht nicht. | ||
Zeile 8: | Zeile 11: | ||
sudo raspi-config | sudo raspi-config | ||
(Interfacing options (5)->P5 I2C Enablen) | (Interfacing options (5)->P5 I2C Enablen) | ||
+ | |||
+ | sudo nano / | ||
+ | i2c-bcm2708 | ||
+ | i2c-dev | ||
+ | |||
sudo apt-get install i2c-tools | sudo apt-get install i2c-tools | ||
- | sudo i2cdetect -y 1 | + | |
+ | sudo nano / | ||
+ | dtparam=i2c_arm=on | ||
+ | dtoverlay=i2c-gpio, | ||
+ | |||
+ | 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) | ||
</ | </ | ||
- | Verflixt, es wird nicht entdeckt... | + | Auslesen mit Python: Man muss entweder smbus oder smbus2 installieren. |
+ | Mit smbus muss man die Daten erst aufwändig lesen und zusammensetzen. Geht aber schneller! | ||
+ | < | ||
+ | sudo apt-get install python-smbus | ||
+ | wget https:// | ||
+ | </ | ||
+ | Mit smbus2 geht es in wenigen Zeilen, allerdings mit python3. | ||
+ | < | ||
+ | sudo pip install smbus2 | ||
+ | sudo pip install RPi.bme280 | ||
+ | Sollte ein Fehler (' | ||
+ | sudo pip install --user --upgrade setuptools | ||
+ | sudo python3 bme280_smbus2.py | ||
+ | import smbus2 | ||
+ | import bme280 | ||
- | #i2cget -y 0 0x4d 0x00 b | + | port = 1 |
- | -y to force Yes to the question ask by default | + | address = 0x76 |
- | 0 is the i2c bus number | + | bus = smbus2.SMBus(port) |
- | 0x4d is the address of the sensor | + | |
- | 0x00 is the address for the temperature | + | |
- | b is to read a byte | + | |
- | https:// | + | |
+ | calibration_params = bme280.load_calibration_params(bus, | ||
+ | |||
+ | # the sample method will take a single reading and return a | ||
+ | # compensated_reading object | ||
+ | data = bme280.sample(bus, | ||
+ | |||
+ | # 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:// | ||
+ | https:// | ||
https:// | https:// | ||
+ | |||
+ | |||
+ | in boot/ | ||
+ | |||
+ | Ich wollte es aus einem C-Programm aufrufen, | ||
+ | |||
+ | Treiber gibt es hier: https:// | ||
+ | gcc -L. -c bme280.c -o bme280 | ||
+ | gcc linux_userspace.c ../bme280.c -I ../ -o bme280 | ||
+ | sudo ./bme280 /dev/i2c-3 | ||
+ | geht aber nicht. Kommt immer " | ||
+ | |||
+ | Mit dem richtigen Sourcecode, wenn auch nicht vom Original Bosch geht es dann aber: | ||
+ | http:// | ||
temperatur_luftfeuchtigkeit_druck.1584801082.txt.gz · Zuletzt geändert: 2020/03/21 14:31 von varnholt