Sommario:

Radar a infrarossi con Arduino: 6 passaggi
Radar a infrarossi con Arduino: 6 passaggi

Video: Radar a infrarossi con Arduino: 6 passaggi

Video: Radar a infrarossi con Arduino: 6 passaggi
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Novembre
Anonim
Image
Image

In questo piccolo progetto vorrei mostrarti come puoi creare un semplice radar a casa con Arduino. Esistono molti progetti simili su Internet, ma tutti utilizzano un sensore a ultrasuoni per misurare la distanza. In questo progetto utilizzo un sensore a infrarossi per la misurazione della distanza.

Il mio obiettivo è creare un sistema LIDAR molto semplice ed economico con esso e implementare un dispositivo di mappatura.

Forniture

  • Arduino (ho usato un Maple Mini)
  • Sensore di distanza Sharp (ho usato Sharp GP2Y0A02YK0F)
  • Micro servo (9g)
  • Tagliere, fili
  • Opzionale: resistenza da 4,7 k, condensatore da 100 nF

Passaggio 1: sensore a infrarossi VS a ultrasuoni

Schema
Schema

La principale differenza tra i sensori di distanza a ultrasuoni e a infrarossi è che il sensore a ultrasuoni misura la distanza in una gamma più ampia. Pertanto non è in grado di localizzare con precisione la posizione di un ostacolo. Significa che misura la distanza dell'oggetto più vicino che si trova all'interno di un intervallo di angoli di ~ +-30°.

Naturalmente, ciò non significa che il sensore Sharp sia migliore. A volte questa proprietà può essere molto utile (es. utilizzata dai droni per misurare l'altezza da terra). La scelta giusta dipende totalmente dalle esigenze del tuo progetto.

Passaggio 2: schematico

Schema
Schema
Schema
Schema

È molto semplice effettuare il collegamento tra le parti. Seleziona un'uscita PWM e un ingresso analogico sulla scheda Arduino e collega i sensori di distanza Servo e Sharp a quei pin. Ho usato i seguenti pin per questo scopo:

  • PA0: Ingresso analogico per sensore di distanza Sharp
  • PA9: Uscita PWM per Servo

A volte il sensore IR Sharp può avere un'uscita rumorosa, quindi devi metterci un semplice filtro passa basso. Ho usato un resistore da 4,7k e un condensatore da 100nF per ridurre il rumore sul pin analogico. Oltre a ciò ho anche filtrato il valore misurato nel codice leggendolo più volte e calcolando la media.

Passaggio 3: caratteristica del sensore

Caratteristica del sensore
Caratteristica del sensore
Caratteristica del sensore
Caratteristica del sensore

Sfortunatamente il sensore di distanza a infrarossi utilizzato ha caratteristiche non lineari. Significa che per ottenere la distanza non è sufficiente moltiplicare il valore ADC misurato con un valore costante e aggiungervi un altro valore costante.

Nonostante la scheda tecnica del sensore fornisca la caratteristica, preferisco misurarla da solo nel progetto specifico (potrebbe dipendere dal voltaggio utilizzato). Per questo, ho creato coppie dal valore ADC misurato e dalla distanza per ogni 10 cm. (Il mio sensore è stato in grado di misurare la distanza corretta da 12 cm).

Ho usato queste coppie nel codice per ottenere la distanza corretta con l'interpolazione lineare.

Troverai un semplice codice Arduino alla fine del documento, per misurare il valore ADC durante la misurazione delle caratteristiche.

Passaggio 4: comunicazione seriale

Comunicazione seriale
Comunicazione seriale

Ho usato la comunicazione seriale per inviare i valori misurati angolo-distanza al PC. Dal momento che devo inviare più byte e diversi tipi di messaggi, ho progettato un semplice protocollo di comunicazione.

Questo protocollo consente di definire in modo generico diversi tipi di messaggio. In questo progetto ho utilizzato 2 tipi di messaggio:

  • Parametri: Utilizzato per inviare parametri all'applicazione PC, definiti su Arduino come distanza massima e numero di ostacoli in un round.
  • Ostacolo: utilizzato per inviare un ostacolo rilevato. È identificato dall'angolo del servo e dalla distanza misurata. La posizione x-y verrà calcolata dall'applicazione PC.

Passaggio 5: applicazione Qt

Applicazione Qt
Applicazione Qt

Per comunicare con Arduino e disegnare i punti misurati come un radar ho realizzato un'Applicazione per PC in Qt (C++). Riceve alcuni parametri (definiti su Arduino) e i punti di distanza misurati.

Puoi anche scaricare l'applicazione e il suo codice sorgente.

Passaggio 6: codice sorgente Arduino

Puoi personalizzare alcuni parametri nella parte superiore del codice con delle macro.

Nota che se cambi la caratteristica del sensore di distanza Sharp, devi modificare i valori dell'array distAdcMap!

  • InfraRadar.c: Codice del radar. Copialo e incollalo nel tuo progetto Arduino.
  • InfraRadarMeasurement.c: codice per la misurazione caratteristica. Copialo e incollalo nel tuo progetto Arduino. Utilizzare la console seriale per controllare i valori ADC.

Consigliato: