Digi-Dot-Booster am Raspberry Pi mit Python ansteuern

Folker hat gerade den Digi-Dot-Booster angekündigt und ich hatte die Möglichkeit, mich  schon im Vorfeld  etwas damit zu beschäftigen. Zur Ansteuerung kamen bei den Tests unterschiedliche Boards, die ich in meiner Bastler-Kister habe. Am Interessantesten neben Arduino ist sicherlich Raspberry Pi und darum geht es auch im folgenden Beitrag.

Zum Testen habe ich den schon etwas älteren Rapberry Pi B genommen, als Betriebssystem kommt Raspbian zum Einsatz. Bei mir habe ich die grafische Oberfläche deaktiviert, weil ich hauptsächlich damit ohne Maus und Tatstatur per SSH arbeite.

Zum Programmieren habe ich mich für Python entschieden – die Sprache ist weit verbreitet und viele hatten schon mal damit zu tun gehabt. Man muss sich außerdem keine Gedanken um low-level APIs von C und das Kompilieren machen. Rasbian bringt auch eine Entwicklungsumgebung (IDE) für Python mit (https://www.raspberrypi.org/documentation/usage/python/) – man kann also auch direkt auf dem RPi komfortabel programmieren und direkt aus der IDE seine Programme laufen lassen und debuggen.

Der Digi-Dot-Booster wird entsprechend an die SPI Port Pins des GPIO Headers angeschlossen. Da der Digi-Dot-Booster keine Daten zurück schickt, wird nur die MOSI Leitung fürs Senden angeschlossen. RESET Pin kann optional angeschlossen werden, um den Reset des Moduls vom RPi aus im Code steuern zu können.

Anschluß vom LED-Booster am RPi B

Damit man mit Python auf die Hardware des Raspberry Pi zugreifen kann, müssen zusätzliche Bibliotheken installiert werden:

sudo apt-get update
sudo apt-get install python-dev python-rpi.gpio python-spidev

In Rapsbian ist SPI standardmäßig deaktiviert, das Aktivieren geht am einfachsten über das eigene Config-Tool:

sudo raspi-config -> 5 Interfacing Options -> SPI

Nach einem Reboot des RPi sollten dann /dev/spidev0.0 und /dev/spidev0.1 im System auftauchen.

Nun steht der Arbeit mit dem Digi-Dot-Booster nichts mehr im Wege. Hier ist ein Beispiel zur Ansteuerung von 30 ws2812 LEDs über den Digi-Dot-Booster:

Zum Starten von der Konsole aus python rainbow.py eingeben.

 

Update: Durch die Konfiguration des richtigen SPI Modes per spi.mode = 0b00  ist keine Steuerung des CS im Code notwendig.

Dieser Beitrag wurde unter LED-Technik, Projekte veröffentlicht. Setze ein Lesezeichen auf den Permalink.

7 Antworten auf Digi-Dot-Booster am Raspberry Pi mit Python ansteuern

  1. wosjack sagt:

    Hallo ich sitz grad ein bisschen ratlos vor dem Quellcode

    Wenn ich es richtig verstanden hab muss ich ja nur diese zeile ändern wenn ich was anderes haben möchet
    spi.writebytes([0xA7, i & 0xFF, i >> 8, 255, 100, 0, LED_COUNT – 1, 10, 0xB2])

    Da das die Zeile für das BOOSTER_SETRAINBOW ist

    wenn ich jetzt z.b. BOOSTER_SETRANGE haben will
    spi.writebytes([0xA6, 0, 0, 255, LED_COUNT – 1, 5, 0xB2])

    irgend wie steh ich total auf dem schlauch
    irgend wo hab ich einen denk fehler drinn

  2. Gamadril Gamadril sagt:

    Hallo wosjack,
    im Prinzip richtig, nur ist der Befehl falsch. Laut Dokumentation vom DD-Booster hat der Befehl BOOSTER_SETRANGE folgende Struktur: 0xA6 BEG END. D.h. 0xA6 steht für den Befehl selbst, BEG für den Startindex – also z.B. 0, END für Endindex – also z.B. 4. Dabei wird die aktuelle Farbe aus dem Farbregister genommen, also muss man davor noch BOOSTER_SETRGB oder BOOSTER_SETHSV aufrufen.
    Beispiel: spi.writebytes([0xA3, i & 0xFF, i >> 8, 255, 100, 0xA6, 0, 4, 0xB2])
    Heißt, mit 0xA3 wird die Farbe in H (2 erste Werte), S (255), V (100) Format gesetzt, mit 0xA6 wird der Bereich von LED 0 bis LED 4 auf diese Farbe gesetzt und mit 0xB2 (BOOSTER_SHOW) bestätigt.

  3. Thorsten sagt:

    Hallo,

    leider bekomme ich es nicht zum laufen. Ich habe einen Raspberry Pi 3 Model B den DD-Booster und einen W2812B LED Streifen. Habe alles so angeschlossen wie in der Schematic beschrieben, Python installiert und SPI aktiviert.

    spidev0.0 und /dev/spidev0.1 sind ebenfalls vorhanden.

    Habe das obige Beispielscript in einer Datei erstellt, die Anzahl der LED auf 25 reduziert da mein Streifen nur 25 hat und in der Konsole wie genannt aufgerufen, allerdings passiert nichts. Die LED beim Booster blinkt auch konstant.

    Wäre für Hilfe dankbar, Thorsten

  4. Gamadril Gamadril sagt:

    Hallo Thorsten,
    Habe heute raspbian jessie auf rpi 3 frisch installiert und kann das Problem auch beobachten. Werde nachher mit einem logic analyzer mal die Leitungen prüfen.

  5. Gamadril Gamadril sagt:

    Habe das Problem in meiner Verdrahtung entdeckt – Masse war falsch verbunden, dann hat auch die rote LED auf dem BB-Booster leicht geleuchtet statt geblinkt. Die Belegung der Pins bleibt die gleiche wie auf dem Bild für RPi1, man muss nur von oben vom Pin 1 aus nach unten die Pins abzählen.

Schreibe einen Kommentar