Radar Ultrassônico HC-SR04 com Arduino: Visualização em Tempo Real via Processing
Componentes Necessários
- 1x Arduino UNO
- 1x Sensor Ultrassônico HC-SR04
- 1x Servomotor (padrão, ex: SG90 ou MG996R)
- Jumpers e protoboard
- PC com Processing IDE instalado
Sobre o Projeto
Este projeto cria um radar visual em tempo real usando o sensor HC-SR04 montado em um servomotor. O Arduino varre o sensor de -80° a +80° e envia ângulo e distância via Serial para o Processing, que desenha uma visualização top-down estilo radar.
Arquitetura
- Arduino (Server): Controla servo, lê HC-SR04 via biblioteca
NewPing, envia dados CSV (ângulo,distância) pela Serial a 9600 baud - Processing (Client): Recebe dados, desenha duas varreduras (ida e volta) e exibe média das leituras
Código Arduino
/* Radar HC-SR04 - Envia leituras seriais para Processing */
#include <NewPing.h>
#include <Servo.h>
#define TRIGGER_PIN 2
#define ECHO_PIN 3
#define MAX_DISTANCE 150 // cm (máx. sensor: 400-500cm)
#define SERVO_PWM_PIN 9
#define ANGLE_BOUNDS 80
#define ANGLE_STEP 1
int angle = 0;
int dir = 1; // 1 = frente, -1 = trás
Servo myservo;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(9600);
myservo.attach(SERVO_PWM_PIN);
}
void loop() {
delay(50); // estabilização
// Converte ângulo -80..80 para 0..160 do servo
myservo.write(angle + ANGLE_BOUNDS);
getDistanceAndSend2Serial(angle);
// Inverte direção nos limites
if (angle >= ANGLE_BOUNDS || angle <= -ANGLE_BOUNDS) dir = -dir;
angle += dir * ANGLE_STEP;
}
int getDistanceAndSend2Serial(int angle) {
int cm = sonar.ping_cm();
Serial.print(angle, DEC);
Serial.print(",");
Serial.println(cm, DEC);
}
Código Processing
Disponível no GitHub: Arduino_radar_client_processing.pde
O Processing desenha:
- Linhas de grade circulares (distância)
- Linhas radiais (ângulo)
- Pontos vermelhos = leitura ida (esquerda→direita)
- Pontos azuis = leitura volta (direita→esquerda)
- Pontos verdes = média das duas leituras
- Texto com ângulo e distância atuais
Esquemático de Ligação
- HC-SR04: VCC→5V, GND→GND, Trig→D2, Echo→D3
- Servo: Sinal→D9 (PWM), VCC→5V (ou fonte externa se servo grande), GND→GND
- ⚠️ Servos consomem corrente de pico alta; use capacitor 100µF entre 5V-GND se houver reinícios aleatórios
Como Executar
- Carregue o sketch no Arduino
- Abra o Processing IDE
- Carregue o sketch
Arduino_radar_client_processing.pde - Clique em Run (▶) no Processing
- A janela gráfica mostrará o radar em tempo real
Melhorias Possíveis
- Aumentar
MAX_DISTANCEpara 400cm (alcance real do HC-SR04) - Reduzir
ANGLE_STEPpara 0.5° (mais resolução, mais lento) - Adicionar filtro de mediana no Arduino para reduzir ruído
- Salvar logs CSV no Processing para análise posterior
- Usar HC-SR04 com interface I2C (menos pinos)
Recursos
- GitHub do autor: faweiz
- Portfólio: portfolium.com/faweiz
- LinkedIn: linkedin.com/in/faweiz
Processo de manufatura
- Construa um Spybot Controlado por Bluetooth com Arduino
- FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
- DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
- Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
- Soluções de Energia Otimizadas para Projetos Arduino
- Jogo da Velha com Arduino, Matriz LED MAX7219 e Caixa de Papelão
- Construa um Robô Quadrúpede Inteligente com Arduino: Guia Passo a Passo
- Medição de Distância em Tempo Real com Sonar Arduino e Visualização no Processing
- Volante Joystick Arduino Personalizado para Jogos