Taula de continguts:

Sistema de posicionament basat en ultrasons: 4 passos (amb imatges)
Sistema de posicionament basat en ultrasons: 4 passos (amb imatges)

Vídeo: Sistema de posicionament basat en ultrasons: 4 passos (amb imatges)

Vídeo: Sistema de posicionament basat en ultrasons: 4 passos (amb imatges)
Vídeo: Sommes-nous vraiment la première civilisation humaine avancée ? 2024, De novembre
Anonim
Sistema de posicionament basat en ultrasons
Sistema de posicionament basat en ultrasons

Totes les versions de radars d'ultrasons que he trobat per a dispositius arduino (Arduino - Detector de radar / ultrasons, Arduino Ultrasonic Radar Project) són radars molt agradables, però tots "cecs". Vull dir, el radar detecta alguna cosa, però què està detectant?

Així que em proposo desenvolupar un sistema capaç de detectar objectes i identificar-los. En altres paraules, un sistema de posicionament sense utilitzar dispositius GPS, sinó detectors d'ultrasons.

Aquest és el resultat que espero que us agradi.

Pas 1: Com funciona?

Com funciona?
Com funciona?

Els sistemes de posicionament estan formats per tres estacions de sensors amb detectors d'ultrasons i id_node 1, 2 i 3 que formen un rectangle o quadrat que escombra un angle de 90º i on es coneixen les distàncies entre elles com es mostra a la imatge 1.

const float distancebetween1and2 = 60,0;

const float distancebetween2and3 = 75,0;

Aquests sensors mesuren la distància i l'angle d'altres objectes amb id_node superior a 3 que també tenen un detector d'ultrasons que arrossega un angle de 170 °.

Tots ells envien les distàncies, els angles mesurats i l'id_node a una altra estació principal mitjançant comunicacions sense fils per analitzar, calcular la posició dels objectes mitjançant el càlcul de la trigonometria i identificar-los.

Per evitar interferències, l'estació principal sincronitza tots els detectors d'ultrasons de manera que només es mesura un detector d'ultrasons en cada moment

Després d'això i mitjançant una comunicació en sèrie, l'estació principal envia la informació (angle, distància, id_object) a un esbós de processament per representar els resultats.

Pas 2: Com configurar les tres estacions de sensor i els objectes

Com configurar les tres estacions sensorials i els objectes
Com configurar les tres estacions sensorials i els objectes
Com configurar les tres estacions sensorials i els objectes
Com configurar les tres estacions sensorials i els objectes

L'única funció de cada estació de sensor és detectar objectes i enviar la llista de distància, angle i node d'identificació mesurats a l'estació principal.

Per tant, heu d’actualitzar la distància màxima de detecció (“valid_max_distance”) permesa i la mínima (“valid_min_distance”) (centímetres) per millorar la detecció i limitar la zona de detecció:

int valid_max_distance = 80;

int valid_min_distance = 1;

El node d'identificació d'aquestes estacions sensorials ("this_node" al codi següent) són 1, 2 i 3 i el node d'identificació de l'estació principal és 0.

const uint16_t this_node = 01; // Adreça del nostre node en format Octal (Node01, Node02, Node03)

const uint16_t other_node = 00; // Adreça del node mestre (Node00) en format Octal

Cada estació del sensor escombra i angle de 100º ("max_angle" al codi següent)

#define min_angle 0

#define max_angle 100

Com a dalt, l'única funció d'un objecte és detectar objectes i enviar la llista de distàncies, angles i objectes id mesurats a l'estació principal. L'identificador d'un objecte ("this_node" al codi següent) ha de ser superior a 3.

Cada objecte escombra i té un angle de 170º i, tal com s'ha indicat anteriorment, és possible actualitzar la distància de detecció màxima i mínima.

const uint16_t this_node = 04; // Adreça del nostre node en format Octal (Node04, Node05, …)

const uint16_t other_node = 00; // Adreça del node mestre (Node00) en format Octal int valid_max_distance = 80; int valid_min_distance = 1; #define min_angle 0 #define max_angle 170

Pas 3: Com configurar l'estació principal

Com configurar l'estació principal
Com configurar l'estació principal
Com configurar l'estació principal
Com configurar l'estació principal
Com configurar l'estació principal
Com configurar l'estació principal

La funció de l’estació principal és rebre les transmissions de les estacions sensorials i dels objectes i enviar els resultats mitjançant el port sèrie a un esbós de processament per traçar-los. A més, sincronitza tots els objectes i les tres estacions de sensors de manera que només una mesura cada vegada per evitar interferències.

En primer lloc, cal actualitzar la distància (centímetres) entre el sensor 1 i 2 i la distància entre 2 i 3.

const float distancebetween1and2 = 60,0;

const float distancebetween2and3 = 70,0;

L’esbós calcula la posició dels objectes de la següent manera:

  • Per a totes les transmissions dels objectes (id_node superior a 3), busqueu la mateixa distància en cada transmissió dels sensors d'ultrasons (id_node 1, 2 o 3).
  • Tots aquests punts formen una llista de "candidats" (distància, angle, id_node) per ser la posició d'un objecte ("process_pointobject_with_pointssensor" a l'esbós).
  • Per a cada "candidat" de la llista anterior, la funció "candidate_selected_between_sensor2and3" calcula des del punt de vista del sensor d'ultrasons 2 i 3 quins d'ells coincideixen amb la següent condició de trigonometria (vegeu les imatges 2 i 3)

float distancefroms2 = sin (radians (angle)) * distància;

float distancefroms3 = cos (radians (angle_candidate)) * distance_candidate; // Condició de trigonometria 1 abs (distancefroms2 + distancefroms3 - distancebetween2and3) <= float (max_diference_distance)

Com es va esmentar anteriorment, per a cada "candidat" de la llista anterior, la funció "candidate_selected_between_sensor1and2" calcula des del punt de vista del sensor d'ultrasons 1 i 2 quins d'ells coincideixen amb la següent relació de trigonometria (vegeu la imatge 2 i 3)

float distancefroms1 = sin (radians (angle)) * distance; float distancefroms2 = cos (radians (angle_candidate)) * distance_candidate; // Condició de trigonometria 2 abs (distancefroms1 + distancefroms2 - distancebetween1and2) <= float (max_diference_distance)

Només els candidats (distància, angle, id_node) que coincideixen amb les condicions de trigonometria 1 i 2 són objectes identificats detectats per les estacions de sensors 1, 2 i 3

Després, l'estació principal envia els resultats a un esbós de processament per traçar-los.

Pas 4: Llista de material

Image
Image

La llista de material necessari per a una estació de sensor o un objecte és la següent:

  • Taula nano
  • Sensor d'ultrasons
  • Micro servo motor
  • Mòdul sense fils NRF24L01
  • Adaptador NRF24L01

i la llista de material per a l'estació principal és la següent:

  • Taula nano
  • Mòdul sense fils NRF24L01
  • Adaptador NRF24L01

Recomanat: