La Canne à Beep

Les Ultrasons au secours de la déficience visuelle ...

Canne beep vue

          Évoluer dans un milieu chargé ou inconnu avec une perte du champ visuel ou de la sensibilité rétinienne, peut relever du parcours du combattant dans une jungle hostile. Voici un petit boîtier autonome qui se clipse sur la canne de marche et beep si un obstacle se dresse à moins de 2 mètres. A l'image des aides au stationnement des voitures, les beeps sont de plus en plus rapprochés, suivant la distance à laquelle on se trouve. Un balayage de la main, de gauche à droite et réciproquement, sur la poignée de la canne, informe de la direction où se situe l'entrave. Bien évidement le fonctionnement est acceptable dans un milieu spacieux: un placard ou un réduit ne permet pas une discrimination de la moindre embûche. L'autonomie est assurée par une batterie rechargeable par une fiche standard en USB-C. La consommation est relativement faible en fonctionnement normal, pour de longues balades entre deux recharges. L'idée originale était d'utiliser une synthèse vocale à la place d'un beep, mais je me suis fait rouler dans la farine en achetant chez un Chinois peu scrupuleux, des synthèses sans le firmware qui sont parties avec pertes et fracas dans la poubelle adéquate . 

Qu'est-ce qu'il y a dans la boîte ? Commençons par l'analyse du schéma .

Canne bip sch

          Sur la gauche, le circuit TP4056 sert à charger la batterie de 3,7 volts / 3000mA dans les conditions sécuritaires de charges et de décharges, en respectant les courants et les tensions mini et maxi . Une fiche USB-C se branche sur n'importe quel bloc de charge universel. Une led rouge s'allume en cours et une bleue lorsque l'accu est totalement chargé. Après être passé par un interrupteur Marche/Arrêt pluggé sur SL1, on vient sur l'entrée d'un convertisseur DC-DC Boost (RT9266), pour élever la tension de 3.7 à 5 Volts, pour alimenter l'ensemble. On aurait aimé s'en passer, et l'ATTiny s'en accommode bien, mais pas le transducteur à ultrasons, qui lui demande du 5 volts . En haut, à droite, c'est le radar ultrasonique HC-SR04. Un émetteur envoie 8 impulsions à 40KHz s'il reçoit un état logique haut de 10 ms sur sa borne trigger, le récepteur attend le retour sonore par écho ... Considérant que la vitesse du son est d'environ 335 m/s, il suffit de prendre le temps d'un aller et retour et de le diviser par deux pour connaître la distance de l'objet. La borne écho restitue un pulse front montant qui va arrêter le chronomètre. Un microcontrôleur ATTiny85 va faire le job de lancer les pulses et de mesurer les millisecondes du retour écho, pour le traduire en une distance que le logiciel va convertir en temps d'espacement entre les beeps consécutifs sur le buzzer. Une configuration classique sur le microcontrôleur: j'utilise l'oscillateur interne, calé sur 8 MHz, car la précision n'impose pas une horloge à quartz externe. Un condensateur (C1) aux bornes d'alimentations de l'ATTiny85, bloque les transitoires issues des différents systèmes oscillants co-alimentés, et une résistance de 10K (R2) maintient la borne reset à l'état logique haut. Côté beeper, un transistor 2N2222 (T1) amplificateur de courant, voit sa base commandée à travers une résistance de limitation de 2K2 (R1) . Une diode de roue-libre 1N4148 (D1) est là pour la suppression des inductions inverses générées par la self rupture du buzzer, au cas où l'on utilise un transducteur électro-magnétique (haut parleur high Z) et une modulation effectuée par le programme de l'ATTiny85. Voilà donc pour le schéma ...  Voyons l'implantation 

La réalisation matérielle ...

Canne beep mat          Un petit circuit imprimé supporte tous les composants ... Comme j'avais de la place dans le boîtier, je n'ai pas utilisé de CMS mais des traversants. Le circuit imprimé est un circuit simple face, pour rester à la portée d'une réalisation amateur, suivant le descriptif exposé sur cette page de mon site. Sur le premier prototype, j'ai mis un connecteur pour raccorder le transducteur ultrason de manière souple et flexible, puis je l'ai modifié pour le monter côté soudure, et l'espace déporté me sert à y loger la batterie. Attention tout de même à la conformité des fonctions de chaque pin pour ne pas croiser les alimentations entre elles et avec les autres.

Canne bip brd          Une attention toute particulière est demandée lors de la mise en place du transducteur ultrasonique : évitons les pontages acoustiques. Si nous ne les entendons pas, le capteur de réception les ressent, et un contact avec le boîtier compromet tout fonctionnement télémétrique correct. Ce qui impose des trous plus gros et bien centrés, avec éventuellement un amortissement par un matériel souple. Personnellement, j'ai collé deux joints de plomberie : c'est juste au diamètre des cylindres de l'émetteur et du récepteur US.

 

Le bout de programme qui fait tourner tout ça :

          Le soft est développé sous l'IDE Arduino (je l'aime bien celui là), compilé en fichier hex  et buriné dans l'ATTiny85 avec un Dataman Pro 40 ... Sur l'écran de programmation, on règle les flags sur une horloge interne à 8MHz sans diviseur. Dans une telle simplicité, je n'ai pas eu à importer de bibliothèque . Juste pour le fun, j'avais fait 2 versions pour jauger le poids et la différence avec un sous programme void alarme() en lieu et place de goto : label , qui est censé manquer d'élégance en C++, alors que dans mon jeune temp, le Basic s'en accommodait très bien. Coïncidence, le résultat compilé augmente le pourcentage de l'occupation des mémoires. La richesse et le nombre des commentaires en bout de chaque ligne, expliquent le chemin que je me suis donné et décrit ce que j'ai voulu faire.

/***********************************************************************************
 *  Un boitier à fixer sur une canne et qui beep si un obstacle se                                                                
 * trouve devant lui, plus l'obstacle est proche, plus les beep sont                                                               
 * rapprochés . Bernard LECLERC 08/2026 . En lire plus sur mon site :                                                   
 * https://www.amazing-vacuum-tubes.com/pages/ca-c-est-fait/la-canne-a-beep-.html                            
 ***********************************************************************************/

#define TRIGG 2 // Commande emission US
#define ECHO 1    // Retour d'écho US
#define BUZZ 4    // Cmde Buzzer

const long TIMEOUT = 12000UL; // 12ms = ~4m à 340m/s
float distance_cm; // distance après calcul
int mesure; // Distance mesurée

void alarme()
{
digitalWrite(BUZZ, HIGH); // Beep
delay (500);  // Durée du beep
digitalWrite(BUZZ, LOW); // Stp Beep
delay (distance_cm * 10); // Intervall entre deux beeps suivant distance obstacle
}

void setup()
{

pinMode(TRIGG, OUTPUT);  //Sortie déclencheur US
digitalWrite(TRIGG, LOW); //Mise à l'état bas..
pinMode(ECHO, INPUT);  //Mise en entrée du retour écho
pinMode(BUZZ, OUTPUT);  //Sortie cmd buzz
digitalWrite(BUZZ, LOW); //Mise à l'état bas..

}

void loop()
{
 digitalWrite(BUZZ, LOW); // Stp Beep
 digitalWrite(TRIGG, HIGH); // Déclenchement US 
 delayMicroseconds(10);  //pendant 10 µs
 digitalWrite(TRIGG, LOW);
  
mesure = pulseIn(ECHO, HIGH, TIMEOUT); // Temps entre le départ et le retour des US
distance_cm = (mesure / 2 ) / 29.1; //calcul de la distance par le temps en allé/retour

             
if (distance_cm < 150) {  // et saut à la sous routine, si la distance est inférieure à 1,5m
        alarme();
} else {
        digitalWrite(BUZZ, LOW); // Stp Beep
}              
        
delay (100);

}

L'ensemble des fichiers pour la réalisation, c'est là ...

Canne bipeuseCanne bipeuse (435.87 Ko)

 

Une autre idée ...

          Si, comme je vous le souhaite, vous vous déplacez sans canne et avec une acuité visuelle saine, le boîtier magique peut servir à ranger la voiture au garage, sans taper dans l'étagère du fond. Mieux encore, si le goupil s'approche pour faire la fête avec quelques poulettes, on peut le faire fuire en remplaçant le buzzer par une sirène à 95 dB et en mettant un petit panneau solaire sur les pins IN+/IN- du TP4056, pour maintenir la petite batterie chargée ... Amusez-vous bien !

Canne beep ar

 

Ajouter un commentaire

Anti-spam