Table des matières:

Système de positionnement basé sur les ultrasons : 4 étapes (avec photos)
Système de positionnement basé sur les ultrasons : 4 étapes (avec photos)

Vidéo: Système de positionnement basé sur les ultrasons : 4 étapes (avec photos)

Vidéo: Système de positionnement basé sur les ultrasons : 4 étapes (avec photos)
Vidéo: Les ultrasons et le principe de l'échographie 2024, Novembre
Anonim
Système de positionnement basé sur les ultrasons
Système de positionnement basé sur les ultrasons

Toutes les versions de radars à ultrasons que j'ai trouvées pour les appareils arduino (Arduino - Détecteur Radar/Ultrasonic, Arduino Ultrasonic Radar Project) sont de très bons radars mais tous sont "aveugles". Je veux dire, le radar détecte quelque chose mais qu'est-ce qu'il détecte ?

Je me propose donc de développer un système capable de détecter des objets et de les identifier. En d'autres termes un système de positionnement sans utiliser de dispositifs GPS mais des détecteurs à ultrasons.

Voilà le résultat j'espère qu'il vous plaira.

Étape 1: Comment ça marche ?

Comment ça marche?
Comment ça marche?

Le système de positionnement est formé de trois stations de capteurs avec des détecteurs à ultrasons et id_node 1, 2 et 3 formant un rectangle ou un carré qui balayent un angle de 90º et où les distances entre eux sont connues comme indiqué sur l'image 1.

const float distanceentre1et2 = 60,0;

const float distanceentre2et3 = 75,0;

Ces capteurs mesurent la distance et l'angle d'autres objets avec un id_node supérieur à 3 qui ont également un détecteur à ultrasons qui balaie un angle de 170°.

Tous envoient les distances, les angles mesurés et l'id_node à une autre station maître en utilisant des communications sans fil pour analyser, calculer la position des objets à l'aide du calcul trigonométrique et les identifier.

Pour éviter les interférences, la station maître synchronise tous les détecteurs à ultrasons de manière à ce qu'un seul détecteur à ultrasons mesure à chaque instant

Après cela et en utilisant une communication série, la station maître envoie les informations (angle, distance, id_object) à une esquisse de traitement pour tracer les résultats.

Étape 2: Comment configurer les trois stations de détection et les objets

Comment configurer les trois stations de capteurs et les objets
Comment configurer les trois stations de capteurs et les objets
Comment configurer les trois stations de capteurs et les objets
Comment configurer les trois stations de capteurs et les objets

La seule fonction de chaque station de capteur est de détecter des objets et d'envoyer la liste de distance, d'angle et de nœud d'identification mesurés à la station maître.

Il faut donc mettre à jour la distance de détection maximale (« valid_max_distance ») autorisée et la distance minimale (« valid_min_distance ») (centimètres) pour améliorer la détection et limiter la zone de détection:

int valid_max_distance = 80;

int valid_min_distance = 1;

Les nœuds id de ces stations capteurs (« this_node » dans le code ci-dessous) sont 1, 2 et 3 et le nœud id de la station maître est 0.

const uint16_t this_node = 01; // Adresse de notre nœud au format Octal (Node01, Node02, Node03)

const uint16_t other_node = 00; //Adresse du nœud maître (Node00) au format Octal

Chaque station de capteur balaie et un angle de 100º ("max_angle" dans le code ci-dessous)

#define min_angle 0

#define max_angle 100

Comme ci-dessus, la seule fonction d'un objet est de détecter des objets et d'envoyer la liste des distances, angles et id d'objet mesurés à la station maître. L'identifiant d'un objet ("this_node" dans le code ci-dessous) doit être supérieur à 3.

Chaque objet balaie et angle de 170º et comme ci-dessus, il est possible de mettre à jour la distance de détection maximale et minimale.

const uint16_t this_node = 04; // Adresse de notre nœud au format Octal (Node04, Node05, …)

const uint16_t other_node = 00; // Adresse du nœud maître (Node00) au format Octal int valid_max_distance = 80; int valid_min_distance = 1; #définir l'angle_min 0 #définir l'angle_max 170

Étape 3: Comment configurer la station maître

Comment configurer la station maître
Comment configurer la station maître
Comment configurer la station maître
Comment configurer la station maître
Comment configurer la station maître
Comment configurer la station maître

La fonction de la station maître est de recevoir les transmissions des stations capteurs et des objets et d'envoyer les résultats via le port série à un schéma de traitement pour les tracer. De plus, synchronise tous les objets et les trois stations de capteurs de manière à ce qu'un seul d'entre eux mesure à chaque fois pour éviter les interférences.

Tout d'abord, vous devez mettre à jour la distance (centimètres) entre les capteurs 1 et 2 et la distance entre 2 et 3.

const float distanceentre1et2 = 60,0;

const float distanceentre2et3 = 70,0;

L'esquisse calcule la position des objets de la manière suivante:

  • Pour toutes les transmissions des objets (id_node supérieur à 3) rechercher la même distance dans chaque transmission des capteurs à ultrasons (id_node 1, 2 ou 3).
  • Tous ces points forment une liste de « candidats » (distance, angle, id_node) pour être la position d'un objet (« process_pointobject_with_pointssensor » dans le croquis).
  • Pour chaque « candidat » de la liste précédente, la fonction « candidat_sélectionné_entre_sensor2et3 » calcule du point de vue des capteurs à ultrasons 2 et 3 lequel d'entre eux correspond à la condition trigonométrique suivante (voir les images 2 et 3)

float distancefroms2 = sin(radians(angle)) * distance;

float distancefroms3 = cos(radians(angle_candidate)) * distance_candidate; // Condition de trigonométrie 1 abs(distancefroms2 + distancefroms3 - distanceentre2and3) <= float(max_diference_distance)

Comme ci-dessus, pour chaque "candidat" de la liste précédente, la fonction "candidate_selected_between_sensor1and2" calcule du point de vue du capteur à ultrasons 1 et 2 lequel d'entre eux correspond à la relation trigonométrique suivante (voir les images 2 et 3)

float distancefroms1 = sin(radians(angle)) * distance;float distancefroms2 = cos(radians(angle_candidate)) * distance_candidate; // Condition trigonométrique 2 abs(distancefroms1 + distancefroms2 - distanceentre1et2) <= float(max_diference_distance)

Seuls les candidats (distance, angle, id_node) qui correspondent aux conditions trigonométriques 1 et 2 sont des objets identifiés détectés par les stations capteurs 1, 2 et 3

Après cela, les résultats sont envoyés par la station maître à un croquis de traitement pour les tracer.

Étape 4: Liste du matériel

Image
Image

La liste du matériel nécessaire pour une station de capteur ou un objet est la suivante:

  • Tableau nano
  • Capteur à ultrasons
  • Micro servomoteur
  • Module sans fil NRF24L01
  • Adaptateur NRF24L01

et la liste du matériel pour le poste maître est la suivante:

  • Tableau nano
  • Module sans fil NRF24L01
  • Adaptateur NRF24L01

Conseillé: