AK Laboratory

Электроника и радиотехника => Цифровая техника => Тема начата: zenon от 16 Нояб., 2023, 21:09

Название: webradio
Отправлено: zenon от 16 Нояб., 2023, 21:09
Руки не доходят собрать это 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кбит/с...
Но в принципе работает, надо подумать и обсудить куда двигаться дальше.
ы. За схему не ругать! Это только для понимания что-куда.
Название: Re: webradio
Отправлено: zenon от 18 Нояб., 2023, 22:56
Вот что интересно, так это не вебрадио, а аудио через сеть, по воздуху и по проводу в локалке, удобно это для встраивания в усилитель и воспроизводить на любом устройстве из сети...
Тут нашёл нечто похожее, но китайский... и кода не вижу.
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 попробовал, мне понравился.
Будет время разведу платку под это хозяйство, добавить надо только буфер/ушник какой.
Название: Re: webradio
Отправлено: zenon от 21 Нояб., 2023, 20:36
Замечательный проект 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
Среди форков есть с индикацией частоты дискретизации на семи-сегментах.
Название: Re: webradio
Отправлено: zenon от 08 Дек., 2023, 23:35
Сделал погромче, но нарвался (знал же!) на шумы питания от usb, внешнее питание не хотелось бы делать.
Конечно шумы "замаскировать" можно введением регулятора громкости, но надо побороться ещё.
Собрано пока на модулях. L2 ферритовая бусина.
Нужны советы.
ы. Послушал на ноуте, - тишина...
Название: Re: webradio
Отправлено: Slabovik от 09 Дек., 2023, 15:29
А если U3 от U2 отстегнуть, шум остаётся?
Шум на наушниках, или шнурок куда-то ещё идёт? Я к тому, что не образуется ли земляной петли?
Бусина в земле в этом месте - решение так себе т.к. аналоговая земля начинается ещё внутри U2 и в этом проблема.
Название: Re: webradio
Отправлено: zenon от 09 Дек., 2023, 21:06
Шумы по питанию лезут, на одном компе даже мышь услышал... :)
Если U3 запитать от лития - тишина.
Чую опять надо сильно большую индуктивность ставить... 100 мкГн тут слишком мало.
Или активны фильтр сделать?
---
ы. Нашёл k941 подпёр конденсатором, ну да, стало тихо, только вот потерял я 5,1 - 3,5 = 1,6 вольт, обидно, надо сюда ещё степ-ап какой0нибудь, а то непонятная затея, хотя если наушники чуствительные то нормально, но к меня тут есть Razer`ы, ну с очень дубовыми головками, раскачать их ещё надо постараться.