Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense

Componentes e Materiais

Arduino Nano 33 BLE Sense ×1
Controlador Proporcional de Válvula PCA9685 8 Canais 8W 12V FET Driver com Interface I2C (National Control Devices) ×1
Micro-servo SG90 ×3
Conector de Bateria 9V ×1

Ferramentas e Máquinas Necessárias

Aplicativos e Serviços Online

Sobre o Projeto

Visão Geral

Este projeto demonstra como construir um detector de idiomas TinyML no Arduino Nano 33 BLE Sense usando o Edge Impulse Studio. O dispositivo escuta continuamente três palavras faladas — "sim" (italiano), "oui" (francês) e "yes" (inglês) — e aciona a bandeira correspondente quando uma palavra é detectada.

O fluxo de trabalho compreende:

Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense

Amostragem e Criação do Conjunto de Dados

O conjunto de dados contém 30 minutos de gravações: 10 minutos por palavra-alvo mais 3 minutos de ruído de fundo ambiente. Cada clipe de 1 segundo captura uma única fala, e todos os arquivos são rotulados adequadamente no Edge Impulse.

Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense

Amostras de fundo ajudam o modelo a diferenciar fala de não-fala.

Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense

Design do Modelo

O Edge Impulse automatiza a maioria das etapas de pré-processamento. O áudio é convertido em série temporal, janelado e transformado usando características MFCC. Uma CNN leve então classifica cada janela em uma de quatro classes: "sim", "oui", "yes" ou fundo.

Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense

MFCCs de amostra e a arquitetura da rede são visualizados no painel de treinamento.

Treinamento e Otimização para Arduino Nano 33 BLE Sense

O EON Tuner explora automaticamente dezenas de configurações de modelo, pontuando cada uma por precisão, tempo de inferência, uso de RAM e flash. Para este projeto, o modelo mais rápido entre os 5 melhores em precisão foi selecionado.

Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense

Testes

Após o treinamento, um novo conjunto de teste confirmou desempenho robusto. A confiança de classificação consistentemente excedeu 80% para as palavras-alvo.

Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense

Implantação

A implantação é simplificada via biblioteca Arduino do Edge Impulse. O arquivo de cabeçalho gerado é importado na Arduino IDE, então personalizado para controlar três servos SG90 que exibem bandeiras.

Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense
Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense

Visão Geral do Código

O código-fonte (disponível no GitHub) estende o template do Edge Impulse com lógica de controle de servo. Adições principais incluem:

  1. Integração de Adafruit_PWMServoDriver.h para controle PWM do PCA9685.
  2. Função servos_selector que aciona a bandeira correta baseada na confiança do modelo.
  3. Lógica condicional que dispara servos_selector quando uma classificação excede 80% de confiança.
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;
    }
  }
}

Design do Circuito

O microcontrolador é alimentado por uma bateria de 9V e usa uma placa PCA9685 para acionar três servos SG90. O pino de 12V da placa é conectado à bateria, enquanto as saídas PWM acionam os servos via interface I2C do PCA9685.

Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense

Com o hardware, software e pipeline de dados em ordem, o detector de idiomas TinyML está pronto para implantação.

Código

Repositório GitHub: Código completo do projeto

Peças Personalizadas e Gabinetes

Arquivos de impressão 3D disponíveis no repositório do projeto.

Esquemáticos

Arquivo Fritzing: languagedetection_9RxXhRX5sj.fzz

Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense

Processo de manufatura

  1. Construa um Jogo em Tempo Real com Giroscópio: Arduino Nano + Sensor MPU-6050
  2. Dados Digital com Arduino: Gere Números Aleatórios 1-6 em LCD 16x2
  3. Construa um Homem de Ferro com Arduino: Componentes, Sensores e Guia Passo a Passo
  4. Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
  5. Controlador de Umidificador DIY com Arduino e Relé – Configuração Segura de Alta Tensão
  6. Medição de Distância em Tempo Real com Sonar Arduino e Visualização no Processing
  7. MobBob: Construa Seu Próprio Robô Arduino, Controlado via Smartphone Android
  8. Lâmpada de Mesa Reativa a Áudio com Arduino Nano
  9. Jogo Pong Neon em Matriz NeoPixel com Arduino Nano
  10. Volante Joystick Arduino Personalizado para Jogos