Ce que vous allez faire
Vous savez contrôler un servo, vous savez mesurer la largeur d'une impulsion, et enfin, vous savez utiliser un afficheur graphique OLED. Vous allez maintenant combiner le tout pour réaliser un radar à ultrasons.
Les consignes sont les suivantes :
Le servo balaie l'espace devant lui sur 180° de gauche à droite, puis de droite à gauche, et ainsi de suite.
Pour chaque position angulaire du servo, vous allez mesurer la distance à laquelle se trouve le premier obstacle en ligne droite. Vous utiliserez pour cela le module HC-SR04 figurant dans les pré-requis.
Vous relierez toutes les mesures par des segments de droites afin de dessiner le contour de l'espace libre devant le servo.
Le module HC-SR04
Le module HC-SR04 est facile à utiliser : vous envoyez
une impulsion d'au moins 10µs sur sa broche Trig et vous
mesurez la durée de l'impulsion reçue sur sa broche Echo.
Le temps mesuré est celui de l'aller-retour du son du HC-SR04
jusqu'à l'obstacle, donc la distance parcourue est égale à la
moitié de cette durée multipliée par la vitesse de propagation
du son dans l'air.
La vitesse du son dépend de la température. La formule suivante en donne
une approximation avec une bonne précision : vitesseDuSon
= temperatureAmbiante * 6 / 10 + 331
. Calculez-la pour la température
de votre pièce et mettez-la en dur dans votre code.
Si vous vouliez utiliser votre radar en extérieur par tous les temps, il faudrait bien sûr mesurer périodiquement la température et refaire le calcul de la vitesse.
Le module HC-SR04 est capable de mesurer des distances comprises entre 2cm et 5m avec une résolution de 1cm. Cette dernière vous permet donc de déterminer la fréquence du timer utilisé pour mesurer l'impulsion de la broche Echo.
Détails pratiques
Vous ferez le câblage selon le schéma suivant :
Les choix de broches de GPIO qui ont été faits permettent de réutiliser sans modification le code écrit dans les exercices CH32V003 : commande de servo et CH32V003 : afficheur graphique OLED. En résumé :
T1CH1 (PD2) : signal PWM du servo.
T2CH1 (PD4) : capture de largeur d'impulsion sur la broche Echo du HC-SR04.
PD3 : génération de l'impulsion Trig du HC-SR04.
SDA (PC1) et SCL (PC2) : module d'affichage OLED.
Je vous ai recommandé un servo et un module HC-SR04 fournis avec des accessoires. Ceux-ci vous seront utiles pour fixer le module HC-SR04 sur le servo. Si vous n'avez pas de vis appropriées, vous pouvez utiliser un fil de fer fin (ou des attaches de sacs congélation) et bien le serrer. Il vous restera à fixer le servo sur un support de votre choix (ex. un carton lesté avec des livres) pour qu'il ne bouge pas pendant les mesures.
Notez que le servo met du temps pour tourner, vous devrez donc regarder dans sa data sheet quel délai vous devez lui laisser avant de prendre votre mesure de distance. Ça aura donc une influence sur la vitesse de balayage. Même chose à la mise en route : vous devrez ramener le servo complètement à gauche (ou à droite, peu importe) et il faudra donc lui laisser le temps de s'y déplacer en prenant pour hypothèse qu'il est à l'opposé de là où on veut le faire aller.
Enfin, au cas où vous auriez séché sur l'exercice CH32V003 : afficheur graphique OLED, je vous propose ici une solution pour vous permettre d'avancer quand même.