Inhoudsopgave:

Draagbare feestverlichting - Ajarnpa
Draagbare feestverlichting - Ajarnpa

Video: Draagbare feestverlichting - Ajarnpa

Video: Draagbare feestverlichting - Ajarnpa
Video: De 3 beste draagbare zonne-tuinverlichting 2024, November
Anonim
Image
Image
Het idee
Het idee

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
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!):

  1. Concentrische kleurrijke cirkels
  2. Maltezer kruis
  3. Pulserende lichten
  4. Open haard (mijn persoonlijke favoriet)
  5. Lopende lichten
  6. Lichte bomen
  7. 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

Schematische en geluidsverwerking
Schematische en geluidsverwerking
Schematische en geluidsverwerking
Schematische en geluidsverwerking
Schematische en geluidsverwerking
Schematische en geluidsverwerking
Schematische en geluidsverwerking
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

LED-wiel
LED-wiel
LED-wiel
LED-wiel
LED-wiel
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

visualisaties
visualisaties
visualisaties
visualisaties
visualisaties
visualisaties
visualisaties
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

Touch-knopbedieningen
Touch-knopbedieningen

Er zijn 4 aanraakgevoelige knoppen:

  1. Doorloop visualisaties en houd de huidige aan de gang totdat een andere wordt gekozen (standaard visualisaties fietsen elke 30 seconden)
  2. 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
  3. Microfoongevoeligheid aanpassen
  4. 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"

Beat detectie en servo
Beat detectie en servo

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

3D-vormen
3D-vormen
3D-vormen
3D-vormen
3D-vormen
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

Stroomvoorziening
Stroomvoorziening
Stroomvoorziening
Stroomvoorziening

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

Bluetooth-bediening
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

Bedien app op basis van Blynk
Bedien app op basis van Blynk
Bedien app op basis van Blynk
Bedien app op basis van Blynk
Bedien app op basis van Blynk
Bedien app op basis van Blynk
Bedien app op basis van Blynk
Bedien app 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

Schetsen en bibliotheken
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

Toekomstige verbeteringen
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: