ENCICLOPEDIA DELLA RADIOELETTRONICA ED ELETTRICA Lettore audio per i formati MP3 e Opus. Enciclopedia dell'elettronica radio e dell'ingegneria elettrica Enciclopedia della radioelettronica e dell'elettrotecnica / Audio Questo articolo descrive un lettore portatile fatto in casa per file musicali di formati comuni da una scheda di memoria microSD. È assemblato su un microcontrollore STM32F407VGT6 in un alloggiamento di un telefono cellulare NOKIA 1100. Lo schema del giocatore è mostrato in Fig. 1. Sfrutta al massimo i componenti elettronici disponibili sulla scheda di sviluppo STM32F4DISCOVERY, tra cui il microcontrollore STM32F407VGT6 (DD1), i regolatori di tensione integrati LD3985M25R (DA1) e LD3985M33R (DA3), il codec CS43L22 (DD2), nonché i necessari componenti passivi. Dal cellulare NOKIA 1100, oltre alla custodia e alla batteria, un connettore per il collegamento delle cuffie XS3, un pannello frontale con LCD HG1, membrane per i pulsanti SB1-SB17 formate da contatti concentrici su un circuito stampato e un connettore per collegare una batteria G1 sono stati utilizzati. Inoltre, la scheda del lettore contiene un supporto per una scheda di memoria microSD TFC-WPCE-08 (XS1), un gruppo di contatti per il collegamento del programmatore Xp1 e un connettore miniUSB-B 5075BMR-05-SM (XS2).
I gruppi di diodi VD1, VD4, VD5, VD6 vengono utilizzati per proteggere i circuiti collegati ai connettori XS2 e XS3 dalle scariche elettrostatiche. I restanti connettori si trovano all'interno del vano batterie e non necessitano di protezione. Il chip (DA2) è un controller di carica per la batteria agli ioni di litio G1 con una tensione massima di 4,2 V. Il resistore R9 riduce la caduta di tensione su questo chip durante la ricarica, provocandone il riscaldamento. Il resistore R10 imposta la corrente di carica massima Isal.max secondo la formula Iper ap.max = 1000/R10. Con la resistenza R10 specificata in kiloohm, il valore della corrente di carica si ottiene in milliampere. Si consiglia di caricare una batteria agli ioni di litio con una corrente non superiore a 1C, dove C è la capacità della batteria. La capacità della batteria BL-5C utilizzata è di circa 1000 mAh, la corrente di carica massima consentita per il chip LTC4054ES5-4.2 è di 800 mA. Poiché la ricarica avviene tramite il bus USB, è necessario tenere conto anche della sua capacità di carico (500 mA). Pertanto, il valore consigliato per R10 è 2 kOhm. Inoltre, misurando la tensione su R10, è possibile determinare il valore attuale della corrente di carica della batteria utilizzando la formula Icarica= 1000 UR10/R10 (corrente - in milliampere, tensione - in volt, resistenza - in kiloohm). Quando il connettore XS2 è collegato al bus USB, il transistor ad effetto di campo VT1 scollega la batteria G1 dal circuito di alimentazione del lettore. Una tensione di 5 V dal pin 1 del connettore XS2 apre il transistor VT5, la tensione al gate del transistor VT3 diventa negativa rispetto alla sua sorgente. Il transistor VT3 si apre, accendendo il lettore. Quando non c'è tensione sul pin 1 del connettore XS2, il potenziale di gate del transistor VT3 è vicino al potenziale della sua sorgente e il transistor è chiuso. Premendo il pulsante SB1 si apre anche il transistor VT3, il microcontrollore inizia a funzionare e controlla lo stato di questo pulsante ogni 10 ms. Se viene tenuto premuto per più di 2 s, il microcontrollore imposterà il livello di tensione alto alla base del transistor VT2, aprendolo e mantenendo aperto il transistor VT3. Successivamente, il lettore entra in condizioni di lavoro e il pulsante può essere rilasciato. Spegnere il lettore tenendo nuovamente premuto il pulsante SB1. Dopo l'accensione, il microcontrollore inizializza il display LCD HG1 e la scheda microSD inserita nel supporto XS1, verifica la presenza del file di configurazione player.ini nella directory principale della scheda (sono supportati i file system FAT12, FAT16, FAT32). Questo è un normale file ini, che è un insieme di righe di valori-chiave. Memorizza le informazioni sul file audio selezionato per la riproduzione nel momento in cui il lettore è stato precedentemente spento, la sua posizione al suo interno e il volume impostato. Il programma tenta di ripristinare questo stato. In caso di guasto (ad esempio se la scheda è stata sostituita), viene cercato il primo file audio presente sulla scheda (con estensione del nome .mp3 o .opus). La ricerca inizia dalla directory root, i file vengono visualizzati nell'ordine in cui sono elencati nella tabella di allocazione dei file disponibile sulla mappa. Durante la riproduzione viene periodicamente chiamata la funzione MainThread del decoder corrente che, secondo necessità, esegue la lettura dalla scheda (ogni codec è responsabile del buffering, poiché i formati contenitore per i pacchetti audio sono diversi per .opus e .mp3) e decodifica. La necessità di eseguire queste operazioni è determinata dalla pienezza del buffer ciclico AudioBuffer, da cui il codec audio legge le informazioni in modo asincrono. Una volta completata la decodifica del file audio corrente, viene ricercato quello successivo secondo il principio sopra descritto. Se l'attraversamento del file system è completo, la riproduzione si interrompe. Il lettore interagisce con l'utente utilizzando un display grafico LCD monocromatico HG1 con una risoluzione di 96x65 pixel e pulsanti SB 1 -SB 17. Viene utilizzata una simulazione software della modalità di visualizzazione del testo con lo schermo diviso in otto righe alte 8 pixel. La restante barra orizzontale da 1 px nella parte inferiore dello schermo viene utilizzata per visualizzare visivamente la posizione corrente nel file durante la riproduzione. La prima riga dall'alto mostra (da sinistra a destra) la tensione della batteria, lo stato del lettore, il volume. Lo stato è caratterizzato dai simboli "0" - riproduzione, "-" - pausa, "<<" o ">>" - rispettivamente avanzamento o ritorno rapido all'interno del file. Un simbolo rettangolare indica un errore di comunicazione tra i microcircuiti DD1 e DD2 tramite l'interfaccia I2C. Le righe 2-6 mostrano il percorso completo del file audio riprodotto. La riga 8 mostra il tempo di riproduzione corrente a sinistra e la durata del file audio a destra. Il pulsante SB1 commuta le modalità di riproduzione e pausa, il pulsante SB3 aumenta il volume e il pulsante SB5 diminuisce il volume, il pulsante SB4 si attiva e il pulsante SB15 disattiva il blocco della tastiera. Quando la tastiera è bloccata, al centro della riga 7 del display viene visualizzato "Bloccato". Premendo il pulsante SB6 si porta alla riproduzione del file precedente, mentre premendo il pulsante SB8 si porta alla riproduzione di quello successivo. Premendo e tenendo premuti questi pulsanti per più di un secondo si mette il lettore in modalità avanzamento veloce, rispettivamente indietro o avanti. Premendo il pulsante SB9 o SB11 si caricano rispettivamente il primo e l'ultimo file della directory corrente per la riproduzione. Il connettore XS3 è una presa disponibile nell'alloggiamento utilizzato per il collegamento di una cuffia per microtelefono. Sull'auricolare stesso è presente una presa per una spina audio standard con un diametro di 3,5 mm, alla quale sono collegate le cuffie. L'auricolare ha anche un pulsante che collega i circuiti BTN e GND quando viene premuto, e la resistenza tra i contatti del pulsante rilasciato è di circa un kiloohm. Nel lettore, la linea BTN è collegata al circuito da 3,3 V tramite il resistore R21, pertanto, misurando la tensione su questa linea, è possibile giudicare la presenza di un auricolare collegato e lo stato del suo pulsante. La funzione del pulsante dell'auricolare è simile alla funzione del pulsante del lettore SB1: puoi passare dalla modalità di riproduzione alla modalità di pausa e viceversa, nonché spegnerlo. Tuttavia, non è possibile accendere il lettore utilizzandolo. Quando la tastiera è bloccata, il pulsante dell'auricolare rimane attivo. Il connettore XS2 prende il posto della lente della torcia LED nel telefono. Quando viene rilevato un livello logico alto all'ingresso PA1 del microcontrollore collegato al pin 9 di questo connettore, il programma inizia a visualizzare la corrente di carica della batteria in ampere nell'angolo in alto a destra del display. Inoltre, questo evento accende automaticamente il lettore se era spento. Per impostazione predefinita, il lettore funziona in modalità di riproduzione normale, che consente di ascoltare musica e allo stesso tempo caricare la batteria. Quando si preme il pulsante SB13, il programma salva lo stato del lettore nel file player.ini e configura il modulo USB del microcontrollore per funzionare in modalità MSC (Mass Storage Class). In questa modalità il computer riconosce il lettore collegato al connettore USB come un dispositivo di archiviazione rimovibile, il cui contenuto coincide con quello registrato sulla scheda microSD inserita nel lettore. Lo scambio di informazioni con un computer avviene solo in modalità Full Speed con una larghezza di banda non superiore a 12 Mbit/s. Il display mostra ancora il valore attuale della corrente di carica, nella riga 3 - la scritta "Disco USB", nelle righe 4 e 5 - rispettivamente la velocità di lettura e scrittura. Premendo il pulsante SB12, il dispositivo torna alla modalità lettore. Un disegno del circuito stampato del lettore è mostrato in Fig. 2. Le sue dimensioni e la sua forma sono scelte per essere identiche al circuito del telefono cellulare NOKIA 1100, nel caso in cui viene posizionato (Fig. 3). La scheda deve essere realizzata utilizzando la tecnologia con fori metallizzati, altrimenti è necessario inserire e saldare pezzi di filo stagnato su entrambi i lati in tutti i fori passanti (con piazzole di contatto su entrambi i lati della scheda). La disposizione delle parti sulla scheda è mostrata in Fig. 4 in scala 2:1. Sono inoltre raffigurate maschere realizzate in vernice isolante resistente al calore, che devono essere utilizzate per proteggere i conduttori stampati. Se non vengono applicate le mascherine allora è necessario isolare almeno le zone in cui i conduttori si avvicinano ai contatti stampati dei pulsanti e la zona sotto il corpo metallico del portaschede microSD XS1.
I codici del file walkgeek-v1.2-n1100-with-mp3.hex allegato all'articolo devono essere inseriti nella memoria del microcontrollore installato sulla scheda. Il codice sorgente del programma player e tutti i suoi componenti sono distribuiti sotto la nuova licenza BSD (e altre compatibili), che ne consente l'utilizzo in progetti commerciali chiusi. L'eccezione è la libreria Mp3dec, la cui inclusione nel prodotto finale richiede la divulgazione di tutti i codici sorgente. Il progetto è costantemente aggiornato e le sue versioni aggiornate sono pubblicate in [1]. Come già accennato, il lettore offre la possibilità di riprodurre file in formato Opus. Si tratta di un codec software [2] recentemente rilasciato in versione stabile per la compressione audio con perdita, sviluppato nell'ambito del progetto Xiph.org, noto per soluzioni come Vorbis, FLAC (Free Lossless Audio Codec) e Speex (codec vocale). Puoi anche chiamare Ogg, un contenitore multimediale universale utilizzato per impostazione predefinita per comprimere un flusso compresso in file Opus. Poiché il codec Opus è abbastanza nuovo, non ci sono molte implementazioni su sistemi con poca RAM. Uno di questi è Rockbox. Nel processo di lavoro con il codec, si è scoperto che la libreria Ogg alloca dinamicamente la memoria per la memorizzazione nella cache dell'intera pagina (la dimensione massima teorica è 65 KB, reale - circa 26 KB), nonché per la memorizzazione nella cache dei granulepos di tutti i pacchetti di pagine ( circa 16 KB), che è per il dispositivo, avere 192 KB di RAM è molto. Inoltre, per impostazione predefinita, la libreria alloca una piccola area di memoria per il buffer della pagina, espandendola durante il funzionamento e allocando ogni volta memoria “con riserva”. La stessa cosa accade con il buffer per l'allacciatura dei valori: informazioni sulla distribuzione dei pacchetti sulla pagina. Pertanto, se il pool di memoria dinamica è piccolo, ciò porta presto alla sua significativa frammentazione e all'impossibilità di allocare ulteriormente la memoria della dimensione richiesta. A seguito delle modifiche apportate alle librerie, il caching viene effettuato a livello di pacchetto (la dimensione massima di un pacchetto di informazioni stereo trasmesso alla velocità di 512 Kbps è in pratica 1276 byte). La dimensione massima del buffer per i valori di allacciatura è di 256 celle a doppio byte e possono anche essere rese a byte singolo. Pertanto, tutte le strutture associate al contenitore Ogg, dopo la modifica, occupano meno di 2 KB di RAM. Durante la modifica sono state fatte alcune ipotesi: i pacchetti non possono oltrepassare i limiti della pagina, i checksum della pagina non vengono controllati (nessuno di questi è stato trovato in nessuno dei file Opus). Il funzionamento con file contenenti più di uno stream e con un numero di canali diverso da due non è stato testato. La quantità totale di memoria consumata dal codec Opus è di 65088 byte, di cui 3856 byte sono occupati dal buffer di output. I risultati della profilazione del codec a diverse velocità di flusso di informazioni sono mostrati nella tabella. 1. Tabella 1
Il termine “complessità” qui si riferisce alle prestazioni del processore richieste per una decodifica riuscita. È stato valutato semplicemente conteggiando, tramite un timer hardware, la differenza tra gli istanti di ingresso nella procedura di decodifica di ciascun frame e di uscita da essa (con preemptive multitasking disabilitato e interrupt disabilitati). Il test ha dimostrato che il codec MP3 richiede meno sforzo di calcolo. Ma Opus è esente da royalty e la qualità del suono quando lo si utilizza è migliore rispetto all'utilizzo di MP3 con lo stesso bit rate. Esiste una versione del programma player per la scheda di sviluppo STM32F4DISCOVERY.I codici che devono essere inseriti nella memoria del microcontrollore installato su di essa si trovano nel file walkgeek-v1. 1 -stm32f4discovery-with-mp3.hex (anch'esso allegato all'articolo). In questo caso i file audio vengono riprodotti da una chiavetta USB FLASH collegata al connettore CN5 della scheda tramite un adattatore. Il giocatore agisce come Maestro del bus USB. Il suo stato è visualizzato dai LED arancioni, rossi, blu e verdi sulla scheda. Il rosso indica l'assenza, il verde indica la presenza di un'unità FLASH collegata, l'arancione indica il caricamento di un file audio, la riproduzione interrotta o un errore di programma, il blu lampeggiante indica la modalità di riproduzione. La maggior parte dei pulsanti mostrati nello schema di Fig. 1, collegato alla scheda di debug secondo la tabella. 2 (il secondo contatto di ogni pulsante è collegato al filo comune). Il ruolo del pulsante SB8 è svolto dal pulsante "Utente" della scheda. Il display del telefono NOKIA 1100 è collegato alla scheda di debug secondo la tabella. 3. Tabella 2
Tabella 3
Letteratura
Autore: O. Tsaregorodtsev Vedi altri articoli sezione Audio. Leggere e scrivere utile commenti su questo articolo. Ultime notizie di scienza e tecnologia, nuova elettronica: Macchina per diradare i fiori nei giardini
02.05.2024 Microscopio infrarosso avanzato
02.05.2024 Trappola d'aria per insetti
01.05.2024
Altre notizie interessanti: ▪ Microcontrollore ARM flessibile a 32 bit ▪ Scarpe di navigazione elettronica per turisti ▪ Rilevatore di bugie senza contatto ▪ Nanoresonator aiuterà a riflettere 10000 volte più luce ▪ Inchiostro completamente invisibile News feed di scienza e tecnologia, nuova elettronica
Materiali interessanti della Biblioteca Tecnica Libera: ▪ sezione del sito Elettricista. PUE. Selezione dell'articolo ▪ articolo Gestione anticrisi. Note di lettura ▪ articolo Valeriana farmacia. Leggende, coltivazione, metodi di applicazione
Lascia il tuo commento su questo articolo: Tutte le lingue di questa pagina Homepage | Biblioteca | Articoli | Mappa del sito | Recensioni del sito www.diagram.com.ua |