Sites


Fabrikarium 2016

Sonar Glove

 

 

Comment fabriquer un système de repérage d'objet à distance pour non-voyant et à très bas coût ?

Le gant sonar a pour objectif de permettre à un non-voyant de détecter des objets par vibrations à courte distance et cela pour un bas prix. Ce prototype est la continuité et des améliorations d'un précédant prototype. Le gant sonar est un prototype déjà été réalisé auparavant par l'association myHumanKit (MHK). Une documentation de ce prototype se trouve déjà sur leur site  http://myhumankit.org et au format pdf rédigé par Yves Le Chevalier membre du LABFAB de Rennes.

Prototype existant

Descriptif du prototype existant

Ce prototype a la possibilité de détecter et de localiser des objets, des obstacles à courte distance et à longue distance (maximum 2 mètres) par vibrations. Lorsqu'il rencontre un objet, le gant émet une vibration plus ou moins forte selon la distance où se trouve l'objet. Deux paires de sonar sont placées l'un du côté droit de la main et l'autre à sa gauche. La vibration se produit au niveau du poignet grâce à deux vibreurs placés à gauche et à droite du poignet. Lorsqu'il n'y a plus de vibrations, cela signifie que l'objet se trouve devant la main de l'utilisateur.

Constat

Le gant sonar fonctionne, il détecte bien un objet mais il a été remarqué que l'utilisateur ne distingue pas assez bien si la vibration est du côté droit ou gauche, du coup si l'objet est à droite ou à gauche. C'est pourquoi un nouveau prototype est mis en place pour améliorer le mode de vibration, l'esthétisme et l'autonomie du gant sonar.

Les besoins utilisateurs

Le gant sonar a pour principe de permettre à l'utilisateur non-voyant de pouvoir trouver et saisir un objet, tel qu'un verre, en étant en position statique sans tout renverser au passage. C'est pourquoi le gant doit détecter, localiser et connaître la position de l'objet assez finement. Ce gant doit également être assez simple à mettre et à retirer pour le non-voyant.
Le gant sonar doit être esthétique pour qu'il n'attire pas l’œil et avoir une bonne autonomie.

Processus de fabrication du gant sonar

Matériels

  • 1 Module NodeMCU (ESP-12) avec micro-contrôleur ESP8266 Wifi
  • 1 détecteur ultrason HC-SR04
  • 1 potentiomètre ajustable 10KΩ
  • 1 vibreur miniature (VM1201 Gotronic)
  • 1 batterie Li-Po (700mAh sur un connecteur JST)
  • 1 bouton poussoir
  • Fils électriques
  • 1 gant de vélo avec une attache scratch
  • Élastique (largeur de 3mm)
  • Ruban élastique noir (largeur de 25mm)
  • Scratch
  • 1 cordon de badge avec fermoir sécuritaire

Outils utilisés

  • L'IDE Arduino
  • Sketchup
  • Imprimante 3D

Budget

  • Module NodeMCU (ESP-12) avec micro-contrôleur ESP8266 Wifi : 15€
  • Détecteur ultrason : 3€
  • Potentiomètre : 1€
  • Vibreur : 2,5€
  • Bouton poussoir : 0,20€
  • Gant vélo : 10€
  • Scratch : 5€
  • Élastique Plat 5mm : Vendu par 5 Mètres : 2,49€
  • Ruban élastique noir (largeur 25mm , longueur 25m) : 2,94€
  • Cordon de badge avec fermoir sécuritaire : 2,50€

Budget total : entre 30 et 40 €

 

Réalisation du boîtier

Le boîtier comprend

  • 1 platine de développement NodeMCU avec ESP8266
  • 1 détecteur ultrason HC-SR04
  • 1 potentiomètre 10k
  • 1 batterie Li-Po avec un connecteur JST
  • 1 vibreur

La NodeMCU avec ESP8266

La carte Arduino ne sera pas utilisée mais sera remplacée par le module NodeMCU. Ce module est proche d'une carte Arduino. La NodeMCU a été choisi parce qu'elle offre la possibilité d'utiliser la version 12 (ESP-12) du composant ESP8266. Ce dernier étant un composant de communication Wifi mais également un microcontrôleur pouvant permettre facilement de se connecter et de transmettre sur un réseau wifi. La NodeMCU sera programmée comme un Arduino avec l'environnement de développement Arduino via USB. La partie ESP sera expliquée plus dans dans ce tutoriel.

  • Placer, sur un des côtés de la carte, les PINs du connecteur dans les trous.
  • Souder toutes les PINS du connecteurs.
  • Refaire la même chose de l'autre côté de la carte. 

 

Après avoir soudé les branches sur la carte, la prochaine étape sera de brancher le capteur permettant de détecter l'objet, dans ce cas présent le capteur ultrason sr04.

Le détecteur ultrason

Le détecteur ultrason (le sonar) est un capteur de distance ultrason qui utilise les ultrasons pour déterminer la distance d'un objet. Il permet de mesurer une distance allant de 2cm à 400cm en envoyant des signaux à une fréquence de 40kHz. Ce module contient un émetteur et un récepteur ultrason et des broches de connexion. La mesure se fait « sans contact ».

Une impulsion est envoyé sous forme d'ultrasons, lorsque cette impulsion rencontre un obstacle, elle se réfléchie pour revenir sur le récepteur du détecteur. La distance entre la main et l'objet peut être alors déterminée par la formule suivante :

d=(durée*vitesse du son)/2

Les broches de connexion

  • Vcc : Alimentation du capteur (+5V DC). Le capteur a une tension d'alimentation de 5V avec une tension minimale et maximale respectivement de 4,5V et 5,5V.
  • Trig : Trigger input. Entrée de déclenchement de la mesure. L'impulsion doit durer au moins 10µs pour que le module démarre sa lecture.
  • Echo : Echo output. Sortie de la mesure donnée en écho. C'est-à-dire que le signal a rencontré un objet et est revenu au récepteur.
  • GND : Masse de l'alimentation.

Branchement du capteur sr04 sur la NodeMCU

  • Vcc vers la broche 5V du module
  • Trig vers la broche 12
  • Echo vers la broche 14
  • GND vers la broche GND

schema branchements sonar et module

Le vibreur

Une fois un objet détecté par le capteur de distance, l'écho reçu n'est pas perceptible visiblement ni physiquement, c'est-à-dire que l'utilisateur ne saura pas qu'il a détecté un objet. C'est pourquoi un vibreur est ajouté. Le vibreur est un mini-moteur générant une vibration silencieuse. Lors du retour du signal sur le détecteur, l'utilisateur ressentira une vibration lui indiquant ainsi la présence d'un objet droit devant lui et à proximité de sa main.

Selon la distance où se trouvera l'objet, la durée d'une vibration sera plus ou moins longue. Par exemple, lorsque la main sera à 1 mètre de l'objet, la durée de la vibration sera de 150ms. Tandis que lorsque la main se trouvera à moins de 10cm de l'objet, la vibration sera continue. Ces paramètres ont été configuré en prenant exemple sur le radar de recule d'une voiture.

Le vibreur peut maintenant est branché sur la carte mais auparavant un potentiomètre ajustable va être ajouté pour permettre à l'utilisateur de régler l'intensité (+ ou – forte) de la vibration. Ce potentiomètre a une tension d'alimentation comprise entre 0 et 3,3V.
Cette étape peut être optionnelle si vous ne souhaitez pas un variateur d'intensité.
Si vous n'utilisez pas le potentiomètre, connecter le fil rouge du vibreur directement sur la broche
16 et le fil bleu sur GND du micro-contrôleur.

Le potentiomètre rotatif possède 3 branches : Entrée, Sortie et Masse. Les branchements du potentiomètre sur le module :

  • Vcc sur la broche 16 du module.
  • la sortie du potentiomètre va vers le + du vibreur (fil rouge).
  • La masse quant à lui va à la masse du détecteur ultrason.

Schéma du protoytpe avec ajout du potentiomètre

Vue du prototype sur une platine de test.

  

Programme sur Arduino

Le logiciel Arduino permet de créer, d'éditer un programme pour ensuite le compilé et le téléverser sur la carte. Il est téléchargeable sur https://www.arduino.cc/ . La version de Arduino utilisé pour ce prototype est la version 1.6.
À l'aide du logiciel Arduino, il sera possible de transmettre des instructions au microcontrôleur.

  • Ouvrir le logiciel Arduino.
  • Créer un nouveau sketch puis copier le code ci-dessous et l'enregistrer.
  • Importer la bibliothèque ESP8266WiFi.
  • Brancher le microcontrôleur sur l'ordinateur à l'aide d'un câble usb.
  • Cliquer esnuite sur le bouton « Téléverser » pour transmettre les instructions.
#include <Arduino.h>
#include <ESP8266WiFi.h>

// initialisation des variables entières
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)

// déclaration des broches nécessaires au capteur à ultrason et au vibreur
const int echoPin = 14;
const int triggerPin = 12;
const int vibratePin = 16;

// blocs d'instructions qui sont exécutées au début
void setup() {
// on souhaite communiquer avec l'ordinateur via le moniteur série
Serial.begin(9600);

// configuration des broches
pinMode(triggerPin, OUTPUT); // la broche trigger est une sortie
pinMode(echoPin, INPUT); // le capteur ultrason est une entrée
pinMode(vibratePin, OUTPUT);
}

// instructions qui sont exécutées encore et encore
void loop() {
// déclaration des variables pour le capteur ultrason. duration est le temps d'aller/retour
long duration, distance;

// distance est définie en fonction de duration
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);

// emission d'une impulsion sonore de 10 micro secondes
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);

 digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);

digitalWrite(triggerPin, LOW); // arrêt d'émission

// calcul de la distance par rapport à l'echo reçu.
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1; // distance est exprimé en centimètres

// si la distance est inférieure à 1m, au-delà de 1m, il n'y a pas de vibrations
if(distance < 100) {
// alors nous faisons vibrer notre gant à une fréquence proportionelle à la distance perçue par
// le capteur
digitalWrite(vibratePin, HIGH);
delay(150);

/* Même principe que le radar de recul des véhicules :
* plus la distance est courte, plus la période entre les vibrations est courte !
*/
if(distance < 11) {
// vibration continue pendant 1s pour une distance inférieure à 11cm
digitalWrite(vibratePin, HIGH);
delay(1000);
}

if(distance > 10) {
// au dessus de 10cm alors la vibration se fait plus ou moins vite
digitalWrite(vibratePin, LOW);
delay(duration/15);
}

// affichage de la distance dans le moniteur série
Serial.print("[SONAR] distance:");
Serial.print(distance);
Serial.println("cm:");
}
}

 La batterie et le connecteur de rechargement de la batterie

Une batterie alimente toute la partie électronique et doit pouvoir être rechargé.

  • Brancher le connecteur JST de la batterie sur le connecteur de batterie du micro-contrôleur
  • Brancher un câble USB sur le micro-contrôleur et sur un ordinateur pour recharger la batterie.

Le bouton poussoir

Grâce à l'ESP-12 du micro-contrôleur, il est possible à l'utilisateur d'effectuer une action configurée à condition de presser un bouton. Comme mentionné dans la première partie de ce tutoriel, l'ESP est un capteur Wifi pour se connecter sur un réseau Wifi.

  • 1 branche du bouton poussoir vers la masse GND
  • 1 branche du bouton poussoir vers la broche 16 du micro-contrôleur.

Dans le code Arduino précédent :

  • Importer les bibliothèques ESP8266WiFiMulti et ESP8266HTTPClient et les inclure dans le fichier.

    #include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
ESP8266WiFiMulti WiFiMulti;
  • Compléter les constantes ssid et password qui correspondent respectivement au nom de votre réseau Wifi et son mot de passe.
    // initialisation des constantes spécifiques à votre installation
const char* ssid = "";
const char* password = "";
  • Déclarer la broche du bouton et de la LED
    // déclaration de la broche "bouton"
const int buttonPin = 2;
const int ledPin = LED_BUILTIN;

Pour attribuer une action au bouton, l'outil web IFTTT est utilisé.
IFTTT (If This Then That) est un service web permettant d'automatiser des tâches sur internet. Il
propose des combinaisons condition-action.
Dans le cas présent,

  • la condition est le bouton a été appuyé
  • l'action est l'envoi d'un mail pour un appel aux Urgences.

Il existe beaucoup d'autres actions que vous trouverez sur le site de l'IFTTT https://ifttt.com/maker . Le site est en anglais.
Marche à suivre :

  • Créer un compte
  • Une fois le compte crée, cliquer sur l'onglet « My Receipes » et sur le bouton « Create a Recipe ».
  • Sélectionner le canal de déclenchement « Maker » en faisant une recherche sur ce mot.
  • Cliquer ensuite sur « Receive a web request » pour créer le déclencheur.
  • Donner un nom à l'action (par exemple bouton_presse). Le nom ne doit pas contenir d'espace ni de caractères spéciaux.
  • Cliquer ensuite sur le bouton « Create Trigger ».
  • Choisir une action telle que l'envoi d'un sms, d'un mail.
  • Compléter les paramètres suivant l'action choisie et cliquez sur « Create Action ».
  • Donner un titre de « recette » et cliquer sur « Create Recipe ».
  • Copier la clé IFTTT obtenue. Cette clé devra être insérer dans la partie code.

Une fois l'action créée et configurée, dans le code Arduino :

  • Déclarer la clé IFTTT obtenue précédemment.
       // déclaration de la clé IFTTT (http://maker.ifttt.com/)
String iftttKey = "<your_IFTTT_key>";
  • Dans la fonction setup(), ajouter ces lignes de codes :
       pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);

Serial.println("Sonar glove IFTTT DO button v0.1 starting...");
for(uint8_t t = 4; t > 0; t--) {
Serial.printf("[SETUP] WAIT %d...\n", t);
Serial.flush();
delay(1000);
}

// on se connecte au Wifi
WiFiMulti.addAP(ssid, password);
  • Ajouter ensuite dans la fonction loop(), la condition d'une détection d'un appui sur le bouton
    // détection d'un appui sur le bouton
int buttonState = digitalRead(buttonPin);
//si le bouton est appuyé
if (buttonState == LOW) {
// alors on envoie une requête à IFTTT
digitalWrite(ledPin, HIGH);Serial.println("[BUTTON] : DO button has been triggered !");
send_request();
delay(500);
digitalWrite(ledPin, LOW);
}
  • Copier à la fin du code, la fonction ci-dessous. Cette fonction va envoyer une requête à IFTTT. Si la requête est bien envoyée alors vous avez reçu un mail si l'action que vous avez attribué au bouton est l'envoi d'un mail.
    // Fonction d'envoi d'une requête à IFTTT
int send_request() {
// on regarde si on est bien connecté au point d'accès wifi

if((WiFiMulti.run() == WL_CONNECTED)) {
// création d'un objet appelé http réutilisable et sorti du module HTTPClient
HTTPClient http;

Serial.print("[HTTP] connect :");
String uri = "/trigger/sonar_glove/with/key/<your_key>";
uri += iftttKey;
http.begin("maker.ifttt.com", 80, uri);

Serial.println("[HTTP] Sending GET request to IFTTT...");

// démarrer la connexion et envoyer les entêtes HTTP
int httpCode = http.GET();

// httpCode sera négatif si on rencontre une erreur
if(httpCode > 0) {
// les entêtes HTTP ont été envoyés et
Serial.printf("[HTTP] GET... code: %d\n", httpCode);

// si le serveur IFTTT répond par OK
if(httpCode == HTTP_CODE_OK)
Serial.println("[HTTP] GET... OK!");

delay(500);
digitalWrite(ledPin, LOW);
}
else
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());

http.end();
}
}

Modélisation des différentes pièces

Le boîtier

Pour la modélisation et la réalisation du boîtier qui va contenir tous les composants électroniques, les dimensions du boîtier sont déterminées en fonction des dimensions des composants électronique.
Dimension du boîtier

  • largeur et de longueur : 60mm
  • hauteur : 32mm (couvercle compris)

Imprimer à l'aide de l'imprimante 3D le boîtier. Vous trouverez le fichier du boîtier ici gant_sonar_boitier.stl et gant_sonar_capot.stl. Les parties à modéliser sur le logiciel Sketchup sont le boîtier (socle + couvercle) et le support de la
bague qui contient le vibreur. Il est possible de modéliser à partir d'un autre logiciel de modélisation du moment que le fichier contenant la partie à imprimer soit exporté au format .stl, format d'une imprimante 3D.
L'impression du boîtier complet (socle + couvercle) prend 3 heures. Le boîtier de ce prototype est fait en PLA (amidon de maïs).

Socle du boîtier et son couvercle obtenus après impression.

    

  • Placer le bouton poussoir dans l'encoche du couvercle et le coller avec de la colle chaude.

Le boîtier sera fixé sur le gant à l'aide d'un scratch lavable. Les différentes étapes pour fixer le boîtier sur le gant sont :

  • Couper 2 bandes de 6cm (longueur du boîtier) de scratch.
  • Coller ces 2 bandes des 2 côtés du boîtier. Couper une autre bande pour couvrir la totalité du dessous du boîtier excepté le connecteur.

La bague contenant le vibreur


Le vibreur sera placé sur l'auriculaire de la main. Pour cela, le support qui accueillera le vibreur sera sous la forme d'une bague. Pour que le tour de taille de la bague corresponde au doigt de tous les utilisateurs, la bague aura :

  • une partie rigide correspondant à une pièce imprimée en ABS (bio plastique) qui supporte le vibrateur. Fichier bague.stl du support.

   

  • une partie souple correspondant à l'anneau de la bague et dont la matière est un élastique.

Une fois la partie rigide imprimée, placer le vibreur dans l'espace qui lui est alloué. Le vibreur doit être placé de façon à laisser apparaître son côté autocollant pour ainsi pouvoir y déposer dessus une partie de l'élastique.
La longueur de l'élastique a été définie pour qu'il est une circonférence de 1,6cm. Coller ensuite l'élastique selon la circonférence.

Résultat de la bague avec le vibreur, le support du vibreur et l'élastique :
Recouvrir la bague d'un élastique côtelé pour rendre la bague plus esthétique.

Mise en place des composants dans le boîtier

  • Commencer par souder le micro-contrôleur et le détecteur ultrason

           Vcc vers la broche USB du module
           Trig vers la broche 12
           Echo vers la broche 14
           GND vers la broche GND

Soudure entre la NodeMCU et le capteur ultrason

Ce vibreur sera placé sur le dos de l'auriculaire à l'aide d'une bague, il faut alors que le vibreur puisse l'atteindre depuis le boîtier qui lui se trouve sur le dos de la main. Pour ça, il suffit d'allonger la longueur du fil pour qu'il ait une longueur suffisante pour atteindre l'auriculaire.

Pour ajouter de la longueur de fil :

  • Prendre 2 fil et le dénuder avec une pince à dénuder. De préférence prendre des fils ayant la même couleur.
  • Torsader les extrémités des fils.
  • Étamer avec de l'étain l'extrémité des 4 fils.
  • Souder maintenant le fil rouge avec le rouge et le bleu avec le bleu.
  • Entourer les parties soudées à l'aide d'un adhésif afin d'éviter les courts circuits entre les deux fils.
  • Souder maintenant le potentiomètre.
  • Passer les 2 fils du vibreur par le petit trou sur le boîtier.
  • Souder les fils du vibreur. Le fil rouge sur la sortie de la sortie du potentiomètre et le fil bleu sur le GND du micro-contrôleur.

  • Placer l'émetteur ultrason dans l'emplacement qui lui est alloué en le collant avec une colle chaude afin de bien le fixer.
  • Positionner le module sur le côté gauche du boîtier.
  • Placer la batterie.
  • Viser les 2 vis à l'arrière du boîtier dans le deux trous en dessous du socle. Ces vis vont servir de contact avec le connecteur.

Sur cette photo, le potentiomètre et la batterie n'ont pas été ajoutés et un bouton On/Off a été ajouté mais n'est pas raccordé. Lors de ces 3 jours, le prototype n'a pas entièrement été monté dans le boîtier.

Réalisation du gant

Le gant

Le gant permettra de positionner le boîtier sur le dos de la main. Le gant pour ce prototype est un gant de vélo avec une lanière en scratch.

  • Prendre et mettre le gant de vélo
  • Pour que la main soit libre et ne soit par étouffé par le gant, une découpe des certaines parties du gant est nécessaire.Tracer à l'aide d'un stylo les démarcations pour la découpe. Vous devrez couper au niveau de la paume de la main en faisant attention de ne pas couper l'auriculaire du gant qui lui reste.
  • Couper les 3 doigts (index, majeur et l'annulaire) du gant et selon la démarcation réalisée.

Résultat obtenu après le découpage des différentes parties du gant.

  • Il faut maintenant attacher le boîtier sur le dos du gant donc de la main. Pour cela, découper et coller au dos du gant 2 bandes de scratch d'environ 7cm.
  • Lorsque la découpe a été fait, vous vous apercevez qu'au niveau du pouce vue de la paume que ce n'est pas bien tendu. Pour cela, placer à l'intérieur de la couture du gant au niveau du pouce un élastique puis recoudre la partie.

Le gant est confortable, pratique et facile à mettre et enlever. Il est cependant possible, si l'utilisateur le souhaite, de concevoir un autre gant moins cher que celui réalisé auparavant. En effet, le gant de cyclisme coûte environ 10€.

2ème gant réalisé

Cordon pour badge avec fermoir sécuritaire de largeur 20mm.

  • Couper le cordon, à partir du fermoir, d'une longueur allant du métacarpe du majeur de la main, le fermoir étant placé sur la poignet. La longueur varie selon la main de l'utilisateur.
  • Couper ensuite un élastique côtelé
  • Couper un morceau d'une chambre à air d'un vélo d'une largeur de 1cm et d'une longueur qui fasse un peu plus que tour du majeur de la main.
  • Coudre ensemble le morceau de la chambre à air entre les 2 cordons
  • Coudre ensuite l'élastique côtelé. Une extrémité sur chaque cordon. L'élastique se place au milieu du dos de la main.
  • Le boîtier du prototype doit pouvoir s'accrocher sur le gant. Un scratch est utilisé pour fixer le boîtier au gant. Couper un scratch d'une longueur suffisante permettant de coudre le scratch sur l'élastique et sur les cordons précédemment cousus.
  • Coudre le scratch de façon à avoir le scratchant vers le dos de la main. Le fait de retourner le scratch permettra au boîtier de se scratcher sur le gant étant donné que le boîtier lui-même a du scratch.

Si le gant doit être utilisé par plusieurs personnes, il faut que ce gant soit adaptable à la main de toutes les personnes. Utiliser alors un morceau de scratch en enroulant l'une de ces extrémité. Passer les 2 côtés du scratch au niveau du fermoir.

Le gant est maintenant prêt à accueillir le boîtier.

Réalisation d'un support sur chaussure

Un support boîtier à placer sur le pied a également été réalisé. Placer le boîtier sur la chaussures du pied permettra de détecter tout obstacle devant le pied comme par exemple une marche.

  • Imprimer le support. Vous trouverez le fichier de modélisation du support pad_chaussure.stl.
  • Scotcher 2 bandes de scratch le long du support pour pouvoir accrocher le boîtier.
  • Attacher le support sur la chaussure en passant les lacets dans les trous prévus à cet effet.

Pour le moment, ce système n'est pas abouti pour la simple raison qu'aucune position pour le vibreur n'a été définie.

Phase de tests du prototype

Le nouveau prototype fonctionne, il a été testé par un non-voyant. L'utilisateur détecte bien les objets qui se trouvent sur une table. Il localise si l'objet détecté se trouve proche ou loin de sa main grâce aux différentes fréquences de vibration qui se produit sur son doigt.

 

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.