Luftdruck messen – SPI Bus mit mehreren Teilnehmern

Auch am SPI Bus sollen mehrere Teilnehmer gleichzeitg angeschlossen werden können. Das probiere ich doch einmal aus. Mit einem Luftdrucksensor am I2C Bus und zwei Ausgabemodulen am SPI Bus. Hierfür verwende ich zwei Module, die ich schon im Einsatz hatte: Ein Siebensegment Display mit acht Digits und zwei LED Matrix Anzeigen mit jeweils acht x acht LED’s.

Die Hardware
– Als Controller ein Arduino UNO
– Ein Luftdrucksensor BMP280 Modul
– Ein Siebensegment Anzeigemodul mit acht Digits an SPI
– Zwei acht x acht LED Matrix Anzeigemodule am SPI hintereinander geschaltet
– Eine Verteilerplatine für die SPI Module

Der Aufbau
Die beiden Anzeigemodule schließe ich über die Verteilerplatine am SPI Bus an. Allerdings brauche ich für jedes SPI Modul eine eigene Chip Select Leitung. Damit ist jedes Modul individuell ansprechbar. Damit alle SPI Module problemlos angeschlossen werden können, habe ich noch eine kleine Verteilerplatine zusammengelötet. Der Sensor wird über die Verteilerplatine an die Spannungsversorung angeschlossen, die I2C Leitungen am Arduino direkt.


Das Messsystem mit allen Modulen

Die Software
Jedes Mess- und Ausgabemodul hat auch sein eigenes Softwaremodul. Die SPI Module bekommen jeweils einen eigenen Chipselect Pin zugeordnet. Dann wird einfach gemessen und die Messwerte ausgegeben.

Die Module

  • Messen von Luftdruck in Hektopascal (hPa), Temperatur in Grad Celsius und die relative Luftfeuchte in Prozent mit dem BMP280.
  •  Ausgabe auf dem acht Digit Siebensegment Display, abwechselnd Luftdruck, Temperatur und relative Luftfeuchte im Abstand von fünf Sekunden.
  •  Ausgabe von Luftdruck, Temperatur und relative Luftfeuchte auf die LED Matrix sechzehn x acht, aus zwei acht x acht Matrixmodulen hintereinandergeschaltet, als Lauftext hintereinander weg.

Der Sketch
Luftdruck_messen

Ergebnis
Die Ausgaben auf den einzelnen Modulen funktionieren einwandfrei. Obwohl die SPI Zuleitungen relativ lang und ungeschirmt sind. Die ausgegebenen Werte entsprechen einigermaßen denen von handelsüblichen Mess- und Anzeigemodulen für den Hausgebrauch.
Den aktuellen Luftdruck habe ich mir aus dem Internet beim Deutschen Wetterdienst als Vergleichswert geholt.

Links

Vier und Acht Digit Siebensegment Display am SPI Bus
4und8Digit-7Segment-Display-an-SPI

Acht x Acht LED Matrix am SPI Bus
LED Matrix 8×8 am SPI Bus

Mehrere Devices am SPI
Verteilter MQTT Subscriber mit Ethernet und CAN

SPI Tutorial
https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi

LedControl Bibliothek
https://github.com/wayoda/LedControl

Dokumentation LedControl Bibliothek
http://wayoda.github.io/LedControl/pages/software

Aktueller Luftdruck
http://dwd.de

MaxMatrix Bibliothek
https://github.com/t3chguy/arudino-maxmatrix-library

Veröffentlicht von

Jürgen

Ich bin Software Ingenieur und habe meine Schwerpunkte in allen Aktivitäten, die zur Software Entwicklung gehören. Am längsten bin ich als Software Entwickler von Embedded Software in C tätig.