
1、介紹
音頻放大器模塊是一種用於增強音頻信號功率的電子模塊,它能將微弱的音頻電信號(比如從麥克風、播放器輸出的信號)進行放大,提升信號的電壓和電流強度,讓聲音變得更大、更清晰。放大後的音頻信號從模組輸出,連接到揚聲器等負載設備,推動負載發聲。注意:UNO開發板性能不夠,無法驅動該模組。
2、原理圖

3、模組參數
引腳名稱 | 描述 |
|---|---|
G | GND(電源輸入負極) |
V | VCC(電源輸入正極) |
LRCLK | 左右時鐘引腳 |
BCLK | 位時鐘引腳 |
DIN | 數據輸入引腳 |
供電電壓: 3.3-5V
連接方式:PH2.0 4P端子線
安裝方式:積木固定
4、電路板尺寸

5、添加Arduino庫文件
不會使用庫文件的參考這裡:庫文件安裝使用
庫文件下載:點擊下載
將下載好的Arduino 库文件解壓到桌面後,將其放入Arduino 的libraries目錄下。
6、加入MicroPython環境庫檔案
不會安裝庫文件的請點擊這裡:參考鏈接
7、Arduino IDE範例程式
示例程序(ESP32開發板):點擊下載
#define SAMPLE_RATE (44100)
#define I2S_MIC_WS (12)
#define I2S_MIC_SD (14)
#define I2S_MIC_BCK (13)
#define I2S_PORT_0 (I2S_NUM_0)
#define bufferLen (1024)
#define SAMPLE_RATE (44100)
#define bufferLen (1024)
#define I2S_SPK_DIN (25)
#define I2S_SPK_BCLK (27)
#define I2S_SPK_LRCLK (26)
#define I2S_PORT_1 (I2S_NUM_1)
#include "Arduino.h"
#include "driver/i2s.h"
#include "Arduino.h"
#include "driver/i2s.h"
int16_t sBuffer_RX[bufferLen];
size_t bytesIn = 0;
int16_t sBuffer_TX[bufferLen*2];
size_t bytesOut = 0;
void I2s_Mic_Init()
{
i2s_config_t i2s_config_RX{};
i2s_config_RX.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX);
i2s_config_RX.sample_rate = SAMPLE_RATE;
i2s_config_RX.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT;
i2s_config_RX.channel_format = I2S_CHANNEL_FMT_ONLY_LEFT;
i2s_config_RX.communication_format = (i2s_comm_format_t)(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB);
i2s_config_RX.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1;
i2s_config_RX.dma_buf_count = 8;
i2s_config_RX.dma_buf_len = bufferLen;
i2s_config_RX.use_apll = false;
i2s_driver_install(I2S_PORT_0, &i2s_config_RX, 0, NULL);
i2s_pin_config_t pin_config_RX{};
pin_config_RX.mck_io_num = I2S_PIN_NO_CHANGE;
pin_config_RX.bck_io_num = I2S_MIC_BCK;
pin_config_RX.ws_io_num = I2S_MIC_WS;
pin_config_RX.data_out_num = I2S_PIN_NO_CHANGE;
pin_config_RX.data_in_num = I2S_MIC_SD;
i2s_set_pin(I2S_PORT_0, &pin_config_RX);
i2s_start(I2S_PORT_0);
}
int16_t* Mic_Value()
{
i2s_read(I2S_PORT_0, sBuffer_RX, sizeof(sBuffer_RX), &bytesIn, portMAX_DELAY);
for (int i = 0; i < bufferLen; i++)
{
sBuffer_RX[i] = sBuffer_RX[i]*2;
if (sBuffer_RX[i] > (32767))
sBuffer_RX[i] = (32767);
else if (sBuffer_RX[i] < (-32768))
sBuffer_RX[i] = (-32768);
}
return sBuffer_RX;
}
void I2s_Spk_Init()
{
i2s_config_t i2s_config_TX{};
i2s_config_TX.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX);
i2s_config_TX.sample_rate = SAMPLE_RATE;
i2s_config_TX.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT;
i2s_config_TX.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT;
i2s_config_TX.communication_format = (i2s_comm_format_t)(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB);
i2s_config_TX.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1;
i2s_config_TX.dma_buf_count = 8;
i2s_config_TX.dma_buf_len = bufferLen;
i2s_config_TX.use_apll = false;
i2s_driver_install(I2S_PORT_1, &i2s_config_TX, 0, NULL);
i2s_pin_config_t pin_config_TX{};
pin_config_TX.mck_io_num = I2S_PIN_NO_CHANGE;
pin_config_TX.bck_io_num = I2S_SPK_BCLK;
pin_config_TX.ws_io_num = I2S_SPK_LRCLK;
pin_config_TX.data_out_num = I2S_SPK_DIN;
pin_config_TX.data_in_num = I2S_PIN_NO_CHANGE;
i2s_set_pin(I2S_PORT_1, &pin_config_TX);
i2s_start(I2S_PORT_1);
}
void Spk_Value(int16_t* sBuffer_RX)
{
for (int i = 0; i < bufferLen; i++)
{
sBuffer_TX[i*2] = sBuffer_RX[i];
sBuffer_TX[i*2+1] = sBuffer_RX[i];
}
i2s_write(I2S_PORT_1, sBuffer_TX, sizeof(sBuffer_TX), &bytesOut, portMAX_DELAY);
}
void setup(){
I2s_Mic_Init();
I2s_Spk_Init();
}
void loop(){
Spk_Value(Mic_Value());
}示例程序(ESP32-S3開發板):點擊下載
8、米思齊 Mixly 示例程式(圖形化語言)
米思齊 Mixly 圖庫檔案(ESP32開發板-c語言版本):點擊下載
範例程序(ESP32開發板-c語言版本):點擊下載

米思齊 Mixly 庫文件(ESP32-S3 開發板-c 語言版本):點擊下載
示例程式(ESP32-S3開發板-c語言版本):點擊下載
9、測試環境搭建
Arduino ESP32 測試環境搭建
準備配件:
ESP32 開發板 *1
ESP32 EXP1 扩展板 *1
USB type-c 資料線 *1
HS-S05C-L 全向麥克風模塊*1
HS-F33-L 音頻放大模塊*1
PH2.0 5P PH2.0 端子轉杜邦線 *2
電路接線圖:

ESP32 Python 測試環境搭建
10、視頻教學
Arduino UNO視頻教學:按鈕查看
ESP32 Python視頻教學:
11、測試結論
Arduino UNO測試結論:
發現搭配全向麥克風模塊,可以實現 「聲音採集 - 音頻放大 - 声音播放」 的完整音頻通路
