Sommario:

Luce ambientale interattiva: 8 passaggi
Luce ambientale interattiva: 8 passaggi

Video: Luce ambientale interattiva: 8 passaggi

Video: Luce ambientale interattiva: 8 passaggi
Video: Installazione Luci Ambiente (Mk5 Build Series Ep 2) | '06 Mk5 (Mods & Tutorial) 2024, Dicembre
Anonim
Luce ambientale interattiva
Luce ambientale interattiva
Luce ambientale interattiva
Luce ambientale interattiva
Luce ambientale interattiva
Luce ambientale interattiva

Questo è il mio primo istruibile! Per favore, abbi pazienza mentre faccio fatica a scrivere un inglese corretto. Sentiti libero di correggermi! Ho iniziato questo progetto subito dopo l'inizio del concorso "Let it glow". Vorrei aver fatto molto di più e finito quello che volevo fare. Ma tra la scuola e il lavoro, non ho avuto tutto il tempo che avrei voluto. Tuttavia, lascio qui un resoconto dei miei esperimenti come istruibile, così chiunque può provare a fare ciò che ho fatto. Questo istruibile non ha lo scopo di fungere da guida e insegnare come realizzare questo aggeggio. Non è una guida per i principianti in elettronica. È più come condividere un'idea e un obiettivo che desidero perseguire. Se sei un principiante/assoluto ignorante in elettronica e desideri fare qualcosa del genere, mi dispiace! Ma possiamo provare ad aiutarti sempre. Vedi l'ultimo passaggio. Abbiamo già visto molti progetti di luce ambientale. La maggior parte di essi utilizza LED RGB: - Per illuminare una stanza con un colore, creando un'atmosfera che si adatti al tuo stato d'animo - Per creare effetti di luce dal colore di TV/Monitor o dall'audio. Ce ne sono anche alcuni in instructables.com Relazionato:Sistemi di luce ambientale fai-da-teLight Bar Illuminazione ambientaleCostruisci le tue barre di illuminazione a colori ambientali Usando questa competizione come scusa, ho iniziato un progetto che avevo in mente da un po'. Ho sempre voluto creare qualcosa di simile a queste luci ambientali e riempire le pareti della mia stanza con LED RGB. Ma, facendo un ulteriore passo avanti, rendendo tutti e ciascuno di loro controllabili. Si spera che questo progetto si traduca in un kit di elettronica open source per hobbisti e appassionati di elettronica, consentendo l'hacking hardware/software e l'integrazione sensoriale. Ecco una piccola anticipazione di quello che ho realizzato:

Passaggio 1: esplorare l'idea

Voglio essere in grado di riempire le pareti della mia stanza con LED RGB, controllando il colore e la luminosità per ogni led. Utilizzerò un microcontrollore per la facilità d'uso e la flessibilità fornita. Sfortunatamente non posso controllare centinaia di LED con i pochi pin disponibili sui microcontrollori. Sarebbe persino difficile codificare il controllo di così tanti LED. Così ho deciso che avrei dovuto dividere tutti i LED in diverse barre più piccole e per ogni barra avrei potuto utilizzare un microcontrollore. Quindi userei le capacità di comunicazione dei microcontrollori per condividere informazioni tra loro. Queste informazioni potrebbero essere il colore e la luminosità dei LED, i modelli/sequenze di colori e le informazioni sensoriali. Per ogni barra ho deciso di utilizzare 16 LED RGB. Ciò si traduce in una barra né troppo grande né piccola. In questo modo utilizzo un numero accettabile di risorse per ogni led, riducendo i costi per ogni barra. Tuttavia, 16 LED RGB sono 48 LED (3*16=48) per il controllo del microcontrollore. Tenendo conto dei costi, ho deciso di utilizzare il microcontrollore più economico che potessi usare. Ciò significa che il microcontrollore avrà solo fino a 20 pin I/O, non abbastanza per 48 LED. Non desidero utilizzare charlieplexing o una sorta di unità di divisione del tempo, poiché l'obiettivo del progetto è illuminare una stanza. L'unico un'alternativa a cui potrei pensare è usare una sorta di registro a scorrimento bloccato! Riprendendo: - Crea una luce ambientale interattiva- Crea una barra standard di LED controllabili- Possibilità di collegare più barre per riempire una stanza- Consenti l'adattamento/configurazione dell'utente e l'integrazione sensoriale

Passaggio 2: hardware

Hardware
Hardware
Hardware
Hardware

Come detto nel passaggio precedente, desidero creare diverse barre per illuminare una stanza. Questo fa venire in mente il problema dei costi. Cercherò di rendere ogni barra il modo più conveniente possibile. Il microcontrollore che ho usato era un AVR ATtiny2313. Questi sono piuttosto economici e ne avevo alcuni in giro. ATtiny2313 ha anche un'interfaccia seriale universale e un'interfaccia USART che verranno utilizzate nei passaggi seguenti. Avevo anche tre MCP23016 - Espansori di porte I/O I2C a 16 bit in giro, il conteggio giusto! Ho usato ogni port expander per controllare un colore dei 16 LED. I LED… Sfortunatamente, erano i più economici che ho trovato. Sono 48 rossi, verdi e blu ~10000mcd 5mm con un angolo di 20 gradi. Questo non dovrebbe importare per ora, dal momento che questo è solo un prototipo. Nonostante questo, il risultato è molto carino! Sto eseguendo il microcontrollore a 8 MHz. Il bus I2C ha un clock a 400 kHz. La frequenza di commutazione del LED è di circa 400 Hz. In questo modo, se sono in grado di pilotare 48 LED senza spingerli al limite, ne avrò altri in seguito!

Passaggio 3: assemblaggio

Assemblea
Assemblea
Assemblea
Assemblea
Assemblea
Assemblea
Assemblea
Assemblea

Dopo aver progettato il circuito, l'ho costruito in diverse breadboard, per scopi di prototipazione. Dopo diverse ore di taglio dei cavi e assemblaggio del circuito, ho ottenuto questo risultato: una breadboard gigante con 48 LED e tonnellate di cavi!

Passaggio 4: controllo?

Controllo?
Controllo?

Questa è la parte più impegnativa del progetto. Volevo creare un algoritmo di controllo abbastanza generico per gestire pattern/sequenze e controllare anche la luminosità e il colore di ciascun LED. Per controllare i LED devo inviare all'MCP23016 un frame di 4 byte (1 byte = 8 bit). Un byte con l'indirizzo dell'IC corrispondente al colore, 1 byte con il comando "scrivi" e 2 byte con il valore dei 16 bit (LED). L'IC è collegato ai LED come "sink", il che significa che un valore logico 0 al pin accenderà il LED. E ora la parte difficile, come rendere il controllo PWM per 48 LED? Studiamo il PWM per un LED! PWM spiegato @ Wikipedia. Se voglio la luminosità del LED al 50%, il mio valore PWM è 50%. Ciò significa che il LED, in un periodo di tempo, dovrebbe essere acceso per la stessa quantità di tempo che è spento. Prendiamo un periodo di 1 secondo. PWM del 50% significa che in questo 1 secondo, il tempo di accensione è di 0,5 secondi e il tempo di spegnimento è di 0,5 secondi. PWM dell'80%? 0,2 secondi spento, 0,8 secondi acceso! Facile, vero? Nel mondo digitale: con un periodo di 10 cicli di clock, 50% significa che per 5 cicli il LED è acceso e per altri 5 cicli il LED è spento. 20%? 2 cicli accesi, 8 cicli spenti. 45%? Bene, non possiamo davvero ottenere il 45% … Poiché il periodo è in cicli e abbiamo solo 10 cicli, possiamo dividere il PWM solo in passi del 10%. Ciò significa che l'evoluzione del pin dovrebbe essere, per il 50%: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; O anche 1, 0, 1, 0, 1, 0, 1, 0, 1, 0; Nella programmazione possiamo fare questa sequenza di attivazione e disattivazione di un array. Per ogni ciclo emettiamo sul pin il valore dell'indice in cui è il ciclo. Ho avuto senso finora? Se vogliamo rendere LED0 50% e LED1 20%, possiamo aggiungere entrambi gli array. Per pilotare il pin LED0: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; per pilotare il pin LED1: 2, 2, 0, 0, 0, 0, 0, 0, 0, 0; risultante in LED0 +LED0: 3, 3, 1, 1, 1, 0, 0, 0, 0, 0;Emettendo questa sequenza di numeri nel port expander IC, otterremmo il LED0 con il 50% di luminosità e il LED1 con il 20%!! Semplice per 2 LED, giusto? Ora dobbiamo farlo per 16 LED, per ogni colore! Per ognuno di questi array, abbiamo una combinazione di luminosità per ogni colore (16 LED) Ogni volta che vogliamo un'altra combinazione di colori, dobbiamo cambiare questo array.

Passaggio 5: semplificare le cose

Renderlo facile!
Renderlo facile!
Renderlo facile!
Renderlo facile!

Il passaggio precedente è troppo laborioso per creare una sequenza semplice… Così ho deciso di creare un programma, in cui indichiamo i colori di ciascun LED in un passaggio della sequenza e otteniamo i tre array del passaggio. Ho realizzato questo programma in LabView per motivi di tempo.

Passaggio 6: primi esperimenti

Primi esperimenti
Primi esperimenti

Caricando diversi passaggi nel microcontrollore otteniamo qualcosa del genere: Scusa per la scarsa qualità dei video! Ho definito il numero massimo di passaggi di una sequenza a 8 e ho limitato il PWM al 20% di salti. Questa decisione si basa sul tipo di controllo che sto usando e quanta EEPROM ha l'ATtiny2313. In questi esperimenti ho cercato di vedere che tipo di effetti potevo ottenere. Devo dire che sono soddisfatto del risultato!

Passaggio 7: controllo in tempo reale

Controllo in tempo reale
Controllo in tempo reale
Controllo in tempo reale
Controllo in tempo reale
Controllo in tempo reale
Controllo in tempo reale

Come accennato nei passaggi precedenti, desidero comunicare con tutti i microcontrollori che controllano i LED nella mia stanza. Quindi ho usato l'interfaccia USART disponibile in ATtiny2313 e l'ho collegata al mio computer. Ho anche realizzato un programma in LabView per controllare la barra LED. In questo programma sono in grado di dire al microcontrollore quanto è lunga la sequenza, il colore di ciascun LED e il tempo tra i passaggi di una sequenza. Nel prossimo video dimostrare come posso cambiare il colore dei LED e definire le sequenze.

Passaggio 8: Conclusioni

Conclusioni
Conclusioni
Conclusioni
Conclusioni
Conclusioni
Conclusioni
Conclusioni
Conclusioni

Penso di aver avuto successo in questo primo approccio del mio progetto. Sono in grado di controllare 16 LED RGB con poche risorse e vincoli. È possibile controllare ogni LED separatamente, creando qualsiasi sequenza desiderata.

Lavoro futuro:

Se ricevo feedback positivi dalle persone, posso sviluppare ulteriormente questa idea e realizzare un kit completo di elettronica fai-da-te, con circuiti stampati e istruzioni di montaggio.

Per la mia prossima versione: -Cambierò il microcontrollore con uno con ADC -Cambierò l'MCP23016 con qualche altro tipo di uscita parallela seriale in grado di assorbire più corrente dai LED -Creare un software open source per comunicare con il microcontrollore e controllare i LED -Sviluppare la comunicazione tra più microcontrollori.

Hai qualche suggerimento o domanda? Oppure lascia un commento!

Finalista nel Let It Glow!

Consigliato: