Un vibreur bluetooth comme feedback pour une interface en JS (part 1)


(cover générée par IA)
Pour un enfant souffrant d’un lourd retard cognitif et notamment pour un enfant non-verbal, on essaie d’établir des canaux de communication alternatifs. Une des pistes est d’utiliser une tablette tactile et une interface simple permettant de jouer des sons. Via de gros boutons sur l’interface, on peut essayer de permettre à l’enfant d’exprimer par exemple un choix entre deux possibilités.
Il existe déjà un certain nombre de solutions dans le circuit commercial assez fermé du matériel adapté à ce genre de rééducation et aides spécialisées. Comme d’habitude, ça coûte un prix exorbitant et dans bien des cas c’est difficile à supporter quand on a quelque intérêt dans le DIY tech en général.
Ici, connaissant bien cet enfant, j’ai voulu miser à la fois sur le feedback visuel (changement de couleur des boutons au clic), sonore (il est sera possible d’enregistrer un son à affecter à un bouton en particulier), mais également sur le feedback haptique avec une vibration comme celle qu’on peut trouver dans une manette de jeu.
Il y a des contraintes particulières :
Je ne me vois travailler sur ce genre d’interface pour tablette tactile qu’en javascript dans un navigateur/une application ionic ou electron. Il faut donc un mode de communication hardware adapté.
C’est un enfant qui aime beaucoup bouger et ne fait pas particulièrement attention à son environnement. Il faut donc une solution complètement sans fil, compacte et solide.
Il faut que cette communication sans fil ait le moins de latence possible, sans quoi la notion de feedback sera perdue. Il faut un retour immédiat à l’action qui a été faite par l’enfant !
Choix du matériel
Pour la question de la communication sans fil, les choix sont assez restreints. En tout cas je me suis vite arrêté sur la solution du bluetooth, puisque le wifi sera d’une part très pénible à configurer (reconfigurer à chaque changement de réseau, une belle galère à chaque fois) et d’autre part induirait sans doute beaucoup trop de latence. La solution d’une communication série via du 433Mhz aurait sans doute pu fonctionner mais je trouve que ça manque de standard. En plus de ça, jusqu’ici toutes mes tentatives de faire fonctionner ce genre de matériel ont lamentablement échoué ! Le bluetooth lui est nativement intégré à la plupart des navigateurs récents et permet une communication avec une latence très faible. C’est suffisamment standardisé pour que l’écart technique entre le POC et le produit final semble assez réduit, et l’implémentation est assurée sur n’importe quelle solution à venir (comme ça pas besoin de se restreindre au javascript et aux navigateur web).
Le boitier de ce vibreur doit donc être compact. Il faut trouver la solution la plus réduite possible pour :
la batterie
le microcontrôleur
le module bluetooth
Pour la question du microcontrôleur et du bluetooth, la solution semble toute désignée : les modules ESP32-WROOM-32 sont programmables via l’IDE Arduino et proposent une interface BLE integrée. Je vois en écrivant ce billet qu’ils sont en NRND (Not Recommended for New Designs), mais il se trouve que j’en ai encore en stock alors c’est ce que j’utiliserai ! J’imagine qu’on trouve facilement ce genre de modules ESP32 dans des versions plus récentes, avec probablement des optimisations intéressantes. J’y jetterai un oeil un jour :)
Pour la batterie, j’ai pris cette petite batterie 3.7v, qui suffira à alimenter l’ESP32. Ce dernier prend du 3.3v donc j’utiliserai un petit régulateur pour être sûr de ne pas tuer l’ensemble avec du 4.2v lorsque la batterie est à pleine charge. En plus de ce régulateur, j’y ajoute un BMS. Je n’ai que ces gros modules sous la main, mais ça ira pour le POC.
A l’origine, j’ai imaginé ce projet parce que j’avais récupéré quelques vibreurs de manettes de XBox. J’ai pu tester deux trois choses fondamentales avec ces vibreurs, mais ils sont bien trop gros. J’ai donc mis la main sur ces tout petits vibreurs sur AliExpress. La vibration qu’ils assurent est assez importante et leur facteur de forme permet quand même une integration compacte.
Le montage
Je reviens sur mes contraintes : il faut que le tout soit compact et solide, mais également léger. La solution sur laquelle je me suis arrêté pour le moment est celle de monter ce vibreur sur un bracelet. Attaché à la main qui va manipuler la tablette, il me semble que c’est le mieux adapté pour que le feedback soit associé directement à l’action par l’enfant.
Il me restait une petite longueur de bande en nylon qui parait faire tout à fait l’affaire. En plaçant mes composants sur la bande, j’ai tout de suite identifié une première idée : monter le moteur, la batterie et l’ESP sur la longueur, en utilisant des nappes de fils pour connecter tout le monde, plutôt que de tout monter à l’intérieur d’un boîtier. J’imagine donc à la place trois petits boîtiers (batterie + régulateur/BMS + vibreur).
Ces boîtiers seront imprimés en PLA, je vais attendre d’avoir terminé l’électronique pour passer à cette partie.
Ce premier assemblage fonctionne, et je reviendrai en détail sur ces étapes dans un autre article. J’ai également déjà prototypé une petite interface surtout pour le POC concernant la communication Bluetooth dans le navigateur avec javascript. Là encore, je détaillerai tout ça dans un prochain article.
Côté purement électronique, comme on peut le voir sur la photo ci-dessus, il me manque l’assemblage de la batterie. Je dois ajouter un connecteur JST sur la batterie elle-même avant de faire les tests (j’ai déjà testé avec une autre batterie).
Prochaine étape…
Montage de la batterie [article à venir]
Exploration du proto javascript [article à venir]
Assemblage final du premier proto [article à venir]
Subscribe to my newsletter
Read articles from Gaëtan Benaloul directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
