Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Je construis pour le plaisir un robot que je veux déplacer de manière autonome à l'intérieur d'une maison.
C'est un long travail et je le fais étape par étape.
Cette instructable se concentre sur la détection des obstacles avec Arduino Mega
Les capteurs à ultrasons HC-SR04 vs HY-SRF05 sont bon marché et simples à utiliser mais peuvent devenir difficiles à intégrer dans la boucle du microcontrôleur d'un robot complexe. Je voulais lancer la détection d'obstacles de manière asynchrone.
_
J'ai déjà publié 3 instructables sur les fonctionnalités de ce robot:
- Faites votre encodeur de roue
- Faites votre passerelle WIFI
- Utiliser l'unité de module inertiel
Et une documentation sur la combinaison de l'intelligence artificielle et des ultrasons pour localiser le robot.
Étape 1: Quel est précisément le problème avec les capteurs à ultrasons et les microcontrôleurs ?
Attente synchrone et limitations Arduino
Le code des microcontrôleurs s'exécute en boucle et ne prend pas en charge le multithread. Les capteurs à ultrasons sont basés sur la durée du signal. Cette durée dure jusqu'à 30 ms ce qui est très long à attendre à l'intérieur de la boucle lorsque les microcontrôleurs doivent gérer plusieurs moteurs et capteurs (par exemple servomoteurs et moteurs à courant continu avec encodeurs de roue).
J'ai donc voulu développer un objet qui s'exécute de manière asynchrone.
Étape 2: Comment ça marche ?
Il a été conçu pour Atmega pour la détection d'obstacles. Il prend en charge jusqu'à 4 capteurs à ultrasons.
Grâce à l'interruption périodique du temps, le système peut surveiller jusqu'à 4 capteurs à ultrasons. Le code principal n'a qu'à définir quel capteur activer avec condition et seuil. Le principal ne sera interrompu que si (condition, seuil) apparaît.
Les fonctions principales sont:
- L'alerte est la détection d'obstacle de base et fournit une interruption si au moins 1 des 4 capteurs détecte une distance sous son seuil
- Monitor est une fonction étendue qui fournit une interruption sur une combinaison de condition de distance de jusqu'à 4 capteurs. Les conditions possibles sont supérieures, inférieures, égales ou différentes aux seuils.
Étape 3: Détails techniques
Utilisez timer4 pour que la broche 6 7 8 ne puisse pas être utilisée comme PWM.
Pour chaque capteur, l'objet a besoin d'un PIN de déclenchement et d'un PIN d'interruption.
En plus des codes PIN d'interruption des capteurs, l'objet a besoin d'un autre code PIN d'interruption pour l'utilisation du logiciel.
Étape 4: Comment mettre en œuvre ?
Connectez les capteurs comme ci-dessus
Télécharger à partir de ce référentiel GitHub
- EchoObstacleDetection.cpp,
- EchoObstacleDetection.h
- ExempleEchoObstacleDetection.ino
Créez le répertoire EchoObstacleDetection dans votre bibliothèque IDE et déplacez les fichiers.cpp et.h
Essaye-le
Ouvrez ExampleEchoObstacleDetection.ino.
Il s'agit d'un exemple simple de détection d'obstacles fonctionnant avec 2 capteurs à ultrasons.
La sortie est dirigée sur un moniteur série. Dans un premier temps il imprimera les distances détectées par les 2 capteurs puis imprimera les alertes en fonction des distances sous les seuils.