Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense

Componentes y suministros

Arduino Nano 33 BLE Sense×1
Controlador PCA9685 8 canales 8W 12V FET para válvulas proporcionales con interfaz I2C (National Control Devices)×1
Micro-servomotor SG90×3
Conector para pila 9V×1

Herramientas y máquinas necesarias

Aplicaciones y servicios online

Sobre el proyecto

Resumen

Este proyecto demuestra cómo construir un detector de idiomas TinyML en el Arduino Nano 33 BLE Sense usando Edge Impulse Studio. El dispositivo escucha continuamente tres palabras habladas: "si" (italiano), "oui" (francés) y "yes" (inglés), y activa la bandera correspondiente cuando detecta una palabra.

El flujo de trabajo comprende:

Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense

Muestreo y creación del dataset

El conjunto de datos contiene 30 minutos de grabaciones: 10 minutos por palabra objetivo más 3 minutos de ruido de fondo ambiental. Cada clip de 1 segundo captura una única emisión, y todos los archivos se etiquetan correspondientemente en Edge Impulse.

Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense

Las muestras de fondo ayudan al modelo a diferenciar el habla del no-habla.

Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense

Diseño del modelo

Edge Impulse automatiza la mayoría de los pasos de preprocesamiento. El audio se convierte en serie temporal, se ventanea y se transforma usando características MFCC. Una CNN ligera clasifica cada ventana en una de cuatro clases: "si", "oui", "yes" o fondo.

Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense

Los MFCCs de muestra y la arquitectura de la red se visualizan en el panel de entrenamiento.

Entrenamiento y optimización para Arduino Nano 33 BLE Sense

El EON Tuner explora automáticamente docenas de configuraciones de modelo, puntuando cada una por precisión, tiempo de inferencia, uso de RAM y flash. Para este proyecto, se seleccionó el modelo más rápido entre los 5 de mayor precisión.

Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense

Pruebas

Tras el entrenamiento, un conjunto de prueba fresco confirmó un rendimiento robusto. La confianza de clasificación superó consistentemente el 80% para las palabras objetivo.

Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense

Despliegue

El despliegue se agiliza mediante la librería Arduino de Edge Impulse. El archivo de cabecera generado se añade al Arduino IDE y se personaliza para controlar tres servos SG90 que muestran banderas.

Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense
Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense

Resumen del código

El código fuente (disponible en GitHub) extiende la plantilla de Edge Impulse con lógica de control de servos. Adiciones clave:

  1. Integración de Adafruit_PWMServoDriver.h para control PWM del PCA9685.
  2. Función servos_selector que activa la bandera correcta según la confianza del modelo.
  3. Lógica condicional que dispara servos_selector cuando una clasificación supera el 80% de confianza.
void servos_selector(int iter){ 
  unsigned long time_now = millis(); 
  if (time_now - time_was > 2000){ 
    time_was = time_now; 
    switch (iter){ 
      case 0: // Italiano 
        pwm.setPWM(0, 0, 350); 
        delay(500); 
        pwm.setPWM(0, 0, 200); 
        pwm.setPWM(1, 0, 200); 
        pwm.setPWM(2, 0, 200); 
        break; 
      case 1: // Francés 
        pwm.setPWM(1, 0, 350); 
        Serial.println("2222"); 
        delay(500); 
        pwm.setPWM(0, 0, 200); 
        pwm.setPWM(1, 0, 200); 
        pwm.setPWM(2, 0, 200); 
        break; 
      case 2: // Inglés 
        pwm.setPWM(2, 0, 350); 
        Serial.println("333"); 
        delay(500); 
        pwm.setPWM(0, 0, 200); 
        pwm.setPWM(1, 0, 200); 
        pwm.setPWM(2, 0, 200); 
        break; 
    } 
  } 
}

Diseño del circuito

El microcontrolador se alimenta con una pila de 9V y usa una placa PCA9685 para impulsar tres servos SG90. El pin de 12V de la placa se conecta a la pila, mientras que las salidas PWM impulsan los servos mediante la interfaz I2C del PCA9685.

Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense

Con el hardware, software y canal de datos en su lugar, el detector de idiomas TinyML está listo para desplegarse.

Código

Repositorio GitHub: Código completo del proyecto

Piezas personalizadas y envolventes

Diseños 3D disponibles en el repositorio del proyecto.

Esquemáticos

Archivo Fritzing: languagedetection_9RxXhRX5sj.fzz

Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense

Proceso de manufactura

  1. Construye un Juego Giroscópico en Tiempo Real con Arduino Nano y Sensor MPU-6050
  2. Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
  3. Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
  4. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  5. Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
  6. Medición de Distancia en Tiempo Real con Sonar Arduino y Visualización en Processing
  7. MobBob: Robot Arduino Impreso en 3D, Controlado por Smartphone Android
  8. Construir una lámpara de escritorio reactiva al audio con Arduino Nano
  9. Pong Neón en Matriz NeoPixel con Arduino Nano
  10. Construye un volante joystick personalizado con Arduino para gaming
  11. Arduino 101: Construye un Podómetro con Sensor DHT11 y Pantalla LCD