Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense

Onderdelen en benodigdheden

Arduino Nano 33 BLE Sense × 1
National Control Devices PCA9685 8-kanaals 8W 12V FET Driver Proportionele Klep Controller met I2C-interface × 1
SG90 Micro-servomotor × 3
9V Batterijclip × 1

Benodigde tools en machines

  • 3D-printer (generiek)
  • Solderbout (generiek)

Apps en online diensten

  • Edge Impulse Studio
  • Arduino IDE
  • Autodesk Fusion 360

Over dit project

Overzicht

Dit project demonstreert hoe je een TinyML-taaldetector bouwt op de Arduino Nano 33 BLE Sense met Edge Impulse Studio. Het apparaat luistert continu naar drie gesproken woorden — "si" (Italiaans), "oui" (Frans) en "yes" (Engels) — en activeert de bijbehorende vlag wanneer een woord wordt gedetecteerd.

De workflow omvat:

  • Datasetcreatie en sampling
  • Modelontwerp en training
  • Prestatie-evaluatie
  • Hardware-specifieke optimalisatie met de EON Tuner
  • Implementatie en integratie met servogestuurde vlaggen
TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense

Sampling & Datasetcreatie

De dataset bevat 30 minuten opnames: 10 minuten per doelwoord plus 3 minuten omgevingsgeluid. Elke 1-seconde clip vangt een enkele uiting op, en alle bestanden zijn gelabeld in Edge Impulse.

TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense

Achtergrondmonsters helpen het model om spraak van niet-spraak te onderscheiden.

TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense

Modelontwerp

Edge Impulse automatiseert de meeste voorafverwerkingsstappen. Audio wordt omgezet naar een tijdreeks, in vensters verdeeld en getransformeerd met MFCC-karakteristieken. Een lichtgewicht CNN classificeert vervolgens elk venster in een van vier klassen: "si", "oui", "yes" of achtergrond.

TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense

Voorbeeld-MFCCs en de netwerkarchitectuur worden gevisualiseerd in het trainingsdashboard.

Training & Arduino-optimalisatie

De EON Tuner verkent automatisch tientallen modelconfiguraties, waarbij elke configuratie wordt beoordeeld op nauwkeurigheid, inferentietijd, RAM- en flash-gebruik. Voor dit project werd het snelste model geselecteerd onder de top-5 nauwkeurigheden.

TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense

Testen

Na training bevestigde een verse testset robuuste prestaties. Classificatievertrouwen overschreed consistent 80% voor de doelwoorden.

TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense

Implementatie

Implementatie is gestroomlijnd via de Edge Impulse Arduino-bibliotheek. Het gegenereerde header-bestand wordt in de Arduino IDE geplaatst en vervolgens aangepast om drie SG90-servos te besturen die vlaggen tonen.

TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense
TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense

Code-overzicht

De broncode (beschikbaar op GitHub) breidt de Edge Impulse-sjabloon uit met servo-besturingslogica. Belangrijke toevoegingen zijn:

  1. Integratie van Adafruit_PWMServoDriver.h voor PCA9685 PWM-besturing.
  2. Een servos_selector functie die de juiste vlag activeert op basis van de vertrouwen van het model.
  3. Conditionele logica die servos_selector activeert wanneer een classificatie 80% vertrouwen overschrijdt.
void servos_selector(int iter){
  unsigned long time_now = millis();
  if (time_now - time_was > 2000){
    time_was = time_now;
    switch (iter){
      case 0: // Italiaans
        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: // Frans
        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: // Engels
        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;
    }
  }
}

Elektrisch schema

De microcontroller wordt gevoed door een 9V-batterij en gebruikt een PCA9685-bord om drie SG90-servos aan te sturen. De 12V-pin van het bord is verbonden met de batterij, terwijl de PWM-uitgangen de servos via de I2C-interface van de PCA9685 aansturen.

TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense

Met de hardware, software en datapipeline op zijn plaats is de TinyML-taaldetector klaar voor implementatie.

Code

Broncode op GitHub

Aangepaste onderdelen en behuizingen

Geen aangepaste onderdelen gespecificeerd.

Schema's

Fritzing-bestand: languagedetection_9RxXhRX5sj.fzz

TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense

Productieproces

  1. Bouw een real-time gyroscoop-spel met Arduino Nano & MPU-6050 sensor
  2. Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
  3. Een Arduino Iron Man bouwen: onderdelen, sensoren en stapsgewijze handleiding
  4. Find Me: Slimme Item Locator met Arduino en Bluetooth
  5. DIY Arduino Luchtbevochtiger Controller met Relais – Veilige Hoogspanningsopstelling
  6. Realtime afstandsmeting met Arduino Sonar & Processing visualisatie
  7. MobBob: Bouw Je Eigen Arduino Robot, Naadloos Bestuurd via Android Smartphone
  8. Een audio-reactieve bureaulamp bouwen met Arduino Nano
  9. NeoPixel Matrix Pong op Arduino Nano: Bouw je eigen neon Pong-spel
  10. Bouw een Aangepaste Arduino Joystick Stuurwiel voor Gaming
  11. Arduino 101: Bouw een teller met DHT11 sensor & LCD display