SKU: OT6745 Číslo položky: XV193 EAN: 8720828223635
Pokud hledáte snadný a cenově dostupný způsob, jak zesílit své digitální zvukové soubory, pak je MAX98357 I2S Amp Breakout přesně pro vás. Přijímá standardní digitální audio vstup I2S a nejenže jej dekóduje na analogový signál, ale také jej přímo zesiluje pro reproduktor. Je ideální pro přidání kompaktního zesíleného zvuku a kombinuje 2 break-out moduly (I2S DAC + Amp) v jednom.
I2S je digitální zvukový protokol používaný na vývojových deskách pro přenos audio dat. Mnoho pokročilých čipů a procesorů spravuje veškerý zvuk v digitálním formátu I2S. Pro vstup nebo výstup dat se používají tři nebo čtyři piny (data in, data out, bit clock a left-right channel select). Obvykle je pro audio zařízení DAC čip, který komunikuje přes I2S a převádí jej na analogový signál, který může řídit sluchátka.
Tento malý mono zesilovač je překvapivě výkonný - dokáže dodat 3.2 watt výkonu do reproduktoru s impedancí 4 ohm (při napájení 5V a 10% THD). V miniaturním čipu je třída D controller, který pracuje při napájecím napětí 2.7V-5.5VDC. Protože je zesilovač třídy D, je mimořádně účinný, takže je ideální pro přenosné a bateriově napájené projekty. Má vestavěnou tepelnou ochranu a ochranu proti nadproudu, ale sotva jsme zaznamenali, že by se zahříval.
Audio vstup je standard I2S, můžete použít logická data 3.3V nebo 5V. Výstupy jsou "Bridge Tied" - to znamená, že jsou připojeny přímo na výstupy, bez připojení na zem. Výstupem je ~300KHz obdélníkový PWM signál, který je poté „průměrován“ cívkou reproduktoru - vysoké frekvence nejsou slyšet. Vše výše uvedené znamená, že výstup nelze připojit k jinému zesilovači, musí přímo řídit reproduktory.
Je zde Gain pin, který lze upravit pro změnu zesílení. Ve výchozím nastavení vám zesilovač poskytuje zesílení 9 dB. Připojením pull-up nebo pull-down rezistoru, nebo přímým zapojením, lze Gain pin nastavit na 3 dB, 6 dB, 9 dB, 12 dB nebo 15 dB.
Pin ShutDown/Mode lze použít k uvedení čipu do režimu spánku nebo k nastavení, který I2S audio kanál bude veden do reproduktoru. Ve výchozím nastavení zesilovač poskytuje stereomix (L+R)/2 na mono výstup. Přidáním rezistoru to můžete změnit na pouze levý nebo pouze pravý výstup.
Specifikace:
Takto připojíš I2S DAC s 3W zesilovačem - MAX98357A k Arduino UNO nebo ESP32, s ukázkovým sketchem, který můžeš hned nahrát.
Tento projekt ukazuje I2S zesilovač MAX98357A připojený k Arduino Uno a 3W reproduktoru. Protože Arduino Uno založené na AVR nemá nativní periférii I2S, sketch ukazuje zapojení rozhraní přepínáním řídicích a datových pinů a výpisem stavových zpráv do Serial Monitoru při 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
Tento projekt přehrává střídající se audio tóny přes 3W reproduktor pomocí digitálního audio zesilovače MAX98357A I2S. ESP32 syntetizuje 16-bit PCM audio v reálném čase a posílá ho přes sběrnici I2S přímo do DAC zesilovače.
/*
* ==================================================================
* 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