Sommario:
- Passaggio 1: ottenere tutte le parti
- Passaggio 2: scheda ESP32
- Passaggio 3: decodificatore MP3
- Passaggio 4: visualizzazione successiva
- Passaggio 5: collegamento di tutte le parti
- Step 6: Il Codice del Progetto
- Passaggio 7: considerazioni finali e miglioramenti
Video: Radio Internet utilizzando un ESP32: 7 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Cari amici benvenuti in un altro Instructable! Oggi costruiremo un dispositivo Internet Radio con un grande display da 3,5 pollici utilizzando una scheda ESP32 economica. Che tu ci creda o no, ora possiamo costruire una Internet Radio in meno di 10 minuti e con meno di 30$. C'è molto da coprire quindi, iniziamo!
Alcuni mesi fa, ho completato un progetto di Arduino FM Radio che funziona alla grande e secondo me sembra ancora migliore. Se vuoi vedere come ho costruito questo progetto puoi leggere l'Instructable qui. Il problema è che, sebbene questa radio sembri bella, non è pratica perché vivo in una piccola città nel sud della Grecia e le grandi stazioni radio greche che preferisco ascoltare, non hanno trasmettitori da queste parti. Quindi, ascolto le mie radio preferite online sul mio laptop o tablet, il che non è altrettanto pratico. Quindi, oggi costruirò un dispositivo radio Internet per poter ascoltare le mie stazioni radio preferite di tutto il mondo!
Come puoi vedere, una prima versione del progetto è pronta su una breadboard. Accendiamolo. Come puoi vedere, il progetto si connette a Internet e quindi trasmette musica in streaming da stazioni radio predefinite.
Mi sono sintonizzato sulla stazione radio Real FM di Atene e usando questi pulsanti possiamo cambiare la stazione radio che stiamo ascoltando. Ho salvato le mie stazioni radio preferite nella memoria dell'ESP32 in modo da potervi accedere facilmente. Con questo potenziometro posso modificare il volume dell'altoparlante. Mostro il nome della stazione radio che stiamo ascoltando su un grande display da 3,5 pollici con un'interfaccia utente retrò. Il progetto funziona bene ed è molto facile da costruire.
Puoi costruire lo stesso progetto in meno di 10 minuti ma devi avere una certa esperienza. Se questo è il tuo primo progetto, considera di crearne uno più semplice per acquisire esperienza. Controlla i miei Instructables per semplici idee di progetto e quando ti senti più a tuo agio con Arduino, l'elettronica torna per costruire questo fantastico progetto. Iniziamo ora a costruire la nostra Internet Radio.
AGGIORNAMENTO 6/6/2019
Il problema del rumore è stato risolto aggiungendo un trasformatore di isolamento. Controlla il diagramma schematico aggiornato. Grazie!
Passaggio 1: ottenere tutte le parti
Avremo bisogno delle seguenti parti:
- ESP32 ▶
- Decodificatore MP3 ▶
- Trasformatore di isolamento ▶
- Amplificatore ▶
- Altoparlante 3W ▶
- Display Nextion da 3,5" ▶
- Pulsanti ▶
- Tagliere ▶
- Fili ▶
Il costo totale del progetto è di circa 40$ ma se non si utilizza un display il costo del progetto è di circa 20$. Roba incredibile. Possiamo costruire la nostra radio Internet con soli 20$!
Passaggio 2: scheda ESP32
Il cuore del progetto è, ovviamente, la potente scheda ESP32. Se non lo conosci, il chip ESP32 è il successore del popolare chip ESP8266 che abbiamo usato molte volte in passato. L'ESP32 è una bestia! Offre due core di elaborazione a 32 bit che operano a 160 MHz, un'enorme quantità di memoria, WiFi, Bluetooth e molte altre funzionalità con un costo di circa 7 $! Roba incredibile!
Si prega di guardare la recensione dettagliata che ho preparato per questa scheda. Ho allegato il video su questo Instructable. Aiuterà a capire perché questo chip cambierà per sempre il modo in cui creiamo le cose! Una delle cose più eccitanti dell'ESP32 è che anche se è così potente, offre una modalità di sospensione profonda che richiede solo 10μΑs di corrente. Ciò rende ESP32 il chip ideale per applicazioni a bassa potenza.
In questo progetto la scheda ESP32 si connette a Internet e poi riceve i dati MP3 dalla stazione radio che stiamo ascoltando, e invia alcuni comandi al display.
Passaggio 3: decodificatore MP3
I dati MP3 vengono quindi inviati al modulo di decodifica MP3 utilizzando l'interfaccia SPI. Questo modulo utilizza l'IC VS1053. Questo circuito integrato è un decodificatore MP3 hardware dedicato. Ottiene i dati MP3 dall'ESP32 e li converte molto velocemente in un segnale audio.
Il segnale audio emesso da questo jack audio è debole e rumoroso, quindi dobbiamo eliminarlo dal rumore e amplificarlo. (Se stai usando le cuffie, il segnale non ha bisogno di essere cancellato dal rumore o amplificato.) Ecco perché sto usando un trasformatore di isolamento per cancellare l'audio dal rumore e un amplificatore audio PAM8403 per amplificare il segnale audio e poi inviarlo a un oratore. Ho anche collegato due pulsanti all'ESP32 solo per cambiare il flusso MP3 da cui riceviamo i dati e un display Nextion per visualizzare la stazione radio che stiamo ascoltando.
Passaggio 4: visualizzazione successiva
Ho scelto di utilizzare un display Nextion per questo progetto poiché è molto facile da usare. Abbiamo solo bisogno di collegare un filo per controllarlo.
I display Nextion sono un nuovo tipo di display. Hanno il proprio processore ARM sul retro che è responsabile della guida del display e della creazione dell'interfaccia utente grafica. Quindi, possiamo usarli con qualsiasi microcontrollore e ottenere risultati spettacolari. Ho preparato una recensione dettagliata di questo display Nextion che spiega in modo approfondito come funzionano, come usarli e i loro svantaggi. Potete leggerlo qui o guardare il video allegato.
Passaggio 5: collegamento di tutte le parti
Tutto quello che dobbiamo fare ora è collegare tutte le parti insieme secondo questo diagramma schematico. Potete trovare il diagramma schematico allegato qui. La connessione è semplice.
Ci sono due cose da notare però. Il modulo di decodifica MP3 emette un segnale stereo ma sto usando solo un canale audio in questo progetto. Per ottenere il segnale audio, ho collegato un cavo audio al jack audio del modulo e l'ho tagliato per rivelare quattro fili all'interno. Ho collegato due dei fili. Uno di questi è il GND e l'altro è il segnale audio di uno dei due canali audio. Se lo desideri, puoi collegare entrambi i canali al modulo amplificatore e pilotare due altoparlanti.
Ciascun canale audio deve passare attraverso il trasformatore di isolamento per eliminare qualsiasi rumore presente prima di collegarsi all'amplificatore
Per inviare i dati al display, dobbiamo solo collegare un filo al pin TX0 dell'ESP32. Dopo aver collegato le parti, dobbiamo caricare il codice su ESP32 e dobbiamo caricare la GUI sul display Nextion.
Per caricare la GUI sul display Nextion, copia il file InternetRadio.tft che condividerò con te su una scheda SD vuota. Inserisci la scheda SD nello slot per schede SD sul retro del display. Quindi accendi il display e la GUI verrà caricata. Quindi rimuovere la scheda SD e collegare nuovamente l'alimentazione.
Dopo aver caricato con successo il codice, accendiamo il progetto. Visualizza il testo “Connecting…” per alcuni secondi sul display. Dopo la connessione a Internet, il progetto si connette a una stazione radio predefinita. L'hardware funziona come previsto ma ora vediamo il lato software del progetto.
Step 6: Il Codice del Progetto
Prima di tutto, lascia che ti mostri una cosa. Il codice del progetto è inferiore a 140 righe di codice. Pensaci, possiamo costruire una Internet Radio con un display da 3,5 pollici con 140 righe di codice, è fantastico. Possiamo ottenere tutto questo usando ovviamente varie librerie che contengono migliaia di righe di codice. Questa è la potenza di Arduino e della comunità Open Source. Rende le cose facili per i creatori.
In questo progetto, sto usando la libreria VS1053 per la scheda ESP32.
Per prima cosa dobbiamo definire l'SSID e la Password della rete Wi-Fi. Successivamente, dobbiamo salvare alcune stazioni radio qui. Abbiamo bisogno dell'URL dell'host, del percorso in cui si trova lo stream e della porta che dobbiamo usare. Salviamo tutte queste informazioni in queste variabili.
char ssid = "yourSSID"; // il tuo SSID di rete (nome) char pass = "yourWifiPassword"; // la tua password di rete
// Poche stazioni radio
char *host[4] = {"149.255.59.162", "radiostreaming.ert.gr", "realfm.live24.gr", "secure1.live24.gr"}; char *percorso[4] = {"/1", "/ert-kosmos", "/realfm", "/skai1003"}; int porta[4] = {8062, 80, 80, 80};
Ho incluso 4 stazioni radio in questo esempio.
Nella funzione di configurazione alleghiamo gli interrupt ai pulsanti, inizializziamo il modulo decoder MP3 e ci colleghiamo al Wi-Fi.
void setup() {
Serial.begin(9600); ritardo (500); SPI.begin();
pinMode(previousButton, INPUT_PULLUP);
pinMode(nextButton, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(previousButton), previousButtonInterrupt, FALLING);
attachInterrupt(digitalPinToInterrupt(nextButton), nextButtonInterrupt, FALLING); initMP3Decoder(); connectToWIFI(); }
Nella funzione loop, prima di tutto, controlliamo se l'utente ha selezionato una stazione radio diversa da quella da cui stiamo ricevendo i dati. Se è così, ci colleghiamo alla nuova stazione radio altrimenti otteniamo i dati dal flusso e li inviamo al modulo MP3 Decoder.
void loop() { if(radioStation!=previousRadioStation) { station_connect(radioStation); precedenteRadioStation = radioStation; } if (client.available() > 0) { uint8_t bytesread = client.read(mp3buff, 32); player.playChunk(mp3buff, bytesread); } }
È tutto! Quando l'utente preme un pulsante, si verifica un'interruzione e cambia il valore di una variabile che indica a quale flusso connettersi.
void IRAM_ATTR previousButtonInterrupt() {
statico senza segno lungo last_interrupt_time = 0;
unsigned long interrupt_time = millis(); if (ora_interruzione - ora_ultima_interruzione > 200) { if(radioStation>0) radioStation--; altrimenti radioStation = 3; } last_interrupt_time = interrupt_time; }
Per aggiornare il display, inviamo semplicemente alcuni comandi alla porta seriale.
void drawRadioStationName(int id){ Comando stringa; switch (id) { case 0: comando = "p1.pic=2"; Serial.print(comando); endNextionCommand(); rottura; //1940 Radio UK Caso 1: comando = "p1.pic=3"; Serial.print(comando); endNextionCommand(); rottura; //KOSMOS GREEK caso 2: comando = "p1.pic=4"; Serial.print(comando); endNextionCommand(); rottura; //REAL FM GREEK caso 3: comando = "p1.pic=5"; Serial.print(comando); endNextionCommand(); rottura; //SKAI 100.3 GRECO } }
Ora diamo un'occhiata alla GUI di Nextion Display. La GUI di Nextion consiste in un'immagine di sfondo e un'immagine che mostra il nome della stazione radio. La scheda ESP32 invia comandi per modificare il nome della stazione radio dalle immagini incorporate. È molto facile. Si prega di guardare il tutorial sul display Nextion che ho preparato qualche tempo fa per ulteriori informazioni. Puoi progettare rapidamente la tua GUI se lo desideri e visualizzare più cose su di essa.
Come sempre trovate il codice del progetto allegato in questo Instructable.
Passaggio 7: considerazioni finali e miglioramenti
Questo progetto è molto semplice. Volevo un semplice scheletro di progetto di Internet Radio con cui lavorare. Ora che una prima versione del progetto è pronta, possiamo aggiungere molte funzionalità per migliorarla. Prima di tutto, devo progettare un contenitore per ospitare tutta l'elettronica.
In questo libro sulle radio più belle mai realizzate ci sono radio molto interessanti tra cui scegliere come custodia per questo progetto. Penso che costruirò un recinto attorno a questa spettacolare radio Art Déco. Cosa ne pensi, ti piace il look di questa radio o preferisci qualcosa di più moderno? Hai altre idee per la custodia? Inoltre, ti piace questo progetto di Internet Radio e quali caratteristiche pensiamo di dover aggiungere per renderlo più utile? Mi piacerebbe leggere i tuoi pensieri e le tue idee, quindi pubblicali nella sezione commenti qui sotto.
Consigliato:
Radio Internet con Raspberry Pi: 5 passaggi (con immagini)
Radio Internet alimentata da Raspberry Pi: c'è qualcosa di soddisfacente nel girare i quadranti e premere i pulsanti, come quelli delle vecchie radio. Purtroppo molte di queste radio sono rotte o le stazioni sono diventate silenziose. Fortunatamente non è troppo difficile aggiornare qualsiasi radio in una radio Internet usando
Automazione domestica controllata da Internet/cloud utilizzando Esp8266 (aREST, MQTT, IoT): 7 passaggi (con immagini)
Automazione domestica controllata da Internet/cloud utilizzando Esp8266 (aREST, MQTT, IoT): TUTTI i crediti a http://arest.io/ per il servizio cloud!! IoT l'argomento più discusso al mondo in questo momento!! Server e servizi cloud che lo rendono possibile è il punto di attrazione del mondo di oggi… ELIMINARE LA BARRIERA DELLA DISTANZA era ed è il
Cattura e invia immagini con ESP32-Cam utilizzando ESP8266 WeMos D1 R1 Wifi Processor con Uno: 7 passaggi
Cattura e invia immagini con ESP32-Cam utilizzando ESP8266 WeMos D1 R1 Wifi Processor con Uno: acquisisci l'immagine utilizzando ESP32-Cam (OV2640) utilizzando ESP8266 WeMos D1 R1 WiFI Processor con Uno e invialo a e-mail, salva su Google Drive e invialo a Whatsapp utilizzando Twilio. Requisiti: Processore WiFI ESP8266 WeMos D1 R1 con Uno (https://protosupplies
Orologio Internet: visualizza data e ora con un OLED utilizzando ESP8266 NodeMCU con protocollo NTP: 6 passaggi
Orologio Internet: visualizza data e ora con un OLED utilizzando ESP8266 NodeMCU con protocollo NTP: Ciao ragazzi in questo istruibile costruiremo un orologio Internet che riceverà l'ora da Internet, quindi questo progetto non avrà bisogno di alcun RTC per funzionare, avrà solo bisogno di un connessione internet funzionante E per questo progetto hai bisogno di un esp8266 che avrà un
Neopixel Ws2812 Arcobaleno LED Glow con M5stick-C - Esecuzione di Rainbow su Neopixel Ws2812 utilizzando M5stack M5stick C Utilizzando Arduino IDE: 5 passaggi
Neopixel Ws2812 Arcobaleno LED Glow con M5stick-C | Esecuzione di Rainbow su Neopixel Ws2812 Utilizzo di M5stack M5stick C Utilizzo di Arduino IDE: Ciao ragazzi in questo tutorial impareremo come utilizzare i LED neopixel ws2812 o la striscia led o la matrice led o l'anello led con la scheda di sviluppo m5stack m5stick-C con Arduino IDE e faremo un motivo arcobaleno con esso