Inhoudsopgave:
- Stap 1: Verkrijg alle onderdelen
- Stap 2: ESP32-kaart
- Stap 3: MP3-decoder
- Stap 4: Nextion-weergave
- Stap 5: Alle onderdelen aansluiten
- Stap 6: De code van het project
- Stap 7: Laatste gedachten en verbeteringen
Video: Internetradio met een ESP32: 7 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Beste vrienden welkom bij een andere Instructable! Vandaag gaan we een internetradio-apparaat bouwen met een groot 3,5-inch scherm met behulp van een goedkoop ESP32-bord. Geloof het of niet, we kunnen nu een internetradio bouwen in minder dan 10 minuten en met minder dan 30$. Er is veel te bespreken, dus laten we beginnen!
Een paar maanden geleden heb ik een Arduino FM-radioproject voltooid dat geweldig werkt en er naar mijn mening nog beter uitziet. Als je wilt zien hoe ik dit project heb gebouwd, kun je de Instructable hier lezen. Het probleem is dat, hoewel deze radio er cool uitziet, het niet praktisch is omdat ik in een klein stadje in Zuid-Griekenland woon en de grote Griekse radiostations waar ik liever naar luister, hier geen zenders hebben. Ik luister dus online naar mijn favoriete radio's op mijn laptop of tablet-pc, wat ook niet zo praktisch is. Dus vandaag ga ik een internetradio-apparaat bouwen om naar mijn favoriete radiostations van over de hele wereld te kunnen luisteren!
Zoals je kunt zien, staat een eerste versie van het project klaar op een breadboard. Laten we het aanzetten. Zoals u kunt zien, maakt het project verbinding met internet en streamt het vervolgens muziek van vooraf gedefinieerde radiostations.
Ik heb afgestemd op het Real FM-radiostation uit Athene en door deze knoppen te gebruiken, kunnen we het radiostation waarnaar we luisteren veranderen. Ik heb mijn favoriete radiostations in het geheugen van de ESP32 opgeslagen, zodat ik er gemakkelijk toegang toe heb. Met deze potmeter kan ik het volume van de speaker aanpassen. Ik toon de naam van het radiostation waar we naar luisteren op een groot 3,5-inch scherm met een retro gebruikersinterface. Het project werkt prima en het is zeer eenvoudig te bouwen.
U kunt hetzelfde project in minder dan 10 minuten bouwen, maar u moet wel enige ervaring hebben. Als dit je eerste project is, overweeg dan om eerst een eenvoudiger project te bouwen om wat ervaring op te doen. Bekijk mijn Instructables voor eenvoudige projectideeën en als je meer vertrouwd bent met de Arduino, komt de elektronica terug om dit coole project te bouwen. Laten we nu beginnen met het bouwen van onze eigen internetradio.
UPDATE 6/6/2019
Het geluidsprobleem is opgelost door een scheidingstransformator toe te voegen. Bekijk het bijgewerkte schematische diagram. Bedankt!
Stap 1: Verkrijg alle onderdelen
We hebben de volgende onderdelen nodig:
- ESP32 ▶
- MP3-decoder ▶
- Isolatietransformator ▶
- Versterker ▶
- 3W luidspreker ▶
- 3,5" Nextion-scherm ▶
- Drukknoppen ▶
- Breadboard ▶
- Draden ▶
De totale kosten van het project bedragen ongeveer $ 40, maar als u geen display gebruikt, bedragen de kosten van het project ongeveer $ 20. Geweldige dingen. We kunnen onze eigen internetradio bouwen voor slechts $ 20!
Stap 2: ESP32-kaart
Het hart van het project is natuurlijk het krachtige ESP32-bord. Mocht je er niet bekend mee zijn, de ESP32 chip is de opvolger van de populaire ESP8266 chip die we in het verleden al vaker hebben gebruikt. De ESP32 is een beest! Het biedt twee 32-bits verwerkingskernen die werken op 160 MHz, een enorme hoeveelheid geheugen, WiFi, Bluetooth en vele andere functies met een kostprijs van ongeveer $ 7! Geweldige dingen!
Bekijk de gedetailleerde recensie die ik voor dit bord heb opgesteld. Ik heb de video op deze Instructable bijgevoegd. Het zal helpen begrijpen waarom deze chip de manier waarop we dingen maken voor altijd zal veranderen! Een van de meest opwindende dingen van de ESP32 is dat, hoewel hij zo krachtig is, hij een diepe slaapmodus biedt die slechts 10μΑs stroom nodig heeft. Dit maakt de ESP32 de ideale chip voor toepassingen met een laag stroomverbruik.
In dit project maakt het ESP32-bord verbinding met internet en ontvangt het vervolgens MP3-gegevens van het radiostation waarnaar we luisteren, en stuurt het enkele opdrachten naar het display.
Stap 3: MP3-decoder
De MP3-gegevens worden vervolgens via de SPI-interface naar de MP3-decodermodule gestuurd. Deze module maakt gebruik van het VS1053 IC. Dit IC is een speciale hardware MP3-decoder. Het haalt de MP3-gegevens van de ESP32 en zet het heel snel om in een audiosignaal.
Het audiosignaal dat het via deze audio-aansluiting uitvoert, is zwak en maakt veel ruis, dus we moeten het ontdoen van de ruis en het versterken. (Als u een koptelefoon gebruikt, hoeft het signaal niet te worden vrijgemaakt van ruis of versterkt.) Daarom gebruik ik een isolatietransformator om de audio van de ruis te verwijderen en een PAM8403-audioversterker om het audiosignaal te versterken en vervolgens te verzenden naar een spreker. Ik heb ook twee knoppen op de ESP32 aangesloten om de MP3-stream waar we gegevens van krijgen te wijzigen en een Nextion-display om het radiostation weer te geven waarnaar we luisteren.
Stap 4: Nextion-weergave
Ik heb ervoor gekozen om een Nextion-display voor dit project te gebruiken, omdat het heel gemakkelijk te gebruiken is. We hoeven maar één draad aan te sluiten om het te bedienen.
De Nextion-displays zijn een nieuw soort displays. Ze hebben hun eigen ARM-processor aan de achterkant die verantwoordelijk is voor het aansturen van het display en het creëren van de grafische gebruikersinterface. We kunnen ze dus met elke microcontroller gebruiken en spectaculaire resultaten behalen. Ik heb een gedetailleerde recensie van dit Nextion-scherm opgesteld waarin uitgebreid wordt uitgelegd hoe ze werken, hoe ze te gebruiken en hun nadelen. Je kunt het hier lezen, of de bijgevoegde video bekijken.
Stap 5: Alle onderdelen aansluiten
Het enige wat we nu nog moeten doen is alle onderdelen met elkaar verbinden volgens dit schematische diagram. Het bijgevoegde schema vindt u hier. De verbinding is rechttoe rechtaan.
Er zijn echter twee dingen om op te merken. De MP3-decodermodule voert een stereosignaal uit, maar ik gebruik slechts één audiokanaal in dit project. Om het audiosignaal te krijgen, heb ik een audiokabel aangesloten op de audio-aansluiting van de module en deze doorgesneden om vier draden binnenin te onthullen. Ik heb twee van de draden aangesloten. Een daarvan is de GND en de andere is het audiosignaal van een van de twee audiokanalen. Als je wilt, kun je beide kanalen op de versterkermodule aansluiten en twee luidsprekers aansturen.
Elk audiokanaal moet door de scheidingstransformator gaan om eventuele aanwezige ruis te verwijderen voordat het op de versterker wordt aangesloten
Om gegevens naar het display te sturen, hoeven we maar één draad aan te sluiten op de TX0-pin van de ESP32. Nadat we de onderdelen hebben aangesloten, moeten we de code naar de ESP32 laden en de GUI naar het Nextion-display laden.
Om de GUI naar het Nextion-scherm te laden, kopieert u het bestand InternetRadio.tft dat ik met u ga delen naar een lege SD-kaart. Plaats de SD-kaart in de SD-kaartsleuf aan de achterkant van het scherm. Schakel vervolgens het scherm in en de GUI wordt geladen. Verwijder vervolgens de SD-kaart en sluit de stroom weer aan.
Na het succesvol laden van de code, laten we het project opstarten. Het toont enkele seconden de tekst "Connecting…" op het display. Na verbinding met internet maakt het project verbinding met een vooraf gedefinieerd radiostation. De hardware werkt zoals verwacht, maar laten we nu eens kijken naar de softwarekant van het project.
Stap 6: De code van het project
Laat me je eerst iets laten zien. De code van het project is minder dan 140 regels code. Denk er eens over na, we kunnen een internetradio bouwen met een 3,5-inch scherm met 140 regels code, dit is geweldig. We kunnen dit allemaal bereiken met behulp van verschillende bibliotheken die natuurlijk duizenden regels code bevatten. Dit is de kracht van Arduino en de Open source-gemeenschap. Het maakt het de makers gemakkelijk.
In dit project gebruik ik de VS1053-bibliotheek voor het ESP32-bord.
Eerst moeten we de SSID en het wachtwoord van het wifi-netwerk definiëren. Vervolgens moeten we hier enkele radiostations opslaan. We hebben de host-URL nodig, het pad waar de stream zich bevindt en de poort die we moeten gebruiken. We slaan al deze informatie op in deze variabelen.
char ssid = "uwSSID"; // uw netwerk-SSID (naam) char pass = "yourWifiPassword"; // uw netwerkwachtwoord
// Weinig radiostations
char *host[4] = {"149.255.59.162", "radiostreaming.ert.gr", "realfm.live24.gr", "secure1.live24.gr"}; char *path[4] = {"/1", "/ert-kosmos", "/realfm", "/skai1003"}; int-poort [4] = {8062, 80, 80, 80};
Ik heb in dit voorbeeld 4 radiostations opgenomen.
In de setup-functie koppelen we interrupts aan de knoppen, initialiseren we de MP3-decodermodule en maken we verbinding met de Wi-Fi.
ongeldige instelling () {
Serieel.begin(9600); vertraging (500); SPI.begin();
pinMode (vorige knop, INPUT_PULLUP);
pinMode (volgende knop, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(previousButton), previousButtonInterrupt, FALLING);
attachInterrupt(digitalPinToInterrupt(nextButton), nextButtonInterrupt, FALLING); initMP3Decoder(); verbindNaarWIFI(); }
In de loop-functie controleren we allereerst of de gebruiker een ander radiostation heeft geselecteerd dan waar we gegevens van krijgen. Als dat zo is, maken we verbinding met het nieuwe radiostation, anders halen we gegevens uit de stream en sturen deze naar de MP3-decodermodule.
void loop() {if(radioStation!=vorigeRadioStation) { station_connect(radioStation); previousRadioStation = radioStation; } if (client.available() > 0) { uint8_t bytesread = client.read(mp3buff, 32); player.playChunk(mp3buff, bytesread); } }
Dat is alles! Wanneer de gebruiker op een knop drukt, vindt er een interrupt plaats en verandert de waarde van een variabele die aangeeft met welke stream verbinding moet worden gemaakt.
void IRAM_ATTR previousButtonInterrupt() {
statisch niet-ondertekend lang last_interrupt_time = 0;
niet-ondertekende lange interrupt_time = millis(); if (interrupt_time - last_interrupt_time > 200) { if(radioStation>0) radioStation--; anders radiostation = 3; } last_interrupt_time = interrupt_time; }
Om het display bij te werken, sturen we eenvoudig enkele opdrachten naar de seriële poort.
void drawRadioStationName(int id){ String-opdracht; switch (id) { case 0: command = "p1.pic=2"; Serial.print(opdracht); endNextionCommand(); pauze; //1940 UK Radio geval 1: command = "p1.pic=3"; Serial.print(opdracht); endNextionCommand(); pauze; //KOSMOS GRIEKSE geval 2: command = "p1.pic=4"; Serial.print(opdracht); endNextionCommand(); pauze; // REAL FM GRIEKSE geval 3: command = "p1.pic = 5"; Serial.print(opdracht); endNextionCommand(); pauze; //SKAI 100.3 GRIEKS } }
Laten we nu eens kijken naar de Nextion Display GUI. De Nextion GUI bestaat uit een achtergrondafbeelding en een afbeelding met de naam van het radiostation. Het ESP32-bord stuurt opdrachten om de naam van het radiostation te wijzigen vanuit de ingesloten afbeeldingen. Het is heel makkelijk. Bekijk de Nextion-display-tutorial die ik enige tijd geleden heb voorbereid voor meer informatie. Je kunt snel je eigen GUI ontwerpen als je wilt en er meer dingen op weergeven.
Zoals altijd vindt u de code van het project bijgevoegd in deze Instructable.
Stap 7: Laatste gedachten en verbeteringen
Dit project is heel eenvoudig. Ik wilde een eenvoudig internetradio-projectskelet om mee te werken. Nu een eerste versie van het project klaar is, kunnen we er veel features aan toevoegen om het te verbeteren. Allereerst moet ik een behuizing ontwerpen om alle elektronica te huisvesten.
In dit boek over de Mooiste Radio's ooit gemaakt staan hele gave radio's om uit te kiezen als behuizing voor dit project. Ik denk dat ik een omkasting ga bouwen rond deze spectaculaire Art Deco radio. Wat vind je, vind je het uiterlijk van deze radio mooi of heb je liever iets moderners? Heb je nog andere behuizingsideeën? Vind je dit internetradioproject ook leuk en welke functies moeten we eraan toevoegen om het nuttiger te maken? Ik zou graag uw gedachten en ideeën lezen, dus plaats ze alstublieft in de opmerkingen hieronder.
Aanbevolen:
1964 Dansette Pi internetradio: 6 stappen (met afbeeldingen)
1964 Dansette Pi internetradio: deze stijlvolle draagbare Dansette-radio uit het midden van de jaren 60 speelt nu de beste internetradiostations van de 21e eeuw dankzij een liefdevolle upgrade. Alle originele bedieningselementen zijn opnieuw gebruikt en je zou nooit weten dat het een conversie is - totdat je het inschakelt
Roberts RM33 Raspberry Pi internetradio (nog een): 8 stappen (met afbeeldingen)
Roberts RM33 Raspberry Pi-internetradio (nog een …): Ja, het is een andere Raspberry Pi-internetradio en ook niet mijn eerste. Ik weet niet zeker waarom deze build nog steeds zo populair is, maar ik geniet er nog steeds van en kan ook niet zeggen dat dit mijn laatste zal zijn. Ik hou echt van het uiterlijk van de Robert
Een debugger gebruiken op een ESP32: 11 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe een debugger op een ESP32 te gebruiken: Heb je ooit een kijkje in je code willen nemen om te zien waarom het zich gedraagt zoals het is? Traditioneel zou je in ESP32-projecten eindeloze printinstructies moeten toevoegen om te proberen te achterhalen wat er aan de hand was, maar er is een betere manier! Een debugger
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
Vintage wifi-internetradio: 10 stappen (met afbeeldingen)
Vintage wifi-internetradio: een vintage radio die is veranderd in een moderne wifi-internetradio