Reconnaissance de Gestes avec ESP32 et Accéléromètre Arduino 101 – Tutoriel DIY Facile
Composants et Fournitures
| Composant | Description | Qté |
|---|---|---|
| Arduino 101 | Accéléromètre intégré (pas de composant supplémentaire) | 1 |
| Arduino UNO (alternative) | Nécessite accéléromètre externe (ADXL335) | 1 |
| Accéléromètre ADXL335 (Adafruit ou SparkFun) | Si Arduino ≠ 101 | 1 |
À Propos du Projet
Vue d'Ensemble
Ce tutoriel montre comment intégrer la reconnaissance de gestes basique dans vos projets Arduino via le système ESP (Gesture Recognition Toolkit). Exemples : coups de tennis (coup droit, revers, service), mouvements de danse, haltérophilie.
L'accéléromètre envoie les données à l'application ESP sur l'ordinateur. ESP utilise Dynamic Time Warping (DTW) pour comparer le signal en direct aux exemples enregistrés. En cas de correspondance (seuil configurable), un message est renvoyé à l'Arduino.
Téléchargements
- Mac :
ESP-Gestures-Mac-20161028.zip - Windows :
ESP-Gestures-Win-20161028.zip(+ Visual C++ Redistributable) - Ubuntu :
ESP-Gestures-Ubuntu-20161028.tar.gz - Exemples gestes tennis :
ForehandBackhandServe.grt
Étape 1 : Connecter l'Accéléromètre
Arduino 101 : rien à faire (intégré).
Autre Arduino : souder headers sur breakout ADXL335, brancher directement sur pins analogiques (ex. X→A5, Y→A4, Z→A3) ou via breadboard (VCC→5V, GND→GND, X/Y/Z→A0/A1/A2).
Étape 2 : Téléverser le Code Arduino
Deux versions fournies :
• Arduino ADXL335 Code : lecture A5/A4/A3, envoi série 9600 bauds, tab-séparé.
• Arduino 101 Accelerometer Code : lecture accéléromètre intégré, même format sortie.
Vérifier la correspondance pins/code, sélectionner carte/port, téléverser.
Étape 3 : Vérifier les Données (Moniteur Série)
Ouvrir moniteur série 9600 bauds → 3 colonnes de valeurs changent au mouvement. Utiliser le Traceur Série pour visualiser. Fermer moniteur/traceur avant de lancer ESP (sinon conflit port série).
Étape 4 : Lancer ESP et Sélectionner le Port Série
Ouvrir application ESP → menu Configuration → "Select a serial port" → choisir port Arduino. Données brutes apparaissent : rouge=X, vert=Y, bleu=Z.
Étape 5 : Enregistrer Échantillons d'Étalonnage
- Poser accéléromètre à plat, Z vers le haut → maintenir touche 1 (échantillon "Upright").
- Retourner accéléromètre (Z vers le bas) → maintenir 2 (échantillon "Upside Down").
ESP déduit 0g (X,Y) et 1g (Z).
Étape 6 : Enregistrer Exemples de Gestes
Onglet "Training" (touche T). Jusqu'à 9 gestes.
Maintenir la touche du label (ex. 1) pendant le geste. Même orientation que lors de l'utilisation future.
Bon échantillon : geste complet, peu de ligne plate au début/fin. 5-10 échantillons par geste recommandés. Qualité > quantité.
Outils : supprimer (case "delete"), rogner (sélection plot + "trim"), ré-étiqueter ("re-label"), renommer ("rename").
Étape 7 : Entraîner le Système
Touche t → "training successful". Faire un geste → nom apparaît sur plot temps réel. Répéter entraînement/test souvent.
Étape 8 : Ajuster la Configuration
Menu "click to open configuration" :
• Variability : tolérance différence geste/exemple (↑ = plus tolérant).
• Timeout : délai (ms) avant nouvelle reconnaissance (↓ = gestes rapprochés détectés, mais risque doublons).
Re-entraîner (t) après modification.
Étape 9 : Intégrer dans Votre Projet Arduino
ESP envoie le numéro du geste reconnu (ex. "1\n") sur port série → Arduino lit et réagit. Aussi via TCP localhost:5204 (ex. jeu Processing).
Fonctionnement (DTW)
Dynamic Time Warping : étire/comprime le signal live pour le matcher aux exemples. Distance minimale < seuil → reconnaissance. Seuil réglable via "variability".
ESP basé sur GRT (Gesture Recognition Toolkit) : autres algos ML pour détection pose, couleur, audio. Voir GitHub ESP.
Codes Arduino
Code ADXL335
X→A5, Y→A4, Z→A3. Sortie série 9600 bauds, tab-séparé, newline-terminé.
Code Arduino 101
Lecture accéléromètre intégré. Sortie série 9600 bauds, tab-séparé, newline-terminé.
Processus de fabrication
- Système de pointage RFID fiable avec Arduino et Python (base de données phpMyAdmin)
- Construire une télécommande Android universelle avec Arduino, 1Sheeld et contrôle IR
- Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
- Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel
- Mesure Précise de Fréquence et Rapport Cyclique avec Arduino UNO
- Contrôlez un rover Arduino avec Firmata et une manette Xbox One
- Mesure de distance en temps réel par sonar Arduino et visualisation Processing
- Contrôle fluide de la luminosité LED avec Bolt IoT et Arduino UNO
- Construire une Boussole Numérique Temps Réel avec Arduino et Processing