Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Die Idee
- Schritt 2: Schaltplan und Tonverarbeitung
- Schritt 3: LED-Rad
- Schritt 4: Visualisierungen
- Schritt 5: Touch-Button-Steuerung
- Schritt 6: Beat-Erkennung und Servo-"Tanzen"
- Schritt 7: 3D-Formen
- Schritt 8: Netzteil
- Schritt 9: Bluetooth-Steuerung
- Schritt 10: Kontroll-App basierend auf Blynk
- Schritt 11: Skizzen und Bibliotheken
- Schritt 12: Zukünftige Verbesserungen
Video: Tragbare Partylichter - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Tinkercad-Projekte »
Kannst du Licht auf eine Party bringen und es lustiger machen?
Das war die Frage. Und die Antwort ist JA (natürlich).
Bei diesem anweisbaren geht es darum, ein tragbares Gerät herzustellen, das Musik hört und Musikvisualisierung aus konzentrischen Ringen von Neopixel-LEDs erstellt.
Es wurde versucht, das Gerät "tanzen" zu lassen, dh sich im Takt der Musik zu bewegen, aber die Beat-Erkennung erwies sich als komplizierter als es klingt (kein Wortspiel beabsichtigt), daher ist "Tanzen" etwas umständlich. ist aber immer noch da.
Das Gerät ist Bluetooth-fähig und reagiert auf Textbefehle. Ich hatte keine Zeit, eine App zu schreiben, um Party Lights zu steuern (entweder Android oder iOS). Wenn Sie der Aufgabe gewachsen sind - lassen Sie es mich wissen!!!
Wenn Sie dieses instructable mögen, stimmen Sie es bitte im Make It Glow-Wettbewerb ab!
Lieferungen
Um Party Lights zu bauen, benötigen Sie:
- STM32F103RCBT6 Leaflabs Leaf Maple Mini USB ARM Cortex-M3 Modul für Arduino (Link hier) - das Gehirn des Geräts. Diese relativ billigen Geräte sind so leistungsstark, dass es unklar ist, warum Sie jemals zu einem Arduino zurückkehren würden.
- MSGEQ7 Band Graphic Equalizer IC DIP-8 MSGEQ7 (Link hier)
- HC-05 oder HC-06 Bluetooth-Modul (Link hier)
- Adafruit MAX9814 Mikrofon (Link hier)
- Ein Standard-Servomotor (Link hier) soll Ihr Gerät "tanzen"
- CJMCU 61 Bit WS2812 5050 RGB-LED-Treiber-Entwicklungsboard (Link hier)
- TTP223 Touch-Key-Modul Kapazitiv einstellbare Selbstsperr-/Keine-Sperr-Schalterplatine (Link hier)
-
Ultrakompakte 5000-mAh-Dual-USB-Ausgänge Super Slim Power Bank (Link hier)
- Widerstände, Kondensatoren, Drähte, Kleber, Schrauben, Prototyping-Boards usw. usw.
Schritt 1: Die Idee
Die Idee ist, ein tragbares Gerät zu haben, das in der Nähe einer Musikquelle platziert werden kann und bunte Musikvisualisierungen erzeugen würde. Sie sollten das Geräteverhalten über Tasten (Touch) und Bluetooth steuern können.
Derzeit hat Party Lights 7 Visualisierungen implementiert (lass es mich wissen, wenn du weitere Ideen hast!):
- Konzentrische bunte Kreise
- Malteserkreuz
- Pulsierende Lichter
- Kamin (mein persönlicher Favorit)
- Laufende Lichter
- Lichtbäume
- Seitliche Segmente
Standardmäßig durchläuft das Gerät jede Minute die Visualisierungen. Ein Benutzer kann jedoch wählen, bei einer Visualisierung zu bleiben und/oder diese manuell zu durchlaufen.
Visualisierungen, die ihre Farbpalette drehen, könnten auch "eingefroren" werden, wenn einem Benutzer eine bestimmte Farbkombination gefällt.
Als weitere Bedienelemente kann der Benutzer die Mikrofonempfindlichkeit ändern und den "Tanz"-Modus des Servomotors aktivieren/deaktivieren.
Schritt 2: Schaltplan und Tonverarbeitung
Eine Fritzing-Schemadatei ist im Paket auf Github im Unterordner "files" enthalten.
Grundsätzlich übernimmt ein MSEQ7-Chip die Audioverarbeitung und teilt ein Audiosignal in 7 Bänder auf: 63 Hz, 160 Hz, 400 Hz, 1 kHz, 2,5 kHz, 6,25 kHz und 16 kHz
Der Mikrocontroller verwendet diese 7 Bänder, um verschiedene Visualisierungen zu erstellen und im Wesentlichen die jeweiligen Bandamplituden in LED-Lichtintensitäts- und Farbkombinationen abzubilden.
Die Tonquelle ist ein Mikrofon mit 3 Verstärkungsstufen. Sie können mit einer der Tasten durch die Verstärkungseinstellungen schalten, je nachdem, wie weit/laut die Tonquelle ist.
Der Mikrocontroller versucht auch, eine "Beat"-Erkennung im 63-Hz-"Bass"-Band durchzuführen. Ich arbeite immer noch an einer zuverlässigen Methode, um die Beat-Ausrichtung zu erkennen und aufrechtzuerhalten.
Die Verwendung von "Touch"-Tasten war ein Experiment. Ich denke, sie funktionieren ziemlich gut, aber das Fehlen von Presse-Feedback ist etwas verwirrend.
Schritt 3: LED-Rad
Kern der Visualisierung ist ein 61 LED-Rad.
Bitte beachten Sie, dass das Teil als einzelne Ringe geliefert wird, die Sie zusammensetzen müssen. Ich habe eher Kupferdrähte für Stromleitungen verwendet (die auch die Ringe gut zusammenhalten) und dünne Signaldrähte.
Die LEDs sind von 0 bis 60 nummeriert, beginnend mit der unteren äußeren LED und im Uhrzeigersinn nach innen. Die mittlere LED hat die Nummer 60.
Jede Visualisierung basiert auf zweidimensionalen Datenarrays, die jede LED in eine bestimmte Position für das Ziel-Visualisierungssegment abbilden.
Für konzentrische Kreise gibt es beispielsweise 5 Segmente:
- Außenkreis, LEDs 0 - 23, 24 LEDs lang
- Zweiter äußerer Kreis, LEDs 24 - 39, 16 LEDs lang
- Dritter Kreis (Mitte), LEDs 40 - 51, 12 LEDs lang
- Zweiter innerer Kreis, LEDs 52 - 59, 8 LEDs lang
- Innen LED, LED 60, 1 LED lang
Die Visualisierung bildet 5 von 7 Audiokanälen ab und leuchtet die LEDs entsprechend ihrer Position im Kreisband proportional zum Tonpegel im Band progressiv auf.
Andere Visualisierungen verwenden andere Datenstrukturen und -formate, aber die Idee ist immer, dass Visualisierungen von den Datenarrays und nicht so sehr vom Code gesteuert werden. Auf diese Weise konnten Visualisierungen an verschiedene Formen (mehr oder weniger LEDs, mehr EQ-Bänder) angepasst werden, ohne den Code zu ändern, nur die Werte in den Datenarrays.
So sieht beispielsweise die Datenstruktur für Visualisierung 1 in der Skizze aus:
// Visualisierung 1 & 3 - volle 5 Kreiseconst byte TOTAL_LAYERS1 = 5; const byte LAYERS1[TOTAL_LAYERS1][25] = { //00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 { 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }, { 16, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 }, { 12, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 }, {8, 52, 53, 54, 55, 56, 57, 58, 59}, {1, 60}};
Schritt 4: Visualisierungen
Bisher gibt es 7 Visualisierungen und eine Startanimation:
Startanimation
Beim Einschalten des Geräts wird eine Imitation eines Feuerwerks angezeigt. Dies sollte eine LED- und Servo-Testsequenz sein, entwickelte sich jedoch später zu einer animierten Version eines solchen Tests
Konzentrische bunte Kreise
Die Lichter laufen in konzentrischen Kreisen um das Display herum, proportional zur Amplitude des jeweiligen eq-Bandes. Zufälliges Umschalten zwischen Uhr- und Gegenuhrzeigersinn und langsames Rotieren der Farben über das 256-Farbrad
Malteserkreuz
Ein Band ist die mittlere LED. Ein weiteres Band sind die vertikalen und horizontalen LED-Linien, und die restlichen Segmente repräsentieren jeweils ein EQ-Band. Alle Segmente sind rotierende Farben in 128 Offset, um den Kontrast zu erhalten.
Pulsierende Lichter
Jeder Kreis leuchtet alle LEDs gleichzeitig für ein dediziertes EQ-Band auf, während die Farben langsam mit einem leichten Versatz rotiert werden. EQ-Bänder werden progressiv von einem Kreis zum nächsten verschoben, wodurch eine nach außen gerichtete Progression erzeugt wird.
Kamin
Die Bänder sind Halbkreise, die von unten nach oben beleuchtet werden, beginnend mit einem leuchtenden Rot und fügendem Gelb auf dem Weg nach oben hinzu, um ein brennendes Feuer in einem Kamin zu simulieren. Gelegentlich schießt ein hellweißer "Funken" zufällig nach oben. Es gibt keine Farbrotation
Laufende Lichter
Jeder konzentrische Kreis ist ein separates EQ-Band. Die führenden LEDs befinden sich auf der vertikalen Linie unter der mittleren LED. Sobald die LED proportional zur Bandamplitude aufleuchtet, beginnt sie um den jeweiligen Kreis zu "laufen" und die Intensität langsam abzunehmen. Es werden sowohl Drehungen im Uhrzeigersinn als auch gegen den Uhrzeigersinn unterstützt, die zufällig umschalten.
Lichtbäume
Die Segmente werden geradlinig von der unteren LED nach oben und dann seitlich in konzentrischen Halbkreisen beleuchtet, die Palmen imitieren. Farbrotation.
Seitliche Segmente
Dies ist eine Version des vorherigen Malteserkreuzes mit nur 2 verwendeten diagonalen Segmenten. Soll dem Symbol für Schallwellen ähneln.
Schritt 5: Touch-Button-Steuerung
Es gibt 4 berührungsempfindliche Tasten:
- Durchlaufen Sie die Visualisierungen und halten Sie die aktuelle am Laufen, bis eine andere ausgewählt wird (standardmäßig durchlaufen die Visualisierungen alle 30 Sekunden)
- "Freeze" / "unfreeze" aktuelles Farbschema - wenn Sie eine bestimmte Farbkombination mögen, können Sie sie einfrieren - die Farbrotation ist deaktiviert und die Visualisierung wird nur mit dieser Farbpalette fortgesetzt
- Mikrofonempfindlichkeit anpassen
- Schalten Sie den "Tanzmodus" ein / aus
Im Tanzmodus versucht das Gerät, den „Beat“der aktuell abgespielten Musik zu erkennen und den Kopf entsprechend dem Takt zu drehen. Bisher ist das "Tanzen" eher umständlich als schön, um ehrlich zu sein.
Schritt 6: Beat-Erkennung und Servo-"Tanzen"
Das Gerät versucht ständig, den "Beat" der aktuellen Melodie als Abstand zwischen aufeinanderfolgenden Spitzen des 63-Hz-Bandes zu erkennen. Sobald es erkannt wurde (und nur wenn der Tanzmodus eingeschaltet ist), aktiviert das Gerät seinen Servomotor, um sich je nach Beat zufällig nach links oder rechts zu drehen.
Alle guten Ideen, wie man dies zuverlässiger machen kann, sind willkommen!
Die Skizze 'Music_Test_LED' gibt 7 EQ-Bänder in einer für das Plotten mit der Arduino IDE geeigneten Weise aus.
Schritt 7: 3D-Formen
Die gesamte Party Lights-Baugruppe wurde mit Autodesk TinkerCAD von Grund auf neu entworfen.
Das ursprüngliche Design befindet sich hier. Der Ordner "files/3D" auf github.com enthält die STL-Modelle.
Dieses Design veranschaulicht, wie das Gerät zusammengebaut aussieht.
Alle Komponenten wurden gedruckt und dann zusammengebaut / verklebt.
Der "Dome" beherbergt den Mikrocontroller, die Bluetooth-Platine und ein Mikrofon. Der Mikrocontroller ist auf einer 40 mm x 60 mm großen Platine platziert und wird von dafür vorgesehenen Schienen getragen.
Das Servo befindet sich im "Bein" der Kuppel, während sich die Tasten in der Basis befinden.
Das Batteriefach ist speziell für den im Abschnitt Verbrauchsmaterialien genannten Batterietyp bedruckt. Wenn Sie sich für einen anderen Akku entscheiden, muss das Fach entsprechend umgestaltet werden.
Schritt 8: Netzteil
Eine ultrakompakte 5000-mAh-Super-Slim-Powerbank mit zwei USB-Ausgängen scheint genug Leistung für stundenlangen Betrieb zu liefern.
Das Batteriefach ist so konzipiert, dass es sich vom Rest des Gerätes löst und durch ein für einen anderen Batterietyp ausgelegtes ersetzt werden kann.
Der USB-Stecker wurde positioniert und heißgeklebt, um den Akku beim Einschieben anzuschließen.
Schritt 9: Bluetooth-Steuerung
Ein HC-05-Modul wird hinzugefügt, um das Gerät drahtlos zu steuern.
Wenn es eingeschaltet ist, stellt das Gerät eine Bluetooth-Verbindung namens "LEDDANCE" her, mit der Sie Ihr Telefon koppeln können.
Idealerweise sollte es eine App geben, die die Steuerung von PartyLights ermöglicht (Farbpalette wählen, Tastendruck simulieren, etc.). Allerdings habe ich noch keinen geschrieben.
Wenn Sie daran interessiert sind, beim Schreiben einer Android- oder iOS-App für Party Lights zu helfen, lassen Sie es mich bitte wissen!
Um das Gerät zu steuern, können Sie derzeit die Bluetooth-Terminal-App verwenden und die folgenden Befehle senden:
- LEDDBUTT - wobei '1', '2', '3' oder '4' das Drücken einer entsprechenden Taste simuliert. Bsp.: LEDDBUTT1
- LEDDCOLrc - wobei c eine Zahl von 0 bis 255 ist - Position der gewünschten Farbe auf einem Farbkreis. Das Gerät schaltet auf die angegebene LED-Farbe um.
-
LEDDSTAT - gibt eine 3-stellige Zahl zurück, die nur aus '0's und '1' besteht:
- erste Position: '0' - Farben rotieren nicht, '1' - Farben rotieren
- zweite Position: '0' - Tanzmodus ist aus, '1' - Tanzmodus ist an
- dritte Position: '0' - Mikrofon mit normaler Verstärkung, '1' - Mikrofon mit hoher Verstärkung
Schritt 10: Kontroll-App basierend auf Blynk
Blynk (blynk.io) ist eine hardwareunabhängige IoT-Plattform. Ich habe Blynk in meinem IoT Automatic Plant Irrigation System verwendet und war beeindruckt von der Einfachheit und Robustheit der Plattform.
Blynk unterstützt die Verbindung mit Edge-Geräten über Bluetooth - genau das, was wir für PartyLights brauchen.
Falls noch nicht geschehen, laden Sie bitte die Blynk App herunter, registrieren Sie sich und erstellen Sie die Blynk PartyLights App mit den Screenshots, die diesem Schritt beigefügt sind. Bitte stellen Sie sicher, dass die virtuellen Pin-Belegungen mit den Screenshots übereinstimmen, sonst funktionieren die Schaltflächen in der App nicht wie beabsichtigt.
Die Datei "blynk_settings.h" enthält meine persönliche Blynk UID. Wenn Sie Ihr Projekt erstellen, wird ihm ein neues zugewiesen, das Sie verwenden können.
Laden Sie die PartyLightsBlynk.ino-Skizze hoch, starten Sie die App. Koppeln Sie mit einem Bluetooth-Gerät und genießen Sie die Party.
Schritt 11: Skizzen und Bibliotheken
Die Hauptskizze und die unterstützenden Dateien befinden sich hier auf Github.com.
Die folgenden Bibliotheken wurden in der Party Lights-Skizze verwendet:
- TaskScheduler - Kooperatives Multitasking - hier (von mir entwickelt)
- AverageFilter - Schablonen-Durchschnittsfilter - hier (von mir entwickelt)
- Servo - Servosteuerung - ist eine Standard-Arduino-Bibliothek
- WS2812B -NEOPixel-Steuerung - ist Teil des STM32-Pakets
Diese Wiki-Seite erklärt, wie man STM32-Boards mit Arduino IDE verwendet.
Schritt 12: Zukünftige Verbesserungen
Ein paar Dinge könnten in diesem Design verbessert werden, die Sie berücksichtigen könnten, wenn Sie dieses Projekt beginnen:
- Verwenden Sie ESP32 anstelle des Maple Mini-Boards. ESP32 verfügt über 2 CPUs, Bluetooth- und WiFi-Stacks und kann mit 60 MHz, 120 MHz und sogar 240 MHz betrieben werden.
- Kleineres Design - das resultierende Gerät ist groß. Könnte kompakter sein (besonders wenn Sie die Tanzidee und das zugehörige Servo fallen lassen)
- Beat-Erkennung könnte unendlich verbessert werden. Was für uns Menschen selbstverständlich ist, scheint für einen Computer eine schwierige Aufgabe zu sein
- Es könnten noch viel mehr Visualisierungen entworfen und umgesetzt werden.
- Und natürlich könnte eine App geschrieben werden, um das Gerät drahtlos mit einer coolen Benutzeroberfläche zu steuern.
Empfohlen:
Tragbare Arduino-Workbench Teil 1: 4 Schritte
Portable Arduino Workbench Teil 1: Mehrere Projekte im Flug zu haben bedeutet, dass ich schnell desorganisiert werde und das Bild meines Schreibtisches zeigt, was passieren kann. Nicht nur dieser Schreibtisch, ich habe eine Kabine, die in einem ähnlichen Zustand endet, und eine Holzwerkstatt wie, wenn auch aufgeräumter, Elektrowerkzeuge
Tragbare Arduino-Workbench Teil 2: 7 Schritte
Portable Arduino Workbench Teil 2: Ich hatte bereits ein paar dieser in Teil 1 beschriebenen Boxen hergestellt, und wenn eine Box zum Mitnehmen und Zusammenhalten eines Projekts alles ist, was erforderlich ist, funktionieren sie gut. Ich wollte in der Lage sein, das gesamte Projekt in sich geschlossen zu halten und es ein
Einfach P.D.C. (Halterung für tragbare Geräte): 6 Schritte
Einfach P.D.C. (Portable Device Cradle): Ich weiß, dass es eine Million verschiedene DIY-Anleitungen gibt, um alle Ladegeräte, Wandwarzen und Kabelgewirr zu zähmen, die mit tragbaren Geräten verbunden sind. Die Probleme bei den meisten sind, dass sie entweder a. konzentrierter sich mehr darauf, die Ladegeräte zu verstecken, als das Leben e