Raspberry Pi 2 | 3:    Sensor BME 280
 

 
Sensorplatine Watterott mit dem Sensor BME 280 von Bosch

Der Sensor BME280 misst den Luftdruck, die Luftfeuchte sowie die Temperatur ..
Temperatur Bereich: -40 bis +85°C
Luftdruck Bereich: 300 - 1100hPa (+9000m bis -500m oberhalb/unterhalb der Meereshöhe)
Luftfeuchte: Antwortzeit: 1s  /  Genauigkeit: +/- 3% relativ  /  Hysterese: +/- 1% relativ
Datenblatt von Bosch.pdf
 
Die vorliegende Platine der Fa. Watterott Electronik kann mit einer Spannung zwischen 3,3V bis 5V betrieben werden. Sie besitzt ein SPI- sowie ein I2C- Interface. Die Beschaltung des I2C-Interface ist im obigen Bild eingezeichnet. Hierbei ist zu bemerken, dass die Signalleitungen SC und SD0 durch interne Pull-Up Widerstände, also ohne externe Beschaltung ein log 1 Signal führen, womit an CS der I2C-Bus eingeschaltet ist, Dessen Adresse würde ohne Beschaltung von SD0(=1) 0x77 lauten. Bei der vorliegenden Beschaltung wurde durch eine Brücke am Jumper J1 und daraus folgend SD0=0 die Adresse auf 0x76 eingestellt.
 
Herkunft des Sensors: www.watterott.com/de/BME280-Breakout
Anmerkung Luftdruck (Deutschland):
  Höchster gemessener Luftdruck: 1057,8 hPa am 23.1.1907 in Berlin
  Niedrigster gemessener Luftdruck: 948,6 hPa am 26.2.1989 in Osnabrück
  Normaldruck Meereshöhe 1013 hPa

Programm für den Rasbberry Pi 2/3
 
Das Ziel der folgenden Programme ist ein Autostart des Programms bme280.py beim Hochfahren des Raspberry Pi, so dass es unsichtbar im Hintergrund seine Messungen vollzieht, ..um diese dem Apache2 -Server bereitzustellen. Um dennoch seine Steuerung vornehmen und seine Meßergebnisse auf dem Raspberry Pi ansehen zu können wurde das Programm bme280_start hinzugefügt.

Das Programm bme280.py
Das in der beigefügten Text-Datei bme280.py abgelegte python-Programm wurde im Ursprung auf der Internetseite .. 
www.teknology-inside.de/raspberry-pi-bme280-ueber-i2c-ansteuern
.. gefunden und folgend so erweitert, dass es in einer unendlichen Schleife alle 5s den Sensor abfragt. Seine Meßwerte werden in einer der Kontrolldatei bme280.txt abgelegt, ebenso wie die ID sowie die Version des angeschlossenen BME280 Sensors und der Laufzustand des Programms. Beträgt dessen Wert 0, startet das Programm bei einem Aufruf. Ist dessen Wert 1, so wird das Programm nicht gestartet. Oder anders, nachdem das Programm einmal gestartet wurde kann es kein 2.mal gestartet werden.
Die Programmdatei bme280.py und seine Kontrolldatei bme280.txt müssen sich im gleichen Verzeichnis (im Beispiel /usr/ befinden.

  .. die Kontrolldatei bme280.txt
Die als Beispiel ebenfalls angefügte Kontrolldatei bme280.txt -Datei muß zum Betrieb des Programms bme280.py zumindestens angelegt, und durch sudo chmod 666 /usr/bme280.txt für alle Benutzer zum Lesen und Schreiben verfügbar gemacht worden sein. (Die Datei darf ansonsten leer sein, denn sie wird beim Start des Programms neu aufgebaut)

nach diesen Vorbereitungen kann das Programm bme280.py durch ..
python /usr/bme280.py
.. im LXTerminal gestartet werden. Seine Ausgaben sind in der Kontrolldatei zu finden.
.. der Programmlauf wird unterbrochen, wenn in der ersten Zeile der Kontrolldatei bme280.txt, anstelle der 1, eine 0 eingefügt wird.
 
 
Das Steuerprogramm bme280_start.py

 

Um die Bedienung des Programms bme280.py zu vereinfachen, sowie seine Meßwerte formatiert sichtbar zu gestalten, wurde das Programm bme280_start.py entwickelt. Es erzeugt auf dem Bildschirm des Raspberry Pi ein Fenster, in welchem das Programm mit [Buttons] angehalten und gestartet werden kann, und seine Meßwerte (alle 5s neu abgefragt) zu sehen sind. (Auch wenn dieses Programm beendet wird, arbeitet das Programm bme280.py weiter .. wenn es nicht angehalten wurde)


Der Autostart von bme280.py durch BMEauto_start.py
Soll das Programm bme280.py nach dem Einschalten des Paspberry Pi automatisch gestartet werden, so ergibt sich die Schwierigkeit, dass in der Kontrolldatei bme280.txt das Programm bereits als 'laufend' (erste Zeile=1) eingetragen sein kann, da diese Datei beim Abschalten des Rechners nicht zurückgesetzt wird. Dies kann durch das Startprogramm BMEauto_start.py unterbunden werden. Dieses Programm setzt bei bme280.txt die erste Zeile=0 um dann bme280.py zu starten.
sudo chmod +x /usr/BMEauto_start.py
1. die Rechte für das Programm setzen, so dass es ausführbar ist
sudo nano /etc/rc.local
2. In der Datei rc.local vor „exit 0“ den (Interpreter) und den Pfad zum Script einfügen.
Das abschließende & -Zeichen bewirkt, dass die rc.local weiter abgearbeitet und nicht darauf gewartet wird, dass das Script ausgeführt wurde. Ein Script mit Endlosschleife würde sonst den Startvorgang des Pi dauerhaft aufhängen.
 
python /usr/BMEauto_start.py &
exit 0
 
Soll das Script zeitverzögert starten kann der nachfolgende Befehl verwendet werden, dessen Verzögerungszeit 15 Sekunden beträgt. Der Wert 15 kann geändert werden.
/bin/sleep 15  && python /usr/bme280.py &
sudo reboot
3. Rechner neu starten
ps -ef | grep python
4. Kontrolle .. Der Befehl ps -ef | grep python führt bei Erfolg zu einer Ausgabe wie..
root      570     1   0   13:47 ?        00:00:01 python /usr/bme280.py
 
Achtung: Wie bereits angemerke, ist darauf zu achten, dass die Benutzer der Datei bme280.txt Lese und Schreibrechte für sie besitzen. Dies wird durch ..
 
chmod 666 /usr/bme280.txt
 
.. erreicht. Die Datei kann nun auch von einem .php-Script ausgelesen werden, und durch den Apache-Server im Netzwerk verbreitet werden.