Независимость – это когда за тебя не платят. Свобода – это когда за тебя не думают.

Меню навигации для мобильных

webradio

Автор zenon, 16 Нояб., 2023, 21:09

« предыдущая - следующая »

zenon

Руки не доходят собрать это karadio, но модули-то есть, и надо хотя бы попробовать.
В общем несколько проводов, arduino, библиотека audioI2S.
https://github.com/schreibfaul1/ESP32-audioI2S
ESP32-Wroom Devkit 1 плата и плата с pcm5102 (WCMCU-5102).
Код для теста:
↓ спойлер ↓
#include "Arduino.h"
#include "WiFi.h"
#include "Audio.h"
#define I2SDAT      25  // Data
#define I2SBCK      27  // Bit clock
#define I2SLCK      26  // Left Right Clock
Audio audio;
string ssid =     "zenon";     // ssid сети WI-FI
string password = "";     // пароль от сети WI-FI
uint8_t new_station = 0;
uint8_t old_station = 1;
string stations[] = {
  "http://ep128.hostingradio.ru:8030/ep128",          //Европа плюс
  "http://radio.frs.snc.ru:8000/EuropaPlus",          //Европа плюс 2
  "http://st01.pifm.ru/p_320_1",                      //Пи fm
  "https://pub0301.101.ru:8000/stream/air/aac/64/99", //EnergyFM
};

void setup() {
  Serial.begin(115200);
  WiFi.disconnect();
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid.c_str(), password.c_str());
  while (WiFi.status() != WL_CONNECTED) delay(1500);
  audio.setPinout(I2SBCK, I2SLCK, I2SDAT);
  audio.setVolume(19); // 0...21
  pinMode (4, INPUT_PULLUP);  // Станция вперед
}

void loop() {

  
  if (!digitalRead(4)) {
    if (new_station != 5) new_station++;  // станция вперед
    if (new_station >= 5) new_station = 1; 
  }

  if (new_station != old_station) {
    audio.connecttohost(stations[new_station].c_str());
    Serial.println(new_station);
    Serial.println(stations[new_station].c_str());
    old_station = new_station;  
  }
  audio.loop();
}

// optional
void audio_info(const char *info) {
  Serial.print("info        "); Serial.println(info);
}
void audio_id3data(const char *info) { //id3 metadata
  Serial.print("id3data     "); Serial.println(info);
}
void audio_eof_mp3(const char *info) { //end of file
  Serial.print("eof_mp3     "); Serial.println(info);
}
void audio_showstation(const char *info) {
  Serial.print("station     "); Serial.println(info);
}
void audio_showstreaminfo(const char *info) {
  Serial.print("streaminfo  "); Serial.println(info);
}
void audio_showstreamtitle(const char *info) {
  Serial.print("streamtitle "); Serial.println(info);
}
void audio_bitrate(const char *info) {
  Serial.print("bitrate     "); Serial.println(info);
}
void audio_commercial(const char *info) { //duration in sec
  Serial.print("commercial  "); Serial.println(info);
}
void audio_icyurl(const char *info) { //homepage
  Serial.print("icyurl      "); Serial.println(info);
}
void audio_lasthost(const char *info) { //stream URL played
  Serial.print("lasthost    "); Serial.println(info);
}
void audio_eof_speech(const char *info) {
  Serial.print("eof_speech  "); Serial.println(info);
}
[свернуть]
Станции листаются пином 4 вверх.
Засада образовалась, хотел FLAC, но тут нужен модуль PSRAM, и да почти все станции максимум 128кбит/с...
Но в принципе работает, надо подумать и обсудить куда двигаться дальше.
ы. За схему не ругать! Это только для понимания что-куда.
https://github.com/minamonra/

zenon

#1
Вот что интересно, так это не вебрадио, а аудио через сеть, по воздуху и по проводу в локалке, удобно это для встраивания в усилитель и воспроизводить на любом устройстве из сети...
Тут нашёл нечто похожее, но китайский... и кода не вижу.
https://github.com/BearLaboratory/wifiaudio-rx-hardware
хотя есть плата разведённая в кикаде...
Надо посикать.
А, ещё нашёл ЦАП на связке stm32f401ccu6 и pcm5102, надо попробовать, makefile есть, проект собирается без ошибок.
https://github.com/har-in-air/STM32F411_USB_AUDIO_DAC

:: добавлено 19 Нояб., 2023, 13:59
ЦАП на f401 и 5102 попробовал, мне понравился.
Будет время разведу платку под это хозяйство, добавить надо только буфер/ушник какой.
https://github.com/minamonra/

zenon

#2
Замечательный проект TFT стрелочные индикаторы и софтовый ЦАП на F401 обнаружился.
https://habr.com/ru/articles/662141/
https://github.com/kagurazakahope/STM32F401_USB_AUDIO_DAC
https://www.youtube.com/watch?v=oql20sNfjPs&t=17s
Среди форков есть с индикацией частоты дискретизации на семи-сегментах.
https://github.com/minamonra/

zenon

#3
Сделал погромче, но нарвался (знал же!) на шумы питания от usb, внешнее питание не хотелось бы делать.
Конечно шумы "замаскировать" можно введением регулятора громкости, но надо побороться ещё.
Собрано пока на модулях. L2 ферритовая бусина.
Нужны советы.
ы. Послушал на ноуте, - тишина...
https://github.com/minamonra/

Slabovik

А если U3 от U2 отстегнуть, шум остаётся?
Шум на наушниках, или шнурок куда-то ещё идёт? Я к тому, что не образуется ли земляной петли?
Бусина в земле в этом месте - решение так себе т.к. аналоговая земля начинается ещё внутри U2 и в этом проблема.
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.

zenon

#5
Шумы по питанию лезут, на одном компе даже мышь услышал... :)
Если U3 запитать от лития - тишина.
Чую опять надо сильно большую индуктивность ставить... 100 мкГн тут слишком мало.
Или активны фильтр сделать?
---
ы. Нашёл k941 подпёр конденсатором, ну да, стало тихо, только вот потерял я 5,1 - 3,5 = 1,6 вольт, обидно, надо сюда ещё степ-ап какой0нибудь, а то непонятная затея, хотя если наушники чуствительные то нормально, но к меня тут есть Razer`ы, ну с очень дубовыми головками, раскачать их ещё надо постараться.
https://github.com/minamonra/