CajuínaCode
Voltar ao blog
ArduinoRobóticaProgramaçãoTecnologiaTutorial

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.

CC

Cajuina Code

·4 min de leitura

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 RiscoIntervalo entre os BipesStatus do Alarme
**Mais de 50 cm**SeguroSem somDesativado
**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,0343 e dividimos por 2 (o que resulta na constante simplificada 0.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.

Newsletter

Receba as notas de desenvolvimento

Enviamos atualizações técnicas e bastidores de código sem spam direto no seu e-mail.

Leia também