Como Criar um Semáforo Inteligente com Arduino e Sensor Ultrassônico

Como Criar um Semáforo Inteligente com Arduino e Sensor Ultrassônico
Introdução
Já parou em um semáforo e percebeu que a rua com o sinal verde estava vazia, enquanto a sua pista continuava no vermelho sem necessidade? Esse problema é comum em cidades que ainda não possuem um sistema eficiente de tráfego. A solução? Um semáforo inteligente, que ajusta o tempo do sinal de acordo com o fluxo de veículos.
Neste tutorial, vamos mostrar como construir um sistema de semáforo inteligente usando Arduino e sensor ultrassônico. Esse projeto é útil para aprendizado em eletrônica, automação e lógica de programação, sendo ideal para estudantes, hobistas e entusiastas da área.
Materiais Necessários
Para montar esse projeto, você vai precisar dos seguintes componentes:
-
1 Arduino Uno (ou qualquer outro modelo com no mínimo 8 entradas analógicas)
-
1 Sensor Ultrassônico HC-SR04
-
1 Protoboard (a partir de 170 furos)
-
6 LEDs (2 vermelhos, 2 verdes e 2 amarelos)
-
2 Resistores de 220Ω
-
Jumpers para conexões
Com esses componentes, criaremos um sistema simples, mas eficaz, para simular um semáforo inteligente.
Montagem do Circuito
Passo 1: Conectar o Sensor Ultrassônico
O sensor ultrassônico HC-SR04 detecta a presença de veículos próximos ao cruzamento. Suas conexões são:
-
VCC → 5V do Arduino
-
GND → GND do Arduino
-
Trig → Pino digital 9 do Arduino
-
Echo → Pino digital 10 do Arduino
Passo 2: Conectar os LEDs
Os LEDs vão simular os sinais de trânsito para os dois sentidos do cruzamento. Conecte-os conforme a tabela:
Cor do LED | Rua Principal | Rua Secundária |
---|---|---|
Verde | Pino 2 | Pino 5 |
Amarelo | Pino 3 | Pino 6 |
Vermelho | Pino 4 | Pino 7 |
Os resistores de 220Ω devem ser conectados em série com os LEDs para limitar a corrente.
Passo 3: Alimentação e Finalização
Com tudo conectado corretamente, alimente o circuito com a USB do Arduino ou uma fonte externa de 5V.
Como Funciona o Semáforo Inteligente?
-
Por padrão, a rua principal fica com o sinal verde e a rua secundária, vermelho.
-
Quando o sensor ultrassônico detecta um carro na rua secundária, ele inicia o ciclo de troca do semáforo.
-
O LED amarelo da rua principal acende por um breve intervalo.
-
Em seguida, a rua principal recebe o vermelho e a rua secundária, verde.
-
Após um tempo predefinido, o sistema verifica se ainda há carros esperando para atravessar. Se sim, o ciclo continua. Caso contrário, o semáforo volta ao padrão inicial.
Esse sistema melhora o fluxo de trânsito e evita esperas desnecessárias.
const int trigPin = 9;
const int echoPin = 10;
const int ledVerdePrincipal = 2;
const int ledAmareloPrincipal = 3;
const int ledVermelhoPrincipal = 4;
const int ledVerdeSecundaria = 5;
const int ledAmareloSecundaria = 6;
const int ledVermelhoSecundaria = 7;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledVerdePrincipal, OUTPUT);
pinMode(ledAmareloPrincipal, OUTPUT);
pinMode(ledVermelhoPrincipal, OUTPUT);
pinMode(ledVerdeSecundaria, OUTPUT);
pinMode(ledAmareloSecundaria, OUTPUT);
pinMode(ledVermelhoSecundaria, OUTPUT);
digitalWrite(ledVerdePrincipal, HIGH);
digitalWrite(ledVermelhoSecundaria, HIGH);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration * 0.034) / 2;
if (distance < 10) { // Se detectar um carro
delay(1000);
digitalWrite(ledVerdePrincipal, LOW);
digitalWrite(ledAmareloPrincipal, HIGH);
delay(2000);
digitalWrite(ledAmareloPrincipal, LOW);
digitalWrite(ledVermelhoPrincipal, HIGH);
digitalWrite(ledVermelhoSecundaria, LOW);
digitalWrite(ledVerdeSecundaria, HIGH);
delay(5000);
digitalWrite(ledVerdeSecundaria, LOW);
digitalWrite(ledAmareloSecundaria, HIGH);
delay(2000);
digitalWrite(ledAmareloSecundaria, LOW);
digitalWrite(ledVermelhoSecundaria, HIGH);
digitalWrite(ledVermelhoPrincipal, LOW);
digitalWrite(ledVerdePrincipal, HIGH);
}
}
Melhorias e Variações do Projeto
-
Adicione um display LCD para exibir o tempo restante para mudança do sinal.
-
Use sensores infravermelhos para maior precisão na detecção dos veículos.
-
Integre com Wi-Fi e IoT para monitoramento remoto do fluxo de trânsito.
Conclusão
Com este projeto, você pode entender melhor como funcionam os semáforos inteligentes e explorar conceitos avançados de eletrônica e programação. Que tal testar e compartilhar os resultados?
Se gostou deste artigo, compartilhe com amigos e deixe seu comentário abaixo! Queremos saber como você melhoraria este projeto! 🚦
-
Placa UNO R3 ATmega328 com Cabo USB (Compatível com Arduino)
Adquira o Arduino Uno R3 com chip Atmega328 DIP na WJ Componentes Eletrônicos. O Arduino Uno R3 é uma placa microcontroladora versátil e poderosa, ideal para projetos eletrônicos. Compre agora e desfrute da qualidade e confiabilidade da WJ Componentes Elet