Raspberry Pi Projekt Elektronischer Würfel

Projekte

Raspberry Pi: Elektronischer Würfel (Einsteiger Projekt)

In diesem Tutorial geht es um ein User Projekt, welches mir zugeschickt wurde. Dabei wird aus 7 LEDs eine Würfelform erstellt, welche dann mit dem Raspberry Pi und dem MCP2017 Port Expander per I2C gesteuert werden. Als Programmiersprache für den elektronischen Würfel wurden Python verwendet und stellt damit ein nettes kleines Projekt für Raspberry Pi Einsteiger dar.



Ich wurde von Holger gebeten, daraus ein Tutorial für andere Interessierte zu erstellen. Daher habe ich es nachgebaut und berichte nun darüber.

 

Zubehör

Folgende Komponenten wurden in diesem Projekt verwendet:

Der genaue Vorwiderstand kommt auf die Farbe der LEDs an. Um die optimale Widerstandsgrößen zu berechnen, kannst du z.B. diesen Vorwiderstands-Rechner von Elektronik-Kompendium benutzten.

 

Aufbau – Raspberry Pi Elektronischer Würfel

MCP23017 Raspberry Pi Port Expander

Pin Belegung des MCP23017.

Um weniger GPIO Pins des Raspberry Pi’s zu belegen wird ein Port Expander verwendet. Dieser wird über die I²C Schnittstelle angesprochen und erweitert den Pi um 16 IO Pins. Hier findest du eine ausführliche Erklärung des MCP23017 Port Expander.

Die LEDs werden an die Pins des Port Expanders (im rechten Bild GPA0 bis GPA7) mittels Vorwiderstand angeschlossen. Das kürzere Ende der LED wird an Masse vom Raspberry Pi geschlossen. Der Taster ist im offenen Zustand (nicht gedrückt) über einen 10k Widerstand an GND angeschlossen, wohingegen das andere Ende (beim Drücken) mit 3.3V verbunden ist. Somit wird garantiert, dass immer ein eindeutiger Zustand (0 oder 1) erkannt wird. Man redet hierbei auch von einem Pull-Down Widerstand.

Der I2C Bus ermöglicht einen sehr einfachen Aufbau, sodass effektiv nur zwei GPIOs des Pi’s verwendet werden (neben 3.3V und GND) und sieht folgendermaßen aus:

 

Raspberry Pi Elektronischer Würfel Projekt Steckplatine

 

Installation der notwendigen Tools

Um den I2C Bus am Raspberry Pi benutzen zu können, muss dieser zuerst freigeschaltet werden. Dies geschieht, indem man die Konfiguration im Terminal aufruft:

sudo raspi-config

Unter „Advanced Options“ findet sich ein Menüpunkt „I2C“, worüber es aktiviert wird.

Anschließend installieren wir noch eine Bibliothek, die es uns später erlaubt direkt per Python den Port Expander zu steuern:

sudo apt-get install python-smbus i2c-tools

Sobald die Installation vollendet ist, kannst du einen ersten Test starten (sofern der MCP23017 bereits angeschlossen ist):

sudo i2cdetect -y 1

Dieser Befehl zeigt alle verfügbaren, angeschlossenen I2C Module inkl. ihrer Adressen an. Bei identischer Verkabelung, solltest du einen folgenden Output sehen, welcher besagt, dass unser Port Expander sich unter der Adresse 0x20 befindet:

pi@raspberrypi ~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

 

Code zum Würfeln

Als nächstes erstellen wir eine Datei, welche zufällige Zahlen auf dem Würfel anzeigt. Dazu öffnen wir den Terminal Edior

sudo nano wuerfel.py

und fügen folgenden Code ein:

Anschließend speichern wir die Datei und beenden den Editor (STRG+O, STRG+X).

Der Code ist recht einfach gehalten und überwiegend selbsterklärend: Solange der Taster gedrückt wird, wird im Millisekunden Takt eine neue Augenzahl auf dem Würfel angezeigt. Die benötigten Pins werden dazu angeschaltet. Sobald der Taster nicht mehr gedrückt wird, bleibt die letzte zufällig erhaltene Zahl auf dem elektronischen Würfel bestehen.

 

Vorschau des erstellten Projekts

Aufgelötet auf eine Platine, kann der Würfel dann folgendermaßen aussehen:

Raspberry Pi Projekt - Elektronischer Würfel 3

Anschließend habe ich noch ein Video erstellt, in dem man dieses Projekt noch in Aktion sehen kann:

 

Falls noch weitere User ihre Projekte vorstellen wollen, könnt ihr mich gerne kontaktieren 🙂



, , , , , ,


6 Kommentare

  1. Benjamin sagt:

    Hi,

    ich habe dieses Projekt versucht ohne Hilfe auch selbst zu bauen. Mir fehlt der Port Expander.

    Ich habe es lediglich auf mein Breadboard geklemmt. Dennoch hapert es beim Schalter und „dem zufälligen entscheiden welches Bild kommen soll“

    http://pastebin.com/n77MR5GA

    • Felix sagt:

      Du musst die anderen Pins dann auch ausschalten, sonst bleiben sie eben an und du bekommst keine richtige Zahl angezeigt.

  2. Jannik sagt:

    Hallo,
    Ich habe diese Projekt aufgebaut auf einer Platine.
    Nun aber erkennt er den port expander nur wen ich Taster gedrückt halte.
    Und dazu bleibt die erwürfelte Zahl nicht stehen sondern ich bekomme ein Fehler Code in line 31 und wen ich es starte ohne den Taster gedrückt zuhalten bekomme ich einen in der line 17.

    Weiss jemand was ich falsch mache ? oder potenzielle Fehler quellen?

    Grüße

  3. Jan sagt:

    Hi ich habe den Würfel nachgebaut jedoch wird mir bei i2cdetect nichts angezeigt.
    Am MCP23017 kann es nicht liegen habe ihn schon ausgetauscht (hab ein 5er packen bestellt).Verkabelung habe ich mehrfach neu gemacht. Hast du eine Idee woran es liegen könnte?
    Grüße Jan

    • Felix sagt:

      Hast du I2C per raspi-config evtl. deaktiviert?

    • Jan Hartmann sagt:

      Nein I2c habe ich aktiviert habe es jetzt auch mit einem anderen breadboard und raspbian auf einer anderen sd Karte probiert. Ich habe den mcp23017 auch schon ohne LEDs und taster angeschlossen, jedoch hat mein pi das ganze noch kein einziges mal erkannt.(Ich benutze ein pi 3 b mit aktuellem raspbian)
      Grüße Jan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!