Sommario:

Luci per feste portatili: 12 passaggi (con immagini)
Luci per feste portatili: 12 passaggi (con immagini)

Video: Luci per feste portatili: 12 passaggi (con immagini)

Video: Luci per feste portatili: 12 passaggi (con immagini)
Video: Controller DMX 512. Come funzionano le luci DMX, piccolo tutorial base, improvvisato. 2024, Dicembre
Anonim
Image
Image
L'idea
L'idea

Progetti Tinkercad »

Puoi portare luce a una festa e renderla più divertente?

Questa era la domanda. E la risposta è SI (ovviamente).

Questo tutorial riguarda la creazione di un dispositivo portatile che ascolti la musica e crei la visualizzazione della musica da anelli concentrici di LED Neopixel.

È stato fatto un tentativo per far "danzare" il dispositivo, cioè spostarlo al ritmo della musica, ma il rilevamento del ritmo si è rivelato un compito più complicato di quanto sembri (nessun gioco di parole inteso), quindi "danzare" è un po' imbarazzante, ma è ancora lì.

Il dispositivo è abilitato Bluetooth e risponderà ai comandi di testo. Non ho avuto il tempo di scrivere un'app per controllare Party Lights (sia Android che iOS). Se sei all'altezza del compito, per favore fammi sapere!!!

Se ti piace questo tutorial, per favore votalo nel concorso Make It Glow!

Forniture

Per costruire Party Lights avrai bisogno di:

  • STM32F103RCBT6 Leaflabs Leaf Maple Mini USB ARM Cortex-M3 Modulo per Arduino (link qui) - il cervello del dispositivo. Questi dispositivi relativamente economici sono così potenti che non è chiaro il motivo per cui dovresti tornare a un Arduino.
  • MSGEQ7 Equalizzatore grafico a banda IC DIP-8 MSGEQ7 (link qui)
  • Modulo Bluetooth HC-05 o HC-06 (link qui)
  • Microfono Adafruit MAX9814 (link qui)
  • Un servomotore standard (link qui) se vuoi che il tuo dispositivo "balli"
  • Scheda di sviluppo driver LED RGB CJMCU 61 bit WS2812 5050 (link qui)
  • Modulo tasti touch TTP223 Scheda interruttori autobloccante/non bloccabile impostabile capacitiva (link qui)
  • Ultra compatto 5000-mAh Dual USB Output Super Slim Power Bank (link qui)
  • Resistenze, condensatori, fili, colla, viti, schede di prototipazione, ecc. ecc.

Passaggio 1: l'idea

L'idea
L'idea

L'idea è di avere un dispositivo portatile che possa essere posizionato vicino a una sorgente musicale e che crei visualizzazioni musicali colorate. Dovresti essere in grado di controllare il comportamento del dispositivo tramite pulsanti (touch) e Bluetooth.

Attualmente, Party Lights ha 7 visualizzazioni implementate (fammi sapere se hai più idee!):

  1. Cerchi colorati concentrici
  2. Croce di Malta
  3. Luci pulsanti
  4. Camino (il mio preferito)
  5. Luci di marcia
  6. alberi leggeri
  7. Segmenti laterali

Per impostazione predefinita, il dispositivo scorrerà le visualizzazioni ogni minuto. Tuttavia, un utente può scegliere di attenersi a una visualizzazione e/o scorrerle manualmente.

Le visualizzazioni che ruotano la loro tavolozza di colori potrebbero anche essere "congelate" se a un utente piace una particolare combinazione di colori.

E come un paio di ulteriori controlli, l'utente può modificare la sensibilità del microfono e abilitare/disabilitare la modalità "danza" del servomotore.

Passaggio 2: elaborazione schematica e sonora

Elaborazione schematica e del suono
Elaborazione schematica e del suono
Elaborazione schematica e del suono
Elaborazione schematica e del suono
Elaborazione schematica e del suono
Elaborazione schematica e del suono
Elaborazione schematica e del suono
Elaborazione schematica e del suono

Un file schematico fritzing è incluso nel pacchetto su Github nella sottocartella "file".

Fondamentalmente, un chip MSEQ7 esegue l'elaborazione audio, suddividendo un segnale audio in 7 bande: 63Hz, 160Hz, 400Hz, 1kHz, 2,5kHz, 6,25kHz e 16kHz

Il microcontrollore utilizza queste 7 bande per creare varie visualizzazioni, mappando sostanzialmente le rispettive ampiezze di banda nell'intensità della luce LED e nelle combinazioni di colori.

La sorgente sonora è un microfono con 3 livelli di controllo del guadagno. È possibile scorrere le impostazioni del guadagno utilizzando uno dei pulsanti a seconda di quanto è lontana/forte la sorgente sonora.

Il microcontrollore tenta anche di eseguire il rilevamento dei "battiti" sulla banda dei "bassi" a 63Hz. Sto ancora lavorando su un modo affidabile per rilevare e mantenere l'allineamento dei battiti.

L'uso dei pulsanti "touch" è stato un esperimento. Penso che funzionino abbastanza bene, tuttavia, la mancanza di feedback della stampa crea un po' di confusione.

Passaggio 3: ruota LED

Ruota LED
Ruota LED
Ruota LED
Ruota LED
Ruota LED
Ruota LED

Il cuore della visualizzazione è una ruota a 61 LED.

Si prega di notare che la parte viene fornita come singoli anelli che dovrai mettere insieme. Ho usato piuttosto fili di rame per le linee elettriche (che tengono insieme bene anche gli anelli) e fili di segnale sottili.

I LED sono numerati da 0 a 60 partendo dal LED esterno inferiore e procedendo in senso orario verso l'interno. Il LED centrale è il numero 60.

Ogni visualizzazione si basa su array di dati bidimensionali, che mappano ciascun LED in una posizione specifica per il segmento di visualizzazione di destinazione.

Ad esempio, per i cerchi concentrici, ci sono 5 segmenti:

  • Cerchio esterno, LED 0 - 23, 24 LED lunghi
  • Secondo cerchio esterno, LED 24 - 39, 16 LED lunghi
  • Terzo cerchio (centro), LED 40 - 51, 12 LED lunghi
  • Secondo cerchio interno, LED 52 - 59, 8 LED lunghi
  • LED interno, LED 60, 1 LED lungo

La visualizzazione mappa 5 dei 7 canali audio e accende i LED progressivamente in base alla loro posizione nella banda circolare proporzionata al livello del suono nella banda.

Altre visualizzazioni utilizzano strutture e formati di dati diversi, ma l'idea è sempre quella di avere visualizzazioni guidate dagli array di dati, non tanto dal codice. In questo modo le visualizzazioni possono essere adattate a forme diverse (più o meno LED, più bande EQ) senza modificare il codice, solo i valori negli array di dati.

Ad esempio, ecco come appare la struttura dei dati per la visualizzazione 1 nello schizzo:

// Visualizzazione 1 e 3 - full 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 } };

Passaggio 4: visualizzazioni

Visualizzazioni
Visualizzazioni
Visualizzazioni
Visualizzazioni
Visualizzazioni
Visualizzazioni
Visualizzazioni
Visualizzazioni

Finora ci sono 7 visualizzazioni e un'animazione di avvio:

Animazione di avvio

Quando il dispositivo è acceso, viene visualizzata un'imitazione di un fuoco d'artificio. Questa doveva essere una sequenza di test LED e Servo, ma in seguito si è evoluta in una versione animata di tale test

Cerchi colorati concentrici

Le luci girano intorno al display in cerchi concentrici proporzionati all'ampiezza della rispettiva banda eq. Passaggio casuale da senso orario a senso antiorario e rotazione lenta dei colori sulla ruota dei 256 colori

Croce di Malta

Una banda è il LED centrale. Un'altra banda sono le linee verticali e orizzontali dei LED e i restanti segmenti che rappresentano ciascuna una banda EQ. Tutti i segmenti ruotano i colori con un offset di 128 per mantenere il contrasto.

Luci pulsanti

Ogni cerchio accende tutti i LED all'unisono per una banda eq dedicata, mentre ruota lentamente i colori con un leggero offset. Le bande di equalizzazione vengono spostate progressivamente da un cerchio all'altro creando una progressione verso l'esterno.

Camino

Le bande sono semicerchi illuminati dal basso verso l'alto che iniziano con un rosso brillante e aggiungono giallo durante la salita simulando un fuoco ardente in un camino. Occasionalmente, una "scintilla" bianca brillante si alza casualmente. Non c'è rotazione del colore

Luci di marcia

Ogni cerchio concentrico è una banda EQ separata. I LED principali sono quelli sulla linea verticale sotto il LED centrale. Una volta che il LED è acceso proporzionalmente all'ampiezza della banda, inizia a "correre" attorno al rispettivo cerchio diminuendo lentamente di intensità. Sono supportate le rotazioni sia in senso orario che antiorario, con commutazione casuale.

alberi leggeri

I segmenti sono illuminati in linea retta dal LED in basso verso l'alto e poi lateralmente in semicerchi concentrici imitando le palme. Rotazione del colore.

Segmenti laterali

Questa è una versione della precedente Croce di Malta con solo 2 segmenti diagonali utilizzati. Dovrebbe assomigliare all'icona delle onde sonore.

Passaggio 5: controlli del pulsante a sfioramento

Controlli del pulsante a sfioramento
Controlli del pulsante a sfioramento

Sono presenti 4 pulsanti sensibili al tocco:

  1. Scorri le visualizzazioni e mantieni attiva quella corrente finché non ne viene scelta un'altra (per impostazione predefinita, le visualizzazioni vengono eseguite ogni 30 secondi)
  2. "Blocca" / "sblocca" lo schema di colori corrente - se ti piace una particolare combinazione di colori puoi congelarla - la rotazione dei colori è disabilitata e la visualizzazione continuerà solo con questa tavolozza di colori
  3. Regola la sensibilità del microfono
  4. Attiva / disattiva la "modalità danza"

In modalità danza, il dispositivo cercherà di rilevare il "battito" della musica attualmente in riproduzione e girerà la testa in base al ritmo. Finora il "ballo" è piuttosto imbarazzante che bello, a dire il vero.

Passaggio 6: rilevamento del ritmo e "danza" dei servo

Rilevamento del battito e servo
Rilevamento del battito e servo

Il dispositivo cerca costantemente di rilevare il "battito" della melodia corrente come distanza tra picchi consecutivi della banda 63Hz. Una volta rilevato (e solo se la modalità dance è ON), il dispositivo attiverà il suo servomotore per girare casualmente a sinistra oa destra in base al ritmo.

Qualsiasi idea brillante su come renderlo più affidabile è benvenuta!

Lo sketch 'Music_Test_LED' emette 7 bande EQ in un modo adatto per la stampa utilizzando Arduino IDE.

Passaggio 7: forme 3D

Forme 3D
Forme 3D
Forme 3D
Forme 3D
Forme 3D
Forme 3D

L'intero gruppo Party Lights è stato progettato da zero utilizzando Autodesk TinkerCAD.

Il design originale si trova qui. La cartella "files/3D" su github.com contiene i modelli STL.

Questo design illustra l'aspetto del dispositivo assemblato.

Tutti i componenti sono stati stampati e poi assemblati/incollati insieme.

La "cupola" ospita il microcontrollore, la scheda Bluetooth e un microfono. Il microcontrollore è posizionato su una scheda da 40 mm x 60 mm ed è supportato da guide designate.

Il servo si trova nella "gamba" della cupola, mentre i pulsanti si trovano nella base.

Il vano batteria è stampato specificamente per il tipo di batteria menzionato nella sezione Materiali di consumo. Se si sceglie di utilizzare una batteria diversa, il vano dovrà essere riprogettato di conseguenza.

Passaggio 8: alimentazione

Alimentazione elettrica
Alimentazione elettrica
Alimentazione elettrica
Alimentazione elettrica

Un ultra-compatto 5000 mAh Dual USB Output Super Slim Power Bank sembra fornire energia sufficiente per ore di funzionamento.

Il vano batteria è progettato in modo tale da staccarsi dal resto del dispositivo e potrebbe essere sostituito con quello predisposto per un diverso tipo di batteria.

La presa USB è stata posizionata e incollata a caldo in posizione per collegare la batteria mentre scorre.

Passaggio 9: controllo Bluetooth

Controllo Bluetooth
Controllo Bluetooth

Viene aggiunto un modulo HC-05 per fornire un modo per controllare il dispositivo in modalità wireless.

Quando è acceso, il dispositivo crea una connessione Bluetooth chiamata "LEDDANCE", a cui è possibile associare il telefono.

Idealmente, dovrebbe esserci un'app che permetta di controllare PartyLights (scegliendo una tavolozza di colori, simulando la pressione dei pulsanti, ecc.). Tuttavia, non ne ho ancora scritto uno.

Se sei interessato ad aiutare a scrivere un'app Android o iOS per Party Lights, faccelo sapere!

Per controllare il dispositivo, è attualmente possibile utilizzare l'app del terminale Bluetooth e inviare i seguenti comandi:

  • LEDDBUTT - dove è '1', '2', '3' o '4' simula la pressione di un rispettivo pulsante. Es.: LEDDBUT1
  • LEDDCOLRc - dove c è un numero da 0 a 255 - posizione del colore desiderato su una ruota dei colori. Il dispositivo passerà al colore LED specificato.
  • LEDDSTAT - restituisce un numero di 3 caratteri composto solo da "0" e "1":

    • prima posizione: '0' - i colori non ruotano, '1' - i colori ruotano
    • seconda posizione: '0' - la modalità danza è disattivata, '1' - la modalità danza è attiva
    • terza posizione: '0' - il microfono è a guadagno normale, '1' - il microfono è ad alto guadagno

Passaggio 10: app di controllo basata su Blynk

App di controllo basata su Blynk
App di controllo basata su Blynk
App di controllo basata su Blynk
App di controllo basata su Blynk
App di controllo basata su Blynk
App di controllo basata su Blynk
App di controllo basata su Blynk
App di controllo basata su Blynk

Blynk (blynk.io) è una piattaforma IoT indipendente dall'hardware. Ho usato Blynk nel mio sistema di irrigazione automatico dell'impianto IoT e sono rimasto colpito dalla facilità e dalla robustezza della piattaforma.

Blynk supporta la connessione a dispositivi edge tramite Bluetooth, esattamente ciò di cui abbiamo bisogno per PartyLights.

Se non lo hai già fatto, scarica l'app Blynk, registrati e ricrea l'app Blynk PartyLights utilizzando gli screenshot allegati a questo passaggio. Assicurati che le assegnazioni dei pin virtuali siano le stesse degli screenshot, altrimenti i pulsanti sull'app non funzioneranno come previsto.

Il file "blynk_settings.h" contiene il mio UID Blynk personale. Quando crei il tuo progetto, ne verrà assegnato uno nuovo da utilizzare.

Carica lo schizzo PartyLightsBlynk.ino, accendi l'app. Accoppia con il dispositivo Bluetooth e goditi la festa.

Passaggio 11: schizzi e biblioteche

Schizzi e biblioteche
Schizzi e biblioteche

Lo schizzo principale e i file di supporto si trovano su Github.com qui.

Le seguenti librerie sono state utilizzate nello schizzo Party Lights:

  • TaskScheduler - multitasking cooperativo - qui (sviluppato da me)
  • AverageFilter - filtro medio basato su modelli - qui (sviluppato da me)
  • Servo - Servo control - è una libreria Arduino standard
  • WS2812B -NEOPixel control - fa parte del pacchetto STM32

Questa pagina Wiki spiega come utilizzare le schede STM32 con Arduino IDE.

Passaggio 12: miglioramenti futuri

Miglioramenti futuri
Miglioramenti futuri

Alcune cose potrebbero essere migliorate in questo design, che potresti prendere in considerazione se ti imbarchi in questo progetto:

  • Usa ESP32 invece della scheda Maple Mini. ESP32 ha 2 CPU, stack Bluetooth e WiFi e può funzionare a 60 MHz, 120 MHz e persino 240 MHz.
  • Design più piccolo: il dispositivo risultante è di grandi dimensioni. Potrebbe essere più compatto (soprattutto se lasci cadere l'idea del ballo e il servo associato)
  • Il rilevamento del battito potrebbe essere infinitamente migliorato. Ciò che viene naturale per noi umani, sembra essere un compito difficile per un computer
  • Potrebbero essere ideate e implementate molte più visualizzazioni.
  • E, naturalmente, è possibile scrivere un'app per controllare il dispositivo in modalità wireless con un'interfaccia utente interessante.

Consigliato: