Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense

Composants et fournitures

ComposantQuantité
Arduino Nano 33 BLE Sense1
Contrôleur proportionnel PCA9685 8 canaux 8W 12V (I2C)1
Micro-servomoteur SG903
Connecteur pile 9V1

Outils et machines nécessaires

Applications et services en ligne

À propos du projet

Vue d'ensemble

Ce projet montre comment construire un détecteur de langue TinyML sur l'Arduino Nano 33 BLE Sense avec Edge Impulse Studio. L'appareil écoute en continu trois mots prononcés – « si » (italien), « oui » (français) et « yes » (anglais) – et active le drapeau correspondant lorsqu'un mot est détecté.

Le flux de travail comprend :

Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense

Échantillonnage et création du jeu de données

Le jeu de données contient 30 minutes d'enregistrements : 10 minutes par mot cible plus 3 minutes de bruit de fond ambiant. Chaque clip de 1 seconde capture une seule énonciation, et tous les fichiers sont étiquetés dans Edge Impulse.

Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense

Les échantillons de fond aident le modèle à différencier la parole du non-parole.

Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense

Conception du modèle

Edge Impulse automatise la plupart des étapes de prétraitement. L'audio est converti en série temporelle, fenêtré et transformé via des caractéristiques MFCC. Un CNN léger classe ensuite chaque fenêtre en l'une des quatre classes : « si », « oui », « yes » ou fond.

Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense

Entraînement et optimisation pour Arduino Nano 33 BLE Sense

L'EON Tuner explore automatiquement des dizaines de configurations de modèles, les notant selon la précision, le temps d'inférence, la RAM et la mémoire flash. Pour ce projet, le modèle le plus rapide parmi les 5 meilleures précisions a été sélectionné.

Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense

Test

Après l'entraînement, un jeu de test frais a confirmé une performance robuste. La confiance de classification dépassait constamment 80 % pour les mots cibles.

Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense

Déploiement

Le déploiement est simplifié via la bibliothèque Arduino Edge Impulse. Le fichier d'en-tête généré est ajouté à l'Arduino IDE, puis personnalisé pour contrôler trois servos SG90 qui actionnent les drapeaux.

Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense
Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense

Code – Aperçu

Le code source (disponible sur GitHub) étend le modèle Edge Impulse avec la logique de contrôle des servos. Les ajouts clés incluent :

  1. Intégration de Adafruit_PWMServoDriver.h pour le contrôle PWM du PCA9685.
  2. Une fonction servos_selector qui active le drapeau approprié selon la confiance du modèle.
  3. Une logique conditionnelle déclenchant servos_selector lorsque la classification dépasse 80 % de confiance.
void servos_selector(int iter){
  unsigned long time_now = millis();
  if (time_now - time_was > 2000){
    time_was = time_now;
    switch (iter){
      case 0: // Italien
        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: // Français
        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: // Anglais
        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;
    }
  }
}

Conception du circuit

Le microcontrôleur est alimenté par une pile 9V et utilise une carte PCA9685 pour piloter trois servos SG90. La broche 12V de la carte est connectée à la pile, tandis que les sorties PWM commandent les servos via l'interface I2C du PCA9685.

Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense

Avec le matériel, le logiciel et le pipeline de données en place, le détecteur de langue TinyML est prêt pour le déploiement.

Code

Code source sur GitHub

Pièces personnalisées et boîtiers

Aucune pièce personnalisée n'est requise pour ce projet.

Schémas

Fichier Fritzing : languagedetection_9RxXhRX5sj.fzz

Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense

Processus de fabrication

  1. Construire un jeu gyroscopique temps réel avec Arduino Nano et capteur MPU-6050
  2. Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
  3. Construire un Iron Man animé avec Arduino : capteurs, sons et relais
  4. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  5. Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
  6. Mesure de distance en temps réel par sonar Arduino et visualisation Processing
  7. MobBob : Construisez votre propre robot Arduino, contrôlé via smartphone Android
  8. Construire une lampe de bureau réactive à l'audio avec Arduino Nano
  9. Jeu Pong sur Matrice NeoPixel avec Arduino Nano