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