Raspberry PI DIY Serie: 04: RGB LED🚩 mit dem Raspberry PI steuern

Wir brauchen alle Farben in einer LED, wie geht das?

Das Ziel fĂŒr diese Episode soll sein, dass du verstehst, was Pulsweitenmodulation ist, wie man es machen kann, warum der Raspberry PI nur bedingt dafĂŒr geeignet ist und wie man das Wissen nutzt, um eine RGB Led anzusteuern.

Auch diese Episode gibt es natĂŒrlich wieder als Video:

Wie schon in den letzten Teilen der Serie erwÀhnt, verwende ich hier

Wenn du ĂŒber diese Links bei Amazon einkaufst, unterstĂŒtzt du diese Serie! Ich verlinke die Sachen aber auch fĂŒr dich, dass du einfach weißt, was genau du brauchst und dir sicher sein kannst, dass diese Sachen zusammen funktionieren werden.

Was ist eine RGB LED?

RGB LED
RGB LED

In Teil 2 dieser Serie haben wir ja schon die LED kennen gelernt. Eine RGB Led ist nun eine LED, die eigentlich gleich 3 LEDs in einem fast genauso aussehenden GehÀuse vereint. Diese Kombi-LED hat dabei nur 4 statt der zuerst logisch erscheinenden 6 Beinchen. Das liegt daran, dass man je nach Bauweise alle inneren LEDs entweder sich die gleiche Anode oder Katode teilen.

RGB LED 'von innen'
RGB LED 'von innen'

Ich konnte mir selbst auch noch nie merken, was jetzt was ist, aber es gibt eine einfache Faustregel:

Bei dem lĂ€ngeren Beinchen könnte man ein StĂŒck abschneiden, um die Beinchen gleich lang zu machen. Dieses StĂŒckchen könnte man bei dem Beinchen so hinlegen, dass sich ein Plus bildet.

Das lange Beinchen muss daher mit Plus verbunden werden.

Was ist nun Pulsweitenmodulation?

RGB LED
RGB LED

Bei der Pulsweitenmodulation (kurz PWM) erzeugt man ein periodisches digitales Signal. Auf diese Art und Weise kann man eine LED ansteuern. Ist die Periode kurz genug, also die Frequenz hoch genug, wirkt es fĂŒr das menschliche Auge, als wĂŒrde die LED mit verringerter Helligkeit leuchten.

Im Schaubild ist T die PeriodenlĂ€nge. Die Frequenz ist ĂŒblicherweise im kHz Bereich, dementsprechend ist T = 1ms oder kĂŒrzer.

t ist dann weiterhin die Zeit innerhalb einer Periode, wo das Signal auf high ist. Im Schaubild ist das beispielsweise 25%. Da unsere Beispiel-LED ja mit dem anderen Beinchen an Plus hĂ€ngt, leuchtet sie, wenn der GPIO Port auf LOW geht, dementsprechend wĂŒrde man etwa 75% Helligkeit wahrnehmen, wenn eine LED mit dem Beispielsignal geschaltet wird.

Ich empfehle dir auch, dich zu PWM bei Wikipedia tiefer einzulesen. (Dort ist auch das Bild her.)

Schaltung aufbauen

Komplette Schaltung mit RGB LED
Komplette Schaltung mit RGB LED

Die komplette Schaltung ist etwas grĂ¶ĂŸer als die aus dem zweiten Teil, aber eigentlich nicht komplizierter. Alle 3 Teil-LEDs werden am gemeinsamen Ende mit der 3,3V Spannung verbunden und am anderen Ende ĂŒber einen 220 Ohm Widerstand an einen freien GPIO Port gebunden. Da es kein einzelnes Schaubild fĂŒr eine RGB LED gibt, kann man auf dem Schaltplan nichtmal richtig erkennen, ob es sich um 3 einzelne LEDs oder eine RGB LED handelt.

Programmieren

FĂŒr dieses Beispiel verweise ich dich direkt auf den Beispielcode von Freenove. Er umfasst viel graphische Elemente, deren Programmierung langwierig ist, dich in diesem Moment aber mit der PWM Steuerung nicht weiterbringt. Der komplette Sketch besteht aus 3 Dateien, die du in Processing öffnest, in der Sketch_04_1_1_ColorfulLED.pde trĂ€gst du ganz oben ein, welche GPIO Ports du verwendet hast und du kannst auch schon die Anwendung starten.

RGB LED GUI mit echter Schaltung
RGB LED GUI mit echter Schaltung

Das PWM Signal wird dabei in der SOFTPWM.pde Datei erzeugt. Hier finden sich wie erwartet die Funktionsaufrufe zum Steuern eines GPIO Pins. Es werden auch die entsprechenden Wartezeiten berechnet, die fĂŒr das PWM Signal benötigt werden. Die Erzeugung des Signals ist dann eine Endlosschleife:

while (true)
{
    space = range - marks;
    if (marks!=0)
    {
        GPIO.digitalWrite(pin, GPIO.HIGH);
        delayMicroSeconds(marks);
    }
    if (space!=0)
    {
        GPIO.digitalWrite(pin, GPIO.LOW);
        delayMicroSeconds(space);
    }
}

Das ist genau das, was man erwarten wĂŒrde, aber dennoch ist es schlecht! Wenn man eine LED ansieht, die auf diese Art und Weise gedimmt wird, sieht man sie gelegentlich Flackern.

Warum flackert das?!?

Gute Frage! Es liegt tatsĂ€chlich vergraben in der Art und Weise, wie das “Abwarten” realisiert wird. delayMicroSeconds(...) ruft intern die Betriebssystemfunktion Thread.sleep(...) auf. Das Programm fordert das Betriebssystem an dieser Stelle auf, nach einer gewissen Zeit wieder aktiviert zu werden. Das Problem ist, dass diese Zeit in dem Fall wenige ”s betrĂ€gt. So wie das Betriebssystem von dieser Zeitspanne abweicht, leuchtet die LED sofort zu viel oder zu wenig. Das passiert bei Raspbian, oder jedem normalen Linux und Windows aber, denn es handelt sich nicht um Echtzeitbetriebssysteme. Das System gibt nicht die Garantie ab, dass es im ”s sich vorhersehbar verhĂ€lt. Diese Art der Signalerzeugung wird auch Software-PWM genannt, denn es wird permanent durch Software erzeugt. Es ist daher sehr abhĂ€ngig vom Betriebssystem und allem, was noch auf dem System lĂ€uft. Das sporadische Flimmern ist derart schlimm, dass ich mir keine LED ins Wohnzimmer stellen möchte, die auf diesem Wege ihre Farben mischt.

Es gibt auch Hardware-PWM. Hier gibt es spezielle Abschnitte auf dem (Mikro-)Prozessor, die man nur einmalig konfigurieren muss und die dann das PWM Signal ohne weiteres Zutun erzeugen. Hier ist die SignalqualitÀt deutlich besser. Der Raspberry PI hat angeblich zwei Hardware-PWM-KanÀle, diese lassen sich aber in praktisch keiner Programmierumgebung nutzen.

Mit den GPIO Pins des PIs lassen sich viele schöne Projekte umsetzen aber PWM-Erzeugung gehört meiner Meinung nach nicht dazu.

Wickeltisch fĂŒr die Badewanne selbst bauen!

Nachwuchs ist auf dem Weg!

Wir haben schon im Ikea und bei Amazon alles leer gekauft. Was so ein kleines Etwas alles braucht ist echt beeindruckend. Jedenfalls habe ich mir sagen lassen, mĂŒssen die auch regelmĂ€ĂŸĂ­g gewickelt werden und dafĂŒr haben wir zuhause eine Wickelunterlage. Wir haben uns hier fĂŒr eine schöne Wickelauflage von Julius Zöllner entschieden. Aber wo legt man die Unterlage nun drauf? HĂ€ufig sieht man, dass AufsĂ€tze fĂŒr Kommoden verwendet werden, aber das Kinderzimmer wird wohl die ersten Monate sonst nicht verwendet werden und deshalb wollen wir es noch nicht beheizen und im Schlafzimmer haben wir keinen Platz, daher kam mir die Idee, dass wir einen Wickelaufsatz fĂŒr die Badewanne benutzen könnten.

weiterlesen


Fake Alarmanlage selber bauen! Naviklau und Autodiebstahl gĂŒnstig verhindern!

Fake Alarmanlage selber bauen!

Einem guten Freund wurde das Auto aufgebrochen und es wurde das komplette Navigations- und Entertainmentsystem geklaut. Das Auto hat auch keine Alarmanlage. Ich habe das beobachtet und mir meine Gedanken gemacht. Eine Alarmanlage nachzurĂŒsten ist möglich, aber auch teuer und dann bleibt die Frage, ob sie wirklich was bringt?! Meine Idee war nun, die Existenz einer Alarmanlage zu faken in dem man die charakteristisch blinkende LED einfach nachbaut. Der Dieb kann vor dem Aufbruch des Autos ja nicht wissen, ob das nun Fake oder echt ist, sofern er es nicht an Details erkennt.

weiterlesen