Inhoudsopgave:
- Benodigdheden
- Stap 1: Het idee
- Stap 2: Schematische en geluidsverwerking
- Stap 3: LED-wiel
- Stap 4: Visualisaties
- Stap 5: Touch-knopbedieningen
- Stap 6: Beat Detectie en Servo "dansen"
- Stap 7: 3D-vormen
- Stap 8: Voeding
- Stap 9: Bluetooth-bediening
- Stap 10: App bedienen op basis van Blynk
- Stap 11: schetsen en bibliotheken
- Stap 12: Toekomstige verbeteringen
Video: Draagbare feestverlichting - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Tinkercad-projecten »
Kun jij licht op een feest brengen en het leuker maken?
Dat was de vraag. En het antwoord is JA (natuurlijk).
Deze instructable gaat over het maken van een draagbaar apparaat dat naar muziek luistert en muziekvisualisatie maakt uit concentrische ringen van Neopixel-LED's.
Er is een poging gedaan om het apparaat te laten "dansen", dwz op het ritme van de muziek bewegen, maar beatdetectie bleek een ingewikkelder taak dan het klinkt (geen woordspeling bedoeld), dus "dansen" is een beetje onhandig, maar is er nog steeds.
Het apparaat is geschikt voor Bluetooth en reageert op tekstcommando's. Ik had geen tijd om een app te schrijven om Party Lights te bedienen (Android of iOS). Als je de taak aankunt, laat het me dan weten!!!
Als je deze instructable leuk vindt, stem er dan op in de Make It Glow-wedstrijd!
Benodigdheden
Om Party Lights te bouwen heb je nodig:
- STM32F103RCBT6 Leaflabs Leaf Maple Mini USB ARM Cortex-M3-module voor Arduino (link hier) - het brein van het apparaat. Deze relatief goedkope apparaten zijn zo krachtig dat het onduidelijk is waarom je ooit terug zou gaan naar een Arduino.
- MSGEQ7 Band Grafische Equalizer IC DIP-8 MSGEQ7 (link hier)
- HC-05 of HC-06 Bluetooth-module (link hier)
- Adafruit MAX9814 microfoon (link hier)
- Een standaard servomotor (link hier) wil je dat je apparaat "danst"
- CJMCU 61 Bit WS2812 5050 RGB LED Driver Development Board (link hier)
- TTP223 Touch Key Module Capacitieve Instelbare Self-Lock/No-Lock Switch Board (link hier)
-
Ultracompacte 5000-mAh dubbele USB-uitgangen Superslanke powerbank (link hier)
- Weerstanden, condensatoren, draden, lijm, schroeven, prototyping boards, etc. etc.
Stap 1: Het idee
Het idee is om een draagbaar apparaat te hebben dat dicht bij een muziekbron kan worden geplaatst en dat kleurrijke muziekvisualisaties zou creëren. Je zou het gedrag van het apparaat moeten kunnen regelen via knoppen (touch) en Bluetooth.
Momenteel heeft Party Lights 7 visualisaties geïmplementeerd (laat het me weten als je meer ideeën hebt!):
- Concentrische kleurrijke cirkels
- Maltezer kruis
- Pulserende lichten
- Open haard (mijn persoonlijke favoriet)
- Lopende lichten
- Lichte bomen
- Zijdelingse segmenten
Standaard doorloopt het apparaat elke minuut de visualisaties. Een gebruiker kan er echter voor kiezen om bij één visualisatie te blijven en/of er handmatig doorheen te bladeren.
Visualisaties die hun kleurenpalet roteren, kunnen ook worden "bevroren" als een gebruiker van een bepaalde kleurencombinatie houdt.
En als een paar extra bedieningselementen kan de gebruiker de microfoongevoeligheid wijzigen en de "dans" -modus van de servomotor in-/uitschakelen.
Stap 2: Schematische en geluidsverwerking
Een fritzing-schemabestand is opgenomen in het pakket op Github in de submap "bestanden".
Kortom, een MSEQ7-chip doet de audioverwerking en splitst een audiosignaal in 7 banden: 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz en 16kHz
De microcontroller gebruikt die 7 banden om verschillende visualisaties te maken, waarbij in feite de respectieve bandamplitudes in kaart worden gebracht in LED-lichtintensiteit en kleurencombinaties.
De geluidsbron is een microfoon met 3 niveaus van versterkingsregeling. U kunt door de versterkingsinstellingen bladeren met behulp van een van de knoppen, afhankelijk van hoe ver/hard de geluidsbron is.
De microcontroller probeert ook "beat" -detectie uit te voeren op de 63 Hz "bass" -band. Ik werk nog steeds aan een betrouwbare manier om beat-uitlijning te detecteren en te behouden.
Het gebruik van "touch"-knoppen was een experiment. Ik denk dat ze redelijk goed werken, maar het gebrek aan feedback van de pers is enigszins verwarrend.
Stap 3: LED-wiel
De kern van visualisatie is een 61 LED-wiel.
Houd er rekening mee dat het onderdeel wordt geleverd als afzonderlijke ringen die u in elkaar moet zetten. Ik gebruikte eerder koperdraden voor hoogspanningsleidingen (die de ringen ook mooi bij elkaar houden), en dunne signaaldraden.
De LED's zijn genummerd van 0 tot 60, beginnend bij de onderste buitenste LED en gaan met de klok mee naar binnen. De middelste LED is nummer 60.
Elke visualisatie is gebaseerd op tweedimensionale gegevensarrays, die elke LED in een specifieke positie voor het beoogde visualisatiesegment in kaart brengen.
Voor concentrische cirkels zijn er bijvoorbeeld 5 segmenten:
- Buitenste cirkel, LED's 0 - 23, 24 LED's lang
- Tweede buitenste cirkel, LED's 24 - 39, 16 LED's lang
- Derde cirkel (midden), LED's 40 - 51, 12 LED's lang
- Tweede binnenste cirkel, LED's 52 - 59, 8 LED's lang
- Binnen LED, LED 60, 1 LED lang
De visualisatie brengt 5 van de 7 audiokanalen in kaart en verlicht de LED's progressief volgens hun positie in de cirkelvormige band in verhouding tot het geluidsniveau in de band.
Andere visualisaties gebruiken andere datastructuren en formaten, maar het idee is altijd om visualisaties te laten aansturen door de data-arrays, niet zozeer door de code. Op deze manier konden visualisaties worden aangepast aan verschillende vormen (meer of minder LED's, meer EQ-banden) zonder de code te veranderen, alleen de waarden in de gegevensarrays.
Zo ziet bijvoorbeeld de datastructuur voor visualisatie 1 eruit in de schets:
// Visualisatie 1 & 3 - volledige 5 circlesconst 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 } };
Stap 4: Visualisaties
Tot nu toe zijn er 7 visualisaties en een opstartanimatie:
Opstart animatie
Wanneer het apparaat is ingeschakeld, wordt een imitatie van vuurwerk weergegeven. Dit moest een LED- en Servo-testreeks zijn, maar evolueerde later naar een geanimeerde versie van een dergelijke test
Concentrische kleurrijke cirkels
De lichten gaan rond het scherm in concentrische cirkels in verhouding tot de amplitude van de respectieve eq-band. Willekeurig schakelen tussen de klok en tegen de klok in en langzaam de kleuren draaien over het 256 kleurenwiel
Maltezer kruis
Een band is de middelste LED. Een andere band zijn de verticale en horizontale lijnen van LED's, en de overige segmenten vertegenwoordigen elk een EQ-band. Alle segmenten zijn roterende kleuren in 128 offset om contrast te behouden.
Pulserende lichten
Elke cirkel verlicht alle LED's tegelijk voor een speciale eq-band, terwijl kleuren langzaam roteren met een lichte offset. EQ-banden worden progressief van de ene cirkel naar de volgende verschoven, waardoor een uitwaartse progressie ontstaat.
Haard
De banden zijn halve cirkels die van onder naar boven worden verlicht, beginnend met fel rood en geel toevoegend op weg naar boven, wat een brandend vuur in een open haard simuleert. Af en toe schiet er willekeurig een helderwitte "vonk" op. Er is geen kleurrotatie
Lopende lichten
Elke concentrische cirkel is een aparte EQ-band. De leidende LED's zijn die op de verticale lijn onder de middelste LED. Zodra de LED evenredig aan de bandamplitude brandt, begint deze rond de respectieve cirkel te "lopen" en neemt de intensiteit langzaam af. Zowel rotaties met de klok als tegen de klok in worden ondersteund, waarbij willekeurig wordt geschakeld.
Lichte bomen
De segmenten worden van onder naar boven in een rechte lijn verlicht en vervolgens zijwaarts in concentrische halve cirkels die palmbomen imiteren. Kleur rotatie.
Zijdelingse segmenten
Dit is een versie van het vorige Maltezer kruis met slechts 2 diagonale segmenten. Verondersteld om te lijken op het pictogram voor geluidsgolven.
Stap 5: Touch-knopbedieningen
Er zijn 4 aanraakgevoelige knoppen:
- Doorloop visualisaties en houd de huidige aan de gang totdat een andere wordt gekozen (standaard visualisaties fietsen elke 30 seconden)
- Huidige kleurenschema "bevriezen" / "deblokkeren" - als u van een bepaalde kleurencombinatie houdt, kunt u deze bevriezen - de kleurrotatie is uitgeschakeld en de visualisatie gaat verder met alleen dit kleurenpalet
- Microfoongevoeligheid aanpassen
- Zet "dansmodus" aan / uit
In de dansmodus zal het apparaat proberen de "beat" van de momenteel afgespeelde muziek te detecteren en zijn hoofd draaien volgens de beat. Tot nu toe is het "dansen" eerder onhandig dan mooi, eerlijk gezegd.
Stap 6: Beat Detectie en Servo "dansen"
Het apparaat probeert constant de "beat" van de huidige melodie te detecteren als een afstand tussen opeenvolgende pieken van de 63Hz-band. Eenmaal gedetecteerd (en alleen als de dansmodus AAN is), activeert het apparaat zijn servomotor om willekeurig naar links of rechts te draaien volgens de beat.
Alle slimme ideeën om dit betrouwbaarder te maken, zijn welkom!
'Music_Test_LED'-schets voert 7 EQ-banden uit op een manier die geschikt is voor plotten met Arduino IDE.
Stap 7: 3D-vormen
De hele Party Lights-assemblage is helemaal opnieuw ontworpen met behulp van Autodesk TinkerCAD.
Het originele ontwerp bevindt zich hier. De map "files/3D" op github.com bevat de STL-modellen.
Dit ontwerp illustreert hoe het apparaat er gemonteerd uitziet.
Alle componenten werden geprint en vervolgens geassembleerd/gelijmd.
De "dome" herbergt de microcontroller, het Bluetooth-bord en een microfoon. De microcontroller wordt op een bord van 40 mm x 60 mm geplaatst en wordt ondersteund door speciale rails.
De servo bevindt zich in de "poot" van de koepel, terwijl de knoppen zich in de basis bevinden.
Het batterijcompartiment is speciaal bedrukt voor het type batterij dat wordt vermeld in het gedeelte Benodigdheden. Als u ervoor kiest om een andere batterij te gebruiken, moet het compartiment dienovereenkomstig opnieuw worden ontworpen.
Stap 8: Voeding
Een ultracompacte 5000-mAh dubbele USB-uitgangen Superslanke powerbank lijkt voldoende stroom te leveren voor urenlang gebruik.
Het batterijcompartiment is zo ontworpen dat het loskomt van de rest van het apparaat en kan worden vervangen door een batterijcompartiment dat is ontworpen voor een ander type batterij.
De USB-stekker was gepositioneerd en warmgelijmd op zijn plaats om de batterij aan te sluiten terwijl deze naar binnen schuift.
Stap 9: Bluetooth-bediening
Er is een HC-05-module toegevoegd om het apparaat draadloos te kunnen bedienen.
Als het apparaat is ingeschakeld, maakt het een Bluetooth-verbinding met de naam "LEDDANCE", waarmee u uw telefoon kunt koppelen.
Idealiter zou er een App moeten zijn die het mogelijk maakt om PartyLights te bedienen (keuze van een kleurenpalet, simuleren van het indrukken van knoppen, enz.). Ik heb er echter nog geen geschreven.
Als je geïnteresseerd bent om te helpen bij het schrijven van een Android- of iOS-app voor Party Lights, laat het me dan weten!
Om het apparaat te bedienen, kunt u momenteel de Bluetooth-terminal-app gebruiken en de volgende opdrachten verzenden:
- LEDDBUTT - waar is '1', '2', '3' of '4' simuleert het indrukken van een respectieve knop. Bijv.: LEDDBUTT1
- LEDDCOLRc - waarbij c een getal is van 0 tot 255 - positie van de gewenste kleur op een kleurenwiel. Het apparaat schakelt over naar de opgegeven LED-kleur.
-
LEDDSTAT - retourneert een getal van 3 tekens dat alleen bestaat uit '0's en '1's:
- eerste positie: '0' - kleuren roteren niet, '1' - kleuren roteren
- tweede positie: '0' - dansmodus is uit, '1' - dansmodus is aan
- derde positie: '0' - microfoon is in normale versterking, '1' - microfoon is in hoge versterking
Stap 10: App bedienen op basis van Blynk
Blynk (blynk.io) is een hardware-onafhankelijk IoT-platform. Ik gebruikte Blynk in mijn IoT Automatic Plant Irrigation System instructable en was onder de indruk van het gemak en de robuustheid van het platform.
Blynk ondersteunt het verbinden met edge-apparaten via Bluetooth - precies wat we nodig hebben voor PartyLights.
Als je dat nog niet hebt gedaan, download dan de Blynk-app, registreer je en maak de Blynk PartyLights-app opnieuw met behulp van de schermafbeeldingen die bij deze stap zijn gevoegd. Zorg ervoor dat de virtuele pin-toewijzingen hetzelfde zijn als op de schermafbeeldingen, anders werken de knoppen op de app niet zoals bedoeld.
Het bestand "blynk_settings.h" bevat mijn persoonlijke Blynk UID. Wanneer u uw project aanmaakt, krijgt u een nieuw project toegewezen dat u kunt gebruiken.
Upload de PartyLightsBlynk.ino-schets, start de app. Koppel met Bluetooth-apparaat en geniet van het feest.
Stap 11: schetsen en bibliotheken
De hoofdschets en ondersteunende bestanden bevinden zich hier op Github.com.
De volgende bibliotheken werden gebruikt in de Party Lights-schets:
- TaskScheduler - coöperatieve multitasking - hier (door mij ontwikkeld)
- AverageFilter - sjabloongemiddelde filter - hier (door mij ontwikkeld)
- Servo - Servobesturing - is een standaard Arduino-bibliotheek
- WS2812B -NEOPixel-besturing - wordt geleverd als onderdeel van STM32-pakket
Deze Wiki-pagina legt uit hoe je STM32-kaarten kunt gebruiken met Arduino IDE.
Stap 12: Toekomstige verbeteringen
Een paar dingen kunnen in dit ontwerp worden verbeterd, waar u rekening mee kunt houden als u aan dit project begint:
- Gebruik ESP32 in plaats van Maple Mini board. ESP32 heeft 2 CPU's, Bluetooth- en WiFi-stacks en kan werken op 60 MHz, 120 MHz en zelfs 240 MHz.
- Kleiner ontwerp - het resulterende apparaat is groots. Kan compacter zijn (vooral als je het dansidee en de bijbehorende servo laat vallen)
- Beat-detectie kan oneindig worden verbeterd. Wat van nature voor ons mensen is, lijkt een moeilijke taak voor een computer
- Er zouden nog veel meer visualisaties bedacht en uitgevoerd kunnen worden.
- En natuurlijk zou er een app kunnen worden geschreven om het apparaat draadloos te bedienen met een coole gebruikersinterface.
Aanbevolen:
Draagbare technologie voor de ziekte van Parkinson: 4 stappen
Wearable Tech Parkinson Ziekte: Wereldwijd leven meer dan 10 miljoen mensen met de ziekte van Parkinson (PD). Een progressieve aandoening van het zenuwstelsel die stijfheid veroorzaakt en de beweging van de patiënt beïnvloedt. Simpel gezegd, veel mensen leden aan de ziekte van Parkinson, maar
Draagbare Bluetooth-luidspreker - MKBoom DIY Kit: 5 stappen (met afbeeldingen)
Draagbare Bluetooth-luidspreker | MKBoom DIY Kit: Hallo allemaal! Het is zo goed om na een lange pauze terug te zijn met weer een ander luidsprekerproject. Aangezien de meeste van mijn builds nogal wat gereedschap nodig hebben om te voltooien, besloot ik deze keer een draagbare luidspreker te bouwen met een kit die je gemakkelijk kunt kopen. Ik dacht het
Een draagbare zonne-energiegenerator maken: 12 stappen
Maak een draagbare zonne-energiegenerator: was uw elektronica ooit leeg toen u onderweg was? camping of op een plek waar er geen stroom (Ac) was om ze weer op te laden? Nou, hier is een eenvoudig weekendproject dat ervoor zorgt dat je altijd een manier hebt om je mobiele telefoon te houden
Draagbare bewegingssensor: 4 stappen
Draagbare bewegingssensor: Hallo, ik heb een draagbare bewegingssensor op batterijen gemaakt die ik graag met je wil delen. Wat je nodig hebt: Arduino Uno Keyes bewegingssensor Draden LED's (rood, groen blauw) Breadboard
Draagbare Bluetooth-luidspreker - Carbon Black: 5 stappen (met afbeeldingen)
Draagbare Bluetooth-luidspreker | Koolzwart: Hallo! Ik heb onlangs een draagbare Bluetooth-luidspreker gebouwd voor de verjaardag van mijn broer, dus ik dacht, waarom zou ik de details ervan niet met jullie delen? Bekijk gerust mijn video op YouTube over het maken van de speaker!: Portable Bluetooth Speaker Build