Raspberry Pi: Und die LED leuchtet doch!

Das Thema Elektronik und die diversen Basteleien empfinde ich seit jeher als faszinierend. Besonders LEDs konnten mich schon immer begeistern, nicht zuletzt seit K.i.t.t. in Knight-Rider-Zeiten. Allerdings sind meine Kenntnisse diesbezĂŒglich auch eher – sagen wir ausbaufĂ€hig…

Zwar sind einige Grundlagen hĂ€ngen geblieben, aber in den letzten Jahren habe ich mich doch eher mit Software als mit Hardware beschĂ€ftigt. Ich will auch gar nicht den Kanon des “Internet of Things” anstimmen, oder die Möglichkeiten des “Smart Home” skizzieren, denn insbesondere zu Letzterem fehlt es meiner Ansicht nach noch an allen Ecken und Enden, das fĂ€ngt bei erschwinglicher Hardware an, setzt sich ĂŒber die aktuell eher suboptimale Benutzbarkeit fort und hört bei der aktuell schwachen bis nicht vorhandenen Integration in die EndgerĂ€te noch lange nicht auf.

Jedoch bieten sich fĂŒr Bastler in der letzten Zeit fantastische Möglichkeiten, etwa in Form des Arduino oder aber auch des zunĂ€chst als Lerncomputers konzipierten Raspberry Pi. Letzterer ist nicht nur ein vollstĂ€ndiger Computer im Scheckkarten-Format, sondern bietet auch diverse Schnittstellen nach außen, etwa in Form der GPIO-Verbindungen (General Purpose Input/Output). Dazu existiert mittlerweile mehr als genug Literatur, ob in Buchform oder auch auf Myriaden von Webseiten, es gibt Shops, die sich auf den Verkauf des kleinen Rechners und Zubehör spezialisiert haben usw.. Wie immer hilft die Suchmaschine der Wahl…

Einfacher kann der Einstieg in die Welt der Mikrocontroller somit fast nicht mehr sein, und so habe ich mein Arsenal aus WiderstĂ€nden, LEDs, Kabeln und sogar Sensoren und Aktoren in der letzten Zeit ein wenig ausgebaut, um vielleicht den einen oder anderen Winter- bzw. Sommerabend fĂŒr ein paar Hardware-Basteleien zu nutzen.

Das “Hello-World”-Projekt ist natĂŒrlich die LED, die sich per Software gesteuert schalten lĂ€sst. Das sollte doch einfach machbar sein… Ich hatte mir bereits ein GPIO-Shield besorgt, womit sich die Pins der Raspberry Pi auf ein Steckbrett (Breadboard) weiter leiten lassen. Das sollte einfacher sein als direkt per Kabel am Raspberry Pi herum zu fummeln. LED und Kabel waren ebenfalls vorhanden, dazu noch ein Widerstand, wobei hier je nach Quelle der empfohlene Widerstandswert durchaus schwankt – manche Quellen geben 220 Ohm an, andere 620 Ohm usw.. Ob es an meinen Augen fortgeschrittenen Alters lag oder die Dinger inzwischen immer kleiner geworden sind, mittlerweile kann ich die Farbcodes nicht besonders gut erkennen, das Durchmessen per Multimeter hat somit mehr geholfen bei der Wahl eines 220 Ohm-Widerstandes. (Dass das Multimeter nach mehr als 20 Jahren ohne Batteriewechsel noch immer funktioniert, ist ein anderes Wunder, aber es wurde zugegebenermaßen auch nicht besonders viel benutzt.)

Bei der Verkabelung habe ich mich an dem Artikel “Einfaches Schalten der GPIO Ein- und AusgĂ€nge am Raspberry Pi” orientiert. DarĂŒber hinaus fand ich die Anleitung von Sunfounder hilfreich.  Sunfounder verkauft neben diverser kompatibler Hardware auch Bastel-Kits, die ein Komplettpaket fĂŒr den leichten Einstieg bieten. Selbst wenn man keines der Kits besitzt oder die Hardware lieber selbst zusammen stellt, lassen sich die Anleitungen als PDF herunter laden, ich habe mir dafĂŒr das PDF-Dokument des “Super Kit for Raspberry Pi B+” ausgesucht.

Noch ein Hinweis zum GPIO-Shield – das war fĂŒr mich bislang ein kleiner Fehlkauf. Die Hinweise in den Bewertungen bei Amazon sind Gold wert. GrundsĂ€tzlich ist ein GPIO-Shield eine sehr gute Idee, jedoch existieren viele Varianten davon. Manche orientieren sich dabei an der WiringPi-Belegung, die sich leider von der ĂŒblichen Notation des Raspberry Pi unterscheidet. FĂŒr den Einstieg wirft dies unnötige HĂŒrden auf, noch dazu ist die Schrift auf der Platine so dermaßen klein, dass sich die Belegung kaum entziffern lĂ€sst. DarĂŒber hinaus sind auf den neueren Raspberry Pi, d.h. B+ und 2, mehr GPIO-Pins vorhanden, so dass die schmaleren GPIO-Shields zwar passen (die Belegung der ersten Pins von alten und neuen Raspberry Pi ist identisch), aber nicht alle Möglichkeiten ausgeschöpft werden. Die breiteren Shields passen wiederum nicht auf die Ă€lteren Raspberrys…

Die ersten Versuche mit GPIO-Shield waren somit eher ernĂŒchternd, daher habe ich die Verkabelung letztlich direkt vorgenommen. In Worten – Pin 1 (3,3V) ist ĂŒber einen Widerstand (220 Ohm) mit der Anode (Pluspol) der LED verbunden, die Kathode der LED anschließend am Pin 11 (GPIO 17). Zur Funktionsweise und Aufbau von LEDs empfehle ich diesen Artikel.

Die Schaltung sieht live wie folgt aus:

raspi_led_off

Nachdem die Hardware aufgebaut war, ging es an die Software. Die einfachste Art und Weise ist die Steuerung per Shell-Kommandos, dazu bedarf es keiner besonderen Software oder Libraries, daher bietet sich dies fĂŒr den Einstieg an.

Auch bei der Ansteuerung habe ich mich wieder mehreren Quellen bedienen mĂŒssen. Die anfangs zitierte Raspberry-Tutorial-Seite ist bereits ein wenig Ă€lter, so fehlte dort ein entscheidender Hinweis.

Die Ansteuerung findet grundsÀtzlich im Verzeichnis /sys/class/gpio statt. Da der Zugriff nur per Superuser root erfolgen kann, da anderen Usern zunÀchst die Rechte fehlen, sollte man zum User root wechseln:

su root

Hinweis: Die Nutzung ist auch ohne root-Rechte möglich, das bedarf jedoch weiterer Konfiguration, und fĂŒr erste Experimente wollte ich nicht, dass es daran scheitert.

Im ersten Schritt muss der zu verwendende GPIO-Pin “exportiert” werden:

echo "17" > /sys/class/gpio/export

Damit wird der GPIO initialisiert, dabei wird ein Verzeichnis /sys/class/gpio/gpio17 angelegt. Der Erfolg ist leicht zu ĂŒberprĂŒfen, denn wĂ€hrend zuvor das Verzeichnis nicht existierte, befinden sich darin nun weitere Dateien und Verzeichnisse.

Danach muss der GPIO dahingehend konfiguriert werden, ob er fĂŒr den Lese- (“in”) oder Schreibzugriff (“out”) verwendet werden soll. Die erste PrĂŒfung nach dem Initialisieren ergab, dass der GPIO fĂŒrs Lesen eingestellt war (cat /sys/class/gpio/gpio17/direction), daher wird dieser nun auf den Schreibzugriff eingestellt:

echo "out" > /sys/class/gpio/gpio17/direction

Auf dem GPIO können zwei ZustĂ€nde anliegen, und zwar 0 fĂŒr “es fließt kein Strom) und 1 – “Strom fließt”. Der Zustand wird definiert durch die Datei “value”, daher:

echo "1" > /sys/class/gpio/gpio17/value

Nun sollte die LED leuchten. Eigentlich…

Bei meiner Verkabelung hingegen tat sich zunĂ€chst nichts. Ein paar Iterationsschleifen inkl. Durchmessen per Multimeter und Durchforsten weiterer Quellen fĂŒhrte dazu, der Einstellung – und damit Datei “active_low” Bedeutung beizumessen. Ein “cat /sys/class/gpio/gpio17/active_low” zeigte den Wert 0 an. Diese Einstellung kann zum Invertieren der Pin-Logik verwendet werden. Das klang vielversprechend, insofern:

echo "1" > /sys/class/gpio/gpio17/active_low

Damit konnte ich eine Spannung feststellen, insofern ließ sich die LED nun auch ein- und ausschalten:

# LED ein:
echo "1" > /sys/class/gpio/gpio17/value
# LED aus:
echo "0" > /sys/class/gpio/gpio17/value

Insofern: Und sie leuchtete doch! Der erste Schritt war damit getan, noch ein wenig holprig, aber immerhin. Als Beweis noch das folgende Foto der eingeschalteten LED:

raspi_led_on

 

Nun handelt es sich dabei um eine mögliche Verkabelung, die sich an dem Sunfounder-Beispiel orientiert. Wenn die LED umgedreht und statt des Pin 1 der Pin 6 (GND) genutzt wird, sollte die Schaltung auch ohne Invertieren der Pin-Logik möglich sein… Genau so ist es. Leider sind die Anleitungen fĂŒr Elektronik-Newbies auch nicht immer ganz verstĂ€ndlich, weil eine gewisse Einheitlichkeit in der Benennung fehlt, so hĂ€tte auch anstatt “Masseleiste” der Pin bzw. die Bezeichnung angegeben werden können… Aber mit der Zeit folgt vielleicht auch bei mir mehr VerstĂ€ndnis fĂŒr die Details, spassig war es auf jeden Fall. Und bislang haben weder die Bauteile, noch der Raspberry Pi Schaden genommen.

Die nÀchsten Schritte werden folgen, zu entdecken gibt es definitiv mehr als genug!

Zum Schluss noch ein paar Quellen, die mir bei der genannten Schaltung geholfen haben:

 

Auch interessant

Schreibe einen Kommentar

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

Tags:
Kategorie: Allgemein