Qualche mese fa, una lampada da tremito da $ 3000 e lampo era diventata virale nella comunità dei produttori. Era una luce straordinariamente bella, ma il cartellino del prezzo l'aveva lasciata fuori dalla portata di chiunque avesse la sua sanità mentale intatta. Ciò che realizzeremo oggi non è esattamente lo stesso: stiamo creando qualcosa di più pratico, anziché un pezzo d'arte, ma sarà molto più interessante e personalizzabile.
Ho scelto di omettere i diffusori partendo dal presupposto che probabilmente hai già un buon paio di diffusori nella tua stanza che preferiresti usare, e francamente mettere un altoparlante in una lampada è un po 'strano. Invece, aggiungerò un microfono che consentirà al lampo di reagire automaticamente a rumori forti - sia da un temporale reale, sia da una colonna sonora riprodotta dal PC o dallo stereo.
Inoltre, utilizzeremo un filo di LED Neopixel RGB completi (WS2812B), in modo che possiamo riprodurre colori diversi dal bianco e avere il controllo su ogni pixel.
Attenzione : l'alimentatore che ho usato in questo progetto ha terminali a vite che si collegano a un cavo CA in tensione. Se non si sente sicuro il cablaggio di una spina, assicurarsi di acquistare un alimentatore completamente chiuso. Per lo meno, dovrai racchiudere l'alimentatore in una scatola di progetto sicura.
Passaggio 0: Introduzione
Ecco un video dimostrativo del progetto finito. Fino ad ora ho implementato alcune modalità diverse, dal fulmine standard a una nuvola di acidi trippy e una lampada a sospensione di colore che può essere scelta dal telecomando.
Il codice completo e le librerie necessarie sono disponibili per il download da questo repository Github.
Passaggio 1: è necessario
- Filo WS2812B, in genere al prezzo di circa $ 50 per 5 metri. Non preoccuparti se hai un altro tipo di filo di Neopixel, è quasi certamente supportato dall'interfaccia FastLED, ma il tuo cablaggio potrebbe essere diverso (ad esempio, potresti richiedere una linea di sincronizzazione oltre al segnale).
- Alimentatore da 5 V, 10 A + - Ho acquistato alcune unità da 15 A per $ 11 ciascuna. Prendono input da 120-240 V CA e producono una potente uscita a 5 V che sarà più sufficiente per alimentare tutti i nostri pixel a piena luminosità e Arduino.
- Cablaggio elettrico, spina e interruttore in linea
- Recinzione del progetto
- Due Arduinos. $ 10 cloni Funduino vanno bene. Il secondo è necessario per il controllo remoto, mentre il primo controlla la logica principale ei LED.
- Due resistori di Ohm da 2.2k (o giù di lì): il valore esatto non conta molto, circa 1.5k fino a 47k dovrebbero funzionare.
- breadboard
- Ricevitore IR TSOP4838
- Telecomando IR: ho acquistato alla rinfusa per circa $ 2 ciascuno, ma qualsiasi telecomando dovrebbe funzionare con le modifiche al codice.
- Ampio modulo microfono
- Rottami di legno MDF per tagliare la tua base e un puzzle.
- Materiale di imballaggio in polistirene / inserti di scatole.
- Imbottitura cuscino in cotone polipropilene. Ho tirato più che abbastanza da alcuni vecchi cuscini orribili. Se questa non è un'opzione, dovresti essere in grado di comprarne una nuova per circa $ 10, o usare anche cotone più economico. Ho provato con entrambi: la lana di cotone aveva bisogno di più lavoro nel doverla sfornare e non era così soffice, ma in un pizzico funzionerebbe.
- Catena e ganci per appendere il cloud - dovrebbe contenere più di 5 kg.
- Pistola per colla a bassa temperatura
- Colla spray - più facile attaccare il ripieno sulla tua nuvola con questo, ma potrebbe anche funzionare una pistola per colla.
Il costo totale è di circa $ 100, esclusi gli strumenti, ma la maggior parte di questo è stato recuperato da tutta la casa. Tutti i componenti elettronici sono comunemente disponibili; il microfono può essere trovato in un kit sensore o acquistato singolarmente.
Passaggio 2: tagliare la base
Tagliare una base ruvida da un pezzo di scarto di MDF con un puzzle - la forma esatta è ovviamente a te, ma per qualche motivo una nuvola è a forma di fagiolo nella mia mente. Attaccheremo alcuni ganci per appenderli, ma in caso contrario fornisce solo una base solida su cui costruire. L'area centrale sarà riservata per l'elettronica, l'alimentatore e per consegnare la catena, quindi assicurati di disporre di spazio sufficiente per posizionare almeno l'involucro del progetto con alcuni ganci che lo circondano.
Step 3: Strato su polistirene
Questo è il passo più difficile e creativo, ma in realtà stiamo creando qualcosa di solido e un po ' simile a una nuvola per incollare la striscia LED. Incolla grandi pezzi di polistirene sulla base (e sotto), usando un basso livello di calore sulla tua pistola per colla. Se non si dispone di un'impostazione bassa, spegnere la pistola termica e lasciarla raffreddare un po 'prima di tentare di incollare. Se la temperatura è troppo alta, semplicemente ti scioglierai nel materiale di imballaggio.
Assicurati che ogni pezzo sia solido prima di incollare il successivo, ed è meglio attaccare più che non abbastanza.
Ancora una volta, ricorda di lasciare una cavità abbastanza grande all'interno della nuvola per adattarla all'elettronica, alla catena e ai ganci.
Passaggio 4: intagliare una forma di nuvola 3D
Usa un coltello da intaglio per ravvivare la tua nuvola arrotondando gli angoli e tagliando via il materiale non necessario, fino a quando non avrai raggiunto una forma tridimensionale della nuvola 3D. Non importa quanto sia difficile da quando copriremo tutto in seguito - puoi facilmente nascondere gli errori.
Passaggio 5: aggiustare i ganci, riordinare
Infine, fissa tre o quattro ganci alla base di MDF, dall'interno di ogni angolo della cavità della nuvola. Avrai bisogno di praticare un piccolo foro pilota poiché è difficile avvitare direttamente l'MDF.
Ho anche dato un semplice strato di vernice spray bianca per garantire una base di colore uniforme, ma non sono sicuro che fosse effettivamente necessario.
Passaggio 6: strisce di colla a LED
Prima di iniziare ad applicare la colla ai LED, o iniziare da una nuova striscia o contare quanti LED hai in totale, dovrai calcolare quanti ne hai usati in seguito nella fase di programmazione. Taglia un piccolo foro sul lato della tua nuvola e infila i fili che compongono l'inizio della striscia LED nella cavità della nuvola. Fai molta attenzione a iniziare dalla fine corretta: le strisce LED sono sensibili alla direzione, quindi assicurati che le frecce del segnale puntino lontano dalla cavità.
Lavorando lentamente, attaccare i pixel LED alla base di polistirolo in un motivo circolare, prima di tirare la striscia verso il basso fino alla base per coprire la parte inferiore. Ancora una volta - non è necessario essere perfetti qui, perché una volta che abbiamo diffuso tutto e soffocato con ripieno, tutto sembra piuttosto sorprendente comunque.
Ho usato un totale di 85 LED, o poco più di 2, 5 m, avendo circondato il corpo principale due volte e utilizzato una singola stringa di LED sul lato inferiore.
Passaggio 7: schema di cablaggio
Il cablaggio è complesso, ma facilmente suddiviso in sezioni.
Innanzitutto, collegare l'alimentatore e fissarlo, preferibilmente in un caso di progetto separato. Non ho intenzione di darti lezioni sulla sicurezza dei cavi AC live, quindi presumo che tu possa gestire questa parte e che tu abbia una linea 5V e GND.
IMPORTANTE : durante la programmazione e il test di Arduino, il 5V dal tuo alimentatore dovrebbe rimanere isolato da Arduino (i GND sono tutti collegati, però) - dovrebbe solo alimentare la striscia LED, mentre Arduino usa il 5V in dotazione via USB. Una volta terminata la programmazione, l'USB dovrebbe essere scollegato e non fornirà più 5V all'Arduino: a questo punto, dovresti connettere il 5V dall'alimentatore alla guida 5V sul lato sinistro della breadboard.
Inizia collegando il terreno e i pin da 5 V da ciascun Arduino alle guide laterali sinistra della breadboard. Condivideranno la stessa fonte di energia, sia che si tratti di un alimentatore esterno che di una presa USB inserita in uno di essi.
Quindi, completa la sezione di cablaggio I2C: questo è ciò che consente ai nostri due Arduino di comunicare. Prendi i pin A4 di entrambi gli Arduino su una singola riga sulla breadboard, quindi collega un resistore da 2.2k da quella riga a 5V rail. Ripetere l'operazione per A5, collegandoli su una riga separata, con un'altra resistenza da 2.2k a 5V.
Collega il ricevitore IR successivo - controlla la configurazione dei pin se hai un altro modello, ma fondamentalmente il pin del segnale dovrebbe andare su D11 su un Arduino. Carica lo schizzo thundercloud_ir_receiver.ino su questo Arduino (tutto il codice qui), quindi scollega l'USB poiché non ne abbiamo più bisogno.
Sull'altro Arduino, collegare il pin del segnale Data In dall'inizio della striscia LED a D6. Il GND dei tuoi LED dovrebbe essere comune a tutti gli Arduino, ma a questo punto il 5V arriverà direttamente dal PSU.
Anche su questo Arduino, collega il modulo microfono a A0. Carica l'altro schizzo di thundercloud.ino e mantieni la USB inserita per il momento mentre esegui il debug. Inizia cambiando opportunamente la variabile NUM_LEDS .
Step 8: Colla sul ripieno
Come ultimo passo, incolla il tuo ripieno. Non c'è una tecnica particolare qui - basta spruzzare la nuvola con uno strato di colla e afferrare una manciata di ripieno. È più facile lavorare con il ripieno se lo hai già stuzzicato per aumentare la superficie, però.
Se hai usato lo stesso telecomando come ho fatto io, il pulsante STROBE lo mette in modalità cloud reattiva sana; FLASH è la modalità a colori vivaci e FADE è la lampada a colori a lenta illuminazione.
Passaggio 9: spiegazione del codice
Perché due Arduino? Sia la programmazione del ricevitore a infrarossi che la libreria di driver di pixel WS2818B sono molto sensibili ai tempi: se il tempo è ritardato, il segnale IR è corrotto. Dando a ciascun circuito il proprio microcontroller e permettendo loro di parlare del protocollo I2C, possiamo garantire che il timing sia perfetto su ciascuno di essi. È anche possibile trovare moduli IR separati con il proprio microcontrollore integrato, ma la mia ricerca ha rilevato che in realtà costano più di un semplice clone Arduino e LED IR. Il thundercloud_ir_receiever non dovrebbe richiedere spiegazioni, anche se potresti voler leggere prima le basi I2C.
Sul controller principale di nubi temporalesche, definiamo diverse modalità operative, come ON (gli effetti luminosi non sono attivati dal suono), CLOUD (il lampo è attivato solo dal suono), ACID (la nuvola mostra colori tricolori) o semplici modalità a singolo colore. Per definire una nuova modalità, prima aggiungi all'enum, quindi apri la console e trova un pulsante di controllo remoto per mapparlo: ogni stampante remota dovrebbe stampare una riga di debug. Nel metodo receiveEvent (), mappiamo tali tasti su una modalità, quindi aggiungiamo un'istruzione switch aggiuntiva lì. Infine, nel metodo main loop () instradiamo queste selezioni di modalità a diverse funzioni di visualizzazione.
Il codice di smoothing del microfono è originariamente di Adafruit: l'ho semplificato per le nostre esigenze e aggiunto un trigger quando si sente un rumore più forte della media.
Passaggio 10: Modalità fulmine
I display dei fulmini combinano tre diversi "tipi" di lampo per ottenere qualcosa di sufficientemente realistico, o almeno piacevole alla vista. Il primo tipo è crack (), in cui ogni LED viene brevemente acceso per 10-100 ms. Il secondo tipo è a rotazione () - dove ogni LED ha una probabilità del 10% di attivazione e l'intero ciclo viene ripetuto 2-10 volte, con un ritardo di 5-100 ms tra ciascun ciclo. Il terzo tipo è thunderburst (), che seleziona due sezioni diverse della striscia, ognuna compresa tra 10-20 LED, lampeggia brevemente queste sezioni da 3-6 volte. Esaminare questi metodi in dettaglio per vedere come vengono attivati i singoli LED - la ruota dei colori HSV viene utilizzata in tutto (quindi il bianco è H = 0, S = 0, V = 255). Ti incoraggerei a modificare o scrivere nuovi display di illuminazione, quindi condividerli nei commenti se ne crei uno che ti piace.
Ogni volta che viene attivato un fulmine o viene eseguito il ciclo, la nuvola sceglie casualmente tra i tre tipi di fulmine. Infine, un metodo reset () spegne tutte le luci, altrimenti "ricorderanno" il loro stato precedente.
Domande o problemi - per favore mettiti in contatto con i commenti e farò del mio meglio per aiutarti. Se hai un account Github, sentiti libero di inviare bug o problemi al tracker dei problemi. Se hai apportato delle modifiche o hai scritto alcune nuove funzioni di illuminazione, condividi un link al tuo codice su Gist o Pastebin.