SKU: OT6745 Numer artykułu: XV193 EAN: 8720828223635
Jeśli szukasz łatwego i niedrogiego sposobu na wzmocnienie cyfrowych plików dźwiękowych, MAX98357 I2S Amp Breakout jest właśnie dla Ciebie. Pobiera standardowe cyfrowe wejście audio I2S i nie tylko dekoduje je do sygnału analogowego, ale także wzmacnia je bezpośrednio do głośnika. Idealny do dodania kompaktowego wzmocnionego dźwięku, łączy 2 moduły breakout (I2S DAC + Amp) w jednym.
I2S to cyfrowy protokół dźwiękowy używany na płytkach stykowych do przesyłania danych audio. Wiele zaawansowanych układów i procesorów obsługuje wszystkie dane audio w cyfrowym formacie I2S. Do wprowadzania lub wyprowadzania danych używa się trzech lub czterech pinów (data in, data out, bit clock i left-right channel select). Zazwyczaj w urządzeniach audio znajduje się układ DAC, który obsługuje I2S i przekształca go na sygnał analogowy, mogący napędzać słuchawki.
Ten mały monofoniczny wzmacniacz jest zaskakująco mocny - może dostarczyć 3.2 wata mocy do głośnika o impedancji 4 omów (przy zasilaniu 5V i 10% THD). W miniaturowym układzie znajduje się kontroler klasy D, który pracuje przy napięciu zasilania 2.7V-5.5VDC. Ponieważ wzmacniacz jest klasy D, jest wyjątkowo wydajny, dzięki czemu idealnie nadaje się do projektów przenośnych i zasilanych bateryjnie. Ma wbudowaną ochronę termiczną i przeciwprzeciążeniową, ale prawie nie zauważyliśmy, żeby się nagrzewał.
Wejście audio jest zgodne ze standardem I2S, można używać danych logicznych 3.3V lub 5V. Wyjścia są typu "Bridge Tied" - oznacza to, że są podłączone bezpośrednio do wyjść, bez połączenia z masą. Wyjście to przebieg prostokątny PWM ~300KHz, który następnie jest „uśredniany” przez cewkę głośnika - wysokie częstotliwości nie są słyszalne. Wszystko to oznacza, że nie można podłączyć wyjścia do innego wzmacniacza, musi ono bezpośrednio napędzać głośniki.
Jest pin Gain, który można regulować, aby zmienić wzmocnienie. Domyślnie wzmacniacz zapewnia 9 dB wzmocnienia. Podłączając rezystor pull-up lub pull-down albo okablowując bezpośrednio, można ustawić pin Gain na 3 dB, 6 dB, 9 dB, 12 dB lub 15 dB.
Pin ShutDown/Mode może być używany do przełączenia układu w tryb uśpienia lub do ustawienia, który kanał audio I2S jest kierowany do głośnika. Domyślnie wzmacniacz wyprowadza miks stereo (L+R)/2 na wyjście mono. Dodając rezystor, można zmienić to na wyjście tylko lewego lub tylko prawego kanału.
Specyfikacja:
Tak podłączysz I2S DAC z wzmacniaczem 3W - MAX98357A do Arduino UNO lub ESP32, z przykładowym szkicem, który możesz od razu wgrać.
Ten projekt przedstawia wzmacniacz I2S MAX98357A podłączony do Arduino Uno i głośnika 3W. Ponieważ oparty na AVR Arduino Uno nie ma natywnego układu peryferyjnego I2S, szkic pokazuje okablowanie interfejsu przez przełączanie pinów sterujących i danych oraz wyświetlanie komunikatów stanu w Serial Monitor z prędkością 115200 baud.
/*
* ==================================================================
* Generated by Codey.online — https://www.codey.online
* ==================================================================
* Project : MAX98357A I2S Amplifier Demo
* Board : Arduino UNO (arduino:avr:uno)
* Parts : 3W amplifier MAX98357A I2S DAC
* Libraries : none (built-in)
*
* Codey Online is an AI-powered browser IDE for Arduino and ESP32.
* Describe your project and Codey writes the code, draws the wiring
* diagram and uploads it to your board, straight from the browser.
* This code is free to use, modify and share, without warranty.
* ==================================================================
*/
// MAX98357A I2S Amplifier wiring and basic test sketch
// Note: AVR Arduino Uno does not have hardware I2S.
// This sketch verifies pin connections and demonstrates signal pulsing.
const uint8_t PIN_BCLK = 9;
const uint8_t PIN_LRC = 8;
const uint8_t PIN_DIN = 10;
const unsigned int toneHz = 440;
const unsigned long toneOnMs = 1000;
const unsigned long toneOffMs = 500;
void outputPulse(unsigned long durationMs, unsigned int frequencyHz) {
unsigned long start = millis();
unsigned long halfPeriodUs = 500000UL / frequencyHz;
while (millis() - start < durationMs) {
digitalWrite(PIN_DIN, HIGH);
delayMicroseconds(halfPeriodUs);
digitalWrite(PIN_DIN, LOW);
delayMicroseconds(halfPeriodUs);
}
}
void setup() {
pinMode(PIN_BCLK, OUTPUT);
pinMode(PIN_LRC, OUTPUT);
pinMode(PIN_DIN, OUTPUT);
digitalWrite(PIN_BCLK, LOW);
digitalWrite(PIN_LRC, LOW);
digitalWrite(PIN_DIN, LOW);
Serial.begin(115200);
Serial.println(F("MAX98357A Amplifier Test"));
Serial.println(F("Pins initialized: BCLK=9, LRC=8, DIN=10"));
}
void loop() {
Serial.println(F("Signal ON (440 Hz pulse)"));
outputPulse(toneOnMs, toneHz);
Serial.println(F("Signal OFF"));
digitalWrite(PIN_DIN, LOW);
delay(toneOffMs);
}
Wiring diagram and example code generated by Codey.online — https://www.codey.online
Ten projekt odtwarza naprzemienne tony audio przez głośnik 3W za pomocą cyfrowego wzmacniacza audio I2S MAX98357A. ESP32 syntetyzuje audio PCM 16-bit w czasie rzeczywistym i przesyła je bezpośrednio magistralą I2S do wzmacniacza DAC.
/*
* ==================================================================
* Generated by Codey.online — https://www.codey.online
* ==================================================================
* Project : ESP32 I2S Audio Tone Generator with MAX98357A
* Board : ESP32 DEVKIT V1 (esp32:esp32:esp32doit-devkit-v1)
* Parts : 3W amplifier MAX98357A I2S DAC
* Libraries : none (built-in)
*
* Codey Online is an AI-powered browser IDE for Arduino and ESP32.
* Describe your project and Codey writes the code, draws the wiring
* diagram and uploads it to your board, straight from the browser.
* This code is free to use, modify and share, without warranty.
* ==================================================================
*/
#include <Arduino.h>
#include "driver/i2s.h"
#include <math.h>
#define I2S_BCLK 26
#define I2S_LRC 25
#define I2S_DIN 22
#define SAMPLE_RATE 44100
void setup() {
Serial.begin(115200);
i2s_config_t i2s_config = {
.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
.sample_rate = SAMPLE_RATE,
.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
.communication_format = I2S_COMM_FORMAT_STAND_I2S,
.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
.dma_buf_count = 8,
.dma_buf_len = 64,
.use_apll = false,
.tx_desc_auto_clear = true
};
i2s_pin_config_t pin_config = {
.bck_io_num = I2S_BCLK,
.ws_io_num = I2S_LRC,
.data_out_num = I2S_DIN,
.data_in_num = I2S_PIN_NO_CHANGE
};
i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
i2s_set_pin(I2S_NUM_0, &pin_config);
Serial.println("MAX98357A I2S Tone Generator Ready!");
}
void playTone(float freq, int durationMs) {
int totalSamples = (SAMPLE_RATE * durationMs) / 1000;
size_t bytesWritten;
int16_t buffer[128];
float phaseStep = 2.0 * PI * freq / SAMPLE_RATE;
float phase = 0.0;
int samplesRemaining = totalSamples;
while (samplesRemaining > 0) {
int toWrite = min(64, samplesRemaining);
for (int i = 0; i < toWrite; i++) {
int16_t sample = (int16_t)(sin(phase) * 6000.0);
buffer[i * 2] = sample; // Left channel
buffer[i * 2 + 1] = sample; // Right channel
phase += phaseStep;
if (phase >= 2.0 * PI) phase -= 2.0 * PI;
}
i2s_write(I2S_NUM_0, buffer, toWrite * sizeof(int16_t) * 2, &bytesWritten, portMAX_DELAY);
samplesRemaining -= toWrite;
}
}
void loop() {
Serial.println("Playing 440 Hz (A4)...");
playTone(440.0, 400);
delay(100);
Serial.println("Playing 880 Hz (A5)...");
playTone(880.0, 400);
delay(1000);
}
Wiring diagram and example code generated by Codey.online — https://www.codey.online