Cuprins:

Sistem de poziționare bazat pe ultrasunete: 4 pași (cu imagini)
Sistem de poziționare bazat pe ultrasunete: 4 pași (cu imagini)

Video: Sistem de poziționare bazat pe ultrasunete: 4 pași (cu imagini)

Video: Sistem de poziționare bazat pe ultrasunete: 4 pași (cu imagini)
Video: Webinar – Utilizarea tehnologiei bazată pe ultrasunete pentru îmbunătățirea eficienței energetice 2024, Noiembrie
Anonim
Sistem de poziționare bazat pe ultrasunete
Sistem de poziționare bazat pe ultrasunete

Toate versiunile de radare cu ultrasunete pe care le-am găsit pentru dispozitivele arduino (Arduino - Radar / Ultrasonic Detector, Arduino Ultrasonic Radar Project) sunt radare foarte drăguțe, dar toate sunt „orbite”. Adică, radarul detectează ceva, dar ce detectează?

Așa că mă propun să dezvolt un sistem capabil să detecteze obiectele și să le identifice. Cu alte cuvinte, un sistem de poziționare fără a utiliza dispozitive GPS, ci detectoare cu ultrasunete.

Acesta este rezultatul, sper să vă placă.

Pasul 1: Cum funcționează?

Cum functioneazã?
Cum functioneazã?

Sistemele de poziționare sunt formate din trei stații de senzori cu detectoare cu ultrasunete și id_node 1, 2 și 3 formând un dreptunghi sau pătrat care mătură un unghi de 90 ° și unde distanțele dintre ele sunt cunoscute așa cum se arată în imaginea 1.

const float distancebetween1and2 = 60,0;

const float distancebetween2and3 = 75.0;

Acești senzori măsoară distanța și unghiul altor obiecte cu id_node mai mare de 3, care au și un detector cu ultrasunete care mătură un unghi de 170 °.

Toate acestea trimit distanțele, unghiurile măsurate și id_node către o altă stație master folosind comunicații fără fir pentru a analiza, calcula poziția obiectelor folosind calculul trigonometriei și le identifică.

Pentru a evita interferențele, stația principală sincronizează toți detectorii cu ultrasunete în așa fel încât un singur detector cu ultrasunete măsoară în fiecare moment

După aceea și folosind o comunicare în serie, stația principală trimite informațiile (unghi, distanță, id_object) către o schiță de procesare pentru a trasa rezultatele.

Pasul 2: Cum se configurează cele trei stații senzoriale și obiectele

Cum se configurează cele trei stații senzoriale și obiectele
Cum se configurează cele trei stații senzoriale și obiectele
Cum se configurează cele trei stații senzoriale și obiectele
Cum se configurează cele trei stații senzoriale și obiectele

Singura funcție a fiecărei stații de senzori este de a detecta obiecte și de a trimite lista distanței, a unghiului și a nodului de măsurare la stația principală.

Deci, trebuie să actualizați distanța maximă de detectare („valid_max_distance“) permisă și cea minimă („valid_min_distance“) (centimetri) pentru a îmbunătăți detectarea și pentru a limita zona de detectare:

int valid_max_distance = 80;

int valid_min_distance = 1;

Nodul de identificare al acestor stații de senzori („this_node” din codul de mai jos) sunt 1, 2 și 3, iar nodul de identificare al stației master este 0.

const uint16_t this_node = 01; // Adresa nodului nostru în format octal (Node01, Node02, Node03)

const uint16_t other_node = 00; // Adresa nodului master (Node00) în format Octal

Fiecare stație senzor mătură și unghiul de 100º („max_angle” în codul de mai jos)

#define min_angle 0

#define max_angle 100

Ca mai sus, singura funcție a unui obiect este de a detecta obiecte și de a trimite lista distanțelor, unghiurilor și obiectului id măsurat către stația principală. ID-ul unui obiect („this_node” din codul de mai jos) trebuie să fie mai mare de 3.

Fiecare obiect mătură și unghiul de 170º și ca mai sus, este posibilă actualizarea distanței de detectare maximă și minimă.

const uint16_t this_node = 04; // Adresa nodului nostru în format octal (Nod04, Nod05, …)

const uint16_t other_node = 00; // Adresa nodului master (Node00) în format octal int valid_max_distance = 80; int valid_min_distance = 1; #define min_angle 0 #define max_angle 170

Pasul 3: Cum se configurează stația principală

Cum se configurează stația principală
Cum se configurează stația principală
Cum se configurează stația principală
Cum se configurează stația principală
Cum se configurează stația principală
Cum se configurează stația principală

Funcția stației master este de a primi transmisiile stațiilor senzorilor și a obiectelor și de a trimite rezultatele folosind portul serial într-o schiță de procesare pentru a le face grafic. Mai mult, sincronizează toate obiectele și cele trei stații de senzori în așa fel încât doar una dintre ele măsoară de fiecare dată pentru a evita interferențele.

În primul rând trebuie să actualizați distanța (centimetri) între senzorii 1 și 2 și distanța dintre 2 și 3.

const float distancebetween1and2 = 60,0;

const float distancebetween2and3 = 70,0;

Schița calculează poziția obiectelor în felul următor:

  • Pentru toate transmisiile obiectelor (id_node mai mare de 3) căutați aceeași distanță în fiecare transmisie a senzorilor cu ultrasunete (id_node 1, 2 sau 3).
  • Toate aceste puncte formează o listă de „candidați” (distanță, unghi, id_node) pentru a fi poziția unui obiect („process_pointobject_with_pointssensor” în schiță).
  • Pentru fiecare „candidat” din lista anterioară, funcția „candidate_selected_between_sensor2and3” calculează din punctul de vedere al senzorului ultrasonic 2 și 3 care dintre ele corespunde următoarei condiții de trigonometrie (vezi imaginile 2 și 3)

float distancefroms2 = sin (radiani (unghi)) * distanță;

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

Ca mai sus, pentru fiecare „candidat” din lista anterioară, funcția „candidat_selectat_tre_sensor1și2” calculează din punctul de vedere al senzorului ultrasonic 1 și 2 care dintre ele se potrivește cu următoarea relație de trigonometrie (vezi imaginea 2 și 3)

float distancefroms1 = sin (radiani (unghi)) * distance; float distancefroms2 = cos (radians (angle_candidate)) * distance_candidate; // Starea de trigonometrie 2 abs (distancefroms1 + distancefroms2 - distancebetween1and2) <= float (max_diference_distance)

Numai candidații (distanță, unghi, id_node) care se potrivesc condițiilor de trigonometrie 1 și 2 sunt obiecte identificate detectate de stațiile senzorilor 1, 2 și 3

După aceea, rezultatele sunt trimise de către stația principală la o schiță de procesare pentru a le complota.

Pasul 4: Lista materialelor

Image
Image

Lista materialelor necesare pentru o stație de senzori sau un obiect este următoarea:

  • Nano board
  • Senzor cu ultrasunete
  • Micro servomotor
  • Modul wireless NRF24L01
  • Adaptor NRF24L01

iar lista materialelor pentru stația principală este următoarea:

  • Nano board
  • Modul wireless NRF24L01
  • Adaptor NRF24L01

Recomandat: