Sommario:

Sistema di posizionamento basato su ultrasuoni: 4 passaggi (con immagini)
Sistema di posizionamento basato su ultrasuoni: 4 passaggi (con immagini)

Video: Sistema di posizionamento basato su ultrasuoni: 4 passaggi (con immagini)

Video: Sistema di posizionamento basato su ultrasuoni: 4 passaggi (con immagini)
Video: Principi fisici degli ultrasuoni - Parte 1 2024, Novembre
Anonim
Sistema di posizionamento basato su ultrasuoni
Sistema di posizionamento basato su ultrasuoni

Tutte le versioni di radar ad ultrasuoni che ho trovato per i dispositivi Arduino (Arduino - Radar/Ultrasonic Detector, Arduino Ultrasonic Radar Project) sono radar molto belli ma tutti sono "ciechi". Voglio dire, il radar rileva qualcosa, ma cosa sta rilevando?

Quindi mi propongo di sviluppare un sistema in grado di rilevare oggetti e identificarli. In altre parole un sistema di posizionamento senza l'utilizzo di dispositivi GPS ma rilevatori ad ultrasuoni.

Questo è il risultato che spero vi piaccia.

Passaggio 1: come funziona?

Come funziona?
Come funziona?

Il sistema di posizionamento è formato da tre stazioni di sensori con rilevatori a ultrasuoni e id_node 1, 2 e 3 che formano un rettangolo o un quadrato che spazzano un angolo di 90º e le cui distanze sono note come mostrato nella figura 1.

const float distanza tra 1 e 2 = 60.0;

const float distanza tra 2 e 3 = 75,0;

Questi sensori misurano la distanza e l'angolo di altri oggetti con id_node maggiore di 3 che hanno anche un rilevatore a ultrasuoni che spazza un angolo di 170°.

Tutti inviano le distanze, gli angoli misurati e l'id_node ad un'altra stazione master tramite comunicazioni wireless per analizzare, calcolare la posizione degli oggetti tramite calcolo trigonometrico e identificarli.

Per evitare interferenze, la stazione principale sincronizza tutti i rilevatori di ultrasuoni in modo che un solo rilevatore di ultrasuoni misuri alla volta

Successivamente e utilizzando una comunicazione seriale, la stazione principale invia le informazioni (angolo, distanza, id_oggetto) a uno schizzo di elaborazione per tracciare i risultati.

Passaggio 2: come configurare le tre stazioni sensore e gli oggetti

Come configurare le tre stazioni sensore e gli oggetti
Come configurare le tre stazioni sensore e gli oggetti
Come configurare le tre stazioni sensore e gli oggetti
Come configurare le tre stazioni sensore e gli oggetti

L'unica funzione di ogni stazione sensore è quella di rilevare oggetti e inviare l'elenco di distanza, angolo e nodo id misurato alla stazione master.

Quindi devi aggiornare la distanza di rilevamento massima ("valid_max_distance ") consentita e quella minima ("valid_min_distance ") (centimetri) per migliorare la rilevazione e limitare la zona di rilevamento:

int valid_max_distance = 80;

int valid_min_distance = 1;

Il nodo id di queste stazioni sensore ("this_node" nel codice sotto) sono 1, 2 e 3 e il nodo id della stazione master è 0.

const uint16_t this_node = 01; // Indirizzo del nostro nodo in formato Octal (Node01, Node02, Node03)

const uint16_t other_node = 00; //Indirizzo del nodo master (Node00) in formato Octal

Ogni stazione sensore spazza e un angolo di 100º ("max_angle" nel codice sotto)

#define min_angle 0

#define max_angle 100

Come sopra, l'unica funzione di un oggetto è quella di rilevare oggetti e inviare l'elenco delle distanze, degli angoli e dell'oggetto id misurato alla stazione principale. L'id di un oggetto ("this_node" nel codice seguente) deve essere maggiore di 3.

Ogni oggetto spazza e angolo di 170º e come sopra, è possibile aggiornare la distanza di rilevamento massima e minima.

const uint16_t this_node = 04; // Indirizzo del nostro nodo in formato Octal (Node04, Node05, …)

const uint16_t other_node = 00; // Indirizzo del nodo master (Node00) in formato Octal int valid_max_distance = 80; int valid_min_distance = 1; #define min_angle 0 #define max_angle 170

Passaggio 3: come configurare la stazione principale

Come configurare la stazione principale
Come configurare la stazione principale
Come configurare la stazione principale
Come configurare la stazione principale
Come configurare la stazione principale
Come configurare la stazione principale

La funzione della stazione master è ricevere le trasmissioni delle stazioni sensore e degli oggetti e inviare i risultati tramite la porta seriale a uno schizzo di elaborazione per tracciarli. Inoltre sincronizza tutti gli oggetti e le tre stazioni sensore in modo che solo uno di essi misuri alla volta per evitare interferenze.

Per prima cosa devi aggiornare la distanza (in centimetri) tra il sensore 1 e 2 e la distanza tra 2 e 3.

const float distanza tra 1 e 2 = 60.0;

const float distanza tra 2 e 3 = 70.0;

Lo schizzo calcola la posizione degli oggetti nel modo seguente:

  • Per tutte le trasmissioni degli oggetti (id_node maggiore di 3) cercare la stessa distanza in ogni trasmissione dei sensori ad ultrasuoni (id_node 1, 2 o 3).
  • Tutti questi punti formano un elenco di "candidati" (distanza, angolo, id_node) per essere la posizione di un oggetto ("process_pointobject_with_pointssensor" nello schizzo).
  • Per ogni “candidato” della lista precedente, la funzione “candidato_selezionato_tra_sensore2e3” calcola dal punto di vista del sensore ad ultrasuoni 2 e 3 quale di essi corrisponde alla seguente condizione trigonometrica (vedi figure 2 e 3)

float distanzada2 = sin(radianti(angolo)) * distanza;

float distanza da 3 = cos(radianti(angolo_candidato)) * distanza_candidato; // Condizione trigonometrica 1 abs(distanza2 + distanza3 - distanzatra2e3) <= float(max_diference_distance)

Come sopra, per ogni "candidato" della lista precedente, la funzione “candidato_selezionato_tra_sensore1e2” calcola dal punto di vista del sensore ad ultrasuoni 1 e 2 quale di essi corrisponde alla seguente relazione trigonometrica (vedi figura 2 e 3)

float distanzada1 = sin(radianti(angolo)) * distanza;float distanza da2 = cos(radianti(angolo_candidato)) * distanza_candidato; // Condizione trigonometrica 2 ass(distanza da 1 + distanza da 2 - distanza tra 1 e 2) <= float(max_diference_distance)

Solo i candidati (distanza, angolo, id_node) che soddisfano le condizioni trigonometriche 1 e 2 vengono identificati oggetti rilevati dalle stazioni sensore 1, 2 e 3

Successivamente i risultati vengono inviati dalla stazione principale a uno schizzo di elaborazione per tracciarli.

Passaggio 4: elenco dei materiali

Image
Image

L'elenco del materiale necessario per una stazione sensore o un oggetto è il seguente:

  • Nano board
  • Sensore ultrasonico
  • Micro servomotore
  • Modulo wireless NRF24L01
  • Adattatore NRF24L01

e l'elenco del materiale per la stazione principale è il seguente:

  • Nano board
  • Modulo wireless NRF24L01
  • Adattatore NRF24L01

Consigliato: