Wie man eine Wolkenlampe mit Sound Reactive Lightning baut
Vor ein paar Monaten wurde in der Herstellergemeinschaft eine Donner- und Blitzlichtlampe im Wert von 3000 Dollar viral. Es war ein atemberaubend schönes Licht, aber der Preis machte es für jedermann mit intaktem Verstand unmöglich. Was wir heute machen, ist nicht dasselbe - wir machen etwas Praktischeres anstelle eines Kunstwerks, aber es wird viel cooler und anpassbarer sein.
Ich habe mich dafür entschieden, die Lautsprecher auszulassen, weil Sie wahrscheinlich bereits ein gutes Paar Lautsprecher in Ihrem Zimmer haben, die Sie lieber verwenden würden, und ehrlich gesagt, wenn Sie einen Lautsprecher in eine Lampe stellen, ist das irgendwie komisch. Stattdessen füge ich ein Mikrofon hinzu, mit dem der Blitz automatisch auf laute Geräusche reagieren kann - entweder durch ein Gewitter oder einen Soundtrack, der von Ihrem PC oder Ihrer Stereoanlage abgespielt wird.
Wir werden auch einen Strang voller RGB-Neopixel-LEDs (WS2812B) verwenden, damit wir andere Farben als Weiß reproduzieren können und jedes Pixel steuern können.
Warnung: Das Netzteil, das ich in diesem Projekt verwendet habe, verfügt über Schraubklemmen, die an ein stromführendes AC-Kabel angeschlossen werden. Wenn Sie sich nicht sicher fühlen, einen Stecker zu verdrahten, stellen Sie sicher, dass Sie ein vollständig gekapseltes Netzteil kaufen. Zumindest müssen Sie die PSU in eine sichere Projektbox einschließen.
Schritt 0: Einführung
Hier ist ein Demo-Video des fertigen Projekts. Ich habe bisher einige verschiedene Modi implementiert, von der Standardbeleuchtung über eine trippige Säurewolke bis hin zu einer farbverblassenden Stimmungslampe, die über die Fernbedienung ausgewählt werden kann.
In diesem Github-Repository können Sie den vollständigen Code und die benötigten Bibliotheken herunterladen.
Schritt 1: Sie werden brauchen
- WS2812B-Strang mit einem Preis von etwa 50 US-Dollar für 5 Meter. Machen Sie sich keine Sorgen, wenn Sie einen anderen Neopixel-Strang haben. Dieser wird fast sicher von der FastLED-Schnittstelle unterstützt. Die Verkabelung kann jedoch anders sein (Sie benötigen möglicherweise zusätzlich zum Signal eine Synchronisationsleitung)..
- 5V, 10A + Netzteil - Ich habe 15A-Einheiten für jeweils 11 US-Dollar gekauft. Sie benötigen 120-240V AC-Eingang und erzeugen einen kräftigen 5V-Ausgang, der mehr ausreicht, um alle unsere Pixel bei voller Helligkeit und den Arduino zu betreiben.
- Elektrische Verkabelung, Stecker und Inline-Schalter
- Projektumschließung
- Zwei Arduinos. $ 10 Funduino-Klone sind in Ordnung. Der zweite ist für die Fernbedienung erforderlich, während der erste die Hauptlogik und die LEDs steuert.
- Zwei 2,2-Ohm-Widerstände (oder ungefähr Ohm) - der genaue Wert ist nicht so wichtig, bei 1,5 bis 47.000 sollte es funktionieren.
- Brotschneidebrett
- TSOP4838 IR-Empfänger
- IR-Fernbedienung - Ich habe für etwa 2 US-Dollar in großen Mengen gekauft, aber jede Fernbedienung sollte mit Codeänderungen arbeiten.
- Großes Mikrofonmodul
- Schrott MDF-Holz zum Schneiden Ihrer Basis und eine Stichsäge.
- Verpackungsmaterial aus Polystyrol / Einlagen.
- Kissenfüllung aus Polypropylen-Baumwolle. Ich habe mehr als genug von ein paar schrecklichen alten Kissen gezogen. Wenn dies keine Option ist, sollten Sie in der Lage sein, etwas Neues für etwa 10 US-Dollar zu kaufen oder sogar noch billigere Watte zu verwenden. Ich habe es mit beiden probiert - die Watte brauchte mehr Arbeit, um sie herauszukitzeln und war nicht so flauschig, aber zur Not wird es funktionieren.
- Kette und Haken zum Aufhängen der Wolke - sollten mehr als 5 kg halten.
- Klebepistole mit niedriger Temperatureinstellung
- Sprühkleber - damit können Sie die Füllung leichter auf Ihre Wolke kleben, aber auch eine Klebepistole kann funktionieren.
Die Gesamtkosten betragen etwa 100 US-Dollar ohne Werkzeuge, aber das meiste davon habe ich aus dem ganzen Haus geschafft. Alle elektronischen Komponenten sind allgemein verfügbar. das mikrofon befindet sich in einem sensor-kit oder kann einzeln erworben werden.
Schritt 2: Schneiden Sie die Basis ab
Schneiden Sie mit einer Stichsäge eine grobe Unterlage aus einem MDF-MDF-Stück heraus - die genaue Form liegt natürlich bei Ihnen, aber aus irgendeinem Grund ist eine Wolke in meinem Kopf die Form einer Niere. Wir werden ein paar Haken zum Aufhängen anbringen, aber ansonsten bietet es nur eine solide Basis, auf der man aufbauen kann. Der zentrale Bereich ist für die Elektronik, die Stromversorgungseinheit und die Kette reserviert. Stellen Sie also sicher, dass Sie genügend Platz haben, um mindestens Ihr Projektgehäuse mit einigen Haken zu platzieren.
Schritt 3: Schicht auf Polystyrol
Dies ist der schwierigste und kreativste Schritt, aber wir schaffen wirklich etwas Festes und ein bisschen sorta wolkenförmig zum Aufkleben des LED-Streifens. Kleben Sie große Teile der Styroporverpackung auf die Basis (und darunter) und verwenden Sie dabei eine niedrige Hitzeeinstellung an Ihrer Klebepistole. Wenn Sie keine niedrige Einstellung haben, schalten Sie die Heißluftpistole aus und lassen Sie sie ein wenig abkühlen, bevor Sie versuchen, sie zu verkleben. Wenn die Temperatur zu hoch ist, schmelzen Sie einfach durch das Verpackungsmaterial.
Vergewissern Sie sich, dass jedes Stück fest ist, bevor Sie das nächste kleben, und halten Sie am besten mehr als genug fest.
Denken Sie auch daran, in der Cloud einen ausreichend großen Hohlraum für Elektronik, Kette und Haken zu lassen.
Schritt 4: Schnitzen Sie eine 3D-Wolkenform
Verwenden Sie ein Schnitzmesser, um Ihre Wolke aufzufrischen, indem Sie die Ecken abrunden und unnötiges Material abschneiden, bis Sie eine grobe 3D-Wolkenform erreicht haben. Es ist nicht so wichtig, wie rau das ist, denn wir werden später alles überstopfen - Sie können Fehler leicht verbergen.
Schritt 5: Haken befestigen, aufräumen
Befestigen Sie abschließend drei oder vier Haken an der MDF-Basis von jeder Ecke des Hohlraums der Wolke. Sie müssen ein kleines Pilotloch bohren, da es schwierig ist, MDF direkt einzudrehen.
Ich habe auch alles mit einem einfachen Anstrich weißer Sprühfarbe versehen, um eine einheitliche Farbgrundlage zu gewährleisten, aber ich bin mir nicht sicher, ob dies tatsächlich notwendig war.
Schritt 6: Kleben Sie LED-Streifen
Bevor Sie mit dem Auftragen von Klebstoff auf die LEDs beginnen, beginnen Sie entweder mit einem neuen Streifen oder zählen Sie, wie viele LEDs insgesamt vorhanden sind. Sie müssen herausfinden, wie viele Sie später im Programmierungsschritt verwendet haben. Schneiden Sie ein kleines Loch in die Seite Ihrer Wolke und stechen Sie durch die Drähte, die den Anfang Ihres LED-Streifens bilden, in den Wolkenhohlraum. Seien Sie sehr vorsichtig, dass Sie am richtigen Ende beginnen - die LED-Streifen sind richtungsempfindlich. Stellen Sie also sicher, dass die Signalpfeile vom Hohlraum weg zeigen.
Langsam kleben Sie die LED-Pixel in einem kreisförmigen Muster auf die Styroporbasis, bevor Sie den Streifen an der Unterseite nach unten ziehen, um die Unterseite abzudecken. Auch hier müssen Sie nicht perfekt sein, denn wenn wir alles zerstreut und mit Füllmaterial erstickt haben, sieht es sowieso ziemlich umwerfend aus.
Ich habe insgesamt 85 LEDs oder etwas mehr als 2,5 m verwendet, nachdem ich den Hauptkörper zweimal umkreist hatte und eine einzelne LED-Kette an der Unterseite verwendet hatte.
Schritt 7: Schaltplan
Die Verdrahtung ist komplex, aber leicht in Abschnitte unterteilt.
Lassen Sie die Stromversorgung zunächst verkabeln und sichern, vorzugsweise in einem separaten Projektfall. Ich werde Sie nicht über die Sicherheit von unter Spannung stehenden AC-Kabeln belehren, also gehe ich davon aus, dass Sie mit diesem Teil umgehen können, und Sie haben eine 5-V- und GND-Leitung davon.
WICHTIG: Wenn Sie das Arduino programmieren und testen, sollten die 5 V Ihres Netzteils von den Arduino isoliert bleiben (die GNDs sind jedoch alle angeschlossen) - der LED-Streifen sollte nur mit Strom versorgt werden, während das Arduino die über USB gelieferten 5 V verwendet. Wenn Sie mit dem Programmieren fertig sind, sollte die USB-Verbindung getrennt werden und liefert dem Arduino keine 5V mehr. An diesem Punkt sollten Sie die 5V Ihres Netzteils an die 5V-Schiene auf der linken Seite des Steckbretts anschließen.
Verbinden Sie zunächst den Boden und die 5-V-Pins von jedem Arduino mit den linken Seitenschienen des Steckbretts. Sie teilen sich die gleiche Stromquelle, unabhängig davon, ob es sich um das externe Netzteil handelt, das wir haben, oder über eines, das über USB angeschlossen ist.
Vervollständigen Sie anschließend die I2C-Verkabelung - dies ermöglicht unseren beiden Arduinos die Kommunikation. Nehmen Sie die A4-Pins von beiden Arduinos in eine einzige Reihe auf dem Steckbrett, und verbinden Sie dann einen 2,2-k-Widerstand dieser Reihe mit der 5-V-Schiene. Wiederholen Sie dies für A5, indem Sie sie in einer separaten Reihe anschließen, wobei ein weiterer Widerstand von 2,2k wieder auf 5 V eingestellt wird.
Schließen Sie den IR-Empfänger als nächstes an. Überprüfen Sie die Pin-Konfiguration, wenn Sie ein anderes Modell haben. Der Signal-Pin sollte jedoch auf einem Arduino auf D11 gehen. Laden Sie das hoch thundercloud_ir_receiver.ino skizzieren Sie dieses Arduino (alles Code hier), und entfernen Sie den USB-Anschluss, da wir ihn nicht mehr benötigen.
Auf dem anderen Arduino verbinden Sie die Daten in Signal-Pin vom Anfang Ihres LED-Streifens an D6. Die Masse der LEDs sollte mit allen Arduinos gemeinsam sein, aber an diesem Punkt kommen die 5 V direkt von der Netzteileinheit.
Schließen Sie das Mikrofonmodul auch an diesem Arduino an A0 an. Laden Sie den anderen hoch Gewitterwolke Skizzieren Sie und halten Sie den USB-Stecker während des Debuggens erst einmal angeschlossen. Beginnen Sie mit dem Ändern der NUM_LEDS variabel entsprechend.
Schritt 8: Kleben Sie die Füllung auf
Als letzten Schritt kleben Sie Ihre Füllung an. Es gibt keine spezielle Technik - sprühen Sie einfach die Wolke mit einer Klebstoffschicht und schnappen Sie sich eine Handvoll Füllmaterial auf. Es ist jedoch einfacher, mit Füllungen zu arbeiten, wenn Sie es bereits ausgenutzt haben, um die Oberfläche zu vergrößern.
Wenn Sie dieselbe Fernbedienung verwendet haben wie ich, wird sie mit der STROBE-Taste in einen reaktiven Cloud-Modus versetzt. FLASH ist der Trippy-Farbmodus und FADE ist die langsam verblassende Farbstimmung.
Schritt 9: Code-Erklärung
Warum zwei Arduinos? Sowohl die Infrarotempfängerprogrammierung als auch die WS2818B-Pixeltreiberbibliothek sind sehr zeitabhängig. Wenn das Timing verzögert wird, ist das IR-Signal beschädigt. Indem Sie jeder Schaltung einen eigenen Mikrocontroller geben und sie über das I2C-Protokoll sprechen lassen, können wir sicherstellen, dass das Timing für jede Schaltung perfekt ist. Möglicherweise finden Sie auch separate IR-Module mit einem eigenen integrierten Mikrocontroller, aber meine Forschung ergab, dass diese tatsächlich mehr kosten als ein einfacher Arduino-Klon und eine IR-LED. Der Donnerwolke_ir_receiever sollte keiner Erklärung bedürfen, auch wenn Sie sich zunächst mit den I2C-Grundlagen vertraut machen möchten.
Auf dem Haupt-Gewitterwolken-Controller definieren wir verschiedene Betriebsmodi, z. B. EIN (die Blitzeffekte sind nicht durch Ton aktiviert), CLOUD (Nur der Blitzeinschlag ist aktiviert), ACID (die Wolke zeigt trippige Farben) oder einfache Einzelfarbmodi. Um einen neuen Modus zu definieren, fügen Sie den hinzu enum Öffnen Sie zunächst die Konsole, und suchen Sie nach einer Fernbedienungstaste, auf die Sie sie abbilden können. Jede Remote-Betätigung sollte eine Debug-Zeile drucken. In dem receiveEvent () Wenn Sie diese Methode drücken, ordnen wir diese Tastendrücke einem Modus zu. Fügen Sie dort eine zusätzliche switch-Anweisung hinzu. Schließlich in der Hauptsache Schleife() Bei dieser Methode leiten wir diese Modusauswahl zu verschiedenen Anzeigefunktionen.
Der Mikrofonglättungscode stammt ursprünglich von Adafruit. Ich habe ihn für unsere Bedürfnisse vereinfacht und einen Auslöser hinzugefügt, wenn ein lautes Geräusch als der Durchschnitt zu hören ist.
Schritt 10: Blitzmodi
Die Blitzanzeigen kombinieren drei verschiedene “Typen” um etwas ausreichend Realistisches zu erreichen oder zumindest für das Auge angenehm zu sein. Der erste Typ ist Riss(), Dabei wird jede LED für 10-100 ms kurz eingeschaltet. Der zweite Typ ist Rollen () - Jede LED hat eine 10% ige Chance zur Aktivierung, und die gesamte Schleife wird 2-10 mal wiederholt, mit einer Verzögerung von 5-100 ms zwischen jedem Zyklus. Der dritte Typ ist Thunderburst (), Mit zwei unterschiedlichen Abschnitten des Streifens, zwischen jeweils 10-20 LEDs, blinken diese Abschnitte 3-6 mal kurz auf. Sehen Sie sich diese Methoden im Detail an, um zu sehen, wie einzelne LEDs aktiviert werden - das HSV-Farbrad wird durchgängig verwendet (Weiß ist also H = 0, S = 0, V = 255). Ich möchte Sie dazu ermutigen, neue Blitzanzeigen zu ändern oder zu schreiben und diese dann in den Kommentaren zu veröffentlichen, wenn Sie eines erstellen, das Sie möchten.
Jedes Mal, wenn ein Blitz ausgelöst oder die Schleife ausgeführt wird, wählt die Wolke zufällig zwischen den drei Blitzarten. Schließlich a zurücksetzen () Methode schaltet alle Lichter aus, sonst werden sie “merken” ihr früherer Zustand.
Fragen oder Probleme - bitte melden Sie sich in den Kommentaren und ich werde mein Bestes tun, um Ihnen zu helfen. Wenn Sie ein Github-Konto haben, können Sie stattdessen Fehler oder Probleme an den Issue-Tracker senden. Wenn Sie Änderungen vorgenommen oder neue Beleuchtungsfunktionen geschrieben haben, geben Sie bitte einen Link zu Ihrem Code auf Gist oder Pastebin.
Erfahren Sie mehr über: Arduino, Smart Lighting.