Max98357a

Iš Žinynas.
Jump to navigation Jump to search

Sparkfun-max98357a-audio-dekoderis-2-5v-5-5v-2-4ma-3-2-w-i2s-75750-500x500.jpg

MAX98357A/MAX98357B yra paprastas naudoti, nebrangus, skaitmeninio impulsinio kodo moduliacijos (PCM) įvesties D klasės stiprintuvas, užtikrinantis pramonėje pirmaujančią AB klasės garso kokybę ir D klasės efektyvumą. Skaitmeninė garso sąsaja automatiškai atpažįsta iki 35 skirtingų PCM ir TDM dažnio schemų, todėl nereikia programuoti I2C.

ESP32 Pajungimas[keisti]

Sujungimo schema:

LRCLK -> ESP32 Pin 26
BCLK  -> ESP32 Pin 27
DIN   -> ESP32 Pin 25

Jeigu kartu jungiama SD kortelė, kortelės pajungimas būtų toks (alternatyvus jungimas):

SD CS   -> ESP32 Pin 16
SD MOSI -> ESP32 Pin 13
SD MISO -> ESP32 Pin 5
SD SCK  -> ESP32 Pin 14

Kodo pavyzdys[keisti]

Naudojama ši Arduino biblioteka.

#include "Arduino.h"
#include "WiFi.h"
#include "Audio.h"
#include "SD.h"
#include "FS.h"

// Digital I/O used
#define SD_CS         16
#define SPI_MOSI      13
#define SPI_MISO      5
#define SPI_SCK       14
#define I2S_DOUT      25
#define I2S_BCLK      27
#define I2S_LRC       26

Audio audio;

String ssid =     "*******";
String password = "*******";

void setup() {
    pinMode(SD_CS, OUTPUT);      digitalWrite(SD_CS, HIGH);
    SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);
    Serial.begin(115200);
    SD.begin(SD_CS);
    WiFi.disconnect();
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid.c_str(), password.c_str());
    while (WiFi.status() != WL_CONNECTED) delay(1500);
    audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
    audio.setVolume(21); // 0...21

    audio.connecttohost("http://iskatel.hostingradio.ru:8015/iskatel-320.aac");  // aac
//  audio.connecttohost("http://mcrscast.mcr.iol.pt/cidadefm");                  // mp3
//  audio.connecttohost("http://www.wdr.de/wdrlive/media/einslive.m3u");         // m3u
//  audio.connecttohost("https://stream.srg-ssr.ch/rsp/aacp_48.asx");            // asx
//  audio.connecttohost("http://tuner.classical102.com/listen.pls");             // pls
//  audio.connecttohost("http://stream.radioparadise.com/flac");                 // flac
//  audio.connecttohost("http://stream.sing-sing-bis.org:8000/singsingFlac");    // flac (ogg)
//  audio.connecttohost("http://26373.live.streamtheworld.com:3690/XHQQ_FMAAC/HLSTS/playlist.m3u8");  // HLS
//  audio.connecttohost("http://eldoradolive02.akamaized.net/hls/live/2043453/eldorado/master.m3u8"); // HLS (ts)
//  audio.connecttoFS(SD, "/test.wav");     // SD
//  audio.connecttoFS(SD_MMC, "/test.wav"); // SD_MMC
//  audio.connecttoFS(SPIFFS, "/test.wav"); // SPIFFS
//  audio.connecttospeech("Wenn die Hunde schlafen, kann der Wolf gut Schafe stehlen.", "de"); // Google TTS
}

void loop()
{
    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_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);
}