EUR | USD

Concevez rapidement votre propre dispositif de contrôle gestuel 3D à faible coût

Par Jacob Beningo

Avec la contribution de Rédacteurs nord-américains de Digi-Key

Les poignées, boutons, leviers et écrans tactiles sont généralement les outils que les êtres humains utilisent pour interagir avec les machines et les dispositifs embarqués. Cependant, les récentes améliorations de la technologie des capteurs permettent dorénavant aux développeurs d'ajouter un contrôle gestuel en trois dimensions (3D) à leurs produits.

Selon la technologie utilisée, l'achat et l'intégration d'un dispositif de contrôle gestuel peuvent coûter cher. Toutefois, il existe une grande variété de technologies de capteurs gestuels disponibles, allant de capteurs bon marché qui utilisent des LED infrarouges et des photodiodes pour détecter les mouvements aux caméras de reconnaissance gestuelle hors de prix. Les capteurs gestuels infrarouges sont peu coûteux et il est possible de les relier numériquement à un microcontrôleur à faible coût. De plus, en utilisant quelques logiciels, ils peuvent être suffisamment précis pour de nombreuses applications.

Cet article s'intéresse au contrôle gestuel à l'aide de l'APDS-9960 de Broadcom, un capteur de contrôle gestuel infrarouge (IR) pouvant être facilement intégré à presque tous les systèmes embarqués.

Capteurs de gestes infrarouges

La théorie sur laquelle reposent les capteurs de gestes infrarouges est relativement simple. Lors de la détection d'un geste de la main, les développeurs peuvent vouloir détecter différents gestes :

  • Haut/bas
  • Gauche/droite
  • Avant/arrière

Dans chacun de ces cas, le capteur doit pouvoir détecter la direction du mouvement. Pour ce faire, le capteur utilise deux composants principaux : une diode électroluminescente (LED) et des photodiodes multidirectionnelles. Les photodiodes directionnelles sont simplement quatre photodiodes au moins, placées à une distance prédéfinie de la LED infrarouge. Par exemple, le capteur de lumière ambiante, de proximité et de geste APDS-9960 de Broadcom positionne ses photodiodes selon un motif en losange, chaque diode ayant un spécificateur de direction tel que haut, bas, gauche et droite (Figure 1).

Schéma de l'APDS-9960 de BroadcomFigure 1 : L'APDS-9960 de Broadcom est doté d'une LED infrarouge intégrée et de quatre photodiodes directionnelles qui détectent l'énergie infrarouge réfléchie pouvant être analysée pour un profil de geste. (Source de l'image : Broadcom)

Lorsque la LED transmet de l'énergie infrarouge, celle-ci est émise dans un espace vide à moins qu'un objet, par exemple une main, ne la reflète. L'énergie réfléchie est détectée par les photodiodes à différentes intensités en fonction de la position de l'objet. Par exemple, une photodiode le long du front montant du geste reçoit initialement moins d'énergie réfléchie qu'une photodiode au niveau du front descendant, ce qui donne à une photodiode une valeur de comptage supérieure à l'autre. Si vous prenez des mesures au fil du temps et à mesure que le geste est effectué, les photodiodes détectent différentes intensités de réflexion sur les différentes diodes. Il est possible par la suite d'analyser ce flux d'informations de direction pour déterminer le geste.

Par exemple, si un utilisateur devait glisser sa main du haut vers le bas du capteur, au début du geste, la photodiode en aval détecterait une lumière réfléchie incidente plus importante que la photodiode en amont. Au fur et à mesure que le geste se produit, la main se déplace jusqu'à un point où les deux diodes reçoivent une quantité égale d'énergie. Lorsque le geste est terminé, la photodiode en aval reçoit moins de lumière et la photodiode en amont en reçoit davantage, en inversant la courbe et la phase des photodiodes (Figure 2).

Graphique des courbes de photodiode de l'APDS-9960 de BroadcomFigure 2 : Un mouvement de geste vers le bas à travers l'APDS-9960 de Broadcom génère ces courbes de photodiode où la courbe de front indique la direction du geste. (Source de l'image : Broadcom)

Ayant compris la génération des données pour un geste, l'étape suivante consiste à examiner comment établir une interface avec l'APDS-9960.

Interfaçage avec le dispositif de contrôle gestuel APDS-9960 de Broadcom

L'APDS-9960 est livré dans un boîtier à montage en surface à huit broches (CMS-8) qui occupe un espace carte minimal sur le circuit imprimé (Figure 3). Le capteur ne mesure que 3,94 mm × 2,36 mm × 1,35 mm. Le boîtier contient les broches d'alimentation et de masse normales ainsi qu'une interface I2C pour une connexion numérique à un microcontrôleur et des broches pour la personnalisation des circuits de commande de LED. Le boîtier contient également une broche d'interruption pour informer le microcontrôleur que des données gestuelles sont disponibles pour le traitement.

Image de l'APDS-9960 de Broadcom dans un boîtier CMS-8 compact à montage en surfaceFigure 3 : L'APDS-9960 est livré dans un boîtier CMS-8 compact à montage en surface qui minimise l'espace carte. (Source de l'image : Broadcom)

Il existe différentes options pour concevoir un prototype et établir un interfaçage avec l'APDS-9960. Par exemple, la carte d'évaluation APDS-9960 de SparkFun fournit une carte Breakout relativement petite comprenant des circuits de commande de LED, ce qui la rend prête à l'emploi (Figure 4). Un développeur doit tout simplement souder une embase afin de relier l'alimentation et la masse, relier le bus I2C et la broche d'interruption en option à un microcontrôleur et commencer à développer son logiciel embarqué. La carte SparkFun comprend également des trous de montage pour permettre de l'insérer dans une conception si l'utilisation d'une carte existante convient à l'application.

Image de la carte d'évaluation APDS-9960 de SparkFunFigure 4 : La carte d'évaluation SparkFun APDS-9960 dispose de tous les circuits intégrés nécessaires pour démarrer avec le contrôle gestuel. (Source de l'image : Digi-Key Electronics)

Les développeurs peuvent également utiliser la carte Breakout APDS-9960 d'Adafruit, une autre solution tout-en-un (Figure 5). La carte Breakout d'Adafruit est intéressante, car elle est non seulement petite, mais elle contient également un régulateur intégré 3 V qui peut servir à alimenter des circuits supplémentaires tels qu'une LED d'alimentation ou même un microcontrôleur basse consommation. En plus de cela, Adafruit fournit aux développeurs un guide d'utilisation complet de la carte Breakout APDS-9960, ainsi que plusieurs bibliothèques de logiciels permettant de se connecter à des cartes Arduino ou à des cartes de développement exécutant Python. Cela fait de l'utilisation de l'APDS-9960 une expérience prête à l'emploi et peut réduire considérablement le temps qu'un développeur consacre au démarrage du capteur.

Image de la carte Breakout APDS-9960 d'AdafruitFigure 5 : La carte Breakout APDS-9960 d'Adafruit comprend l'APDS-9960 ainsi qu'un régulateur intégré 3 V et des circuits de conversion de tension I2C pour prendre en charge les bus de 3 V ou 5 V. (Source de l'image : Digi-Key Electronics)

Le moyen le plus simple de relier l'une ou l'autre de ces cartes Breakout consiste à souder les embases séparables 22-28-4255 de Molex aux cartes. Le meilleur moyen est de placer les embases face vers le bas pour fournir plusieurs avantages. Premièrement, cela permet de brancher la carte dans un montage d'essai comme le kit de montage d'essai sans soudure 340-002-1 de Digilent (Figure 6). Deuxièmement, cela permet de garder la surface supérieure de la carte dégagée, laissant suffisamment de place à une main pour faire des gestes sans attraper accidentellement des fils suspendus aux embases.

Image de la carte Breakout APDS-9960 d'AdafruitFigure 6 : La carte Breakout APDS-9960 d'Adafruit a été soudée et préparée sur un montage d'essai sans soudure de Digilent. (Source de l'image : Adafruit)

À ce stade, l'alimentation et la masse doivent être câblées et les lignes I2C doivent être câblées à la carte de développement de microcontrôleur souhaitée. Vous pouvez utiliser n'importe quelle carte de développement munie d'un microcontrôleur. Cependant, le kit de découverte IoT B-L475E-IOT01A2 STM32L475 de STMicroelectronics pour nœud IoT est un excellent choix (Figure 7). Cette carte de développement comporte des embases Arduino et est également prise en charge par MicroPython, qu'il est possible de programmer sur la carte avec un minimum d'effort. Une fois que cela est fait, les scripts Python peuvent servir pour établir un interfaçage avec le capteur de gestes, rendant ainsi le contrôle des gestes non seulement faisable, mais presque simple.

Image du kit de découverte IoT STM32L475 pour nœud IoT de STMicroelectronicsFigure 7 : Le kit de découverte STM32L475 pour nœud IoT inclut des embases Arduino pouvant être facilement reliées aux cartes Breakout APDS-9960. (Source de l'image : STMicroelectronics)

Détecter les gestes à l'aide de Python

L'obtention de données gestuelles à partir de l'APDS-9960 n'est pas compliquée, mais le développeur doit lire attentivement la fiche technique. L'APDS-9960 intègre plusieurs fonctionnalités, notamment :

  • Détection de gestes
  • Détection de lumière ambiante
  • Détection de couleurs RVB
  • Détection de proximité

Celles-ci sont toutes contrôlées via un automate qui s'exécute en fonction de la configuration des registres pour l'application. Par exemple, une excellente technique pour empêcher le moteur de gestes de s'exécuter à tout moment consiste à utiliser le moteur de détection de proximité pour détecter la présence d'une main. Une fois que l'énergie infrarouge réfléchie atteint un nombre prédéfini, l'état du moteur de proximité passe au moteur de gestes, qui mesure les photodiodes de direction et place la valeur mesurée dans une mémoire tampon de type premier entré/premier sorti (FIFO). Afin d'activer cette capacité, il est indispensable de configurer le registre de contrôle pour permettre la proximité et de définir un seuil de nombre.

En fonction des gestes requis par l'application, un développeur peut être amené à écrire des algorithmes pour détecter des gestes spécifiques. Toutefois, pour les gestes courants tels que haut/bas et gauche/droite, les développeurs peuvent exploiter la bibliothèque CircuitPython APDS-9960 d'Adafruit. Une fois la bibliothèque copiée sur le dispositif Python, vous pouvez l'importer à l'aide du code présenté dans la Liste 1. Ce code sert à importer la bibliothèque APDS-9960 ainsi que plusieurs bibliothèques prenant en charge le bus I2C.

Copier import board import busio import adafruit_apds9960.apds9960 i2c = busio.I2C(board.SCL, board.SDA) sensor = adafruit_apds9960.apds9960.APDS9960(i2c) 

Liste 1 : Code d'initialisation de la bibliothèque et des importations CircuitPython pour l'interfaçage avec le dispositif de contrôle gestuel APDS-9960. (Source de l'image : Adafruit)

L'objet capteur est une instance de la bibliothèque APDS-9960. Nous verrons dans un instant qu'il est très facile à utiliser. Pour activer les gestes, un développeur doit uniquement activer la fonctionnalité de gestes à l'aide du code suivant :

Copier sensor.enable_gesture = True The main program loop setup to read the gesture is itself just a few lines of code (Listing 2).
gesture = sensor.gesture() while gesture == 0: gesture = sensor.gesture() print('Saw gesture: {0}'.format(gesture)) 

Liste 2 : Détecter un geste est aussi simple que d'appeler plusieurs fois une méthode de bibliothèque simple. (Source de l'image : Adafruit)

Comme vous pouvez le remarquer à la lecture de ce code, si un geste est vu, le geste détecté est inscrit à l'écran (Figure 8).

Image d'un exemple de résultat de sortie de geste d'exemple de la bibliothèque CircuitPython APDS-9960 d'AdafruitFigure 8 : Exemple de résultat de sortie de geste de la bibliothèque CircuitPython APDS-9960 d'Adafruit. (Source de l'image : Adafruit)

La sortie de geste est donnée par un nombre, qui peut être facilement converti en utilisant la clé suivante :

0 = Aucun geste détecté

1 = geste Haut détecté

2 = geste Bas détecté

3 = geste Gauche détecté

4 = geste Droit détecté

Comme indiqué, l'utilisation d'une bibliothèque préexistante peut faciliter la reconnaissance gestuelle de base en utilisant seulement quelques lignes de code. Des gestes plus complexes nécessiteraient de modifier la bibliothèque pour analyser les données gestuelles brutes.

Trucs et astuces pour créer un dispositif de contrôle gestuel

La fabrication et l'intégration d'un capteur de contrôle gestuel dans un produit impliquent quelques défis. Voici quelques « conseils et astuces » que les développeurs doivent prendre en compte lorsqu'ils utilisent des dispositifs de contrôle gestuel infrarouges :

  • Utilisez le détecteur de proximité interne du capteur de gestes pour déclencher le moteur de contrôle gestuel afin de minimiser les démarrages non valides.
  • Commencez avec une bibliothèque de gestes existante et créez des gestes supplémentaires en plus des fonctionnalités existantes.
  • Ajustez le gain sur les photodiodes aux valeurs qui conviennent le mieux à l'application du geste final.
  • Ajustez l'intensité de la sortie de la LED aux valeurs les mieux adaptées à l'application. Cela peut nécessiter quelques ajustements afin d'obtenir des résultats reproductibles.
  • Un développeur doit commencer le développement d'une application gestuelle par un développement logiciel de haut niveau jusqu'à ce qu'il comprenne le capteur, puis il peut passer au code de niveau inférieur.

En suivant ces conseils, vous garantissez que les développeurs minimisent le temps passé à mettre en marche un dispositif de contrôle gestuel infrarouge.

Conclusion

Il existe une pression constante pour commencer à interagir avec les machines de manière plus naturelle et intuitive, et l'une des principales options consiste à utiliser la technologie de contrôle gestuel. Bien qu'il existe de nombreux types de technologies de contrôle gestuel, le capteur de gestes infrarouge est le moins coûteux et le plus simple à utiliser. Comme indiqué, l'intégration d'un capteur de gestes à un microcontrôleur n'implique pas forcément une activité fastidieuse, à condition que les développeurs exploitent les technologies matérielles et logicielles existantes.

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de Digi-Key Electronics ni les politiques officielles de la société.

À propos de l'auteur

Jacob Beningo

Jacob Beningo est un consultant en logiciels embarqués, et il travaille actuellement avec des clients dans plus d'une douzaine de pays pour transformer radicalement leurs activités en améliorant la qualité, les coûts et les délais de commercialisation des produits. Il a publié plus de 200 articles sur les techniques de développement de logiciels embarqués. Jacob Beningo est un conférencier et un formateur technique recherché, et il est titulaire de trois diplômes, dont un master en ingénierie de l'Université du Michigan. N'hésitez pas à le contacter à l'adresse jacob@beningo.com et sur son site Web www.beningo.com, et abonnez-vous à sa newsletter mensuelle Embedded Bytes.

À propos de l'éditeur

Rédacteurs nord-américains de Digi-Key