Documentation Index
Fetch the complete documentation index at: https://docs.kode.diy/llms.txt
Use this file to discover all available pages before exploring further.
Características
El Kode Dot integra un micrófono MEMS digital. Este tipo de micrófonos son muy comunes en dispositivos electrónicos modernos y dan una gran fiabilidad ya que no dependen de ninguna parte analógica.
Esquema de conexión
El micrófono está conectado al ESP32-S3 de la siguiente manera:
| Micrófono | ESP32-S3 |
|---|
| SCK | GPIO38 |
| WS | GPIO45 |
| DIN | GPIO21 |
Librerías recomendadas
Arduino
ESP-IDF
El uso de ESP-ADF es para usuarios avanzados. Si no tienes experiencia en este framework, te recomendamos usar la librería de Arduino.
Ejemplo de código
Este código graba 5 segundos de audio y lo guarda en la microSD en formato WAV.
/**
* Graba 5 segundos de audio por I2S (48 kHz, 32-bit, mono) y los guarda en /sdcard/test.wav.
* Usa el bus I2S del ESP32-S3 y una microSD en modo SD_MMC de 1 bit con pines personalizados.
* Muestra por Serial el estado de inicialización, grabación y escritura en la tarjeta.
*/
/* ───────── KODE | docs.kode.diy ───────── */
#include "ESP_I2S.h"
#include "FS.h"
#include "SD_MMC.h"
/* Asignación de pines I2S */
const uint8_t I2S_SCK = 38; /* Pin de reloj serie (SCK) */
const uint8_t I2S_WS = 45; /* Pin de selección de palabra (LRCLK) */
const uint8_t I2S_DIN = 21; /* Pin de entrada de datos (SD) */
/* Pines de la tarjeta SD para SD_MMC en modo 1 bit */
const uint8_t SD_CMD = 5; /* Pin de comando (CMD) */
const uint8_t SD_CLK = 6; /* Pin de reloj (CLK) */
const uint8_t SD_DATA0 = 7; /* Pin de datos 0 (D0) */
/* Instancia de la interfaz I2S */
I2SClass i2s;
/* Variables para almacenar el WAV y su tamaño */
uint8_t *wav_buffer;
size_t wav_size;
void setup() {
/* Inicializa el puerto serie para depuración */
Serial.begin(115200);
Serial.println("Starting setup...");
/* Configura los pines I2S (MCLK no usado: pasar -1) */
i2s.setPins(I2S_SCK, I2S_WS, -1, I2S_DIN);
/* Inicializa I2S en modo estándar: 48 kHz, 32 bits, mono, slot alineado a izquierda */
Serial.println("Initializing I2S bus...");
if (!i2s.begin(
I2S_MODE_STD,
48000,
I2S_DATA_BIT_WIDTH_32BIT,
I2S_SLOT_MODE_MONO,
I2S_STD_SLOT_LEFT)) {
Serial.println("Failed to initialize I2S bus!");
return;
}
Serial.println("I2S bus initialized.");
/* Configura los pines de SD_MMC para modo 1 bit */
Serial.println("Configuring SD card pins...");
if (!SD_MMC.setPins(SD_CLK, SD_CMD, SD_DATA0)) {
Serial.println("Failed to configure SD pins!");
return;
}
/* Monta la tarjeta SD en "/sdcard" */
Serial.println("Mounting SD card...");
if (!SD_MMC.begin("/sdcard", true)) { /* true => bus de 1 bit */
Serial.println("Failed to initialize SD card!");
return;
}
Serial.println("SD card mounted successfully.");
/* Aviso de inicio de grabación */
Serial.println("Recording 5 seconds of audio...");
/* Graba 5 s de audio WAV en wav_buffer */
wav_buffer = i2s.recordWAV(5, &wav_size);
/* Abre el archivo de salida en la SD */
File file = SD_MMC.open("/test.wav", FILE_WRITE);
if (!file) {
Serial.println("Failed to open file for writing!");
return;
}
/* Escribe los datos grabados y verifica escritura completa */
Serial.println("Writing audio data to file...");
if (file.write(wav_buffer, wav_size) != wav_size) {
Serial.println("Failed to write audio data to file!");
file.close();
return;
}
/* Cierra el archivo al terminar */
file.close();
Serial.println("Audio recording and save complete.");
}
void loop() {
delay(10000);
}
Descarga de ejemplos
Puedes probar los códigos de ejemplo mediante el IDE de Arduino o el IDE de ESP-IDF o descargar los códigos en nuestro drive:
Ejemplos de audio