SKU: OT6745 Numero articolo: XV193 EAN: 8720828223635
Se stai cercando un modo facile e conveniente per amplificare i tuoi file audio digitali, allora il MAX98357 I2S Amp Breakout fa per te. Prende l'ingresso audio digitale I2S standard e non solo lo decodifica in analogico, ma lo amplifica anche direttamente verso un altoparlante. Perfetto per aggiungere un suono amplificato compatto, combina 2 breakout (I2S DAC + Amp) in uno.
I2S è un protocollo audio digitale utilizzato sulle schede di sviluppo per trasferire i dati audio. Molti chip e processori avanzati gestiscono tutti i segnali audio in formato I2S digitale. Per inserire o estrarre i dati si usano tre o quattro pin (data in, data out, bit clock e left-right channel select). Di solito, per i dispositivi audio c'è un chip DAC che gestisce I2S e lo converte in analogico per pilotare una cuffia.
Questo piccolo amplificatore mono è sorprendentemente potente: può fornire 3.2 watt di potenza a un altoparlante con impedenza di 4 ohm (con alimentazione a 5V e 10% THD). Nel chip in miniatura è presente un controller di classe D, che funziona con una tensione di alimentazione di 2.7V-5.5VDC. Poiché l'amplificatore è di classe D, è estremamente efficiente, il che lo rende perfetto per progetti portatili e alimentati a batteria. Ha protezione termica e contro le sovracorrenti integrate, ma abbiamo notato a malapena che si scaldasse.
L'ingresso audio è standard I2S, puoi usare dati logici a 3.3V o 5V. Le uscite sono "Bridge Tied" - ciò significa che sono collegate direttamente alle uscite, senza collegamento a massa. L'uscita è un'onda quadra PWM a ~300KHz che viene poi 'mediata' dalla bobina dell'altoparlante - le alte frequenze non vengono udite. Tutto ciò significa che non puoi collegare l'uscita a un altro amplificatore, deve pilotare direttamente gli altoparlanti.
C'è un pin Gain che può essere regolato per modificare il guadagno. Di default l'amplificatore fornisce 9 dB di guadagno. Collegando una resistenza pull-up o pull-down, oppure cablandolo direttamente, il pin Gain può essere impostato a 3 dB, 6 dB, 9 dB, 12 dB o 15 dB.
Il pin ShutDown/Mode può essere usato per mettere il chip in modalità sleep o per impostare quale canale audio I2S viene inviato all'altoparlante. Di default l'amplificatore emette un mix stereo (L+R)/2 verso l'uscita mono. Aggiungendo una resistenza, puoi modificarlo per ottenere solo l'uscita sinistra o solo quella destra.
Specifiche:
Ecco come collegare il DAC I2S con amplificatore da 3W - MAX98357A a un Arduino UNO o ESP32, con uno sketch di esempio che puoi caricare subito.
Questo progetto mostra l'amplificatore I2S MAX98357A collegato a un Arduino Uno e a un altoparlante da 3W. Poiché l'Arduino Uno basato su AVR non dispone di una periferica I2S nativa, lo sketch dimostra il cablaggio dell'interfaccia commutando i pin di controllo e dati e inviando messaggi di stato al Serial Monitor a 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
Questo progetto riproduce toni audio alternati tramite un altoparlante da 3W usando l’amplificatore audio digitale I2S MAX98357A. L’ESP32 sintetizza audio PCM a 16-bit in tempo reale e lo invia tramite il bus I2S direttamente all’amplificatore 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