Sommario:
- Passaggio 1: come funziona?
- Passaggio 2: come configurare le tre stazioni sensore e gli oggetti
- Passaggio 3: come configurare la stazione principale
- Passaggio 4: elenco dei materiali
Video: Sistema di posizionamento basato su ultrasuoni: 4 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
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?
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
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
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
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:
Sistema di accesso a ultrasuoni: 6 passaggi (con immagini)
Sistema di accesso basato su ultrasuoni: Questa volta vi presento un sistema di accesso basato su ultrasuoni penso che potrebbe essere interessante.Si basa su onde ultrasoniche quindi è un sistema di accesso senza contatto che non ha bisogno di nessun altro dispositivo elettronico ma qualunque oggetto anche le vostre mani per provare c
Generatore musicale basato sulle condizioni meteorologiche (generatore MIDI basato su ESP8266): 4 passaggi (con immagini)
Generatore di musica basato sul tempo (Generatore MIDI basato su ESP8266): Ciao, oggi spiegherò come creare il tuo piccolo generatore di musica basato sul tempo. È basato su un ESP8266, che è un po' come un Arduino, e risponde alla temperatura, alla pioggia e l'intensità della luce. Non aspettarti che produca intere canzoni o programmi di accordi
Bot autonomo basato su Arduino che utilizza il sensore a ultrasuoni: 5 passaggi (con immagini)
Bot autonomo basato su Arduino che utilizza il sensore a ultrasuoni: crea il tuo bot autonomo basato su Arduino utilizzando il sensore a ultrasuoni. Questo bot può muoversi praticamente da solo senza scontrarsi con alcun ostacolo. Fondamentalmente ciò che fa è rilevare qualsiasi tipo di ostacolo sul suo cammino e decidere la migliore pa
Posizionamento di oggetti AR alle coordinate GPS in realtà aumentata: 8 passaggi (con immagini)
Posizionamento di oggetti AR alle coordinate GPS in realtà aumentata: questo istruibile andrà a creare un'app mobile per posizionare oggetti AR alle coordinate GPS con ARkit e ARCore utilizzando Unity3D. Ti guiderò attraverso l'impostazione di un progetto che ho realizzato utilizzando Mapbox che ci consente di taggare i messaggi in particolari G
Posizionamento servo con tastiera: 3 passaggi
Posizionamento servo con una tastiera: in questo tutorial creeremo un progetto che controllerà un Micro-Servo con una tastiera che lo esegue con un Arduino Uno. Materiali utilizzati: Arduino UnoBreadboardTastiera 4x4Micro-Servo