Código Arduino e Vídeo: Sensor de Obstáculos Infravermelho de 4 Canais para Carro Inteligente Arduino
Neste tutorial, exploraremos como usar um módulo sensor infravermelho de 4 canais para desvio de obstáculos e criar um carro inteligente. Este módulo é composto por quatro sensores infravermelhos que podem detectar obstáculos em várias direções, permitindo que seu veículo robótico reaja adequadamente. Cada sensor fornece feedback sobre a proximidade, permitindo que você programe respostas com base nos obstáculos detectados.

À medida que avançamos neste projeto, abordaremos os componentes de hardware, as instruções de fiação e o código necessário para operar os sensores de forma eficaz. Você pode encontrar esclarecimentos adicionais no vídeo (em 00:00).
Hardware Explicado
O componente principal deste projeto é o módulo de desvio de obstáculos por infravermelho de 4 canais, que utiliza o comparador diferencial quádruplo LM339. Este CI é capaz de operar entre 2 e 36 volts, mas no nosso caso usaremos 5 volts para compatibilidade com o Arduino. Cada sensor do módulo possui uma entrada inversora e uma entrada não inversora, permitindo comparar a luz infravermelha refletida pelos obstáculos e emitir um sinal correspondente.
O módulo é projetado com resistores de pull-up que mantêm a saída em nível alto quando nenhum obstáculo é detectado. Quando um objeto é detectado, a saída vai para nível baixo, fornecendo um sinal claro ao Arduino. Além disso, o módulo possui LEDs que indicam quando um obstáculo é detectado, melhorando o feedback ao usuário durante a operação.
Detalhes da ficha técnica
| Fabricante | Desconhecido |
|---|---|
| Número da peça | Evitamento de Obstáculos por Infravermelho de 4 Canais |
| Tensão lógica/E/S | 5 V |
| Tensão de alimentação | 2-36 V |
| Corrente de saída (por canal) | 10 mA (típ.) |
| Corrente de pico (por canal) | 20 mA (máx.) |
| Orientação sobre a frequência do PWM | Não aplicável |
| Limiares de entrada lógica | BAIXO < 0.8 V, ALTO > 2.0 V |
| Queda de tensão / RDF(ligado) / saturação | 0.2 V (típ.) |
| Limites térmicos | Temperatura de operação: -40 a 125 °C |
| Pacote | Módulo |
| Notas / variantes | Inclui 4 sensores com sensibilidade ajustável. |
- Use uma massa comum para todos os componentes para evitar entradas flutuantes.
- Ajuste o potenciômetro de sensibilidade para obter o alcance de detecção ideal.
- Garanta a tensão adequada da fonte de alimentação para evitar danificar os sensores.
- Verifique as conexões de fiação para evitar leituras incorretas dos sensores.
- Use capacitores de desacoplamento para estabilizar a alimentação dos sensores.
- Teste cada sensor individualmente antes de integrá-lo ao sistema principal.
Instruções de fiação
Para ligar o módulo de evitamento de obstáculos infravermelho de 4 canais ao Arduino, comece conectando a alimentação e o terra. Conecte o pino VCC do módulo sensor à saída 5V do Arduino. Em seguida, conecte o pino GND do módulo ao terra (GND) do Arduino. Isso fornecerá a energia necessária para que os sensores funcionem.
Em seguida, conecte os pinos de saída dos sensores aos pinos de entrada digitais do Arduino. Por exemplo, conecte a saída do sensor dianteiro-esquerdo (identificado comoN1) para o pino digital 2, o sensor frontal direito (N2) para o pino 3, o sensor traseiro esquerdo (N3) para o pino 4, e o sensor traseiro direito (N4) ao pino 5. Além disso, você pode conectar a saída do freio ao pino 8, o indicador de obstáculo dianteiro ao pino 9 e o indicador de obstáculo traseiro ao pino 10. Certifique-se de que todas as conexões estejam firmes para um funcionamento confiável.
Exemplos de Código e Guia Passo a Passo
O código Arduino começa definindo constantes para cada pino de sensor, para facilitar a referência ao longo do programa. Por exemplo,FRONT_LEFTé definido como pino 2, deixando claro qual sensor corresponde a qual pino.
#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
Nosetup()função, cada pino do sensor é configurado como uma entrada usandopinMode(). Esta configuração permite ao Arduino ler os estados dos sensores durante a operação.
void setup() {
Serial.begin(9600);
pinMode(FRONT_LEFT, INPUT);
pinMode(FRONT_RIGHT, INPUT);
pinMode(REAR_LEFT, INPUT);
pinMode(REAR_RIGHT, INPUT);
}
No loop principal, o estado de cada sensor é lido usandodigitalRead(). Se um obstáculo for detectado (indicado por um sinal LOW), o LED correspondente é ativado e uma mensagem é impressa no monitor serial.
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);
}
}
Esta estrutura de código permite fácil expansão e modificação, possibilitando que você adapte as respostas conforme as necessidades específicas da sua aplicação. Para o código completo, consulte a seção de carregamento abaixo.
Demonstração / O que esperar
Depois que tudo estiver conectado e o código carregado, você deve esperar que os LEDs do módulo acendam sempre que um obstáculo for detectado por qualquer um dos sensores. O monitor serial também exibirá mensagens indicando a presença de obstáculos na frente ou na traseira. Se os sensores estiverem posicionados corretamente, o carro inteligente reagirá parando ou mudando de direção conforme programado (no vídeo em 02:30).
Armadilhas comuns incluem fiação incorreta, que pode levar a entradas flutuantes ou leituras incorretas. Certifique-se de que os sensores estejam devidamente calibrados e que o potenciômetro esteja ajustado para a sensibilidade desejada. Testar cada sensor independentemente pode ajudar a identificar problemas antes da integração completa.
Marcas de tempo do vídeo
- 00:00- Introdução ao projeto
- 01:30- Explicação do hardware
- 02:30- Revisão de código
- 03:45- Instruções de fiação
- 04:50- Demonstração ao 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);
}
Coisas que você pode precisar
-
Amazonas
Recursos e referências
Ainda não há recursos.
Arquivos📁
Nenhum arquivo disponível.