Inhaltsverzeichnis:

Interaktives Umgebungslicht - Gunook
Interaktives Umgebungslicht - Gunook

Video: Interaktives Umgebungslicht - Gunook

Video: Interaktives Umgebungslicht - Gunook
Video: DNP Projektionsoberflächen für ein perfektes Bild 2024, Juli
Anonim
Interaktives Umgebungslicht
Interaktives Umgebungslicht
Interaktives Umgebungslicht
Interaktives Umgebungslicht
Interaktives Umgebungslicht
Interaktives Umgebungslicht

Dies ist mein erstes instructable! Bitte haben Sie Geduld mit mir, während ich damit kämpfe, richtiges Englisch zu schreiben. Korrigiert mich gerne! Ich habe dieses Projekt direkt nach dem Start des Wettbewerbs „Let it glow“gestartet. Ich wünschte, ich hätte viel mehr gemacht und fertig, was ich machen wollte. Aber zwischen Schule und Arbeit hatte ich nicht mehr so viel Zeit, wie ich wollte. Trotzdem lasse ich hier einen Bericht über meine Experimente als instructable, damit jeder versuchen kann, was ich getan habe. Dieses instructable soll nicht als Leitfaden dienen und lehren, wie man diese Vorrichtung macht. Es ist kein Leitfaden für Anfänger in der Elektronik. Es ist eher so, als würde ich eine Idee und ein Ziel teilen, das ich verfolgen möchte. Wenn Sie ein Anfänger / völliger Unwissender in der Elektronik sind und so etwas herstellen möchten, tut es mir leid! Aber wir können versuchen, Ihnen immer zu helfen. Siehe den letzten Schritt. Wir haben schon viele Ambient Light Projekte gesehen. Die meisten von ihnen verwenden RGB-LEDs: - Um einen Raum mit einer Farbe zu beleuchten und eine Atmosphäre zu schaffen, die Ihrer Stimmung entspricht - Um Lichteffekte aus der Farbe des Fernsehers/Monitors oder aus Audio zu erzeugen. Es gibt sogar ein paar in instructables.com Related: DIY Ambient Light SystemsLight Bar Ambient LightingBuilding your own ambient color lighting bars Mit diesem Wettbewerb als Entschuldigung startete ich ein Projekt, das mir schon eine Weile im Kopf herumschwirrte. Ich wollte schon immer etwas Ähnliches wie diese Umgebungslichter machen und die Wände in meinem Zimmer mit RGB-LEDs füllen. Aber wir gehen noch einen Schritt weiter und machen alle und jeden von ihnen kontrollierbar. Dieses Projekt wird hoffentlich zu einem Open-Source-Elektronik-Kit für Bastler und Elektronik-Tüftler führen, das Hardware-/Software-Hacking und sensorische Integration ermöglicht. Hier eine kleine Vorschau von dem, was ich gemacht habe:

Schritt 1: Erkundung der Idee

Ich möchte in der Lage sein, die Wände in meinem Zimmer mit RGB-LEDs zu füllen und Farbe und Helligkeit für jede LED zu steuern. Ich werde einen Mikrocontroller verwenden, um die Benutzerfreundlichkeit und Flexibilität zu gewährleisten. Leider kann ich mit den wenigen Pins, die auf Mikrocontrollern verfügbar sind, nicht Hunderte von LEDs steuern. Es wäre sogar schwierig, die Steuerung so vieler LEDs zu codieren. Also beschloss ich, alle LEDs in mehrere kleinere Balken aufzuteilen und für jeden Balken einen Mikrocontroller zu verwenden. Dann würde ich die Kommunikationsfähigkeiten von Mikrocontrollern nutzen, um Informationen zwischen ihnen auszutauschen. Diese Informationen können die Farbe und Helligkeit von LEDs, Muster/Farbfolgen und sensorische Informationen sein. Für jeden Balken habe ich mich für 16 RGB-LEDs entschieden. Dies führt zu einem weder zu großen noch zu kleinen Balken. Auf diese Weise verwende ich eine akzeptable Anzahl von Ressourcen für jede LED, wodurch die Kosten für jede Leiste reduziert werden. Trotzdem sind 16 RGB-LEDs 48 LEDs (3 * 16 = 48), die der Mikrocontroller steuern kann. Aus Kostengründen habe ich mich für die Verwendung entschieden der billigste Mikrocontroller, den ich verwenden könnte. Dies bedeutet, dass der Mikrocontroller nur bis zu 20 I/O-Pins hat, nicht genug für 48 LEDs. Ich möchte kein Charlieplexing oder eine Art Zeitteilungsantrieb verwenden, da das Ziel des Projekts darin besteht, einen Raum zu beleuchten Als Alternative könnte ich mir vorstellen, eine Art verriegeltes Schieberegister zu verwenden! Fortfahren: - Erstellen Sie ein interaktives Umgebungslicht - Erstellen Sie eine Standardleiste aus steuerbaren LEDs - Möglichkeit, mehrere Balken zu verbinden, um einen Raum zu füllen - Ermöglichen Sie Benutzeranpassung / Konfiguration und sensorische Integration

Schritt 2: Hardware

Hardware
Hardware
Hardware
Hardware

Wie im vorherigen Schritt gesagt, möchte ich mehrere Balken machen, um einen Raum zu beleuchten. Das erinnert an die Kostenfrage. Ich werde versuchen, jede Bar so kostengünstig wie möglich zu gestalten. Der von mir verwendete Mikrocontroller war ein AVR ATtiny2313. Diese sind eher billig und ich hatte ein paar herumliegen. ATtiny2313 verfügt auch über eine universelle serielle Schnittstelle und eine USART-Schnittstelle, die in den folgenden Schritten zum Einsatz kommen werden. Ich hatte auch drei MCP23016 - I2C 16bit I/O Port Expander herumliegen, genau die richtige Anzahl! Ich habe jeden Port-Expander verwendet, um eine Farbe der 16 LEDs zu steuern. Die LEDs… waren leider die billigsten die ich finden konnte. Sie sind 48 rot, grün und blau ~10000mcd 5mm mit 20 Grad Winkel. Dies sollte vorerst keine Rolle spielen, da dies nur ein Prototyp ist. Trotz dieser Tatsache ist das Ergebnis ganz nett! Ich betreibe den Mikrocontroller mit 8 MHz. Der I2C-Bus wird mit 400 kHz getaktet. Die LED-Schaltfrequenz beträgt ca. 400 Hz. Auf diese Weise, wenn ich in der Lage bin, 48 LEDs anzusteuern, ohne es bis ans Limit zu treiben, habe ich später Platz für mehr!

Schritt 3: Montage

Montage
Montage
Montage
Montage
Montage
Montage
Montage
Montage

Nachdem ich die Schaltung entworfen hatte, baute ich sie für Prototyping-Zwecke in mehrere Steckbretter ein. Nach mehreren Stunden des Schneidens von Drähten und Zusammenbauen der Schaltung erhielt ich dieses Ergebnis: Ein riesiges Steckbrett mit 48 LEDs und Tonnen von Draht!

Schritt 4: Kontrolle?

Steuerung?
Steuerung?

Dies ist der schwierigste Teil des Projekts. Ich wollte einen Steueralgorithmus generisch genug machen, um Muster / Sequenzen zu handhaben und auch die Helligkeit und Farbe jeder LED zu steuern. Um die LEDs zu steuern, muss ich einen Frame von 4 Byte an den MCP23016 senden (1 Byte = 8 Bit). Ein Byte mit der der Farbe entsprechenden Adresse des ICs, 1 Byte mit dem Befehl "write" und 2 Byte mit dem Wert der 16bits (LEDs). Der IC ist als "Senke" mit den LEDs verbunden, was bedeutet, dass ein logischer Wert 0 am Pin die LED aufleuchten lässt. Und jetzt der herausfordernde Teil, wie man eine PWM-Steuerung für 48 LEDs macht? Lassen Sie uns PWM für eine LED studieren! PWM erklärt @ Wikipedia. Wenn ich die Helligkeit der LED bei 50% haben möchte, beträgt mein PWM-Wert 50%. Dies bedeutet, dass die LED in einem bestimmten Zeitraum genauso lange eingeschaltet wie ausgeschaltet sein sollte. Nehmen wir einen Zeitraum von 1 Sekunde. PWM von 50% bedeutet, dass in dieser 1 Sekunde die Ein-Zeit 0,5 Sekunden und die Aus-Zeit 0,5 Sekunden beträgt. PWM von 80%? 0,2 Sekunden aus, 0,8 Sekunden an! Ganz einfach, oder?In der digitalen Welt: Bei einer Periode von 10 Taktzyklen bedeutet 50%, dass für 5 Zyklen die LED an ist und für weitere 5 Zyklen die LED aus ist. 20 %? 2 Zyklen an, 8 Zyklen aus. 45%? Nun, wir können nicht wirklich 45% bekommen… Da die Periode in Zyklen ist und wir nur 10 Zyklen haben, können wir die PWM nur in Schritten von 10% aufteilen. Dies bedeutet, dass die Entwicklung des Pins für 50% betragen sollte: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; Oder sogar 1, 0, 1, 0, 1, 0, 1, 0, 1, 0;Bei der Programmierung können wir diese Sequenz zum Ein- und Ausschalten eines Arrays erstellen. Für jeden Zyklus, den wir an den Pin ausgeben, geben wir den Wert des Indexes aus, bei dem der Zyklus ist. Habe ich bisher Sinn gemacht? Wenn wir LED0 zu 50% und LED1 zu 20% machen möchten, können wir beide Arrays hinzufügen. Zum Ansteuern des LED0-Pins: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0;Für die Ansteuerung des LED1-Pins: 2, 2, 0, 0, 0, 0, 0, 0, 0, 0;Ergebnis in LED0 +LED0: 3, 3, 1, 1, 1, 0, 0, 0, 0, 0;Wenn wir diese Zahlenfolge im Port-Expander-IC ausgeben, erhalten wir LED0 mit 50% Helligkeit und LED1 mit 20%!! Einfach für 2 LEDs, oder? Jetzt müssen wir dies für 16 LEDs für jede Farbe machen! Für jedes dieser Arrays haben wir eine Helligkeitskombination für jede Farbe (16 LEDs) Jedes Mal, wenn wir eine andere Farbkombination wünschen, müssen wir dieses Array ändern.

Schritt 5: Machen Sie es sich leicht

Machen Sie es sich leicht!
Machen Sie es sich leicht!
Machen Sie es sich leicht!
Machen Sie es sich leicht!

Der vorherige Schritt ist zu viel Arbeit, um eine einfache Sequenz zu erstellen… Also beschloss ich, ein Programm zu erstellen, bei dem wir die Farben jeder LED in einem Schritt der Sequenz angeben und wir die drei Arrays des Schrittes erhalten. Ich habe dieses Programm aus Zeitgründen in LabView erstellt.

Schritt 6: Erste Experimente

Erste Experimente
Erste Experimente

Laden Sie mehrere Schritte in den Mikrocontroller und wir erhalten ungefähr Folgendes: Entschuldigung für die schlechte Qualität der Videos! Ich habe die maximale Anzahl der Schritte einer Sequenz auf 8 festgelegt und die PWM auf 20% Sprünge begrenzt. Diese Entscheidung hängt von der Art der Steuerung ab, die ich verwende und wie viel EEPROM der ATtiny2313 hat. In diesen Experimenten habe ich versucht, zu sehen, welche Effekte ich erzielen kann. Ich muss sagen, dass ich mit dem Ergebnis zufrieden bin!

Schritt 7: Echtzeitsteuerung

Echtzeitsteuerung
Echtzeitsteuerung
Echtzeitsteuerung
Echtzeitsteuerung
Echtzeitsteuerung
Echtzeitsteuerung

Wie in den vorherigen Schritten erwähnt, möchte ich mit allen Mikrocontrollern kommunizieren, die die LEDs in meinem Zimmer steuern. Also habe ich die vorhandene USART-Schnittstelle in ATtiny2313 verwendet und an meinen Computer angeschlossen. Ich habe auch ein Programm in LabView erstellt, um die LED-Leiste zu steuern. In diesem Programm kann ich dem Mikrocontroller sagen, wie lang die Sequenz ist, die Farbe jeder LED und die Zeit zwischen den Schritten einer Sequenz. Im nächsten Video werde ich demonstrieren, wie ich die Farbe von LEDs ändern und Sequenzen definieren kann.

Schritt 8: Schlussfolgerungen

Schlussfolgerungen
Schlussfolgerungen
Schlussfolgerungen
Schlussfolgerungen
Schlussfolgerungen
Schlussfolgerungen
Schlussfolgerungen
Schlussfolgerungen

Ich glaube, dass mir dieser erste Ansatz meines Projekts gelungen ist. Ich bin in der Lage, 16 RGB-LEDs mit wenig Ressourcen und Einschränkungen zu steuern. Es ist möglich, jede LED separat anzusteuern und so eine beliebige Sequenz zu erstellen.

Zukünftige Arbeit:

Wenn ich positives Feedback von Leuten bekomme, kann ich diese Idee weiterentwickeln und einen vollständigen DIY-Elektronikbausatz mit Leiterplatten und Montageanleitung erstellen.

Für meine nächste Version werde ich: - Ändern Sie den Mikrocontroller in einen mit ADC - Ändern Sie den MCP23016 für eine andere Art von Serial-In-Parallel-Ausgang, der mehr Strom von LEDs aufnehmen kann -Erstellen Sie Open-Source-Software, um mit dem Mikrocontroller zu kommunizieren und Steuern Sie die LEDs -Entwickeln Sie die Kommunikation zwischen mehreren Mikrocontrollern.

Haben Sie einen Vorschlag oder eine Frage? Oder hinterlasse einen Kommentar!

Finalist bei Let It Glow!

Empfohlen: