Inhaltsverzeichnis:

Internetradio mit einem ESP32 - Gunook
Internetradio mit einem ESP32 - Gunook

Video: Internetradio mit einem ESP32 - Gunook

Video: Internetradio mit einem ESP32 - Gunook
Video: ёРадио на модулях esp32 WROVER и vs1053 2024, September
Anonim
Image
Image
Internetradio mit einem ESP32
Internetradio mit einem ESP32
Internetradio mit einem ESP32
Internetradio mit einem ESP32

Liebe Freunde willkommen zu einem anderen Instructable! Heute bauen wir mit einem preiswerten ESP32-Board ein Internetradio-Gerät mit großem 3,5-Zoll-Display. Ob Sie es glauben oder nicht, wir können jetzt ein Internetradio in weniger als 10 Minuten und für weniger als 30 $ bauen. Es gibt viel zu besprechen, also fangen wir an!

Vor ein paar Monaten habe ich ein Arduino FM Radio-Projekt abgeschlossen, das großartig funktioniert und meiner Meinung nach noch besser aussieht. Wenn Sie sehen möchten, wie ich dieses Projekt gebaut habe, können Sie das Instructable hier lesen. Das Problem ist, dass dieses Radio zwar cool aussieht, aber nicht praktikabel ist, weil ich in einer kleinen Stadt in Südgriechenland lebe und die großen griechischen Radiosender, die ich am liebsten höre, hier keine Sender haben. Also höre ich meine Lieblingsradios online auf meinem Laptop oder Tablet-PC, was auch nicht so praktisch ist. Heute baue ich mir also ein Internetradio, um meine Lieblingsradiosender aus der ganzen Welt hören zu können!

Wie Sie sehen, ist eine erste Version des Projekts auf einem Steckbrett fertig. Lass es uns einschalten. Wie Sie sehen, verbindet sich das Projekt mit dem Internet und streamt dann Musik von vordefinierten Radiosendern.

Ich habe den Real FM-Radiosender aus Athen eingestellt und mit diesen Tasten können wir den Radiosender ändern, den wir hören. Ich habe meine Lieblingsradiosender im Speicher des ESP32 gespeichert, damit ich leicht darauf zugreifen kann. Mit diesem Potentiometer kann ich die Lautstärke des Lautsprechers verändern. Ich zeige den Namen des Radiosenders, den wir hören, auf einem großen 3,5-Zoll-Display mit Retro-Benutzeroberfläche an. Das Projekt funktioniert gut und es ist sehr einfach zu bauen.

Sie können das gleiche Projekt in weniger als 10 Minuten erstellen, benötigen jedoch etwas Erfahrung. Wenn dies Ihr erstes Projekt ist, sollten Sie zunächst ein einfacheres Projekt erstellen, um Erfahrungen zu sammeln. Überprüfen Sie meine Instructables für einfache Projektideen und wenn Sie sich mit dem Arduino wohler fühlen, kommt die Elektronik zurück, um dieses coole Projekt zu bauen. Beginnen wir nun mit dem Aufbau unseres eigenen Internetradios.

AKTUALISIERUNG 06.06.2019

Das Rauschproblem wurde durch Hinzufügen eines Trenntransformators gelöst. Sehen Sie sich das aktualisierte schematische Diagramm an. Vielen Dank!

Schritt 1: Holen Sie sich alle Teile

Holen Sie sich alle Teile
Holen Sie sich alle Teile

Wir benötigen folgende Teile:

  • ESP32 ▶
  • MP3-Decoder ▶
  • Trenntransformator ▶
  • Verstärker ▶
  • 3W Lautsprecher ▶
  • 3,5" Nextion-Display ▶
  • Druckknöpfe ▶
  • Steckbrett ▶
  • Kabel ▶

Die Gesamtkosten des Projekts betragen etwa 40 $, aber wenn Sie kein Display verwenden, betragen die Kosten des Projekts etwa 20 $. Tolles Zeug. Mit nur 20$ können wir unser eigenes Internetradio bauen!

Schritt 2: ESP32-Board

Image
Image
ESP32-Platine
ESP32-Platine
ESP32-Platine
ESP32-Platine

Herzstück des Projekts ist natürlich das leistungsstarke ESP32-Board. Wenn Sie damit nicht vertraut sind, der ESP32-Chip ist der Nachfolger des beliebten ESP8266-Chips, den wir in der Vergangenheit oft verwendet haben. Der ESP32 ist ein Biest! Es bietet zwei 32-Bit-Prozessorkerne, die mit 160 MHz arbeiten, eine enorme Menge an Speicher, WLAN, Bluetooth und viele andere Funktionen zu einem Preis von etwa 7 $! Tolles Zeug!

Bitte sehen Sie sich die ausführliche Rezension an, die ich für dieses Board erstellt habe. Ich habe das Video auf diesem Instructable angehängt. Es wird Ihnen helfen zu verstehen, warum dieser Chip die Art und Weise, wie wir Dinge herstellen, für immer verändern wird! Eines der aufregendsten Dinge am ESP32 ist, dass er trotz seiner hohen Leistung einen Tiefschlafmodus bietet, der nur 10 μΑs Strom benötigt. Dies macht den ESP32 zum idealen Chip für Low-Power-Anwendungen.

In diesem Projekt verbindet sich das ESP32-Board mit dem Internet und empfängt dann MP3-Daten von dem Radiosender, den wir hören, und sendet einige Befehle an das Display.

Schritt 3: MP3-Decoder

MP3-Decoder
MP3-Decoder
MP3-Decoder
MP3-Decoder

Die MP3-Daten werden dann über die SPI-Schnittstelle an das MP3-Decodermodul gesendet. Dieses Modul verwendet den VS1053 IC. Dieser IC ist ein dedizierter Hardware-MP3-Decoder. Es holt sich die MP3-Daten vom ESP32 und wandelt sie sehr schnell in ein Audiosignal um.

Das Audiosignal, das an dieser Audiobuchse ausgegeben wird, ist schwach und verrauscht, daher müssen wir es vom Rauschen befreien und verstärken. (Wenn Sie Kopfhörer verwenden, muss das Signal nicht von Rauschen befreit oder verstärkt werden.) Deshalb verwende ich einen Trenntransformator, um das Audio vom Rauschen zu befreien, und einen PAM8403-Audioverstärker, um das Audiosignal zu verstärken und dann zu senden zu einem Lautsprecher. Ich habe auch zwei Tasten an den ESP32 angeschlossen, um den MP3-Stream zu ändern, von dem wir Daten erhalten, und ein Nextion-Display, um den Radiosender anzuzeigen, den wir hören.

Schritt 4: Nextion-Display

Image
Image
Anschließen aller Teile
Anschließen aller Teile

Ich habe mich für dieses Projekt für ein Nextion-Display entschieden, da es sehr einfach zu bedienen ist. Wir müssen nur einen Draht anschließen, um ihn zu steuern.

Die Nextion-Displays sind eine neue Art von Displays. Sie verfügen auf der Rückseite über einen eigenen ARM-Prozessor, der für die Ansteuerung des Displays und die Erstellung der grafischen Benutzeroberfläche verantwortlich ist. Wir können sie also mit jedem Mikrocontroller verwenden und spektakuläre Ergebnisse erzielen. Ich habe eine detaillierte Überprüfung dieses Nextion-Displays erstellt, in der ausführlich erklärt wird, wie sie funktionieren, wie sie verwendet werden und welche Nachteile sie haben. Sie können es hier lesen oder das angehängte Video ansehen.

Schritt 5: Anschließen aller Teile

Anschließen aller Teile
Anschließen aller Teile
Anschließen aller Teile
Anschließen aller Teile

Jetzt müssen wir nur noch alle Teile nach diesem Schaltplan miteinander verbinden. Das beigefügte Schaltbild finden Sie hier. Die Verbindung ist unkompliziert.

Es gibt jedoch zwei Dinge zu beachten. Das MP3-Decodermodul gibt ein Stereosignal aus, aber ich verwende in diesem Projekt nur einen Audiokanal. Um das Audiosignal zu erhalten, habe ich ein Audiokabel an die Audiobuchse des Moduls angeschlossen und es geschnitten, um vier Drähte im Inneren freizulegen. Ich habe zwei der Drähte angeschlossen. Einer davon ist GND und der andere ist das Audiosignal eines der beiden Audiokanäle. Wenn Sie möchten, können Sie beide Kanäle an das Verstärkermodul anschließen und zwei Lautsprecher ansteuern.

Jeder Audiokanal muss durch den Trenntransformator gehen, um vorhandenes Rauschen zu beseitigen, bevor er an den Verstärker angeschlossen wird

Um Daten an das Display zu senden, müssen wir nur einen Draht an den TX0-Pin des ESP32 anschließen. Nachdem wir die Teile verbunden haben, müssen wir den Code auf den ESP32 laden und die GUI auf das Nextion-Display laden.

Um die GUI auf das Nextion-Display zu laden, kopieren Sie die Datei InternetRadio.tft, die ich mit Ihnen teilen werde, auf eine leere SD-Karte. Stecken Sie die SD-Karte in den SD-Kartensteckplatz auf der Rückseite des Displays. Schalten Sie dann das Display ein und die GUI wird geladen. Entfernen Sie dann die SD-Karte und schließen Sie die Stromversorgung wieder an.

Nachdem der Code erfolgreich geladen wurde, starten wir das Projekt. Es zeigt für einige Sekunden den Text „Connecting…“auf dem Display an. Nach der Verbindung mit dem Internet verbindet sich das Projekt mit einem vordefinierten Radiosender. Die Hardware funktioniert wie erwartet, aber jetzt sehen wir uns die Softwareseite des Projekts an.

Schritt 6: Der Code des Projekts

Der Kodex des Projekts
Der Kodex des Projekts
Der Kodex des Projekts
Der Kodex des Projekts

Lassen Sie mich Ihnen zunächst etwas zeigen. Der Code des Projekts umfasst weniger als 140 Codezeilen. Denken Sie darüber nach, wir können ein Internetradio mit einem 3,5-Zoll-Display mit 140 Codezeilen bauen, das ist erstaunlich. All dies können wir natürlich mit verschiedenen Bibliotheken erreichen, die Tausende von Codezeilen enthalten. Dies ist die Stärke von Arduino und der Open-Source-Community. Es macht es den Machern leicht.

In diesem Projekt verwende ich die VS1053-Bibliothek für das ESP32-Board.

Zuerst müssen wir die SSID und das Passwort des Wi-Fi-Netzwerks definieren. Als nächstes müssen wir hier einige Radiosender speichern. Wir benötigen die Host-URL, den Pfad, in dem sich der Stream befindet, und den Port, den wir verwenden müssen. Wir speichern all diese Informationen in diesen Variablen.

char ssid = "IhreSSID"; // Ihre Netzwerk-SSID (Name) char pass = "IhrWifiPassword"; // Ihr Netzwerk-Passwort

// Wenige Radiosender

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-Port[4] = {8062, 80, 80, 80};

Ich habe in diesem Beispiel 4 Radiosender eingeschlossen.

In der Setup-Funktion fügen wir den Tasten Interrupts hinzu, wir initialisieren das MP3-Decoder-Modul und verbinden uns mit dem WLAN.

Leere Einrichtung () {

Serial.begin (9600); Verzögerung (500); SPI.begin();

pinMode (vorheriger Button, INPUT_PULLUP);

pinMode (nächster Button, INPUT_PULLUP);

attachInterrupt (digitalPinToInterrupt (vorherigerButton), previousButtonInterrupt, FALLING);

attachInterrupt(digitalPinToInterrupt(nextButton), nextButtonInterrupt, FALLING); initMP3Decoder(); connectToWIFI(); }

In der Loop-Funktion prüfen wir zunächst, ob der Nutzer einen anderen Radiosender ausgewählt hat als den, von dem wir Daten beziehen. Wenn ja, verbinden wir uns mit dem neuen Radiosender, ansonsten erhalten wir Daten aus dem Stream und senden sie an das MP3-Decoder-Modul.

Void loop () { if (radioStation! = previousRadioStation) { station_connect (radioStation); vorherigeRadioStation = radioStation; } if (client.available () > 0) { uint8_t bytesread = client.read (mp3buff, 32); player.playChunk (mp3buff, bytesread); } }

Das ist alles! Wenn der Benutzer eine Schaltfläche drückt, erfolgt eine Unterbrechung und ändert den Wert einer Variablen, die angibt, zu welchem Stream eine Verbindung hergestellt werden soll.

void IRAM_ATTR previousButtonInterrupt() {

statisch unsigned long last_interrupt_time = 0;

unsigned long Interrupt_time = millis(); if (interrupt_time – last_interrupt_time > 200) { if(radioStation>0) radioStation--; sonst Radiosender = 3; } last_interrupt_time = Interrupt_time; }

Um das Display zu aktualisieren, senden wir einfach einige Befehle an die serielle Schnittstelle.

Void drawRadioStationName (int id) { String-Befehl; Schalter (id) { Fall 0: Befehl = "p1.pic=2"; Serial.print (Befehl); endNextionCommand(); brechen; //940 UK Radio Fall 1: Befehl = "p1.pic=3"; Serial.print (Befehl); endNextionCommand(); brechen; //KOSMOS GREEK Fall 2: Befehl = "p1.pic=4"; Serial.print (Befehl); endNextionCommand(); brechen; // REAL FM GREEK Fall 3: Befehl = "p1.pic=5"; Serial.print (Befehl); endNextionCommand(); brechen; //SKAI 100.3 GRIECHISCHE } }

Werfen wir nun einen Blick auf die Nextion Display GUI. Die Nextion-GUI besteht aus einem Hintergrundbild und einem Bild, das den Namen des Radiosenders anzeigt. Das ESP32-Board sendet Befehle, um den Namen des Radiosenders aus den eingebetteten Bildern zu ändern. Es ist sehr leicht. Bitte sehen Sie sich das Nextion-Display-Tutorial an, das ich vor einiger Zeit vorbereitet habe, um weitere Informationen zu erhalten. Sie können schnell Ihre eigene GUI entwerfen, wenn Sie möchten, und mehr Dinge darauf anzeigen.

Wie immer finden Sie den Code des Projekts in diesem Instructable.

Schritt 7: Abschließende Gedanken und Verbesserungen

Abschließende Gedanken und Verbesserungen
Abschließende Gedanken und Verbesserungen
Abschließende Gedanken und Verbesserungen
Abschließende Gedanken und Verbesserungen
Abschließende Gedanken und Verbesserungen
Abschließende Gedanken und Verbesserungen
Abschließende Gedanken und Verbesserungen
Abschließende Gedanken und Verbesserungen

Dieses Projekt ist sehr einfach. Ich wollte ein einfaches Internet-Radio-Projektskelett, mit dem ich arbeiten konnte. Jetzt, da eine erste Version des Projekts fertig ist, können wir viele Funktionen hinzufügen, um es zu verbessern. Zuallererst muss ich ein Gehäuse entwerfen, um die gesamte Elektronik unterzubringen.

In diesem Buch über die schönsten Radios aller Zeiten stehen sehr coole Radios zur Auswahl als Gehäuse für dieses Projekt. Ich denke, ich werde ein Gehäuse um dieses spektakuläre Art-Deco-Radio bauen. Was denkst du, gefällt dir das Aussehen dieses Radios oder bevorzugst du etwas moderneres? Habt ihr noch andere Gehäuseideen? Gefällt Ihnen dieses Internetradio-Projekt und welche Funktionen müssen wir meiner Meinung nach hinzufügen, um es nützlicher zu machen? Ich würde gerne Ihre Gedanken und Ideen lesen, also posten Sie sie bitte in den Kommentaren unten.

Empfohlen: