Innehållsförteckning:

Bärbara festljus: 12 steg (med bilder)
Bärbara festljus: 12 steg (med bilder)

Video: Bärbara festljus: 12 steg (med bilder)

Video: Bärbara festljus: 12 steg (med bilder)
Video: Lay's® FLAMIN 'HOT® DILL PICKLE Review ??? | Livestream-omspelning 12.4.20 | Titta DETTA! 2024, November
Anonim
Image
Image
Idén
Idén

Tinkercad -projekt »

Kan du ge ljus till en fest och göra det roligare?

Det var frågan. Och svaret är JA (naturligtvis).

Detta instruerbara handlar om att göra en bärbar enhet som lyssnar på musik och skapar musikvisualisering av koncentriska ringar av Neopixel -lysdioder.

Ett försök gjordes för att få enheten att "dansa", det vill säga flytta till musikens takt, men slagupptäckt visade sig vara en mer komplicerad uppgift än den låter (ingen ordlek avsedd), så "dans" är lite besvärligt, men finns fortfarande kvar.

Enheten är Bluetooth-aktiverad och svarar på textkommandon. Jag hade inte tid att skriva en app för att styra Party Lights (antingen Android eller iOS). Om du klarar uppgiften - hör av dig till mig !!!

Om du gillar det här instruerbart, vänligen rösta på det i Make It Glow -tävlingen!

Tillbehör

För att bygga Party Lights behöver du:

  • STM32F103RCBT6 Leaflabs Leaf Maple Mini USB ARM Cortex -M3 -modul för Arduino (länk här) - enhetens hjärna. Dessa relativt billiga enheter är så kraftfulla, det är oklart varför du någonsin skulle gå tillbaka till en Arduino.
  • MSGEQ7 Band Graphic Equalizer IC DIP-8 MSGEQ7 (länk här)
  • HC-05 eller HC-06 Bluetooth-modul (länk här)
  • Adafruit MAX9814 mikrofon (länk här)
  • En standard servomotor (länk här) är att du vill att din enhet ska "dansa"
  • CJMCU 61 Bit WS2812 5050 RGB LED Driver Development Board (länk här)
  • TTP223 Touch Key Module Kapacitiv Inställbar Self-Lock/No-Lock Switch Board (länk här)
  • Ultra Compact 5000 mah dubbla USB-utgångar Super Slim Power Bank (länk här)

  • Motstånd, kondensatorer, ledningar, lim, skruvar, prototyper, etc. etc.

Steg 1: Idén

Idén
Idén

Tanken är att ha en bärbar enhet som kan placeras nära en musikkälla, och som skulle skapa färgglada musikvisualiseringar. Du bör kunna styra enhetens beteende via knappar (touch) och Bluetooth.

För närvarande har Party Lights 7 visualiseringar implementerade (meddela mig om du har fler idéer!):

  1. Koncentriska färgglada cirklar
  2. malteserkors
  3. Pulserande ljus
  4. Eldstad (min personliga favorit)
  5. Körljus
  6. Lätta träd
  7. I sidled segment

Som standard kommer enheten att bläddra igenom visualiseringarna varje minut. En användare kan dock välja att hålla sig till en visualisering och/eller manuellt bläddra igenom dem.

Visualiseringar som roterar färgpaletten kan också "frysas" om en användare gillar en viss färgkombination.

Och som ett par fler kontroller kan användaren ändra mikrofonkänsligheten och aktivera/inaktivera servomotorns "dans" -läge.

Steg 2: Schematisk och ljudbehandling

Schematisk och ljudbehandling
Schematisk och ljudbehandling
Schematisk och ljudbehandling
Schematisk och ljudbehandling
Schematisk och ljudbehandling
Schematisk och ljudbehandling
Schematisk och ljudbehandling
Schematisk och ljudbehandling

En fritzing schematisk fil ingår i paketet på Github i undermappen "filer".

I grund och botten gör ett MSEQ7 -chip ljudbehandlingen och delar upp en ljudsignal i 7 band: 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz och 16kHz

Mikrokontrollern använder de sju banden för att skapa olika visualiseringar, i grunden kartlägga respektive bandamplituder till LED -ljusintensitet och färgkombinationer.

Ljudkällan är en mikrofon med 3 nivåer av förstärkningskontroll. Du kan bläddra igenom förstärkningsinställningarna med en av knapparna beroende på hur långt/högt ljudkällan är.

Mikrokontrollern försöker också utföra "beat" -detektering på 63Hz "bas" -bandet. Jag arbetar fortfarande på ett pålitligt sätt att upptäcka och upprätthålla taktjustering.

Användningen av "touch" -knappar var ett experiment. Jag tycker att de fungerar ganska bra, men bristen på feedback från pressen är förvirrande något.

Steg 3: LED -hjul

LED -hjul
LED -hjul
LED -hjul
LED -hjul
LED -hjul
LED -hjul

Kärnan i visualiseringen är ett 61 LED -hjul.

Observera att delen kommer som individuella ringar som du måste sätta ihop. Jag brukade snarare tänka koppartrådar för kraftledningar (som också håller ihop ringarna snyggt) och tunna signaltrådar.

Lysdioderna är numrerade 0 till 60 från den nedre yttre lysdioden och går medsols inåt. Mittlampan är nummer 60.

Varje visualisering förlitar sig på tvådimensionella datarrayer, som kartlägger varje lysdiod till en specifik position för målvisualiseringssegmentet.

Till exempel för koncentriska cirklar finns det fem segment:

  • Yttercirkel, lysdioder 0 - 23, 24 lysdioder långa
  • Andra yttre cirkeln, lysdioder 24 - 39, 16 lysdioder långa
  • Tredje cirkeln (mitten), lysdioder 40 - 51, 12 lysdioder långa
  • Andra inre cirkeln, lysdioder 52 - 59, 8 lysdioder långa
  • Inuti LED, LED 60, 1 LED lång

Visualiseringen kartlägger 5 av 7 ljudkanaler och tänder lysdioder successivt beroende på deras position i det cirkulära bandet i proportion till ljudnivån i bandet.

Andra visualiseringar använder olika datastrukturer och format, men tanken är alltid att ha visualiseringar som drivs av datarrayerna, inte så mycket av koden. På så sätt kan visualiseringar justeras till olika former (fler eller färre lysdioder, fler EQ -band) utan att koden ändras, bara värdena i datarrayerna.

Så här ser till exempel datastrukturen för visualisering 1 ut i skissen:

// Visualisering 1 & 3 - hela 5 cirklar, konstant 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}};

Steg 4: Visualiseringar

Visualiseringar
Visualiseringar
Visualiseringar
Visualiseringar
Visualiseringar
Visualiseringar
Visualiseringar
Visualiseringar

Hittills finns det 7 visualiseringar och en startanimation:

Startanimation

När enheten är påslagen visas en imitation av ett fyrverkeri. Detta var tänkt att vara en LED- och Servotestsekvens, men utvecklades senare till en animerad version av ett sådant test

Koncentriska färgglada cirklar

Ljusen går runt displayen i koncentriska cirklar i proportion till amplituden för respektive eq -band. Slumpmässigt växla mellan klockan och moturs och långsamt rotera färgerna över 256 färghjulet

malteserkors

Ett band är mitt -LED. Ett annat band är de vertikala och horisontella linjerna för lysdioder, och de återstående segmenten representerar var och ett ett EQ -band. Alla segment roterar färger i 128 offset för att förbli kontrast.

Pulserande ljus

Varje cirkel lyser upp alla lysdioder unisont för ett dedikerat eq -band, medan långsamt roterar färger med en liten förskjutning. EQ -band skiftas gradvis från en cirkel till nästa och skapar utåtriktad progression.

Öppen spis

Banden är halvcirklar upplysta från botten till toppen som börjar med en ljus röd och lägger till gult på vägen upp som simulerar en brinnande eld i en eldstad. Enstaka ljusvit "gnista" skjuter slumpmässigt upp. Det finns ingen färgrotation

Körljus

Varje koncentrisk cirkel är ett separat EQ -band. De ledande lysdioderna är de på den vertikala linjen under mitt -LED. När lysdioden tänds i proportion till bandamplituden börjar den "springa" runt respektive cirkel och minskar intensiteten långsamt. Både rotationer med- och moturs stöds och slumpmässigt växlas.

Lätta träd

Segmenten är upplysta i en rak linje från botten LED upp och sedan i sidled i koncentriska halvcirklar som imiterar palmer. Färgrotation.

I sidled segment

Detta är en version av det tidigare maltesiska korset med endast 2 diagonala segment som används. Tänkt att likna ikonen för ljudvågor.

Steg 5: Peksknappskontroller

Tryck på knapparna
Tryck på knapparna

Det finns 4 beröringskänsliga knappar:

  1. Bläddra igenom visualiseringar och behåll den aktuella tills den andra väljs (som standard cyklar visualiseringar var 30: e sekund)
  2. "Frys" / "frigör" nuvarande färgschema - om du gillar en viss färgkombination kan du frysa den - färgrotationen är inaktiverad och visualiseringen fortsätter med bara den här färgpaletten
  3. Justera mikrofonkänsligheten
  4. Slå på / av "dansläge"

I dansläge kommer enheten att försöka upptäcka "beat" för den musik som spelas för närvarande och vrida huvudet enligt beatten. Hittills är "dansen" ganska besvärlig än vacker, om jag ska vara ärlig.

Steg 6: Beat Detection och servodansning

Beat Detection och Servo
Beat Detection och Servo

Enheten försöker ständigt upptäcka "beat" för den aktuella melodin som ett avstånd mellan på varandra följande toppar i 63Hz -bandet. När det väl har upptäckts (och endast om dansläget är PÅ) aktiverar enheten sin servomotor för att slumpmässigt svänga åt vänster eller höger enligt takten.

Alla ljusa idéer om hur man gör detta mer tillförlitligt är välkomna!

'Music_Test_LED' skissar ut 7 EQ -band på ett sätt som är lämpligt för plottning med Arduino IDE.

Steg 7: 3D -former

3D -former
3D -former
3D -former
3D -former
3D -former
3D -former

Hela Party Lights -monteringen designades från grunden med hjälp av Autodesk TinkerCAD.

Den ursprungliga designen finns här. Mappen "files/3D" på github.com innehåller STL -modellerna.

Denna design illustrerar hur enheten ser monterad ut.

Alla komponenter skrevs ut och monterades/limmades sedan ihop.

"Kupolen" är värd för mikrokontroller, Bluetooth -kort och en mikrofon. Mikrokontrollern placeras på ett 40 mm x 60 mm kort och stöds av särskilda skenor.

Servon är placerad i "benet" på kupolen, medan knapparna finns i basen.

Batterifacket skrivs ut specifikt för den typ av batteri som nämns i avsnittet Tillbehör. Om du väljer att använda ett annat batteri måste facket omdesignas i enlighet därmed.

Steg 8: Strömförsörjning

Strömförsörjning
Strömförsörjning
Strömförsörjning
Strömförsörjning

En ultrakompakt 5000 mah dubbla USB-utgångar Super Slim Power Bank verkar ge tillräckligt med ström för timmar i drift.

Batterifacket är utformat så att det lossnar från resten av enheten och kan ersättas med det som är avsett för en annan typ av batteri.

USB-kontakten placerades och varmlimmades på plats för att ansluta batteriet när det glider in.

Steg 9: Bluetooth -kontroll

Bluetooth -kontroll
Bluetooth -kontroll

En HC-05-modul har lagts till för att ge ett sätt att styra enheten trådlöst.

När den är på skapar enheten en Bluetooth -anslutning som heter "LEDDANCE", som du kan para ihop din telefon med.

Helst ska det finnas en app som gör det möjligt att styra PartyLights (välja en färgpalett, simulera knapptryckningar etc.). Jag har dock inte skrivit en än.

Om du är intresserad av att hjälpa till med att skriva en Android- eller iOS -app för Party Lights, vänligen meddela mig!

För att styra enheten kan du för närvarande använda Bluetooth -terminalappen och skicka följande kommandon:

  • LEDDBUTT - var är '1', '2', '3' eller '4' simulerar att trycka på en respektive knapp. Ex.: LEDDBUTT1
  • LEDDCOLRc - där c är ett tal från 0 till 255 - position för önskad färg på ett färghjul. Enheten växlar till den angivna LED -färgen.
  • LEDDSTAT - returnerar ett tecken på tre tecken bestående av endast 0: or och 1:

    • första positionen: '0' - färgerna roterar inte, '1' - färgerna roterar
    • andra positionen: '0' - dansläget är avstängt, '1' - dansläget är på
    • tredje position: '0' - mikrofon har normal förstärkning, '1' - mikrofon har hög förstärkning

Steg 10: Kontrollera appen baserad på Blynk

Kontrollapp baserat på Blynk
Kontrollapp baserat på Blynk
Kontrollapp baserat på Blynk
Kontrollapp baserat på Blynk
Kontrollapp baserat på Blynk
Kontrollapp baserat på Blynk
Kontrollapp baserat på Blynk
Kontrollapp baserat på Blynk

Blynk (blynk.io) är en hårdvara-agnostisk IoT-plattform. Jag använde Blynk i mitt IoT Automatic Plant Irrigation System instruerbart och var imponerad av plattformens lätthet och robusthet.

Blynk stöder anslutning till edge -enheter via Bluetooth - precis vad vi behöver för PartyLights.

Om du inte redan har gjort det, ladda ner Blynk -appen, registrera och återskapa Blynk PartyLights -appen med hjälp av skärmdumparna som bifogas detta steg. Se till att de virtuella pin -tilldelningarna är desamma som på skärmdumparna, annars fungerar knapparna på appen inte som avsett.

Filen "blynk_settings.h" innehåller mitt personliga Blynk UID. När du skapar ditt projekt kommer det att tilldelas ett nytt för dig att använda.

Ladda upp PartyLightsBlynk.ino -skissen, starta appen. Kombinera med Bluetooth -enhet och njut av festen.

Steg 11: Skisser och bibliotek

Skisser och bibliotek
Skisser och bibliotek

Huvudskissen och stödfilerna finns på Github.com här.

Följande bibliotek användes i Party Lights -skissen:

  • TaskScheduler - kooperativ multitasking - här (utvecklad av mig)
  • AverageFilter - mallat genomsnittligt filter - här (utvecklat av mig)
  • Servo - Servokontroll - är ett standard Arduino -bibliotek
  • WS2812B -NEOPixel kontroll - kommer som en del av STM32 -paketet

Denna Wiki -sida förklarar hur du använder STM32 -kort med Arduino IDE.

Steg 12: Framtida förbättringar

Framtida förbättringar
Framtida förbättringar

Några saker kan förbättras i denna design, som du kan tänka på om du ger dig ut på detta projekt:

  • Använd ESP32 istället för Maple Mini board. ESP32 har 2 processorer, Bluetooth och WiFi -staplar och kan köras på 60MHz, 120MHz och till och med 240MHz.
  • Mindre design - den resulterande enheten är stor. Kan vara mer kompakt (speciellt om du tappar dansidén och tillhörande servo)
  • Beat -upptäckt kan förbättras oändligt. Det som faller oss naturligt, verkar vara en svår uppgift för en dator
  • Mycket fler visualiseringar skulle kunna utvecklas och implementeras.
  • Och naturligtvis kan en app skrivas för att styra enheten trådlöst med ett coolt gränssnitt.

Rekommenderad: