Cerca codice

Codice Arduino e video: sensore a infrarossi a 4 canali per il rilevamento ostacoli dell'Arduino Smart Car

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

ProduttoreSconosciuto
Numero di parteEvitamento ostacoli a infrarossi a 4 canali
Tensione logica/IO5 V
Tensione di alimentazione2-36 V
Corrente di uscita (per canale)10 mA (tip.)
Corrente di picco (per canale)20 mA (max.)
Linee guida sulla frequenza PWMNon applicabile
Soglie di ingresso logicoBASSO < 0.8 V, ALTO > 2.0 V
Caduta di tensione / RDS(on) / saturazione0,2 V (tip.)
Limiti termiciTemperatura di esercizio: da -40 a 125 °C
PacchettoModulo
Note / variantiInclude 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

Immagini

4 channel infrared sensor module-6
4 channel infrared sensor module-6
4 channel infrared sensor module-1
4 channel infrared sensor module-1
4 channel infrared sensor module-3
4 channel infrared sensor module-3
4 channel infrared sensor module-
4 channel infrared sensor module-4
4 channel infrared sensor module-
4 channel infrared sensor module-5
60-This is the Arduino code for a 4-channel infrared obstacle sensor.
Lingua: C++
++
/*
 * 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

Risorse e riferimenti

Nessuna risorsa ancora.

File📁

Nessun file disponibile.