template-blog-feature-image-lumina

Arduino Tutorial – Bau einer DIY-Lampe „LUMINA“

Dieser Beitrag wurde unter Tutorials abgelegt und mit , , , verschlagwortet am von .

Dieses Tutorial für ein Arduino-basiertes Projekt wurde von einem Amateur erstellt und richtet sich in erster Linie an gleichgesinnte Amateurbastler oder Personen, die sich für diese Art von Elektronikmontage interessieren.

Der Autor ersucht um das Wohlwollen der ehrwürdigen Experten, die der Frage der Programmierung oder der mechanischen Auslegung nachgehen möchten (Arduino-Code und STL-Dateien am Ende dieses Beitrags verfügbar).

LUMINA ist eine Lampe aus dem 3D-Drucker mit einer RGB LED Kette, deren Farbe und Lichtstärke variiert werden kann. Es stehen mehrere Betriebsmodi zur Verfügung, sodass die Lampe als stimmungsvolle Raumbeleuchtung oder als Lichtorgel verwendet werden kann. Die Interaktion erfolgt über sechs in den Sockel eingebaute Ultraschallsensoren, mit denen die verschiedenen Betriebsmodi angesteuert und die LEDs aktiviert werden können.

Welches Material ist erforderlich?

 

Software und Librarys zum Download

Montage Ihrer LUMINA Lampe

Positionieren Sie das Arduino-Board im Gehäuse möglichst nahe an der Innenwand. Befestigen Sie anschließend das Breadboard mithilfe des beidseitigen Klebestreifens an der Innenseite, um den Festsitz des Arduino zu gewährleisten.

tutoriel-arduino-assemblage-lumina-1

Nehmen Sie danach anhand der Fritzing Schaltplanansicht die Anschlüsse der Ultraschallsensoren und des Summers vor. Beim Einbau im Gehäuse muss der Sonar 1 über den USB- und Jack-Anschlüssen des Arduino platziert werden.

tutoriel-arduino-assemblage-lumina-20

Schéma Fritzing

Befestigen Sie die Grove LED-Module an der Innenseite der mittleren Platte. Wenn Sie statt Schrauben lieber doppelseitiges Klebeband verwenden, orientieren Sie sich bei der Positionierung dennoch an den vorgesehenen Schrauben, um die LEDs korrekt auszurichten.

Schließen Sie die “IN” Klemme der mittleren LED (Nummer 7) an der “OUT” Klemme einer der äußeren LEDs an. Anschließend werden hintereinander die äußeren LEDs angeschlossen. Dazu die Grove 5 cm Kabel verwenden. Sie können die Drähte voneinander trennen, um mehr Flexibilität zu erreichen.

tutoriel-arduino-assemblage-lumina-4

Der “IN” Eingang der letzten LED (Nummer 1) muss mithilfe eines gemischten Grove – Jumperkabels (Male) an das Arduino (Signal) auf der einen Seite und an das Breadboard (5 V und Masse) auf der anderen Seite angeschlossen werden.

Schließen Sie das Gehäuse mit der mittleren Platte und achten Sie dabei darauf, LED 1 (mit dem direkten Anschluss an das Arduino) über dem Sonar 1, also über den Arduino-Anschlüssen zu positionieren.

tutoriel-arduino-assemblage-lumina-5

Bevor Sie alles verschließen, empfehle ich Ihnen, das Funktionieren der Lampe zu testen, indem Sie das Programm auf Arduino laden.

OPTIONAL: Verschrauben Sie die Platte mit dem Gehäuse (z.B. wenn Sie vorhaben, die Lampe von Kindern verwenden zu lassen). Achtung, die Ultraschallsensoren können bei in das Gehäuse gedrückt werden, was ihr Funktionieren beeinträchtigen könnte. Wenn Sie die Platte verschrauben möchten, muss eine Lösung gefunden werden, um die Sensoren zu befestigen. Ein solches System wird derzeit untersucht und soll später in die Gehäusestruktur integriert werden.

tutoriel-arduino-assemblage-lumina-8

Positionieren Sie den Deckel. Normalerweise sollten alle Teile nach dem Ineinanderfügen fest sitzen. Jetzt brauchen Sie die Lampe nur noch an einer USB-Schnittstelle oder an der Jack-Buchse anschließen – und los geht’s mit dem LUMINA-Spaß!

tutoriel-arduino-assemblage-lumina-10

Einsatz Ihrer LUMINA Lampe

Derzeit bietet LUMINA vier Einsatzmöglichkeiten und einen Auswahlmodus:

Betriebsart 1: manueller Farbwechsel

Über drei Ultraschallsensoren können die Werte der Komponenten Rot, Grün und Blau stufenweise erhöht werden. Die drei anderen Sensoren senken dieselben Werte. Der Farbwechsel wird einheitlich auf alle LEDs angewendet. Ein Unterprogramm erlaubt die Änderung des Stufenwerts, sodass Farbänderungen beschleunigt werden können. Der Zugriff auf dieses Unterprogramm erfolgt durch gleichzeitiges Aktivieren von Sonar 2 und 5*.

Betriebsart 2: automatischer Farbwechsel

Zusammen wechseln die LED-Leuchten die Farbe. Es handelt sich um einen der Demo-Codes der verwendeten Library. Ein Unterprogramm wurde hinzugefügt, um die Geschwindigkeit des Farbwechsels zu variieren. Der Zugriff auf dieses Unterprogramm erfolgt durch gleichzeitiges Aktivieren von Sonar 2 und 5*.

Betriebsart 3: Lichtorgel

Jedes Sonar ist einer LED zugeordnet, die über ihm positioniert und einer Farbe zugeordnet ist. Durch Aktivieren eines Sonars wird die entsprechende LED in ihrer jeweiligen Farbe eingeschaltet. Wenn das Sonar nicht mehr aktiviert ist, wird die Lichtstärke der LED nach und nach schwächer, bis sie verlöscht.

Mehrere LEDs können gleichzeitig leuchten. Die obere LED leuchtet weiß, ihre Lichtstärke orientiert sich an der letzten aktivierten LED. Jedes Sonar ist außerdem einem Ton zugeordnet, der vom Summer so lange gespielt wird, wie die LED leuchtet. Mithilfe eines Unterprogramms kann die Dauer und Geschwindigkeit der Abstufung variiert werden ab dem Moment, wo das Sonar nicht mehr aktiviert ist (zwischen 0 und 5 Sekunden). Der Zugriff auf dieses Unterprogramm erfolgt durch gleichzeitiges Aktivieren von Sonar 2 und 5*.

Betriebsart 4: Das berühmte Spiel Simon

Die Lampe spielt eine LED-Sequenz, begleitet von Tönen, die der Spieler reproduzieren muss, indem er die entsprechenden Sonars aktiviert. Das Spiel beginnt mit einer 3er-Sequenz, die bei jeder erfolgreichen Interaktion auf bis zu 10 hintereinander aufleuchtende LEDs erhöht wird. Eine erfolgreiche Imitation löst eine kleine Animation in Grün aus, und man gelangt zum nächsten Niveau. Durch erfolgreiche Imitation auf Spiellevel 10 wird das Spiel beendet. Bei falscher Imitation wird eine kleine, rote Animation ausgelöst, und die Sequenz wird noch einmal abgespielt. Beim dritten Fehler wird der Spieler aus dem Spiel hinausgeworfen. Der Spieler hat eine bestimmte Zeitdauer zum Abspielen seiner Sequenz. Am Ende des Countdowns wird der Spieler ebenfalls eliminiert. In jedem Fall schaltet die Lampe anschließend wieder in die Betriebsart 2 – automatischer Farbwechsel.

Auswahlmodus: Verfügbar in allen Betriebsarten außer Simon, indem die Sonars 1 und 4* aktiviert werden. Die LEDs 1 bis 4* leuchten in Weiß auf und wechseln die Lichtstärke. Durch längeres Gedrückthalten dieser Sonars wird die entsprechende Betriebsart ausgelöst. Die LEDs 5 und 6* versetzen den Spieler in die Betriebsart automatischer Farbwechsel. Dasselbe gilt, wenn der Countdown abgelaufen ist.

*Nummer entspricht den Fotos und der Fritzing Schaltplanansicht und nicht dem Code.

Entstehung des Projekts LUMINA

Die Idee zu dieser Lampe kam mir, als ich mir Videopräsentationen zu den Bausätzen von Bare Conductive ansah (speziell der durch kapazitiven Sensor gesteuerten Lampen). Ich besaß bereits einen 3D-Drucker und hatte bemerkt, dass ein besonders dünner Druck schöne Transparenzeffekte ergibt, die sich ideal für meine Zwecke eignen.

Es fehlten mir noch die nötigen Elektronikkenntnisse, doch die Aussicht auf die Durchführung eines kompletten Projekts mithilfe des 3D-Drucks hat mich überzeugt, mich näher damit zu beschäftigen.

Wahl der Plattformen

Die Elektronikplatine

Da ich soeben mit der Arduino-Programmierung begonnen hatte, besaß ich naturgemäß das berühmte UNO R3 für Anfänger. So lag es nahe, sowohl aus der Hardware als auch aus dem Lernaufwand das Meiste herauszuholen, indem ich bei meinem Projekt diese Platine verwendete.

Es könnte jedoch auch jedes andere Board aus der Arduino Familie bzw. jeder beliebige Mikrocontroller (z.B. Raspberry Pi für alle, die gern in Python programmieren) verwendet werden.

Vorsicht ist allerdings bei der Durchführung des Projekts mit einem micro:bit geboten: Auch wenn Sie mit einem Brakeout über eine ausreichende Zahl von Pins verfügen, liefert die Platine eine Spannung von 3,3V, die für die Versorgung der verschiedenen Sensoren zu schwach ist.

Die Sensoren

Kapazitive Sensoren aus elektrisch leitfähiger Farbe hätten mir zwar sehr gefallen, doch sie müssen relativ groß sein, um effizient zu sein. Da der entwickelte Gegenstand nicht zu groß werden sollte, brauchte ich eine kompaktere Lösung. Die Ultraschallsensoren HC-SR04 bieten zwei Vorteile: Sie sind kostengünstig und bieten einen breiten Messbereich. Für denselben Zweck hätte man auch Infrarot-Sensoren wie jene des Herstellers Pololu verwenden können.

Die LEDs

Eine Zeitlang habe ich Neopixel RGB LEDs in Erwägung gezogen, doch die verkettbaren Grove-LEDs bieten den nicht unwesentlichen Vorteil eines überaus einfachen, lötfreien Anschlusses. Ihre Platine enthält Bohrungen für den einfachen Anschluss an den Rahmen. Beide LED-Typen verfügen über fertige Arduino-Librarys.

Der 3D-Drucker

Ich für meinen Teil nutze einen Dagoma Neva. Eine 0.2 mm-Einstellung (schnell) liefert bereits ein sehr schönes Ergebnis. Die dünnen Teile lassen zwischen den Schichten kein Loch, die Teile greifen gut ineinander. Ich verwende ein Filament in Ivory Weiß (diesen Farbton verwende ich für alle meine Tests). Durch den relativ feinen Druck wird die Farbe der LEDs gut verteilt, zu grelles Licht wird absorbiert.

Achtung: In den Basisabmessungen nutzt das Gehäuse die Druckfläche des Neva maximal aus. Entfernen Sie sofort die überschüssige Paste, die der Drucker beim Starten deponiert, bevor der Druckkopf erneut über die Stelle fährt.

Die Softwaretools

Das Programm wird mit einer Arduino-Standardumgebung durchgeführt. Ein kleiner Hinweis: Bei den Ultraschallsensoren habe ich die NewPing-Library verwendet. Die HC-SR04 sind für den Trigger alle an derselben Klemme angeschlossen, was zu Funktionsstörungen mit der Ping-Standard-Library führt. Beachten Sie, dass mit der Software MBlock des Anbieters Makeblock Arduino Boards in einer grafischen Programmiersprache vom Typ Scratch programmiert wird.

Die Modellierung der Teile erfolgte mit Tinkercad, einer kostenlos im Internet verfügbaren Schnittstelle, die sehr einfach und benutzerfreundlich ist. Die Modellierung erfolgt durch Hinzufügen und Abziehen mehr oder weniger komplexer geometrischer Formen. Dennoch können damit sehr ausgefeilte Designs erzielt werden. Im Internet stehen zahlreiche Video-Tutorials zur Verfügung.

Ein paar Ratschläge

Für einen Anfänger hat die Durchführung eines ersten Elektronikprojekts etwas Berauschendes. Es kann aber auch eine Quelle der Frustration sein, wenn man unerwarteten Komplikationen oder unverständlichen Bugs begegnet. Hier ein paar Tipps, die Neulinge davor bewahren sollen, das Handtuch zu werfen.

Überlegen Sie sich genau, was Sie machen wollen:

Wie bei jedem kreativen Projekt ist eine der größten Gefahren, sich auf halbem Wege zu verzetteln, da die Möglichkeiten sehr vielfältig sind. Deshalb ist es sehr wichtig, im gesamten Projektverlauf das Ziel nicht aus den Augen zu verlieren.

Fangen Sie bescheiden an:

Rom wurde nicht an einem Tag erbaut! Als Anfänger müssen Sie zunächst akzeptieren, dass Sie nicht sofort ein super geniales, absolut megageiles Projekt durchführen können. Aber keine Sorge: Ihre Freunde sind wahrscheinlich ebenso blutige Anfänger wie Sie, und selbst eine einfache Montage auf der Basis der Hinderniserkennung und blinkender LEDs wird ihnen unumwundene Bewunderung über Ihre Programmiertalente entlocken! Und nichts hält Sie davon ab, Ihre Montage nach und nach komplexer zu gestalten.

Geben Sie Ihrem Projekt einen Code-Namen:

Weil es cool ist! Naja, „LUMINA“ verdient zwar nicht die goldene Palme der Kategorie Originalität, aber wenn Sie mehrere Projekte am Laufen haben, dann hilft Ihnen ein Kosename für jedes Projekt dabei, den Überblick zu behalten.

– Investieren Sie in einen Stift und Papier:

Jedes Mal, wenn ich bei einer genialen Idee direkt einen Code schreiben wollte, habe ich zwei Stunden damit verbracht, was nicht nötig gewesen wäre. Bevor Sie sich also über Ihr Keyboard werfen, atmen Sie gut durch, spitzen Ihren Bleistift, legen Ihren Radiergummi daneben und… denken erst mal nach. „Was man gut begreift, lässt deutlich sich ausdrücken, Gar schnell die rechten Worte in den Sinn dir rücken.“ Dieser Leitspruch von Nicolas Boileau gilt auch für die Programmierung! Sie werden sehen, damit sparen Sie Zeit!

Holen Sie sich Informationen:

Eines ist sicher, wenn man mit Geeks arbeitet, bekommt man leicht Erklärungen zu Unklarheiten. Doch auch wer nicht das Glück hat, Geeks unter seinen Freunden zu haben, sollte nicht in Panik geraten! Das Internet ist voller Goldminen in verschiedenen Formen. Da sind zunächst die offiziellen Websites der von Ihnen verwendeten Plattformen, die eine Pannenhilfe anbieten: Arduino, Rasberry Pi, Python, Micro:bit … Und ganz allgemein bietet schon ein einfacher Blick in Google mit einigen Schlüsselbegriffen im Notfall Abhilfe!

Wiederholen Sie die Grundlagen:

Viele Programmierfehler kommen von einfachen Syntaxfehlern, die man nicht sieht, obwohl man seinen Code wiederholt korrekturgelesen hat. Ein großer Klassiker: Gerne wird “if a = 0” anstelle von “if a==0” geschrieben. Es ist zum Verrücktwerden. Bei einem Bug ist es also sehr wichtig, selbst die elementarsten Funktionen und Schreibweisen zu überprüfen.

– Halten Sie sich an die Konventionen der Programmierung:

Da Sie vielleicht nicht der Einzige sein werden, der Ihren Code liest, oder ganz einfach weil Sie nach einigen Wochen noch einmal darauf zurückkommen müssen, folgen Sie stets den Best Practices hinsichtlich der Präsentation (Einrückungen nicht vergessen!) und der Kommentare. Auch hiermit werden Sie Zeit sparen und sich einen Gefallen tun.

Haben Sie Spaß daran!

Wenn dieses Tutorial Ihr Interesse geweckt hat, dann sind Sie vielleicht selbst Amateurprogrammierer. Programmieren zu lernen ist eine spannende Sache, kann aber auch als lästig und schwierig empfunden werden. Damit Sie nicht vorzeitig aufgeben, achten Sie darauf, immer etwas zu machen, was Ihnen gefällt!

Ressourcen für das Arduino Tutorial – Bau einer DIY-Lampe „LUMINA“