ESP32 Internet Radio
Говорят, что дешевый процессор кодеков MP3 VS1053 от aliexpress.com способен декодировать различные музыкальные форматы, включая аудио Ogg Vorbis / MP3 / AAC / WMA / MIDI. VS1053 также способен записывать в файл Ogg Vobis, но все рекомендации, доступные в Интернете, относятся либо к проприетарным платам, либо к ESP32-IDF, которые не рекомендуется использовать из-за чрезмерного кодирования
Принцип, лежащий в основе проекта, заключается в том, что если мы сможем доставить на плату кусок потоковых данных в точном количестве 32 байта в виде потока, он просто продолжит играть.
Это означает, что ESP32 должен подключить потоковый узел к фиксированному порту и затем получать потоковые данные с точностью до 32 байтов за раз. С другой стороны, плата будет продолжать обрабатывать данные, как машина притока / оттока, и поток продолжит воспроизводиться.
Основной код длиной почти 15 строк!
Используется библиотека с открытым исходным кодом ESP32 VS1053. Вы можете найти несколько примеров, включенных в библиотеку. Для смены станций я использовал вывод GPIO (D13) в качестве нажимного переключателя для программного сброса Сбросьте плату VS1053 для настройки на следующую станцию. Для операции переключения без дребезга я выгнал логического оператора, чтобы он стал «ложным» и «верным» в качестве альтернативы, чтобы предотвратить многократное переключение одним нажатием кнопки.
VS1053 - это устройство на 5 Вольт, но вы также можете легко настроить его на 3,3 Вольт. Таким образом, на радио ESP32 у вас будет только одно напряжение питания - 3,3 Вольт, которое может питаться от одной батареи LiPo. На плате VS1053 имеется два регулятора напряжения [AM1117] - 3,3 В и 2,5 В. С помощью цифрового мультиметра сначала выясните, какой из них предназначен для чего, а затем подключите перемычку с напряжением 3,3 В к входу регулятора 2,5 В и подключите этот провод в качестве входа 3,3 В к плате.
Держите соединительные провода как можно меньше. Более длинные, длинные и перекрывающиеся провода могут издавать гудящий шум на выходе звука, который обычно наблюдается на таких платах. Вывод звука стереофонический и достаточно усиленный для питания небольших колонок или наушников, но для работы с громкоговорителями большего размера вам, возможно, придется добавить усилители / усилители.
Li-Ion / Li-Po или Li-Ion при полной зарядке могут увеличить напряжение до 4, что не повредит ESP32, но вы можете потерять плату VS1053, а затем ждать еще 40 дней с aliexpress.com. Поэтому рекомендуется использовать 3-контактный регулятор напряжения HT7333-1 с низким энергопотреблением и малыми потерями, который имеет очень низкое падение напряжения и очень низкую потерю тока покоя. Но единственная проблема - HT7111-1 - крошечное устройство для поверхностного монтажа.
Схема с OLED
Оснащенный 3.3 Вольт подключен к выходу HT7333-1, который также является источником питания для ESP32.
Соединение в красном кружке перейдет к переключателю «нажми и включи» - теперь это временный нажимной выключатель. Для подключения к системе WiFi замените SSID и пароль на начало кода, а затем загрузите обычным способом Arduino. После загрузки ESP32 сначала скажет «Hello», чтобы указать, что VS1053 запущен и готов. Затем он подождет пару секунд, чтобы подключиться к компьютеру (следите за последовательным выходом). После подключения к Интернету он настроится на станцию в хосте [6], а затем начнёт звучать красивый потоковый голос «Битлз». Нажмите один раз переключатель [подключен к D13], и будет настроена следующая станция. Переменная char * sname [7] является необязательной. Вы можете иметь выбранные имена для каждой установленной радиостанции. Дополнительные имена станций могут быть добавлены в массивы хоста, пути и порта.
Радио ESP32 с OLED (опционально): Единственная проблема, которая остается - нет дисплея, который бы знал, какая станция играет! Универсальный дисплей I2C - это все, что требуется сейчас, чтобы завершить его сейчас. Но проблема в том, что тяжеловесный Adafruit SSD1306 вместе с библиотекой Adafruit_GFX, если он будет использоваться, создаст неприятный звук. Поэтому я использовал облегченную библиотеку SSD1306 esp8266-oled-ssd1306-master, которая специально создана для ESP8266 для запуска общих OLED-дисплеев SSD1306. С этой библиотекой дисплей I2C прекрасно работает без какого-либо влияния на вывод звука. Однако OLED не обязателен - без него радио работает просто отлично!
Есть два эскиза - bare_minimum_radio_player.ino & simple_esp32_radio_mod3.ino Первый - это всего лишь несколько строк кода для получения 32-байтовых данных с потокового сайта и последующего воспроизведения. Второй - это сложный эскиз для запуска радио вместе с OLED-дисплеем и нажимным переключателем для смены станции. Каждый эскиз сопровождается небольшим файлом «helloMP3.h», который фактически кодирует небольшую музыку или звуковое приветствие. Скомпилируйте эскиз вместе с этим файлом.
Необходимые библиотеки Arduino также добавляются в комплект программного обеспечения.
Скачать файлы