Vor ein paar Monaten wurde eine 3000-Dollar-Gewitterlampe in der Maker-Community viral. Es war ein atemberaubend schönes Licht, aber das Preisschild hat es für jeden mit intakter geistiger Gesundheit unerreichbar gemacht. Was wir heute machen werden, ist nicht genau dasselbe - wir machen etwas Praktischeres statt eines Kunstwerks, aber es wird viel cooler und anpassbarer.
Ich habe beschlossen, Lautsprecher auszulassen, in der Annahme, dass Sie wahrscheinlich bereits ein gutes Paar Lautsprecher in Ihrem Raum haben, die Sie lieber verwenden würden, und ehrlich gesagt, einen Lautsprecher in eine Lampe zu setzen, ist irgendwie komisch. Stattdessen füge ich ein Mikrofon hinzu, mit dem der Blitz automatisch auf laute Geräusche reagieren kann - entweder durch ein tatsächliches Gewitter oder einen Soundtrack, der von deinem PC oder deiner Stereoanlage abgespielt wird.
Wir werden auch einen Strang voller RGB-Neopixel-LEDs (WS2812B) verwenden, damit wir andere Farben als Weiß reproduzieren können und die Kontrolle über jedes Pixel haben.
Warnung : Die Stromversorgung, die ich in diesem Projekt verwendet habe, hat Schraubklemmen, die an eine stromführende Wechselstromleitung angeschlossen werden. Wenn Sie sich nicht sicher fühlen, einen Stecker zu verdrahten, stellen Sie bitte sicher, dass Sie ein voll gekapseltes Netzteil kaufen. Zumindest müssen Sie das Netzteil in eine sichere Projektbox einschließen.
Schritt 0: Einführung
Hier ist ein Demo-Video des fertigen Projekts. Ich habe bisher ein paar verschiedene Modi implementiert, von der Standardbeleuchtung bis hin zu einer trippigen Säurewolke und einer Farbentladungslampe, die über die Fernbedienung ausgewählt werden kann.
Der vollständige Code und die benötigten Bibliotheken stehen in diesem Github-Repository zum Download bereit.
Schritt 1: Sie werden brauchen
- WS2812B-Strang, typischerweise bei ungefähr $ 50 für 5 Meter. Machen Sie sich keine Sorgen, wenn Sie eine andere Art von Neopixel-Strängen haben, die fast sicher von der FastLED-Schnittstelle unterstützt werden, aber Ihre Verdrahtung kann anders sein (Sie benötigen zum Beispiel möglicherweise eine Synchronisierungsleitung zusätzlich zum Signal).
- 5V, 10A + Netzteil - Ich kaufte einige 15A-Einheiten für je $ 11. Sie nehmen 120-240V AC-Eingang und produzieren einen kräftigen 5V-Ausgang, der genug ist, um alle unsere Pixel bei voller Helligkeit und das Arduino zu versorgen.
- Elektrische Verkabelung, Stecker und Inline-Schalter
- Projekteinschließung
- Zwei Arduinos. $ 10 Funduino Klone sind in Ordnung. Die zweite ist für die Fernsteuerung erforderlich, während die erste die Hauptlogik und LEDs steuert.
- Zwei 2, 2k Ohm Widerstände - der genaue Wert ist nicht so wichtig, etwa 1, 5k bis 47k sollte funktionieren.
- Steckbrett
- TSOP4838 IR Empfänger
- IR-Fernbedienung - Ich kaufte in Bulk für etwa $ 2 pro Stück, aber jede Fernbedienung sollte mit Code-Modifikationen arbeiten.
- Großes Mikrofonmodul
- Schrott MDF-Holz, um Ihre Basis zu schneiden, und ein Puzzle.
- Polystyrol-Verpackungsmaterial / Box-Einsätze.
- Kissenbezug aus Polypropylen Baumwolle. Ich zog mehr als genug von ein paar schrecklichen alten Kissen. Wenn das keine Option ist, sollten Sie in der Lage sein, etwas neues für ungefähr $ 10 zu kaufen, oder sogar billigere Watte zu verwenden. Ich versuchte es mit beiden - die Watte brauchte mehr Arbeit, um sie herauszuholen und war nicht so flauschig, aber im Notfall wird es funktionieren.
- Kette und Haken zum Aufhängen der Wolke - sollten mehr als 5kg halten.
- Klebepistole mit niedriger Temperatureinstellung
- Sprühkleber - einfacher damit, die Füllung auf deine Wolke zu kleben, aber eine Klebepistole könnte auch funktionieren.
Die Gesamtkosten belaufen sich auf rund $ 100, ohne Werkzeuge, aber das meiste habe ich aus dem ganzen Haus geholt. Alle Elektronikkomponenten sind allgemein verfügbar; Das Mikrofon befindet sich in einem Sensor-Kit oder kann einzeln gekauft werden.
Schritt 2: Schneiden Sie die Basis
Schneiden Sie eine raue Basis aus einem Stück MDF mit einer Stichsäge aus - die genaue Form liegt natürlich bei Ihnen, aber aus irgendeinem Grund ist eine Wolke in meiner Meinung nach eine Bohnenform. Wir werden einige Haken zum Aufhängen anbringen, aber ansonsten bietet es nur eine solide Basis, auf der man aufbauen kann. Der zentrale Bereich wird für die Elektronik, das Netzteil und die Kette reserviert, also stellen Sie sicher, dass Sie genügend Platz haben, um zumindest Ihr Projektgehäuse mit einigen Haken zu umgeben.
Schritt 3: Schicht auf Polystyrol
Dies ist der schwierigste und kreativste Schritt, aber wir schaffen nur etwas Solides und irgendwie Wolkenförmiges, um den LED-Streifen darauf zu kleben. Kleben Sie große Stücke der Styroporverpackung auf die Basis (und darunter), und verwenden Sie eine niedrige Heizstufe auf Ihrer Klebepistole. Wenn Sie keine niedrige Einstellung haben, schalten Sie die Heißluftpistole aus und lassen Sie sie etwas abkühlen, bevor Sie versuchen zu kleben. Wenn die Temperatur zu hoch ist, schmelzen Sie einfach durch das Verpackungsmaterial.
Stellen Sie sicher, dass jedes Stück fest ist, bevor Sie das nächste kleben, und es ist am besten, mehr anzukleben als nicht genug.
Denken Sie daran, einen ausreichend großen Hohlraum in der Wolke zu lassen, um die Elektronik, Kette und Haken zu montieren.
Schritt 4: Schnitzen Sie eine 3D-Wolkenform
Verwenden Sie ein Tranchiermesser, um Ihre Wolke zu verschönern, indem Sie die Ecken abrunden und unnötiges Material wegschneiden, bis Sie eine raue 3D-Wolkenform erreicht haben. Es ist nicht wirklich wichtig, wie grob das ist, da wir später alles abdecken werden - du kannst Fehler leicht verstecken.
Schritt 5: Fix Haken, Aufräumen
Befestigen Sie schließlich drei oder vier Haken an der MDF-Basis von jeder Ecke des Hohlraums der Wolke aus. Sie müssen ein kleines Pilotloch bohren, da MDF nur schwer in die Schraube eingeschraubt werden kann.
Ich habe auch alles mit einer einfachen weißen Sprühfarbe versehen, um eine einheitliche Farbbasis zu gewährleisten, aber ich bin mir nicht sicher, ob es wirklich notwendig war.
Schritt 6: Kleben Sie LED-Streifen
Bevor Sie anfangen, Klebstoff auf die LEDs aufzutragen, starten Sie entweder von einem neuen Streifen oder zählen Sie, wie viele LEDs Sie insgesamt haben - Sie müssen herausfinden, wie viele Sie später im Programmierschritt verwendet haben. Schneiden Sie ein kleines Loch in die Seite Ihrer Wolke und stochern Sie durch die Drähte, die den Anfang Ihres LED-Streifens bilden, in den Wolkenhohlraum. Achten Sie sehr darauf, dass Sie vom richtigen Ende ausgehen - die LED-Streifen sind richtungsempfindlich. Stellen Sie daher sicher, dass die Signalpfeile von der Aussparung weg zeigen.
Arbeiten Sie langsam, kleben Sie die LED-Pixel in einem kreisförmigen Muster auf die Styroporbasis, bevor Sie den Streifen an die Basis ziehen, um die Unterseite zu bedecken. Nochmal - Sie müssen hier nicht perfekt sein, denn wenn wir erst einmal alles verteilt haben und es mit Füllung vollgestopft haben, sieht das Ganze sowieso ziemlich umwerfend aus.
Ich benutzte insgesamt 85 LEDs oder etwas über 2, 5 m, die den Hauptkörper zweimal umschlossen hatten und eine einzelne LED-Kette an der Unterseite verwendeten.
Schritt 7: Schaltplan
Die Verdrahtung ist komplex, aber leicht in Abschnitte unterteilt.
Zuerst wird die Stromversorgung verdrahtet und gesichert, vorzugsweise in einem separaten Projektkoffer. Ich werde Sie nicht über die Sicherheit von aktiven Wechselstromkabeln unterrichten, deshalb gehe ich davon aus, dass Sie mit diesem Teil umgehen können, und Sie haben eine 5V- und GND-Leitung.
WICHTIG : Beim Programmieren und Testen des Arduino sollten die 5V von Ihrem Netzteil isoliert vom Arduino bleiben (die GNDs sind jedoch alle verbunden) - es sollte nur den LED-Strip mit Strom versorgen, während der Arduino die über USB gelieferten 5V verwendet. Wenn Sie mit dem Programmieren fertig sind, sollte der USB-Anschluss getrennt werden und dem Arduino keine 5V mehr zur Verfügung stellen. Zu diesem Zeitpunkt sollten Sie den 5V-Stecker von Ihrem Netzteil an die 5V-Schiene an der linken Seite des Steckbretts anschließen.
Beginnen Sie, indem Sie die Masse- und 5-V-Stifte von jedem Arduino an die linken Seitenschienen des Steckbretts anschließen. Sie teilen sich die gleiche Energiequelle, egal, ob es sich um das externe Netzteil handelt, das wir haben, oder um das USB-Netzteil.
Als nächstes vervollständigen Sie den I2C-Verdrahtungsabschnitt - dies ermöglicht unseren beiden Arduinos die Kommunikation. Nehmen Sie die A4-Pins von beiden Arduinos auf eine einzelne Reihe auf dem Steckbrett und verbinden Sie dann einen 2, 2-k-Widerstand von dieser Reihe mit der 5-V-Schiene. Wiederholen Sie für A5, verbinden Sie sie in einer separaten Reihe, mit einem weiteren 2.2k Widerstand wieder auf 5V.
Schließen Sie den IR-Empfänger als nächstes an - überprüfen Sie die Pin-Konfiguration, wenn Sie ein anderes Modell haben, aber grundsätzlich sollte der Signal-Pin auf einem Arduino auf D11 gehen. Laden Sie die thundercloud_ir_receiver.ino- Skizze auf dieses Arduino hoch (der gesamte Code ist hier), und ziehen Sie dann den USB-Stecker ab, da wir ihn nicht mehr benötigen.
Verbinden Sie auf dem anderen Arduino den Dateneingangsstift vom Anfang Ihres LED-Streifens mit D6. Die GND von Ihren LEDs sollte mit allen Arduinos übereinstimmen, aber zu diesem Zeitpunkt kommt die 5V direkt von der PSU.
Schließen Sie das Mikrofonmodul auch an diesem Arduino an A0 an. Laden Sie die andere thundercloud.ino- Skizze hoch, und halten Sie den USB-Port während des Debuggens ein. Beginnen Sie, indem Sie die Variable NUM_LEDS entsprechend ändern.
Schritt 8: Kleben Sie auf die Füllung
Als letzten Schritt kleben Sie Ihre Füllung an. Es gibt keine besondere Technik - sprühen Sie einfach die Wolke mit einer Schicht Klebstoff und nehmen Sie eine Handvoll Füllung. Es ist einfacher, mit der Füllung zu arbeiten, wenn Sie es bereits ausgepackt haben, um die Oberfläche zu vergrößern.
Wenn Sie die gleiche Fernbedienung wie ich verwendet haben, wird der STROBE-Button in den reaktiven Cloud-Modus geschaltet. FLASH ist der trippy Farbmodus, und FADE ist die langsam verblassende Farbstimmungslampe.
Schritt 9: Code Erläuterung
Warum zwei Arduinos? Sowohl die Programmierung des Infrarot-Empfängers als auch die Pixeltreiber-Bibliothek des WS2818B reagieren sehr empfindlich auf das Timing. Wenn das Timing verzögert wird, ist das IR-Signal fehlerhaft. Indem wir jedem Schaltkreis einen eigenen Mikrocontroller geben und ihn über das I2C-Protokoll sprechen lassen, können wir sicherstellen, dass das Timing für jeden Schaltkreis perfekt ist. Sie können auch separate IR-Module mit einem eigenen integrierten Mikrocontroller finden, aber meine Forschung fand heraus, dass diese tatsächlich mehr kosten als ein einfacher Arduino-Klon und IR-LED. Thundercloud_ir_reciever sollte keine Erklärung erfordern, obwohl Sie vielleicht zuerst über I2C Grundlagen nachlesen möchten.
Auf dem Hauptwetterwolken-Controller definieren wir verschiedene Betriebsmodi, wie ON (die Blitzeffekte sind nicht aktiviert), CLOUD (der Blitz ist nur Sound aktiviert), ACID (die Cloud zeigt trippige Farben) oder einfache Einzelfarbmodi. Um einen neuen Modus zu definieren, fügen Sie zuerst die Enumeration hinzu, öffnen Sie dann die Konsole und suchen Sie nach einer Fernsteuerungsschaltfläche, um sie zuzuordnen. Jeder Remote-Drucker sollte eine Debug-Zeile drucken. In der Methode receiveEvent () ordnen wir diese Tastendrücke einem Modus zu, fügen also dort eine zusätzliche switch-Anweisung hinzu. Schließlich leiten wir diese Modusauswahl in der main loop () -Methode an verschiedene Anzeigefunktionen weiter.
Der Mikrofon-Smoothing-Code stammt ursprünglich von Adafruit - ich habe ihn für unsere Bedürfnisse vereinfacht und einen Trigger hinzugefügt, wenn ein lauter als durchschnittliches Rauschen zu hören ist.
Schritt 10: Blitzmodi
Die Blitzanzeiger kombinieren drei verschiedene "Arten" von Blitzen, um etwas zu erreichen, das ausreichend realistisch oder zumindest angenehm für das Auge ist. Der erste Typ ist crack (), wobei jede LED für 10-100 ms kurz angeschaltet wird. Der zweite Typ ist rolling () - wobei jede LED eine 10% ige Chance der Aktivierung hat und die gesamte Schleife 2-10 mal wiederholt wird, mit einer Verzögerung von 5-100ms zwischen jedem Zyklus. Der dritte Typ ist thunderburst (), der zwei verschiedene Abschnitte des Streifens mit jeweils zwischen 10 und 20 LEDs auswählt und diese Abschnitte kurz von 3-6 Mal aufblitzt. Untersuchen Sie diese Methoden im Detail, um zu sehen, wie einzelne LEDs aktiviert sind - das HSV-Farbrad wird durchgängig verwendet (also weiß ist H = 0, S = 0, V = 255). Ich würde Sie ermutigen, neue Lightning-Anzeigen zu optimieren oder zu schreiben und sie dann in den Kommentaren zu teilen, wenn Sie eine solche machen, die Ihnen gefällt.
Jedes Mal, wenn ein Blitz ausgelöst wird oder die Schleife ausgeführt wird, wählt die Wolke zufällig zwischen den drei Arten von Blitzen. Schließlich deaktiviert eine reset () - Methode alle Lichter, sonst "erinnern" sie sich an ihren vorherigen Zustand.
Fragen oder Probleme - bitte melde dich in den Kommentaren und ich werde mein Bestes geben, um zu helfen. Wenn Sie einen Github-Account haben, können Sie Fehler oder Probleme stattdessen im Issue-Tracker veröffentlichen. Wenn Sie Änderungen vorgenommen oder neue Beleuchtungsfunktionen geschrieben haben, teilen Sie bitte einen Link zu Ihrem Code auf Gist oder Pastebin.