Spisu treści:

Radio internetowe za pomocą ESP32: 7 kroków (ze zdjęciami)
Radio internetowe za pomocą ESP32: 7 kroków (ze zdjęciami)

Wideo: Radio internetowe za pomocą ESP32: 7 kroków (ze zdjęciami)

Wideo: Radio internetowe za pomocą ESP32: 7 kroków (ze zdjęciami)
Wideo: Ups. 2024, Listopad
Anonim
Image
Image
Radio internetowe za pomocą ESP32
Radio internetowe za pomocą ESP32
Radio internetowe za pomocą ESP32
Radio internetowe za pomocą ESP32

Drodzy przyjaciele, witajcie w innym Instruktażowym! Dzisiaj zbudujemy radio internetowe z dużym wyświetlaczem 3,5” na niedrogiej płytce ESP32. Wierzcie lub nie, ale możemy teraz zbudować radio internetowe w mniej niż 10 minut i za mniej niż 30 dolarów. Jest wiele do omówienia, więc zaczynajmy!

Kilka miesięcy temu ukończyłem projekt Arduino FM Radio, który działa świetnie i moim zdaniem wygląda jeszcze lepiej. Jeśli chcesz zobaczyć, jak zbudowałem ten projekt, możesz przeczytać tutaj Instructable. Problem w tym, że chociaż to radio wygląda fajnie, to nie jest praktyczne, bo mieszkam w małym miasteczku w południowej Grecji, a duże greckie stacje radiowe, których wolę słuchać, nie mają tutaj nadajników. Tak więc słucham moich ulubionych radia online na moim laptopie lub tablecie, co również nie jest tak praktyczne. Tak więc dzisiaj zbuduję radio internetowe, aby móc słuchać moich ulubionych stacji radiowych z całego świata!

Jak widać, pierwsza wersja projektu jest gotowa na płytce prototypowej. Wzmocnijmy to. Jak widać projekt łączy się z Internetem, a następnie strumieniuje muzykę z predefiniowanych stacji radiowych.

Dostroiłem się do stacji radiowej Real FM z Aten i za pomocą tych przycisków możemy zmienić słuchaną stację radiową. Zapisałem swoje ulubione stacje radiowe w pamięci ESP32, dzięki czemu mam do nich łatwy dostęp. Za pomocą tego potencjometru mogę zmienić głośność głośnika. Wyświetlam nazwę stacji radiowej, której słuchamy na dużym 3,5-calowym wyświetlaczu z interfejsem użytkownika w stylu retro. Projekt działa dobrze i jest bardzo łatwy do zbudowania.

Możesz zbudować ten sam projekt w mniej niż 10 minut, ale musisz mieć trochę doświadczenia. Jeśli to Twój pierwszy projekt, rozważ najpierw zbudowanie prostszego, aby zdobyć trochę doświadczenia. Sprawdź moje instrukcje, aby znaleźć proste pomysły na projekty, a kiedy poczujesz się bardziej komfortowo z Arduino, elektronika wróci, aby zbudować ten fajny projekt. Zacznijmy teraz budować własne radio internetowe.

AKTUALIZACJA 6.06.2019

Problem szumów został rozwiązany przez dodanie transformatora izolującego. Sprawdź zaktualizowany schematyczny diagram. Dziękuję!

Krok 1: Zdobądź wszystkie części

Zdobądź wszystkie części
Zdobądź wszystkie części

Będziemy potrzebować następujących części:

  • ESP32 ▶
  • Dekoder MP3 ▶
  • Transformator izolacyjny ▶
  • Wzmacniacz ▶
  • Głośnik 3W ▶
  • 3,5-calowy wyświetlacz Nextion ▶
  • Przyciski ▶
  • Breadboard ▶
  • Przewody ▶

Całkowity koszt projektu to około 40$, ale bez wyświetlacza koszt projektu to około 20$. Niesamowite rzeczy. Możemy zbudować własne radio internetowe już za 20$!

Krok 2: Płytka ESP32

Image
Image
Płyta ESP32
Płyta ESP32
Płyta ESP32
Płyta ESP32

Sercem projektu jest oczywiście potężna płytka ESP32. Jeśli go nie znasz, układ ESP32 jest następcą popularnego układu ESP8266, którego używaliśmy wiele razy w przeszłości. ESP32 to bestia! Oferuje dwa 32-bitowe rdzenie przetwarzające, które działają z częstotliwością 160 MHz, ogromną ilość pamięci, WiFi, Bluetooth i wiele innych funkcji za około 7 $! Niesamowite rzeczy!

Proszę obejrzeć szczegółową recenzję, którą przygotowałem dla tej płyty. Załączyłem wideo do tego Instruktażu. Pomoże zrozumieć, dlaczego ten chip na zawsze zmieni sposób, w jaki robimy rzeczy! Jedną z najbardziej ekscytujących rzeczy w ESP32 jest to, że chociaż jest tak potężny, oferuje tryb głębokiego uśpienia, który wymaga tylko 10 μs prądu. To sprawia, że ESP32 jest idealnym chipem do zastosowań o niskim poborze mocy.

W tym projekcie płytka ESP32 łączy się z Internetem, a następnie odbiera dane MP3 z słuchanej przez nas stacji radiowej i wysyła na wyświetlacz kilka poleceń.

Krok 3: Dekoder MP3

Dekoder MP3
Dekoder MP3
Dekoder MP3
Dekoder MP3

Dane MP3 są następnie przesyłane do modułu dekodera MP3 za pomocą interfejsu SPI. Ten moduł wykorzystuje układ scalony VS1053. Ten układ scalony jest dedykowanym sprzętowym dekoderem MP3. Pobiera dane MP3 z ESP32 i konwertuje je bardzo szybko na sygnał audio.

Sygnał audio, który wyprowadza na tym gnieździe audio, jest słaby i zaszumiony, więc musimy go oczyścić z szumu i wzmocnić. (Jeśli używasz słuchawek, sygnał nie musi być usuwany z szumu ani wzmacniany.) Dlatego używam transformatora izolującego, aby usunąć dźwięk z szumu i wzmacniacza audio PAM8403, aby wzmocnić sygnał audio, a następnie go wysłać do głośnika. Podłączyłem również dwa przyciski do ESP32, aby zmienić strumień MP3, z którego otrzymujemy dane, oraz wyświetlacz Nextion, aby wyświetlić słuchaną stację radiową.

Krok 4: Wyświetlacz Nextion

Image
Image
Łączenie wszystkich części
Łączenie wszystkich części

Zdecydowałem się użyć wyświetlacza Nextion do tego projektu, ponieważ jest bardzo łatwy w użyciu. Wystarczy podłączyć jeden przewód, aby nim sterować.

Wyświetlacze Nextion to nowy rodzaj wyświetlaczy. Mają z tyłu własny procesor ARM, który odpowiada za sterowanie wyświetlaczem i tworzenie graficznego interfejsu użytkownika. Możemy więc używać ich z dowolnym mikrokontrolerem i osiągać spektakularne rezultaty. Przygotowałem szczegółowy przegląd tego wyświetlacza Nextion, który szczegółowo wyjaśnia, jak działają, jak z nich korzystać i jakie są ich wady. Możesz go przeczytać tutaj lub obejrzeć załączony film.

Krok 5: Łączenie wszystkich części

Łączenie wszystkich części
Łączenie wszystkich części
Łączenie wszystkich części
Łączenie wszystkich części

Wszystko, co musimy teraz zrobić, to połączyć wszystkie części zgodnie z tym schematem. Schemat ideowy znajdziesz tutaj. Połączenie jest proste.

Należy jednak zwrócić uwagę na dwie rzeczy. Moduł dekodera MP3 wyprowadza sygnał stereo, ale w tym projekcie używam tylko jednego kanału audio. Aby uzyskać sygnał audio, podłączyłem kabel audio do gniazda audio modułu i przeciąłem go, aby odsłonić cztery przewody wewnątrz. Podłączyłem dwa przewody. Jeden z nich to GND, a drugi to sygnał audio jednego z dwóch kanałów audio. Jeśli chcesz, możesz podłączyć oba kanały do modułu wzmacniacza i napędzać dwa głośniki.

Każdy kanał audio musi przejść przez transformator izolujący, aby usunąć wszelkie obecne szumy przed podłączeniem do wzmacniacza

Aby przesłać dane do wyświetlacza, wystarczy podłączyć jeden przewód do pinu TX0 ESP32. Po połączeniu części musimy wczytać kod do ESP32 i musimy załadować GUI do wyświetlacza Nextion.

Aby załadować GUI do wyświetlacza Nextion, skopiuj plik InternetRadio.tft, który zamierzam Ci udostępnić, na pustą kartę SD. Włóż kartę SD do gniazda karty SD z tyłu wyświetlacza. Następnie włącz wyświetlacz, a GUI zostanie załadowany. Następnie wyjmij kartę SD i ponownie podłącz zasilanie.

Po pomyślnym załadowaniu kodu włączmy projekt. Wyświetla na wyświetlaczu przez kilka sekund tekst „Łączenie…”. Po podłączeniu do internetu projekt łączy się z predefiniowaną stacją radiową. Sprzęt działa zgodnie z oczekiwaniami, ale teraz zobaczmy stronę oprogramowania projektu.

Krok 6: Kodeks Projektu

Kodeks Projektu
Kodeks Projektu
Kodeks Projektu
Kodeks Projektu

Przede wszystkim pozwól, że coś ci pokażę. Kod projektu to mniej niż 140 linijek kodu. Pomyśl o tym, możemy zbudować radio internetowe z wyświetlaczem 3,5” ze 140 liniami kodu, to jest niesamowite. Możemy to wszystko osiągnąć, korzystając oczywiście z różnych bibliotek, które zawierają tysiące linijek kodu. To jest siła Arduino i społeczności Open Source. To ułatwia pracę twórcom.

W tym projekcie korzystam z biblioteki VS1053 dla płyty ESP32.

Najpierw musimy zdefiniować identyfikator SSID i hasło sieci Wi-Fi. Następnie musimy zapisać tutaj kilka stacji radiowych. Potrzebujemy adresu URL hosta, ścieżki, w której znajduje się strumień i portu, którego musimy użyć. Wszystkie te informacje zapisujemy w tych zmiennych.

char ssid = "twójSSID"; // SSID sieci (nazwa) char pass = "twojeHasłoWifi"; // twoje hasło sieciowe

// Mało stacji radiowych

char *host[4] = {"149.255.59.162", "radiostreaming.ert.gr", "realfm.live24.gr", "secure1.live24.gr"}; char *ścieżka[4] = {"/1", "/ert-kosmos", "/realfm", "/skai1003"}; port wewnętrzny[4] = {8062, 80, 80, 80};

W tym przykładzie uwzględniłem 4 stacje radiowe.

W funkcji setup dołączamy przerwania do przycisków, inicjujemy moduł dekodera MP3 i łączymy się z Wi-Fi.

pusta konfiguracja () {

Serial.początek(9600); opóźnienie (500); SPI.początek();

pinMode(previousButton, INPUT_PULLUP);

pinMode(nextButton, INPUT_PULLUP);

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

attachInterrupt(digitalPinToInterrupt(nextButton), nextButtonInterrupt, FALLING); initMP3Decoder(); połącz z WIFI(); }

W funkcji pętli sprawdzamy przede wszystkim, czy użytkownik wybrał inną stację radiową niż ta, z której pobieramy dane. Jeśli tak, łączymy się z nową stacją radiową, w przeciwnym razie pobieramy dane ze strumienia i przesyłamy je do modułu dekodera MP3.

void loop() { if(radioStation!=previousRadioStation) { station_connect(radioStation); poprzedniaRadioStation = radioStation; } if (client.available() > 0) { uint8_t odczyt bajtów = client.read(mp3buff, 32); player.playChunk(mp3buff, odczyt bajtów); } }

To wszystko! Kiedy użytkownik naciśnie przycisk, następuje przerwanie i zmienia wartość zmiennej, która mówi, z którym strumieniem się połączyć.

void IRAM_ATTR previousButtonInterrupt() {

static unsigned long last_interrupt_time = 0;

unsigned long interrupt_time = millis(); if (czas_przerwania - czas_ostatniego_przerwania > 200) { if(radioStation>0) radioStation--; w przeciwnym razie radiostacja = 3; } czas_ostatniego_przerwania = czas_przerwania; }

Aby zaktualizować wyświetlacz, po prostu wysyłamy kilka poleceń na port szeregowy.

void drawRadioStationName(int id){ Polecenie tekstowe; switch (id) { przypadek 0: polecenie = "p1.pic=2"; Serial.print(polecenie); endNextionCommand(); przerwa; //1940 przypadek radia brytyjskiego 1: polecenie = "p1.pic=3"; Serial.print(polecenie); endNextionCommand(); przerwa; //KOSMOS GREEK przypadek 2: polecenie = "p1.pic=4"; Serial.print(polecenie); endNextionCommand(); przerwa; //REAL FM GREEK przypadek 3: polecenie = "p1.pic=5"; Serial.print(polecenie); endNextionCommand(); przerwa; //SKAI 100.3 GRECKI } }

Przyjrzyjmy się teraz GUI wyświetlacza Nextion. GUI Nextion składa się z obrazu tła i obrazu, który wyświetla nazwę stacji radiowej. Płyta ESP32 wysyła polecenia zmiany nazwy stacji radiowej z osadzonych obrazów. To bardzo łatwe. Aby uzyskać więcej informacji, obejrzyj samouczek dotyczący wyświetlania Nextion, który przygotowałem jakiś czas temu. Możesz szybko zaprojektować własny GUI, jeśli chcesz i wyświetlić na nim więcej rzeczy.

Jak zawsze możesz znaleźć kod projektu załączony w tej instrukcji.

Krok 7: Ostatnie myśli i ulepszenia

Końcowe myśli i ulepszenia
Końcowe myśli i ulepszenia
Końcowe myśli i ulepszenia
Końcowe myśli i ulepszenia
Końcowe myśli i ulepszenia
Końcowe myśli i ulepszenia
Końcowe myśli i ulepszenia
Końcowe myśli i ulepszenia

Ten projekt jest bardzo prosty. Chciałem mieć prosty szkielet projektu Radia Internetowego do pracy. Teraz, gdy pierwsza wersja projektu jest gotowa, możemy dodać do niej wiele funkcji, aby ją ulepszyć. Przede wszystkim muszę zaprojektować obudowę, która pomieści całą elektronikę.

W tej książce o najpiękniejszych radiostacjach, jakie kiedykolwiek powstały, są bardzo fajne radioodbiorniki do wyboru jako obudowa do tego projektu. Myślę, że zbuduję obudowę wokół tego spektakularnego radia Art Deco. Jak myślisz, podoba Ci się wygląd tego radia czy wolisz coś bardziej nowoczesnego? Masz inne pomysły na obudowę? Czy podoba Ci się ten projekt radia internetowego i jakie funkcje powinniśmy do niego dodać, aby był bardziej użyteczny? Chętnie przeczytam wasze przemyślenia i pomysły, więc proszę zamieść je w sekcji komentarzy poniżej.

Zalecana: