Progetto di un sistema di comunicazione audio wireless a luce visibile basato su ESP32 – Parte 1

progetti

In questo articolo presentiamo la prima parte del progetto di un sistema di comunicazione audio wireless a luce visibile basato sul microcontrollore ESP32 e sull’impiego di un diodo LED bianco ad alta luminosità. Lo scopo di questo progetto/tutorial, oltre che didattico e dimostrativo, è di proporre una soluzione semplice e a basso costo per la realizzazione di un sistema per trasmettere in modalità wireless ottica segnali audio e nel contempo illuminare la zona di ricezione.

Introduzione

I dispositivi di illuminazione a LED (diodi a emissione di luce) possono essere riqualificati e utilizzati non solo per l'illuminazione, ma anche per inviare in modalità wireless dati audio agli utenti. Per realizzare un'illuminazione stabile e comunicazioni di qualità, vengono utilizzati LED bianchi ad alta luminosità con lunghezze d'onda nello spettro della luce visibile, ovvero, per l’illuminazione ambientale e, contemporaneamente, per la trasmissione di dati, nel nostro caso di segnali audio. La luce emessa dai LED per la comunicazione audio è modulata dal metodo PWM (Pulse Width Modulation) per trasportare il segnale contenente l’informazione audio originale. Il terminale ricevente è un dispositivo con fotodiodo che può convertire (demodulare) direttamente la luce in suono. Utilizzando il LED ad emissione di luce bianca visibile, le informazioni audio ottiche possono essere ottenute in tempo reale in qualsiasi area illuminata tramite il terminale wireless ricevente. Il sistema di comunicazione audio wireless a luce visibile si basa sulla trasmissione e ricezione di flussi luminosi, pertanto riteniamo utile riportare alcuni concetti di base di fotometria. L’unità di misura “cd“ (candela) nel Sistema di Misura Internazionale equivale all’intensità luminosa di una sorgente isotropica (la radiazione luminosa emessa è omnidirezionale o sferica) e monocromatica di lunghezza d’onda di 540 nanometri corrispondente all’emissione di luce bianca. Lo Standard Ansi (American National Standards Institute) usa invece come unità di misura dell'intensità luminosa il lumen. Candela e lumen sono tra loro in relazione. Il cono all’interno della sfera mostrata in Figura 1, con vertice al centro della sfera, origine della sorgente di intensità luminosa di 1 candela, e una lunghezza pari al raggio della sfera, descrive una porzione della superficie esterna della sfera, ovvero una calotta di area r2 , pari a quella di un quadrato di lato r. L’angolo solido che descrive questo cono è definito STERADIANTE (Figura 1).

Steradiante

Figura 1: Uno Steradiante

Essendo l’area della sfera pari a 4π r2, l’angolo solido che descrive la sfera sarà quindi 4π sr, analogamente al noto angolo bidimensionale 2π che descrive la circonferenza 2πr. La porzione di luce che attraversa e che emette il cono è il lumen, per cui, se la candela è luce diffusa nella sfera in 4π sr, una candela vale 4π lumen, cioè 12,56 lumen. Il lumen (lm) si definisce come l’unità di misura del flusso luminoso. Un’altra unità di misura da considerare è il lux, da non confondere con il lumen; mentre il lumen esprime la quantità di luce emessa nello spazio, il lux misura l’illuminamento o densità di luce, ovvero la quantità di luce che colpisce una determinata superficie, quindi i lumen emessi su di un’area ben definita. Il lux nel Sistema Internazionale (lx) è l’unità di misura dell’illuminamento corrispondente ad un lumen per metro quadrato, dimensionalmente lx = (cd * sr) /m2, ovvero lx = lm / m2.
Tanto per avere un’idea, la luce del Sole varia tra i 32.000 lx e i 100.000 lx, in un ufficio luminoso si ha una luminosità di circa 400 lx, la luce della Luna è di 1 lx circa.

Il progetto

Il sistema di comunicazione audio wireless a luce visibile presentato in questo articolo è composto da un trasmettitore basato sul microcontrollore ESP32 e da un ricevitore. Nel progetto viene utilizzata la scheda di sviluppo ESP32-DevkitC V4 di AZ-Delivery che integra il modulo ESP-WROOM-32D della Espressif Systems. Il trasmettitore è costituito da un circuito di amplificazione del segnale audio, una scheda di sviluppo ESP32-DevkitC V4, un driver di pilotaggio del led e un LED bianco. All’ingresso di una delle sue porte analogiche programmata per la conversione A/D viene applicato un segnale audio analogico che, convertito in forma numerica, modula la larghezza dell’impulso del segnale PWM rispetto al suo periodo, ovvero varia il duty cycle del segnale PWM emesso da una delle uscite digitali dell’ESP32. Il segnale PWM con il duty cycle modulato dall’ampiezza del segnale audio viene poi applicato al driver del LED che trasmetterà i flussi luminosi modulati contenenti l’informazione audio. Uno dei vantaggi dell’impiego dell’ESP32 è che dispone di una periferica di controllo dei led, la LEDC, che consente di utilizzare fino a 16 canali PWM associabili a qualsiasi pin GPIO per generare il segnale PWM per regolare l’intensità luminosa dei led. Il ricevitore è costituito da un fotodiodo di ricezione del flusso luminoso, doppio amplificatore operazionale a transimpedenza, filtro passa basso (LPF) e stadio di uscita di amplificazione audio. Il fotodiodo capta e converte in corrente elettrica (fotocorrente) il flusso luminoso modulato PWM che viene poi amplificato dall’amplificatore a transimpedenza a basso rumore. Il segnale amplificato viene applicato al demodulatore AM/PWM realizzato con un filtro passa-basso a 7 poli che estrae l’informazione audio tagliando tutte le frequenze al di fuori della banda audio prevista, infine, il segnale viene inviato ad un amplificatore BF e da questo reso disponibile all’ascolto mediante cuffie o altoparlante esterno.

Componenti del progetto

Il LED bianco LL1516HCWW1-151

Il LED ad alta luminosità LL1516HCWW1-151 della Ledman Optoelectronic utilizzato nel trasmettitore ha il corpo lampada trasparente da 5 mm ed emette luce bianca con un angolo di radiazione di ±15°. La tensione diretta tipica VF = 3,2 V è la tensione ai capi del led polarizzato direttamente con corrente diretta IF di 20 mA, come possiamo vedere dal grafico di Figura 2 estratto dal datasheet del led.

LED

Figura 2: Corrente diretta in funzione della tensione diretta

Dal grafico di Figura 3 osserviamo anche che l’intensità luminosa aumenta all’aumentare della corrente diretta.

LED

Figura 3: Intensità luminosa relativa in funzione della corrente diretta

Ci chiederemmo allora perché non polarizzare il led con correnti superiori a 20 mA per ottenere un’intensità luminosa più elevata. La risposta è nel grafico della Figura 4.

LED

Figura 4: Massima corrente diretta in funzione della temperatura ambiente

Infatti, come si rileva dal grafico di Figura 4, il limite massimo consentito della corrente diretta (continua) è 30 mA da 0° a 25° della temperatura ambiente, quindi si sceglie una corrente operativa di 20 mA che consente un’escursione termica ambientale fino a 45°. L’intensità luminosa IV = 18 cd è la massima intensità emessa dal led alla lunghezza d’onda di 470 nm riferita ad un angolo di radiazione di 0°, come si nota dal grafico di Figura 5. Il grafico rappresenta l’andamento percentuale dell’intensità luminosa in funzione della lunghezza d’onda del flusso luminoso emesso dal led. Come si nota, il valore di picco è in corrispondenza della lunghezza d’onda di 470 nm.

LED

Figura 5: Intensità luminosa in funzione della lunghezza d’onda

La lunghezza d’onda del flusso luminoso è λ = c / f (c è la velocità della luce 300.000 Km/s, f è la frequenza di radiazione elettromagnetica prodotta dall’energia di polarizzazione del led). Misurata al 50% dell’intensità luminosa, la lunghezza d’onda varia da 450 nm a 600 nm. L’angolo di irradiazione è di 15°al 50% della potenza luminosa emessa, come si vede dal grafico di Figura 6.

LED

Figura 6: Intensità luminosa relativa in funzione dell’angolo di radiazione

Il fotodiodo SFH203

Il fotodiodo SFH203 della Osram viene impiegato nel ricevitore quale elemento foto ricettivo del segnale luminoso emesso dal led del trasmettitore. Il fotodiodo svolge la sua funzione di rilevatore di flussi luminosi generando una corrente (foto corrente) quando è polarizzato con una tensione inversa VR il cui tipico valore è -5 Volt applicata all’anodo rispetto al catodo. La fotocorrente Ip emessa dal fotodiodo quando è colpito da un flusso luminoso, varia da 50 a 80 nA/lx. Dal grafico di Figura 7 possiamo notare come la fotocorrente Ip varia linearmente in funzione dell’illuminamento Ev espresso in lux, per una tensione inversa applicata VR = 5 V. Nel grafico è riportato anche l’andamento della tensione Vo ai capi del fotodiodo al variare dell’illuminamento.

LED

Figura 7: Fotocorrente Ip in funzione dell’illuminamento EV

Il grafico di Figura 8 mostra l’andamento della sensibilità relativa del fotodiodo in funzione della lunghezza d’onda.

LED

Figura 8: Sensibilità relativa del fotodiodo in funzione della lunghezza d’onda

Il range della lunghezza d’onda viene misurato rispetto al 10% della sensibilità relativa, quindi in questo caso la S (λ10%) è nel range da 400 a 1100 nm, ed è proprio questo parametro che identifica il campo spettrale di applicazione delle lunghezze d’onda dei fotodiodi. In questo progetto, il fotodiodo SFH203 presenta un andamento della sensibilità spettrale che è in sintonia con il range di lunghezze d’onda del flusso luminoso emesso dal led del trasmettitore. Il parametro di valutazione della sensibilità è la Sensibilità di picco che esprime la corrente generata (in Ampere) per unità di potenza radiante (in Watt) in corrispondenza della lunghezza d’onda per cui la sensibilità è massima. Per il fotodiodo SFH203 questo valore è di 0,62 A/W alla lunghezza d’onda di 850 nm relativa alla massima sensibilità. Altro importante parametro che influisce sulla sensibilità del fotodiodo e ne definisce le caratteristiche direzionali, è l’angolo radiante di ricezione, ovvero l’angolo di captazione del fotodiodo. Dal grafico di Figura 9 vediamo che l’angolo radiante misurato al 50% dell’intensità relativa del fascio luminoso ricevuto è ±20°.

LED

Figura 9: Sensibilità relativa in funzione dell’angolo radiante

E’ da considerare poi la Dark Current o Corrente di Buio IR che è la corrente generata dal fotodiodo polarizzato inversamente in assenza di luce. Come si osserva dal grafico di Figura 10, la corrente di buio è funzione diretta della tensione inversa di polarizzazione VR; nel nostro caso per VR = 5 V ed illuminamento nullo (EV = 0 lx) la corrente inversa IR è di circa 0,3 nA. Potremmo chiederci che fastidio possa darci una corrente così bassa, purtroppo essa contribuisce a far diminuire la sensibilità di detezione in quanto contribuisce ad incrementare il rumore poiché va a sommarsi al rumore termico e al rumore già prodotto dalla fotocorrente stessa.

LED

Figura 10: Dark Current in funzione della tensione inversa

Parametro importante ai fini della velocità di commutazione del fotodiodo, e quindi della frequenza limite del segnale PWM, è la capacità parassita del fotodiodo e il tempo di salita e discesa, o tempo di risposta, del fotodiodo all’applicazione dell’illuminamento con funzione a gradino, ovvero è il tempo che impiega la relativa fotocorrente generata dal fotodiodo ad arrivare dal 10% al 90% del valore massimo dell’impulso luminoso che giunge sull’area sensibile radiante del fotodiodo.

La scheda di sviluppo ESP32-DevkitC V4

La scheda ESP32 DevkitC V4 con modulo ESP-WROOM-32D utilizzata in questo progetto (Figura 11) ha 38 pin, di cui 32 pin sono GPIO e ogni pin ha più funzionalità che possono essere configurate utilizzando registri specifici. Sono disponibili molti tipi di GPIO utilizzabili come ingresso digitale, uscita digitale, ingresso analogico-uscita-digitale (ADC), ingresso digitale–uscita analogica (DAC), touch capacitivo, comunicazione UART e molte altre funzionalità. Il modulo ESP-WROOM-32D contiene un microcontrollore dual-core LX6 Xtensa® a 32 bit.

Scheda di sviluppo ESP32 DevkitC V4

Figura 11: Scheda di sviluppo ESP32 DevkitC V4

Nella tabella di Figura 12, estratta dal datasheet del modulo ESP32 WROOM 32, viene riportato l’elenco dei 28 pin GPIO con la descrizione delle funzionalità di ognuno. Si consideri che la numerazione riportata nella seconda colonna da sinistra della tabella si riferisce alla numerazione dei pin del modulo ESP32 WROOM 32D interno alla scheda di sviluppo ESP32 e non a quest’ultima i cui riferimenti (IO) dei pin sono indicati nella prima colonna. Nell’elenco, i 6 pin con asterisco: SCK/CLK, SDO/SD0, SDI/SD1, SHD/SD2, SWP/SD3 e SCS/CMD, ovvero da GPIO6 a GPIO11, sono collegati alla flash SPI integrata nel modulo e non è consigliabile utilizzarli per altre funzioni.

ESP32

Figura 12: Elenco dei pin con le relative funzioni dell’ESP32

Esistono molte versioni di scheda di sviluppo ESP32 disponibili sul mercato. La scheda di sviluppo ESP32 DevkitC V4 della Espressif utilizzata in questo progetto è basata sul modulo ESP-WROOM-32D. Tuttavia, la funzionalità di tutti i pin GPIO è la stessa in tutte le schede di sviluppo ESP32. Per fare chiarezza su come utilizzare i pin GPIO, quale pin GPIO può essere utilizzato come pin di ingresso-uscita digitale, quale pin GPIO può essere utilizzato come pin analogico o digitale, quale pin non dovrebbe essere usato per sicurezza, riteniamo utile esaminare nei dettagli i pin GPIO. Nella Figura 13 è mostrata la posizione e la rispettiva funzione dei pin della scheda di sviluppo. Il colore di ogni pin indica la sua funzione, come descritto nell’elenco sotto l’immagine della scheda.

Pin della scheda di sviluppo ESP32 DevkitC V4

Figura 13: Pin della scheda di sviluppo ESP32 DevkitC V4

Configurazioni dei pin dell’ESP32

Il modulo ESP32 WROOM 32D integrato nella scheda ESP32 ha 48 pin, ma non tutti i pin sono accessibili dalle schede di sviluppo ESP32. Come già sopra detto, la scheda ESP32 DevkitC ha 38 pin, 19 su ciascun lato della scheda, come mostrato nell'immagine di Figura 13. Ha 32 pin GPIO e ognuno ha più funzionalità che possono essere configurate utilizzando registri specifici. Sono disponibili molti tipi di GPIO utilizzabili come ingresso digitale, uscita digitale, ingresso analogico (ADC), uscita analogica (DAC), touch capacitivo, per la comunicazione seriale (UART, SPI, I2C, ecc.) e molte altre funzionalità di seguito elencate.

Pin GPIO esclusivamente ingressi digitali

I seguenti pin GPIO possono essere utilizzati unicamente come ingressi digitali:

GPIO 34
GPIO 35
GPIO 36
GPIO 39

Stato dei pin GPIO

Tutti i pin GPIO all'avvio o al ripristino iniziale si trovano nello stato basso (LOW) attivo tranne i pin seguenti:

GPIO1
GPIO3
GPIO5
GPIO6 fino a GPIO11
GPIO14
GPIO15

Questi pin saranno nello stato attivo alto (HIGH) per impostazione predefinita durante l'avvio o il ripristino. Pertanto, se è desiderato impostarli al livello basso all’avvio è necessario inizializzare questi pin allo stato basso attivo nella funzione di configurazione del codice.

Pin GPIO vincolati

Alcuni pin GPIO vengono utilizzati per configurare il bootloader o la modalità di flashing dell’ESP32 per il caricamento del codice dell'applicazione:

GPIO0 (deve essere LOW durante il flashing)
GPIO2
GPIO4
GPIO5 (deve essere HIGH durante il boot)
GPIO12 (deve essere LOW durante il boot)
GPIO15 (deve essere HIGH durante il boot)

I pin GPIO analogici convertitori Analogico-Digitale (ADC)

Questa scheda di sviluppo supporta 18 canali ADC e ogni canale ha una risoluzione di 12 bit di default. Può essere utilizzato per misurare la tensione analogica, la corrente e qualsiasi forma di tensione analogica fornita da un sensore. Ad esempio, considerando una tensione di riferimento di 3,3V, con una risoluzione di 12 bit si ha una tensione minima (o step minimo dell'ADC) pari a 3,3 V / 4095 = 80 microvolt circa. Questi ADC possono essere utilizzati anche in modalità sleep per ridurre il consumo energetico. La mappatura dei pin analogici con i pin GPIO è elencata di seguito:

ADC1_CH0 - GPIO36
ADC1_CH1 - GPIO37
ADC1_CH2 - GPIO38
ADC1_CH3 - GPIO39
ADC1_CH4 - GPIO32
ADC1_CH5 - GPIO33
ADC1_CH6 - GPIO34
ADC1_CH7 - GPIO35
ADC2_CH0 - GPIO4
ADC2_CH1 - GPIO0
ADC2_CH2 - GPIO2
ADC2_CH3 - GPIO15
ADC2_CH4 - GPIO13
ADC2_CH5 - GPIO12
ADC2_CH6 - GPIO14
ADC2_CH7 - GPIO27
ADC2_CH8 - GPIO25
ADC2_CH9 - GPIO26

Nota: I pin ADC2 non possono essere utilizzati quando si utilizza la periferica Wi-Fi, altrimenti si potrebbero verificare problemi.

Pin GPIO convertitori digitale-analogico (DAC)

Questa scheda di sviluppo ha due DAC integrati a 8 bit di seguito elencati. I DAC vengono utilizzati per convertire i segnali digitali in segnali analogici. I DAC possono essere utilizzati in applicazioni come il controllo della tensione e il controllo PWM:

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3444 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend