Projets:Canne a son
Description du projet
Ce prototype est dérivé de la Wicanne « Lidar » sans la partie reconnaissance des obstacle par IA.
Le système se suffit donc à lui-même et les obstacles rencontrés sont matérialisés par des sons de différentes fréquences.
Il est constitué d'un Lidar TFmini Plus couplé à un microcontrôleur Teensy 4.1.
Les sons sont émis par un buzzer piezzo. L'ensemble est contenu dans un petit boîtier qui est destiné à être fixé sur un support à la convenance de l'utilisateur. (Adaptation à réaliser donc en fonction de la demande).
La mise en route se fait par un simple interrupteur situé à l'arrière de celui-ci. Le boîtier est alimenté par une source de courant de 5 volts. (soit par la prise micro-USB si on dispose d'un interrupteur sur l'alimentation, soit sur la pin VIN en passant par l'interrupteur du boîtier si on utilise une alimentation sans interrupteur).
« Canne à son »fonctionne dans un intervalle de distance de 15 cm à 5 mètres.
La détection est basée sur la variation brutale de distance lors du balayage d'un obstacle par rapport à son environnement.
La système s'adapte automatiquement à la distance à laquelle se trouve un obstacle. Le seuil de variation déclencheur est plus petit pour les obstacles proches que pour les obstacles éloignés. Ainsi, par exemple, un obstacle à 90 cm sera détecté s'il présente un variation d'au moins 5 cm alors que pour un obstacle situé à 2 ou 3 m, le seuil de variation de distance doit être de 15 cm.
A chaque détection d'une variation de distance supérieure au seuil déterminé pas la distance à l'obstacle, un bip sonore est émis avec une fréquence d'autant plus élevée que l'obstacle est proche.
Ainsi on pourra reconnaître les limites de l'obstacle lors d'un balayage de celui-ci en entendant un son aigu lorsque le faisceau arrive dessus et un son plus grave lorsque le faisceau quitte l'obstacle.
Devant une grille ou un escalier on pourra donc « ressentir » le nombre de barreau ou de marche par un balayage dans le sens approprié. (de gauche à droite ou de haut en bas).
Les fréquences utilisées ainsi que les seuils de variation pourront être adaptés aux souhaits de l'utilisateur dans la mesure où cela n'affectera pas le bon fonctionnement du système.
Il sera sans doute nécessaire d'acquérir une certaine expérience pour en faire un bon usage.
Cahier des charges
Analyse de l'existant
Equipe (Porteur de projet et contributeurs)
- Porteurs du projet : Instructeurs de locomotion du centre Angèle Vannier
- Concepteurs/contributeurs : Yves Le Chevalier
- Animateur (coordinateur du projet)
- Fabmanager référent :Delphine
- Responsable de documentation : Yves Le Chevalier, Delphine
Matériel nécessaire
Outils nécessaires
Coût
Délai estimé
Fichiers source
Télécharger les fichiers STL du boitier
Etapes de fabrication pas à pas
Schéma électronique
Programmation de la teensy
Télécharger le code à téléverser sur la Teensy via l'IDE Arduino
// Canne_a_son_Teensy4 YLC 18/06/2021 // Sonorisation de la détection d'obstacles par mesure des variations brutales de distance // Jusqu'à 1,10 m le seuil de variation est de 5 cm au-delà de cette distance le seuil est de 15 cm. // Harware : Teensy 4.1 + lidar TF mini PLus + Buzzer + alim 5v. // A savoir : Tests sur Arduino nano => ne fonctionnent pas correctement car carte trop lente. //****************************************************************** #define PorSerLid Serial2 // déclaration du lidar TF mini sur port série #2 (pins 7 et 8) #include "TFMiniPlus.h" TFMiniPlus tfmini; #include "EasyBuzzer.h" float dis = 0; // distance mesurée par Lidar float dist = 0; // distance retenue int vardis = 0; // écart de distance entre 2 mesures unsigned int freqson; // fréquence du bip sonore const int dischangseuil = 110; // distance de changement de seuil de détection const int seuilproch = 5; // seuil de détection pour les obstacles proches const int seuileloin = 15; // seuil de détection pour les obstacles éloignés int vardimi; // seuil chosi pour activer signal sonore (cm) float dislid[2]; // tableau de stockage des mesures faite par le lidar bool premes = true; // indicateur de la première mesure //__________________________________________________________________ void mesure() { if (tfmini.readData()) { // Récupération de la mesure lidar dis = tfmini.getDistance(); // distance mesurée if (dis > 500) dis = 500; // on ne va pas a plus de 5 m if (dis > 15) { // si mesure valide de plus de 15 cm dist = dis; // distance est retenue } } } //========================================================= void setup() { EasyBuzzer.update(); // correction bug dans lib EasyBuzzer EasyBuzzer.setPin(14); // pin 14 : Pin buzzer PorSerLid.begin(115200); // ouverture du port série 2 (Lidar) tfmini.begin(&PorSerLid); // démarrer le lidar sur port série #2 tfmini.setFrameRate(50); // fixer la fréquence du Lidar (Hz) tfmini.saveSettings(); // enegistrer les réglages } //========================================================= void loop() { mesure(); // récupérer une distance if (dist > 0) { // si distance mesurée dislid[0] = dislid[1]; // décaler la mesure précédente dans premier poste dislid[1] = dist; // stocker nouvelle mesure dans second poste if (premes) { // si premiere mesure on ne fait rien d'autre premes = false; // pour indiquer les mesures suivantes } else { vardis = abs(dislid[0] - dislid[1]); // calcul de l'écart entre 2 mesures if (dislid[1] < dischangseuil) { // si mesure "proche" vardimi = seuilproch; // seuil proche activé } else vardimi = seuileloin; // seuil éloigné activé if (vardis > vardimi) { // Si écart de distance supérieur au seuil retenu freqson = 2500 - (dislid[1] * 4); // calcul fréquence fonction(dernière distance mesurée) EasyBuzzer.singleBeep(freqson,50); // jouer le son calculé 50 millisec. delay(50); // attendre la fin du son EasyBuzzer.stopBeep(); // arrêter le buzzer } } } } //**********************fin prog******************************/
Boitier à imprimer en 3D
Télécharger et imprimer les fichiers STL du boitier
Montage des éléments à insérer dans le boitier