Codice Arduino e video: sensore a infrarossi a 4 canali per il rilevamento ostacoli dell'Arduino Smart Car
In questo tutorial esploreremo come utilizzare un modulo sensore di evitamento ostacoli a infrarossi a 4 canali per creare un'auto intelligente. Questo modulo è composto da quattro sensori a infrarossi che possono rilevare ostacoli in varie direzioni, permettendo al tuo veicolo robotico di reagire di conseguenza. Ogni sensore fornisce informazioni sulla prossimità, consentendoti di programmare risposte in base agli ostacoli rilevati.

Man mano che procediamo con questo progetto, affronteremo i componenti hardware, le istruzioni di cablaggio e il codice necessario per far funzionare efficacemente i sensori. Puoi trovare ulteriori chiarimenti nel video (al minuto 00:00).
Hardware spiegato
Il componente principale di questo progetto è il modulo di evitamento ostacoli a infrarossi a 4 canali, che utilizza il comparatore differenziale quadruplo LM339. Questo circuito integrato è in grado di funzionare tra 2 e 36 volt, ma nel nostro caso useremo 5 volt per compatibilità con l'Arduino. Ogni sensore del modulo ha un ingresso invertente e un ingresso non invertente, che gli consentono di confrontare la luce infrarossa riflessa dagli ostacoli e di emettere un segnale di conseguenza.
Il modulo è progettato con resistenze di pull-up che mantengono l'uscita alta quando non viene rilevato alcun ostacolo. Quando viene rilevato un oggetto, l'uscita va a livello basso, fornendo un segnale chiaro all'Arduino. Inoltre, il modulo è dotato di LED che indicano quando viene rilevato un ostacolo, migliorando il feedback per l'utente durante il funzionamento.
Dettagli della scheda tecnica
| Produttore | Sconosciuto |
|---|---|
| Numero di parte | Evitamento ostacoli a infrarossi a 4 canali |
| Tensione logica/IO | 5 V |
| Tensione di alimentazione | 2-36 V |
| Corrente di uscita (per canale) | 10 mA (tip.) |
| Corrente di picco (per canale) | 20 mA (max.) |
| Linee guida sulla frequenza PWM | Non applicabile |
| Soglie di ingresso logico | BASSO < 0.8 V, ALTO > 2.0 V |
| Caduta di tensione / RDS(on) / saturazione | 0,2 V (tip.) |
| Limiti termici | Temperatura di esercizio: da -40 a 125 °C |
| Pacchetto | Modulo |
| Note / varianti | Include 4 sensori con sensibilità regolabile. |
- Utilizzare una massa comune per tutti i componenti per evitare ingressi flottanti.
- Regolare il potenziometro di sensibilità per una portata di rilevamento ottimale.
- Verificare che la tensione di alimentazione sia corretta per evitare di danneggiare i sensori.
- Verificare i collegamenti elettrici per evitare letture errate dai sensori.
- Utilizzare condensatori di disaccoppiamento per stabilizzare l'alimentazione dei sensori.
- Collauda ogni sensore singolarmente prima di integrarlo nel sistema principale.
Istruzioni di cablaggio
Per collegare il modulo di evitamento ostacoli a infrarossi a 4 canali all'Arduino, inizia collegando alimentazione e massa. Collega il pin VCC del modulo sensore all'uscita 5V dell'Arduino. Quindi collega il pin GND del modulo alla massa (GND) dell'Arduino. Questo fornirà l'alimentazione necessaria per il funzionamento dei sensori.
Successivamente, collega i pin di uscita dei sensori ai pin di ingresso digitali dell'Arduino. Ad esempio, collega l'uscita del sensore anteriore sinistro (etichettato comeN1) al pin digitale 2, il sensore anteriore destro (N2) al pin 3, il sensore posteriore sinistro (N3) al pin 4, e il sensore posteriore destro (N4) al pin 5. Inoltre, puoi collegare l'uscita del freno al pin 8, l'indicatore anteriore di ostacolo al pin 9 e l'indicatore posteriore di ostacolo al pin 10. Assicurati che tutte le connessioni siano salde per un funzionamento affidabile.
Esempi di codice e guida passo passo
Il codice Arduino inizia definendo costanti per ogni pin dei sensori per facilitarne il riferimento in tutto il programma. Ad esempio,FRONT_LEFTè definito come il pin 2, rendendo chiaro quale sensore corrisponde a quale pin.
#define FRONT_LEFT 2 // pin 2 for front-left sensor
#define FRONT_RIGHT 3 // pin 3 for front-right sensor
#define REAR_LEFT 4 // pin 4 for rear-left sensor
#define REAR_RIGHT 5 // pin 5 for rear-right sensor
Nelsetup()funzione, ogni pin del sensore è configurato come ingresso usandopinMode(). Questa configurazione permette all'Arduino di leggere gli stati dei sensori durante il funzionamento.
void setup() {
Serial.begin(9600);
pinMode(FRONT_LEFT, INPUT);
pinMode(FRONT_RIGHT, INPUT);
pinMode(REAR_LEFT, INPUT);
pinMode(REAR_RIGHT, INPUT);
}
Nel ciclo principale, lo stato di ogni sensore viene letto utilizzandodigitalRead(). Se viene rilevato un ostacolo (indicato da un segnale LOW), il LED corrispondente viene attivato e un messaggio viene stampato sul monitor seriale.
void loop() {
int FR = digitalRead(FRONT_RIGHT);
int FL = digitalRead(FRONT_LEFT);
if( FR == LOW || FL == LOW) {
digitalWrite(FRONT_OB,HIGH);
Serial.println("Front obstacle");
} else {
digitalWrite(FRONT_OB,LOW);
}
}
Questa struttura del codice permette una facile espansione e modifica, consentendoti di adattare le risposte alle esigenze specifiche della tua applicazione. Per il codice completo, fare riferimento alla sezione sul caricamento qui sotto.
Dimostrazione / Cosa aspettarsi
Una volta che tutto è cablato e il codice caricato, dovresti aspettarti che i LED sul modulo si accendano ogni volta che un ostacolo viene rilevato da uno qualsiasi dei sensori. Il monitor seriale mostrerà inoltre messaggi che indicano la presenza di ostacoli davanti o dietro. Se i sensori sono posizionati correttamente, l'auto intelligente reagirà fermandosi o cambiando direzione come programmato (nel video a 02:30).
Le insidie comuni includono collegamenti errati, che possono portare a ingressi flottanti o a letture errate. Assicurarsi che i sensori siano correttamente calibrati e che il potenziometro sia regolato per la sensibilità desiderata. Testare ogni sensore singolarmente può aiutare a identificare i problemi prima dell'integrazione completa.
Marcatori temporali del video
- 00:00- Introduzione al progetto
- 01:30- Spiegazione dell'hardware
- 02:30- Revisione del codice
- 03:45- Istruzioni di cablaggio
- 04:50- Dimostrazione dal vivo
++
/*
* This is the Arduino code for 4-channel Infrared Obstacle Sensors for a smart car.
* Watch YouTube video: https://youtu.be/6Qs4iFYm_lg
*
* Written by Ahmad Nejrabi for Robojax.com
* on January 15, 2018 at 21:04 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*/
/*
4-Channel Infrared Obstacle Avoidance kit
Written by Ahmad Nejrabi for Robojax.com
on January 15, 2018 at 21:04 in Ajax, Ontario, Canada
What it does?
This module has 4 IR (infrared) sensors that sense obstacles and based on the position of the
obstacle, you can program your Arduino to take action. If you are using it for a smart car, you can
change the direction of the car, apply the brake, or stop it.
*/
// 4 Infrared Obstacle code for Robojax.com
#define FRONT_LEFT 2 // pin 2 for front-left sensor
#define FRONT_RIGHT 3 // pin 3 for front-right sensor
#define REAR_LEFT 4 // pin 4 for rear-left sensor
#define REAR_RIGHT 5 // pin 5 for rear-right sensor
#define BREAK 8 // pin 8 to apply break or turn LED ON
#define FRONT_OB 9 // pin 9 when obstacle is at front
#define REAR_OB 10 // pin 10 when obstacle is at rear
void setup() {
Serial.begin(9600);
pinMode(FRONT_LEFT, INPUT);//define front-left input pin
pinMode(FRONT_RIGHT, INPUT);//define front-right input pin
// 4 Infrared Obstacle code for Robojax.com
pinMode(REAR_LEFT, INPUT);//define rear-left input pin
pinMode(REAR_RIGHT, INPUT);//define rear-right input pin
pinMode(BREAK, OUTPUT);// define pin for break
pinMode(FRONT_OB,OUTPUT);// define front obstacle detection pin
pinMode(REAR_OB,OUTPUT);// define rear obstacle detection pin
}
void loop() {
// 4 Infrared Obstacle code for Robojax.com
int FR = digitalRead(FRONT_RIGHT);// read FRONT_LEFT sensor
int FL = digitalRead(FRONT_LEFT);// read FRONT_RIGHT sensor
int RR = digitalRead(REAR_RIGHT);// read REAR_RIGHT sensor
int RL = digitalRead(REAR_LEFT);// read REAR_LEFT sensor
if( FR == LOW || FL == LOW)
{
digitalWrite(FRONT_OB,HIGH);
Serial.println("Front obstacle");
}else{
digitalWrite(FRONT_OB,LOW);
}
if( RR == LOW || RL == LOW )
{
digitalWrite(REAR_OB,HIGH);
Serial.println("Rear obstacle");
}else{
digitalWrite(REAR_OB,LOW);
}
delay(200);
}
Cose di cui potresti avere bisogno
-
Amazon
Risorse e riferimenti
Nessuna risorsa ancora.
File📁
Nessun file disponibile.