• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Internet Radio ESP8266 + VS1003

idnull

New member
Добрый день !! Хочу представить свой проект проигрывытеля интерент радиостанций на esp8266 и mp3 декодере vs1003. Проект пока что не закончен до конца, но уже позволяет проигрывать одну радиостанцию. На данный момент написан драйвер дисплея i2c oled дисплея ssd1306, и в процессе написание локальный веб сервер для управления.
Stm32 на макетке только для прошивки (на нём сделан usb to serial).
Исходники https://www.dropbox.com/s/o7hphxz0n02mhrw/Web_Radio_Minimal.zip?dl=0
D4Odu2ta5IY.jpg o1__RfzNwnM.jpg QZZTJsQ2ny4.jpg
Видео работы:
 
Последнее редактирование:

Andy Korg

Moderator
Команда форума
Может от vs1003 отказаться? Вроде как pvvx делал радио на чистом esp.
 

idnull

New member
Может от vs1003 отказаться? Вроде как pvvx делал радио на чистом esp.
Отказаться можно, но мне кажется качество звука при использовании сигма-дельта модуляции страдает..
С этим декодером звучит гараздо лучше..

Есть другая мысль pvvx, смог запустьть i2s на esp8266, в прошлом году я делал плеер с программым декодированием mp3, в качестве кодека hilex,
так вот звук там выводился через аудио ацп pcm1770, который как раз подключался по i2s.
В итоге вышло вот это http://vk.com/video?z=video7911944_170481975/d9d8baf73a4470867e/pl_updates
Качество звука было очень на высоте..
 

Вложения

pvvx

Активный участник сообщества
Отказаться можно, но мне кажется качество звука при использовании сигма-дельта модуляции страдает..
С этим декодером звучит гараздо лучше..
Сигма-дельта - это из-за отсутствия любого внешнего DAC, чтобы собрать используя только модуль ESP8266 и больше ничего :)
Есть другая мысль pvvx, смог запустьть i2s на esp8266, в прошлом году я делал плеер с программым декодированием mp3, в качестве кодека hilex,
так вот звук там выводился через аудио ацп pcm1770, который как раз подключался по i2s.
Это не я. Это "подарок" китайцев в виде публикации регистров управления I2S. Да и основа проекта тоже не моя. Я всего добавил буфер в IRAM, пожертвовав частью "кэш" flash (она и не требуется в 32 кило - 16-ти хватает за глаза).
В итоге вышло вот это http://vk.com/video?z=video7911944_170481975/d9d8baf73a4470867e/pl_updates
Качество звука было очень на высоте..
Не у всех есть регистрация в VK. Ссылка не открывается.
 

idnull

New member
Давайте совместными усилиями соорудим аналог sonos!
Подумал немножко над этой идеей, погуглил немного и вот что вышло.
Нашел вот такую такую прогу http://www.codeproject.com/Articles/31356/C-MP-Sound-Capturing-Recording-Component
По сути простая програмка написания на C#, может записывать звук в файл в формате mp3.
Скачал этот проект, немного над ним поработал, убрал лишнее, и добавил tcp сервер.
Получилось вот так
Скриншот 2015-07-20 21.14.21.png
Ссылка для скачивания
https://www.dropbox.com/s/rb97x6qhbllneyj/translate mp3.zip?dl=0
Как это работает
1. Запускаем программу, выбираем в качестве в качестве устройства "Стерео микшер"
2. Выбираем качество семплирования, битрейт, и порт на котором будет висеть сервер.
3. Запускаем

Изменения в проекте для esp8266:
Только одно, указать в качестве источника трансляции в файле user_main.c ip адресс пк с которого идёт трансляция и выбранный выше порт (к примеру: в моём случае так)
Код:
char radio[]={"http://192.168.1.67:88/"};
Вообщем то и всё, теперь приёмник интнернет радио, воспроизводит звук с ПК, почти в режиме реального времени, из-за буферизации есть некоторый временной лаг. ( на слух где -то полсекунды..)


Исхоники программы транслятор пока что очень сырые, прога слетает, если приёмник разрывает соединение, и пока что нету поддержки нескольких клиентов.. C#.net я знаю плохо и не всё понимаю, но как будет свободное время постараюсь закончить.
Вообщем из этого уже вполне можно сделать простую беспроводную акустику..

P.S.
Так как програмка сервер транслирует mp3 фреймы по tcp, он оказался совместим со всеми устройствами которые могут проигрывать радио через интернет, как пример настройки для программы радио под iphone..
IMG_1014.PNG
Также получилось слушать звук с ПК на андройд девайсах, на другом компьютере (через Aimp)..
Единственная беда, при прослушивании на iphone, android и windows запаздывание звука где-то секунд 5-6..
Как-то так вот вышло..буду развивать идею по мере наличия свободного времени..
 
Последнее редактирование:
@idnull схему не моглиб выложить? Хочу тоже собрать но на базе esp12e и дисплея от nokia 5110. Где в коде написано на какие ноги вешается vs1003 а на какие ssd1306? Коментарии в коде не помешали бы), можно ли зделать так чтоб подключалась к любой открытой точке доступа и к тем которые записаны в коде(например 3 штуки разных запороленные)
 
Последнее редактирование:

idnull

New member
Постараюсь на днях выложить последнюю версию кода, т.к. много чего уже поменял.
Подключение тоже распишу.
На счёт схемы даже не знаю модуль vs1003
сам модуль http://ru.aliexpress.com/item/Free-...rd-Onboard-recording-function/1107287976.html
Где его схему взять - не знаю..
На скольяко я помню в даташите на vs1003 была нарисована типовая схема подключения микросхемы. Её можно за основу взять.
можно ли зделать так чтоб подключалась к любой открытой точке доступа и к тем которые записаны в коде(например 3 штуки разных запороленные)
Думаю можно, модуль умеет искать точки доступа ( функция "bool wifi_station_scan (struct scan_config *config, scan_done_cb_t cb);" )
так-же я делаю веб сервер для переключения радиостанций, чтобы управлять модулем из браузера.. Но вот как-то всё времени свободного нету.
 
@idnull модуль у меня есть, но в коде не увидел пины ESP8266 к чему какой подключён. ?? к каким пинам подключён vs1003, а к каким дисплей. Механическое переключение будет в новой версии?
 

idnull

New member
GPIO2 - DREQ
GPIO0 - XCS
GPIO15 - XDCS
GPIO12 - MISO
GPIO13 - MOSI
GPIO14 - XCLK
Vcc - +5.0v
GND - GND
Xrst - vcc 3.3 (через резистор )

GPIO5 - SDA
GPIO4 - SCK
Вроде так , но буду вечером дома - перепроверю
 
Последнее редактирование:

idnull

New member
VS1003_Config(void) (в файле vs1003.c)
+ в spi_init(void) вызов spi_init_gpio(HSPI, SPI_CLK_USE_DIV); ( в файле spi.c )
 

zarin

New member
Всячески поддерживаю, идея отличная и нужно развивать. Пара дополнений:
1. нужен DAC максимально возможного качества (пример - https://redmine.ivi.ru/issues/276737 )
2. конечно же нужен декодинг AAC
3. и синхронизация проигрования между несколькими устройствами
Тогда это будет реальной альтернативой соносу =)
 
2. конечно же нужен декодинг AAC
VS1053B аналог поддерживающий AAC
http://ru.aliexpress.com/item/1PCS-...-on-board-recording-function/32343609010.html
На плате написано VS1003/VS1053, но уже с поддержкой AAC
https://www.sparkfun.com/datasheets/Components/SMD/vs1053.pdf

@idnull в чём вы пишите код и чем компилируете и отправляите на плату?(сначало показалась то что под ардруино)
 
Последнее редактирование:
@idnull а вы не знаете можно ли использовать spi на которой работает флешь для данного проекта? на моём модуле распаяны пины spi на котором весит флешка
 

idnull

New member
а вы не знаете можно ли использовать spi на которой работает флешь для данного проекта? на моём модуле распаяны пины spi на котором весит флешка
для этого придётся отказываться от sdk, и писать всю прошивку с нуля, так как внешняя флешка мапится во внутреннее адресное пространство, а код из неё частично кэшируеться..
придёться написать сложный драйвер для этого spi..
В принципе если бы были исходники sdk то попробовать можно было бы, но их нет, как нет и полной документации на многие части этого soc..
Мне кажеться это слишком сложным
 
Сверху Снизу