Arduino para Iniciantes (Parte 5): Projeto Sensor de Estacionamento
Conclua a trilha de Arduino. Integre seus conhecimentos criando um projeto completo de sensor de ré de estacionamento com sensor ultrassônico.
Cajuina Code
Chegamos ao final da nossa trilha de aprendizado de Arduino! Nas primeiras quatro partes, passamos pelos conceitos essenciais de hardware livre, portas digitais, leitura de sensores e modulação de saídas por PWM. Se você precisa recordar como controlar servomotores, confira o post anterior: Arduino para Iniciantes (Parte 4): O que é PWM e Servomotores.
Para consolidar todo esse conhecimento, nesta Parte 5 vamos construir um **Projeto Prático Completo: Um Sensor de Estacionamento (Sensor de Ré)**. Trata-se de um sistema que mede a distância de um obstáculo em tempo real e emite bipes sonoros intermitentes que ficam mais rápidos conforme a proximidade do objeto, simulando exatamente o sistema de segurança dos carros modernos.
TL;DR: O sensor de estacionamento integra um sensor de distância ultrassônico (HC-SR04) e um buzzer sonoro, variando a frequência dos bipes no código com base no cálculo da distância física medida.
Como funciona o Sensor Ultrassônico (HC-SR04)?
O sensor ultrassônico possui dois cilindros parecidos com pequenos olhos. Um deles funciona como um alto-falante (Trigger), emitindo uma onda sonora imperceptível ao ouvido humano (ultrassom). O outro cilindro funciona como um microfone (Echo), capturando o retorno dessa onda após ela bater em um obstáculo e refletir de volta.
Como conhecemos a **velocidade do som no ar (343 metros por segundo)**, o Arduino calcula a distância medindo o tempo total que a onda demorou para ir e voltar, utilizando a fórmula:
Distancia = (Tempo de Viagem * Velocidade do Som) / 2
Dividimos por 2 porque o tempo gravado pelo sensor inclui o percurso de ida E de volta do som.
Tabela de Frequência do Alarme de Proximidade
Para criar o efeito de alerta progressivo, configuramos o intervalo de bipe do **Buzzer** de acordo com a tabela abaixo:
| Distância Medida (cm) | Classificação de Risco | Intervalo entre os Bipes | Status do Alarme |
|---|---|---|---|
| **Mais de 50 cm** | Seguro | Sem som | Desativado |
| **Entre 30 e 50 cm** | Atenção (Obstáculo à frente) | 1 segundo (1000ms) | Bipe lento |
| **Entre 15 e 30 cm** | Cuidado (Aproximação) | 500 milissegundos (500ms) | Bipe médio |
| **Entre 5 e 15 cm** | Perigo (Muito próximo) | 150 milissegundos (150ms) | Bipe rápido |
| **Menos de 5 cm** | Colisão Iminente (Pare!) | Sinal contínuo (sem pausas) | Bipe contínuo |
Circuito do Projeto
Conecte os componentes ao seu Arduino Uno seguindo a pinagem abaixo:
- **Sensor HC-SR04:** VCC no 5V, GND no GND, pino **Trigger** no **pino digital 12**, e pino **Echo** no **pino digital 11**.
- **Buzzer Ativo:** Terminal positivo (+) no **pino digital 8**, e terminal negativo (-) no GND (com um resistor de 220Ω em série).
Código Prático Completo
Digite o seguinte código na sua IDE do Arduino, compile e faça o upload para a placa:
// Definicao dos pinos do sensor e buzzer
const int pinoTrigger = 12;
const int pinoEcho = 11;
const int pinoBuzzer = 8;
// Variaveis de calculo
long duracaoSom;
int distanciaCm;
void setup() {
pinMode(pinoTrigger, OUTPUT); // Trigger envia o pulso ultrassonico
pinMode(pinoEcho, INPUT); // Echo recebe o retorno do pulso
pinMode(pinoBuzzer, OUTPUT); // Buzzer emite o som de alerta
Serial.begin(9600); // Inicializa monitor serial
}
void loop() {
// Garante que o pino Trigger inicie desligado
digitalWrite(pinoTrigger, LOW);
delayMicroseconds(2);
// Envia um pulso ultrassonico de 10 microsegundos
digitalWrite(pinoTrigger, HIGH);
delayMicroseconds(10);
digitalWrite(pinoTrigger, LOW);
// Le o tempo que a onda levou para retornar ao pino Echo (em microsegundos)
duracaoSom = pulseIn(pinoEcho, HIGH);
// Calcula a distancia em centimetros
// (duracaoSom * 0.0343) / 2
distanciaCm = duracaoSom * 0.01715;
// Imprime a distancia no Monitor Serial para calibracao
Serial.print("Distancia do obstaculo: ");
Serial.print(distanciaCm);
Serial.println(" cm");
// Logica do Alarme de Estacionamento
if (distanciaCm > 50) {
digitalWrite(pinoBuzzer, LOW); // Sem som
delay(100);
}
else if (distanciaCm > 30 && distanciaCm <= 50) {
emitirBipe(1000); // Bipe lento
}
else if (distanciaCm > 15 && distanciaCm <= 30) {
emitirBipe(500); // Bipe medio
}
else if (distanciaCm > 5 && distanciaCm <= 15) {
emitirBipe(150); // Bipe rapido
}
else if (distanciaCm <= 5) {
digitalWrite(pinoBuzzer, HIGH); // Som continuo de perigo
delay(100);
}
}
// Funcao auxiliar para emitir o som intermitente
void emitirBipe(int intervaloMs) {
digitalWrite(pinoBuzzer, HIGH); // Liga o som
delay(80); // Mantem o som por 80ms
digitalWrite(pinoBuzzer, LOW); // Desliga o som
delay(intervaloMs - 80); // Aguarda o resto do tempo do intervalo
}Explicando o cálculo de distância no código
O cálculo matemático utiliza a velocidade física de propagação do som no ar:
- A velocidade do som é de **343 m/s**, o que equivale a **0,0343 cm/microsegundo**.
- O comando pulseIn(pinoEcho, HIGH) mede o tempo em que o pino Echo ficou em nível alto, representando o tempo de ida e volta do pulso em microsegundos.
- Multiplicamos por
0,0343e dividimos por2(o que resulta na constante simplificada0.01715) para obter a distância real do obstáculo em centímetros.
Perguntas Frequentes
Qual a distância máxima e mínima que o sensor HC-SR04 consegue medir?
O sensor ultrassônico HC-SR04 possui uma excelente faixa de trabalho, conseguindo ler distâncias que variam de **2 centímetros até 4 metros** com precisão de cerca de 3 milímetros.
Qual a diferença de um Buzzer Ativo e um Buzzer Passivo?
O **Buzzer Ativo** possui um oscilador interno. Basta alimentar o pino com 5V (HIGH) para ele emitir um som contínuo em frequência única. O **Buzzer Passivo** funciona como um mini alto-falante comum, exigindo que o Arduino envie sinais alternados (frequências de ondas por PWM ou pela função tone()) para gerar som.
Parabéns pela conclusão da Trilha!
Você concluiu a série de Arduino para Iniciantes! Com essa base sólida de entradas e saídas digitais, analógicas, PWM e integração de múltiplos sensores, você está totalmente preparado para criar projetos autorais incríveis de automação residencial e robótica.
Conclusão da Trilha
Coloque a mão na massa, monte o seu circuito de testes e divirta-se vendo a eletrônica funcionar no mundo real! Agradecemos por acompanhar toda a nossa trilha de desenvolvimento de robótica.