Inhaltsverzeichnis:
Video: Retro-LED-Streifen-Audiovisualisierer - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Als Musiker und Student der Elektrotechnik liebe ich jedes Projekt, das diese beiden Bereiche überschneidet. Ich habe einige DIY-Audiovisualisierer gesehen (hier, hier, hier und hier), aber jeder hatte mindestens eines der beiden Ziele verfehlt, die ich mir gesetzt hatte: eine professionelle Verarbeitungsqualität und ein relativ großes Display (ein schwaches 8*8 LED-Matrix würde hier nicht ausreichen!). Mit etwas Vintage-Flair und einer Größe von 40 "x 20" erreicht dieser Audiovisualisierer beide Ziele.
Entschuldigung im Voraus für vertikale Fotos. Viele von ihnen wurden für soziale Medien genommen.
Schritt 1: Teileliste
Ich hatte schon mehrere dieser Teile herumliegen. Die Links dienen lediglich als Referenz. Bitte kaufen Sie keine unnötig teuren Komponenten.
Elektronik
- WS2811 60LEDS/m @ 5m, IP30 (nicht wasserdicht), adressierbar - Diese waren damals billiger als WS2812. Sie haben hier etwas Spielraum, aber stellen Sie sicher, dass die Abmessungen stimmen und Sie tatsächlich mit den LEDs sprechen können. Beachten Sie auch, dass WS2811s 12 V haben, während WS2812s 5 V haben.
- 9 x 3-polige JST-Anschlüsse + Buchsen
- DC 12V 20A (240W) Netzteil - Ich hatte ursprünglich geplant, 2 LED-Streifen zu machen, und wollte ein Lautsprecher-Set, das Ihr Haus herunterlädt. Jeder Lichtstreifen hat im schlimmsten Fall 90 W (ich habe nicht gemessen, um dies zu bestätigen), was mir ~ 60 W für Lautsprecher + Verstärker übrig ließ. Die 15A-Option war sowieso nur 4 Dollar weniger.
- Netzkabel (3 Zinken)
- Arduino Uno - Ich hatte einen R3 herumliegen, also habe ich den benutzt. Sie können möglicherweise eine billigere Option von einem der Nachahmer oder einem anderen Anbieter finden.
- TRRS Breakout - Für Aux-Eingang
- L7805 5-V-Regler - Jeder 5-V-Regler, der einen 12-V-Eingang akzeptiert, funktioniert.
- 330 nF, 100 nF Kondensatoren - gemäß L7805 Datenblatt
- 2 x 10kR, 2 x 1kR, 2 x 100 nF Kondensatoren - für die Vorspannung des Audioeingangs
- Stereo-Receiver - Jeder Vintage-Stereo-Receiver funktioniert, solange er über einen Aux-Eingang (3,5 mm oder Cinch) verfügt. Ich habe mir einen Panasonic RA6600 von Craigslist für 15 Dollar gekauft. Ich empfehle, bei Goodwill, Craigslist und anderen Secondhand-Läden nach Ähnlichem zu suchen.*
- Lautsprecher - Keine BT-Lautsprecher. Nur ein Lautsprecherset. Achten Sie darauf, welche Impedanz mit Ihrem Receiver kompatibel ist. Ich habe bei Goodwill einen Satz von 3 20-W-Lautsprechern (= laut) für 6 US-Dollar gefunden, und das kam mit einem "Center" und zwei "Front" -Lautsprechern.
- Logitech BT Audio Adapter - Dieses Gerät kann Audio an die Stereolautsprecher und an Ihren Stromkreis streamen
- Cinch-Stecker auf Cinch-Stecker-Kabel
- Aux-Kabel
Hardware
- 2x6 (8ft) - Nicht druckbehandelt. Sollte ~$6 oder weniger bei HD oder Lowe's sein
- 40% Lichtdurchlässigkeit Acryl - Ich bestellte 18 "x 24" x 1/8", und es war technisch 17,75 "x 23,5". Bewahren Sie es in der Verpackung auf, wenn Sie zum Laserschneiden gehen.
- Holzbeize – Sie brauchen nur eine kleine Dose. Ich habe Minwax rotes Mahagoni verwendet und es ist sehr schön geworden. Ich empfehle auf jeden Fall einen dunklen Ton. Ich habe es ursprünglich mit Provinz probiert und es sah nicht so schön aus.
- Lack - Sehen Sie sich zunächst dieses Video von Steve Ramsey an und entscheiden Sie selbst, was am besten funktioniert. Ich habe eine Sprühdose seidenmatt (es war kein Glanz vorhanden) und ehrlich gesagt hat es nicht so viel gebracht. Aber ich habe aus Zeitgründen auch nur einen Mantel gemacht.
- 40 x 1/2 "Holzschrauben - Ich hatte einen runden Kopf zur Verfügung, aber ich empfehle, wenn Sie können, eine flache Oberseite zu verwenden. Ich glaube nicht, dass dies die Verarbeitungsqualität beeinträchtigen würde, aber fragen Sie zuerst jemanden, der mit der Holzbearbeitung vertraut ist.
- Altholz, Gorillaleim, Heißkleber, Lötzinn, Draht und Befehlsstreifen (Klettverschluss, 20 mittel oder 10 groß)
* Ich plane, eine Soundbar zu bauen, um dieses Projekt komplett "von Grund auf" zu machen, die 9-13 oben ersetzen wird. Ich hoffe, dieses instructable damit bis zum Ende des Sommers zu aktualisieren.
Schritt 2: Prototyping
Dieser Abschnitt ist nicht notwendig, aber ich möchte zeigen, wie das Projekt im Laufe der Zeit aussah.
Hier habe ich LEDs im Schlangenmuster abgeklebt und mit Lichtstreuung durch übereinander geschichteten Müllbeutel experimentiert (ich empfehle dies dringend als Alternative zum Acryl, wenn Sie versuchen, Kosten zu sparen. Obwohl Sie es müssen auf andere Weise anbringen).
Ein 10x10-Setup hat für mich funktioniert, aber Sie bevorzugen möglicherweise 8x12 oder 7x14. Fühlen Sie sich frei zu experimentieren. Bevor ich meine Stereoanlage hatte, fand ich einen Verstärker und schloss ihn in mein Steckbrett ein, und davor spielte ich Audio von meinem Laptop zur Audioanalyse in die Schaltung und drückte gleichzeitig auf meinem Telefon auf "Play", um es zu hören.
Ich glaube fest daran, zweimal zu messen, einmal zu schneiden. Was auch immer Sie tun, folgen Sie dieser Anleitung und Sie werden fertig sein.
Schritt 3: Schaltung + Code
Code ist auf GitHub verfügbar.
Steckbrett, löten Sie es an ein Perfboard oder entwerfen Sie Ihre eigene Leiterplatte. Was auch immer für Sie hier am besten funktioniert, tun Sie es. Meine Demo hier läuft auf einem Steckbrett, aber wenn ich die Soundbar baue, werde ich alles auf eine Platine übertragen. Um Strom vom Adapter zu beziehen, schneiden Sie das weibliche Ende ab und entfernen Sie die schwarze Isolierung. Isolieren Sie genug von den eigentlichen Kabeln ab, um sie an die Adapterklemmen zu schrauben. Seien Sie beim Arbeiten mit AC immer vorsichtig! Ansonsten hier nur ein paar Dinge zu beachten.
- BodenpfadeEine andere Sache ist, sicherzustellen, dass Ihre Bodenpfade gut sind. Sie benötigen Masse vom Adapter zum Arduino zum Aux-Eingang, der auch mit der Masse des Logitech BT-Empfängers und von dort mit der Masse der Stereoanlage verbunden wird. Wenn einer davon eine unterbrochene oder schlechte Verbindung ist, erhalten Sie einen sehr verrauschten Audioeingang und damit ein sehr verrauschtes Display.
- Audio Input BiasingAudio, das über ein Aux-Kabel, von Ihrem Telefon oder Laptop oder wo auch immer wiedergegeben wird, wird mit -2,2 bis +2,2 V wiedergegeben. Arduino kann nur 0 bis +5 V lesen, daher müssen Sie den Audioeingang vorspannen. Dies kann mit Operationsverstärkern effizient erreicht werden, aber wenn der Stromverbrauch kein Problem darstellt (vielleicht haben Sie ein 240-W-Netzteil gekauft?), kann dies auch mit Widerständen und Kondensatoren erreicht werden. Die von mir gewählten Werte waren unterschiedlich, da ich keine 10uF-Kondensatoren zur Hand hatte. Sie können mit dem Simulator herumspielen, um zu sehen, ob das, was Sie wählen, funktioniert.
- Fourier-TransformationenJedes Projekt, das Fourier-Transformationen verwendet, wird einen Hintergrundabschnitt haben, in dem diese behandelt werden. Wenn Sie bereits Erfahrung haben, großartig! Wenn nicht, müssen Sie nur verstehen, dass sie eine Momentaufnahme eines Signals erstellen und Informationen darüber zurückgeben, welche Frequenzen zu diesem Zeitpunkt in diesem Signal vorhanden sind. Wenn Sie also die Fourier-Transformation von sin(440(2*pi*t)) verwenden, würde dies Ihnen sagen, dass in Ihrem Signal eine Frequenz von 440Hz vorhanden ist. Wenn Sie die Fourier-Transformation von 7*sin(440(2*pi*t)) + 5*sin(2000(2*pi*t)) nehmen, würde dies Ihnen sagen, dass sowohl ein 440Hz- als auch ein 2000Hz-Signal vorhanden ist, und den relativen Grad, in dem sie vorhanden sind. Dies ist für jedes Signal mit beliebig vielen Komponentenfunktionen möglich. Da alles Audio immer nur eine Summe von Sinuskurven ist, können wir die Fourier-Transformation einer Reihe von Schnappschüssen durchführen und sehen, was wirklich vor sich geht. Im Code sehen Sie, dass wir auch ein Fenster auf unser Signal anwenden, bevor wir das Fourier aufnehmen verwandeln. Mehr dazu finden Sie hier, aber eine kurze Erklärung ist, dass das Signal, das wir der Transformation tatsächlich geben, irgendwie scheiße ist und Windows das für uns repariert. Ihr Code wird nicht kaputt gehen, wenn Sie ihn nicht verwenden, aber die Anzeige sieht nicht so sauber aus. Es gibt vielleicht bessere Algorithmen (YAAPT, zum Beispiel), aber nach den Prinzipien von KISS habe ich mich entschieden, was zu verwenden war bereits verfügbar, das sind mehrere gut geschriebene Arduino-Bibliotheken für die Fast Fourier Transform oder FFT.
- Kann der Arduino wirklich alles in Echtzeit verarbeiten? Damit alles in Echtzeit angezeigt wird, muss der Arduino 128 Samples erfassen, diese FFT verarbeiten, die Werte für die Anzeige manipulieren und die Anzeige sehr schnell aktualisieren. Wenn Sie eine 1/16-Notengenauigkeit bei 150 bpm (nahe dem oberen Endtempo der meisten Popsongs) wünschen, müssten Sie alles in 100 ms verarbeiten. Darüber hinaus kann das menschliche Auge mit 30 FPS sehen, was einer Bildlänge von 30 ms entspricht. Dieser Blogbeitrag hat mir nicht die größte Zuversicht gegeben, aber ich habe mich entschieden, selbst zu sehen, ob Arduino halten würde. Nach meinem eigenen Benchmarking war ich sehr stolz auf meinen R3. Die Berechnungsphase war bei weitem der limitierende Faktor, aber ich konnte eine 128-lange FFT von UINT16s in nur 70 ms verarbeiten. Dies war innerhalb der Audiotoleranzen, aber mehr als doppelt so hoch wie die visuelle Einschränkung. Bei weiteren Recherchen fand ich Arduino FHT, das die FFT-Symmetrie nutzt und nur die realen Werte berechnet. Mit anderen Worten, es ist etwa 2x so schnell. Und tatsächlich brachte es die gesamte Loop-Geschwindigkeit auf ~ 30 ms. Eine weitere Anmerkung hier zur Bildschirmauflösung. Eine mit Fs Hz abgetastete Länge N FFT gibt N Bins zurück, wobei das k-te Bin k * Fs/N Hz entspricht. Der Arduino ADC, der den Audioeingang liest und Samples nimmt, läuft normalerweise mit ~ 9,6 kHz. Die FFT kann jedoch nur Informationen über Frequenzen bis zu 1/2 * Fs liefern. Menschen können bis zu 20 kHz hören, daher möchten wir idealerweise bei > 40 kHz sampeln. Der ADC kann gehackt werden, um etwas schneller zu laufen, aber bei weitem nicht. Das beste Ergebnis, das ich ohne Stabilitätsverlust gesehen habe, war bei einem 14-kHz-ADC. Außerdem war die größte FFT, die ich verarbeiten konnte, um noch einen Echtzeiteffekt zu erzielen, N=128. Dies bedeutet, dass jeder Bin ~109 Hz repräsentiert, was bei höheren Frequenzen in Ordnung ist, aber am unteren Ende schlecht. Ein guter Visualisierer versucht, für jeden Takt eine Oktave zu reservieren, was den Trennungen bei [16,35, 32,70, 65,41, 130,81, 261,63, 523,25, 1046,50, 2093,00, 4186,01] Hz entspricht. 109 Hz bedeutet, dass die ersten 2,5 Oktaven alle in einem Bin liegen. Ich konnte immer noch einen guten visuellen Effekt erzielen, teilweise indem ich den Durchschnitt jedes Eimers genommen habe, wobei ein Eimer eine Gruppe von Behältern zwischen zwei dieser Grenzen ist. Ich hoffe, das ist nicht verwirrend und der Code selbst sollte klarstellen, was wirklich vor sich geht, aber fragen Sie unten, wenn es keinen Sinn macht.
Schritt 4: Montage
Wie ich bereits sagte, wollte ich etwas mit professioneller Verarbeitungsqualität. Ursprünglich fing ich an, Holzlatten zusammenzukleben, aber ein Freund (und ein erfahrener Maschinenbauingenieur) schlug einen anderen Ansatz vor. Beachten Sie, dass ein 2x6 wirklich 1,5 "x 5" ist. Und seien Sie bitte vorsichtig, wenn Sie mit einer der unten aufgeführten Maschinen arbeiten.
- Nehmen Sie Ihre 2x6x8 und Sand, wenn nötig. Schneiden Sie es in 2 "x 6" x 22" Abschnitte. Dies gibt Ihnen zwei Lamellen, die Sie "verbrennen" können, wenn Sie es vermasseln.
- Nehmen Sie jeden 22-Zoll-Abschnitt und führen Sie ihn längs durch eine Tischkreissäge, um 1,5-Zoll-x ~ 1,6-Zoll-x-22-Zoll-Lamellen herzustellen. Das letzte Drittel kann mit einer Tischkreissäge schwer zu schneiden sein, sodass Sie auf eine Bandsäge umsteigen können. Stellen Sie einfach sicher, dass alles so gerade wie möglich ist. Darüber hinaus ist 1,6" ein Richtwert und kann bis zu 1,75" betragen. Das waren meine Stücke, aber solange sie alle gleich sind, ist das nicht so wichtig. Der limitierende Faktor ist das Acryl bei 18".
- Markieren Sie am Ende der Stücke eine U-Form, die auf beiden Seiten 1/8 "in und etwas mehr als 3/4" tief ist. HINWEIS: Wenn Sie ein anderes Acryl verwenden, ändert sich die Tiefe. Bei < 3/4" streut mein Acryl das Licht überhaupt nicht. Bei etwas mehr diffundiert es vollständig. Sie möchten jede "Beadiness" vermeiden sehr schwierig!
- Schneiden Sie mit einem Tischfräser das mittlere U ganz nach unten aus. Die 22" ist länger als Sie brauchen, also machen Sie sich keine Sorgen, dass die Enden absplittern, wenn Sie dies tun. Router können knifflig sein, aber nehmen Sie etwas breiter als die halbe Breite des U und schneiden Sie vorsichtig mehr als 1/ 8" Material auf einmal. Wiederholen: Versuchen Sie nicht, alles in 2 Durchgängen zu tun. Sie werden das Holz beschädigen und sich wahrscheinlich verletzen. Arbeiten Sie bei den Schnitten 1-4 mit der Rotation der Oberfräse und bei 5-8 dagegen. Dadurch haben Sie die beste Kontrolle über das Drehmoment des Routers.
- Schneiden Sie den LED-Streifen in 30-LED-Abschnitte (nur jeder Satz von 3 LEDs ist adressierbar). Sie müssen wahrscheinlich einige der Verbindungen entlöten. Legen Sie diese Streifen entlang der Schienen. Eine Seite sollte bündig sitzen und die andere sollte ein wenig Platz für die JST-Aufnahme haben, die bündig sitzt. Ich habe leider kein Bild davon bekommen, aber siehe das beigefügte Diagramm. Markieren Sie hier die Länge, aber schneiden Sie noch nichts ab.
- Messen Sie die Breite jeder Latte. Mit dieser und der Länge aus Schritt 7 schneiden Sie das Acryl per Laser in die 10 notwendigen Rechtecke. Es ist besser, etwas lang als etwas kurz zu sein. Wenn es verbrannt wird, wischen Sie es mit Isopropyl ab.
- Bestätigen Sie, dass jede Acryllatte auf der gleichen Länge sitzt, die Sie in Schritt 5 markiert haben, und schneiden Sie dann die Latte auf diese Länge.
- Sie benötigen nun zwei Brückenstücke, um das Acryl zu befestigen. Dies ermöglicht eine einfache Wartung der Lichtleisten, falls etwas passieren sollte. Diese Stücke sollten ungefähr [Ihre Breite] - 2 * 1/8 "lang mit 1/2" quadratischen Flächen sein, aber sie sollten etwas eng anliegen. Wenn diese Teile fest sitzen und bündig mit der Vorderseite der Lamellen sind, bohren Sie Löcher durch die Mitte jeder Brücke von den Außenseiten der Lamellen. Tun Sie Ihr Bestes, um jeden Bohrer gleichmäßig zu machen. Lassen Sie die Brücken nicht eingeschraubt, sondern stellen Sie sicher, dass sie es können. Achten Sie darauf, die Schraube nicht zu weit nach unten zu drehen und das Holz zu spalten.
- An diesem Punkt färben Sie die Lamellen und tragen Sie ein beliebiges Finish auf.
- Schrauben Sie nun die Brücken ein. Stellen Sie sicher, dass sie bündig sitzen! Wenn nicht, müssen Sie eine Art Shim hinzufügen. Tragen Sie Gorilla-Kleber (bevorzugt) oder Heißkleber (der auch als Unterlegscheibe dienen kann) auf die Brücken auf und befestigen Sie das Acryl. Tragen Sie keinen Klebstoff entlang der Leiste selbst auf.
- Löten Sie JST-Buchsen an eine Seite aller LED-Streifen bis auf einen. Legen Sie sie alle auf das gleiche Ende, wie durch die markierten Pfeile angegeben. Löten Sie die Drähte der JST-Stecker auf die anderen Enden. Möglicherweise müssen Sie an jedem Stecker mehr Kabel abisolieren. Stellen Sie sicher, dass die Anschlüsse beim Einstecken korrekt sind! Der Kleber auf der Rückseite der LEDs ist schrecklich, also traue ihm nicht. Legen Sie die LEDs auf die mittlere Schiene und kleben Sie sie mit Gorilla-Kleber fest, wobei Sie auf die angezeigte Richtung auf den Streifen achten. Denken Sie daran, dass Sie das Ganze durcheinander bringen.
- Löten Sie auf der ersten Lamelle lange genug Drähte, um Strom + Masse vom Adapter und das Signal vom Arduino zu erhalten.
- Schrauben Sie die Latten und Brücken wieder fest. Bringen Sie die Befehlsstreifen auf der Rückseite an (Klettverschluss, 2 mittelgroß oben und unten oder 1 groß in der Mitte). Stellen Sie alle notwendigen Verbindungen her und hängen Sie sie im Abstand von ~ 3" an die Wand. Genießen Sie die Früchte Ihrer Arbeit.