Съдържание:

Интернет радио с помощта на ESP32: 7 стъпки (със снимки)
Интернет радио с помощта на ESP32: 7 стъпки (със снимки)

Видео: Интернет радио с помощта на ESP32: 7 стъпки (със снимки)

Видео: Интернет радио с помощта на ESP32: 7 стъпки (със снимки)
Видео: $5 WiFi Camera Setup | ESP32 Wifi Setup view on Mobile phone 2024, Ноември
Anonim
Image
Image
Интернет радио с помощта на ESP32
Интернет радио с помощта на ESP32
Интернет радио с помощта на ESP32
Интернет радио с помощта на ESP32

Скъпи приятели, добре дошли в друг Instructable! Днес ще изградим устройство за интернет радио с голям 3.5”дисплей, използвайки евтина ESP32 платка. Вярвате или не, сега можем да изградим интернет радио за по -малко от 10 минути и с по -малко от 30 $. Има много за покриване, така че нека започнем!

Преди няколко месеца завърших проект на Arduino FM Radio, който работи чудесно и изглежда още по -добре според мен. Ако искате да видите как изградих този проект, можете да прочетете Instructable тук. Проблемът е, че въпреки че това радио изглежда страхотно, това не е практично, защото живея в малък град в Южна Гърция и големите гръцки радиостанции, които предпочитам да слушам, нямат предаватели тук. Така че слушам любимите си радиостанции онлайн на моя лаптоп или таблет, което също не е толкова практично. И така, днес ще създам устройство за интернет радио, за да мога да слушам любимите си радиостанции от цял свят!

Както можете да видите, първата версия на проекта е готова на макет. Нека го включим. Както можете да видите, проектът се свързва с интернет и след това излъчва музика от предварително дефинирани радиостанции.

Настроих се на радиостанция Real FM от Атина и с помощта на тези бутони можем да променим радиостанцията, която слушаме. Запазил съм любимите си радиостанции в паметта на ESP32, за да имам лесен достъп до тях. С този потенциометър мога да променя силата на звука на високоговорителя. Показвам името на радиостанцията, която слушаме, на голям 3,5 -инчов дисплей с ретро потребителски интерфейс. Проектът работи добре и е много лесен за изграждане.

Можете да изградите същия проект за по -малко от 10 минути, но трябва да имате известен опит. Ако това е първият ви проект, помислете за изграждането на по -опростен първо, за да придобиете известен опит. Проверете моите Instructables за прости идеи за проекти и когато сте по -удобни с Arduino, електрониката се връща, за да изгради този готин проект. Нека сега започнем да изграждаме собствено интернет радио.

АКТУАЛИЗИРАНЕ 6.06.2019г

Проблемът с шума е решен чрез добавяне на изолационен трансформатор. Вижте актуализираната схематична диаграма. Благодаря!

Стъпка 1: Вземете всички части

Вземете всички части
Вземете всички части

Ще ни трябват следните части:

  • ESP32 ▶
  • MP3 декодер ▶
  • Изолационен трансформатор ▶
  • Усилвател ▶
  • 3W високоговорител ▶
  • 3.5 "Nextion дисплей ▶
  • Бутони ▶
  • Платформа ▶
  • Проводи ▶

Общата стойност на проекта е около 40 $, но ако не използвате дисплей, цената на проекта е около 20 $. Невероятни неща. Можем да изградим собствено интернет радио само с 20 $!

Стъпка 2: ESP32 Board

Image
Image
ESP32 платка
ESP32 платка
ESP32 платка
ESP32 платка

Сърцето на проекта е, разбира се, мощната платка ESP32. Ако не сте запознати с него, чипът ESP32 е наследник на популярния чип ESP8266, който сме използвали много пъти в миналото. ESP32 е звяр! Той предлага две 32 -битови процесорни ядра, които работят на 160MHz, огромно количество памет, WiFi, Bluetooth и много други функции на цена от около 7 $! Невероятни неща!

Моля, вижте подробния преглед, който подготвих за тази дъска. Прикачих видеоклипа към тази инструкция. Това ще помогне да се разбере защо този чип ще промени начина, по който правим нещата завинаги! Едно от най-вълнуващите неща за ESP32 е, че въпреки че е толкова мощен, той предлага режим на дълбок сън, който изисква само 10 μΑs ток. Това прави ESP32 идеалният чип за приложения с ниска мощност.

В този проект платката ESP32 се свързва с интернет и след това получава MP3 данни от радиостанцията, която слушаме, и изпраща някои команди до дисплея.

Стъпка 3: MP3 декодер

MP3 декодер
MP3 декодер
MP3 декодер
MP3 декодер

MP3 данните след това се изпращат към MP3 декодиращия модул, използвайки SPI интерфейса. Този модул използва VS1053 IC. Тази IC е специализиран хардуерен MP3 декодер. Той получава MP3 данните от ESP32 и ги преобразува много бързо в аудио сигнал.

Аудиосигналът, който извежда към този аудио жак, е слаб и шум, така че трябва да го изчистим от шума и да го усилим. (Ако използвате слушалки, не е необходимо сигналът да се изчиства от шума или да се усилва.) Ето защо използвам изолационен трансформатор за изчистване на звука от шума и аудио усилвател PAM8403 за усилване на аудио сигнала и след това го изпращам към говорител. Свързах също два бутона към ESP32, само за да променя MP3 потока, от който получаваме данни, и дисплей Nextion за показване на радиостанцията, която слушаме.

Стъпка 4: Nextion дисплей

Image
Image
Свързване на всички части
Свързване на всички части

Избрах да използвам Nextion дисплей за този проект, тъй като е много лесен за използване. Трябва само да свържем един проводник, за да го контролираме.

Дисплеите Nextion са нов вид дисплеи. Те имат собствен ARM процесор отзад, който отговаря за задвижването на дисплея и създаването на графичен потребителски интерфейс. Така че можем да ги използваме с всеки микроконтролер и да постигнем впечатляващи резултати. Подготвих подробен преглед на този дисплей Nextion, който обяснява в дълбочина как работят, как да ги използваме и техните недостатъци. Можете да го прочетете тук или да гледате прикаченото видео.

Стъпка 5: Свързване на всички части

Свързване на всички части
Свързване на всички части
Свързване на всички части
Свързване на всички части

Всичко, което трябва да направим сега, е да свържем всички части заедно според тази схематична диаграма. Тук можете да намерите схематичната диаграма. Връзката е ясна.

Има две неща, които обаче трябва да се отбележат. Модулът за декодиране на MP3 извежда стерео сигнал, но използвам само един аудио канал в този проект. За да получа аудио сигнала, свързах аудио кабел към аудио жака на модула и го изрязах, за да разкрия четири проводника вътре. Свързах два от проводниците. Единият от тях е GND, а другият е аудио сигнал на един от двата аудио канала. Ако желаете, можете да свържете двата канала към усилвателния модул и да управлявате два високоговорителя.

Всеки аудио канал трябва да премине през изолационния трансформатор, за да изчисти всеки наличен шум, преди да се свърже с усилвателя

За да изпращаме данни към дисплея, трябва само да свържем един проводник към TX0 пина на ESP32. След като свържем частите, трябва да заредим кода в ESP32 и трябва да заредим GUI на дисплея Nextion.

За да заредите GUI на дисплея Nextion, копирайте файла InternetRadio.tft, който ще споделя с вас, на празна SD карта. Поставете SD картата в слота за SD карта в задната част на дисплея. След това включете дисплея и графичният интерфейс ще бъде зареден. След това извадете SD картата и свържете отново захранването.

След успешно зареждане на кода, нека захранваме проекта. Той показва текста „Свързване …“за няколко секунди на дисплея. След свързване към интернет проектът се свързва с предварително дефинирана радиостанция. Хардуерът работи според очакванията, но сега нека да видим софтуерната страна на проекта.

Стъпка 6: Кодът на проекта

Кодът на проекта
Кодът на проекта
Кодът на проекта
Кодът на проекта

Първо, нека ви покажа нещо. Кодът на проекта е по -малко от 140 реда код. Помислете, можем да изградим интернет радио с 3.5”дисплей с 140 реда код, това е невероятно. Можем да постигнем всичко това, разбира се, използвайки различни библиотеки, които съдържат хиляди редове код. Това е силата на Arduino и общността с отворен код. Това прави нещата лесни за производителите.

В този проект използвам библиотеката VS1053 за платката ESP32.

Първо трябва да определим SSID и паролата на Wi-Fi мрежата. След това трябва да запазим някои радиостанции тук. Нуждаем се от URL адреса на хоста, пътя, където се намира потока, и порта, който трябва да използваме. Запазваме цялата тази информация в тези променливи.

char ssid = "yourSSID"; // вашият мрежов SSID (име) char pass = "yourWifiPassword"; // вашата парола за мрежата

// Малко радиостанции

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 порт [4] = {8062, 80, 80, 80};

В този пример съм включил 4 радиостанции.

В функцията за настройка прикрепяме прекъсвания към бутоните, инициализираме модула за MP3 декодер и се свързваме с Wi-Fi.

void setup () {

Serial.begin (9600); забавяне (500); SPI.begin ();

pinMode (previousButton, INPUT_PULLUP);

pinMode (nextButton, INPUT_PULLUP);

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

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

Във функцията цикъл първо проверяваме дали потребителят е избрал различна радиостанция от тази, от която получаваме данни. Ако е така, свързваме се с новата радиостанция, в противен случай получаваме данни от потока и ги изпращаме към модула MP3 декодер.

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

Това е всичко! Когато потребителят натисне бутон, се случва прекъсване и променя стойността на променлива, която казва към кой поток да се свърже.

void IRAM_ATTR previousButtonInterrupt () {

статично неподписано дълго last_interrupt_time = 0;

unsigned long interrupt_time = millis (); if (време на прекъсване-време на последно_прекъсване> 200) {ако (radioStation> 0) radioStation--; else radioStation = 3; } last_interrupt_time = време на прекъсване; }

За да актуализираме дисплея, просто изпращаме някои команди до серийния порт.

void drawRadioStationName (int id) {Команда на низ; switch (id) {случай 0: команда = "p1.pic = 2"; Serial.print (команда); endNextionCommand (); прекъсване; // 1940 UK UK case 1: command = "p1.pic = 3"; Serial.print (команда); endNextionCommand (); прекъсване; // КОСМОСКИ ГРЪЦКИ случай 2: command = "p1.pic = 4"; Serial.print (команда); endNextionCommand (); прекъсване; // РЕАЛЕН FM ГРЪЦКИ случай 3: command = "p1.pic = 5"; Serial.print (команда); endNextionCommand (); прекъсване; // SKAI 100.3 ГРЪЦКИ}}

Сега нека да разгледаме графичния интерфейс на Nextion Display. GUI на Nextion се състои от фонова картина и картина, която показва името на радиостанцията. Платката ESP32 изпраща команди за промяна на името на радиостанцията от вградените изображения. Много е лесно. Моля, вижте урока за дисплея на Nextion, който подготвих преди време за повече информация. Можете бързо да проектирате свой собствен графичен интерфейс, ако желаете, и да покажете повече неща върху него.

Както винаги можете да намерите кода на проекта, приложен в тази инструкция.

Стъпка 7: Последни мисли и подобрения

Заключителни мисли и подобрения
Заключителни мисли и подобрения
Заключителни мисли и подобрения
Заключителни мисли и подобрения
Заключителни мисли и подобрения
Заключителни мисли и подобрения
Заключителни мисли и подобрения
Заключителни мисли и подобрения

Този проект е много прост. Исках прост скелет на проект за Интернет радио, с който да работя. Сега, когато първата версия на проекта е готова, можем да добавим много функции към него, за да го подобрим. На първо място, трябва да проектирам корпус, в който да се помести цялата електроника.

В тази книга за най -красивите радиостанции, правени някога, има много готини радиостанции, от които да избирате като кутия за този проект. Мисля, че ще построя заграждение около това грандиозно радио в стил Арт Деко. Какво мислите, харесва ли ви външният вид на това радио или предпочитате нещо по -модерно? Имате ли други идеи за заграждение? Също така, харесвате ли този проект за Интернет радио и какви функции смятаме, че трябва да добавим към него, за да го направим по -полезен? Бих искал да прочета вашите мисли и идеи, така че, моля, публикувайте ги в секцията за коментари по -долу.

Препоръчано: