- تكلفه فاتورة الكهرباء
- Electrical Energy Consumption
- Parallel and Series Resistor Calculator
- LED Resistor Calculator
- UPS Battery Backup Calculator
- Voltage Divider Calculator
- Resistor Color Code Calculator
- Ohm’s Law Calculator
- Current Divider Calculator
- Number System Conversion Calculator
- Boost Converter Calculator
- MOSFET Threshold Voltage Calculator
- Apparent Power Calculator (kVA & VA)
- 555 Timer Calculator
- Buck Converter Calculator
- Capacitors in Series or Parallel Calculator
- Low Pass Filter Calculator
- RMS Voltage Calculator
- Universal Data Converter
- RMS Voltage Calculator
- Capacitor Code Converter
- Series Inductors Calculator
Guide for HC-SR04 Ultrasonic Distance Sensor Module

HC-SR04 Ultrasonic Distance Sensor Module
Precise Non-Contact Distance Measurement for Arduino Projects
Introduction
The HC-SR04 ultrasonic sensor is a popular module for measuring distances from 2cm to 400cm with 3mm accuracy. Using sound waves beyond human hearing (40kHz), it provides reliable non-contact distance measurement for robotics, automation, and IoT applications.

HC-SR04 ultrasonic sensor
Key Features
Precise Measurement
2cm-400cm range with 3mm accuracy
Ultrasonic Technology
40kHz sound waves for reliable detection
Simple Interface
Only 4 pins (VCC, GND, Trig, Echo)
Easy Integration
Works with 5V microcontrollers
Technical Specifications
Operating Voltage | 5V DC |
---|---|
Working Current | 15mA |
Measuring Angle | 15° |
Resolution | 0.3cm |
Measuring Cycle | ≥50ms |
Dimensions | 45mm × 20mm × 15mm |
Pin Configuration
Pin | Label | Description | Arduino Connection |
---|---|---|---|
1 | VCC | Power (5V) | 5V |
2 | Trig | Trigger Input | Digital Pin |
3 | Echo | Echo Output | Digital Pin |
4 | GND | Ground | GND |
Note: The Echo pin outputs 5V which may need a voltage divider for 3.3V microcontrollers
Wiring with Arduino
// For 3.3V boards (ESP8266/ESP32):
// Echo → Voltage divider (5V to 3.3V)
Important: Avoid placing objects closer than 2cm for accurate readings
// Basic Connections: // VCC → 5V // GND → GND // Trig → D9 // Echo → D10
Basic Distance Measurement
// HC-SR04 Basic Example const int trigPin = 9; const int echoPin = 10; void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { // Clear trigger pin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Send 10μs pulse digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Measure echo pulse duration long duration = pulseIn(echoPin, HIGH); // Calculate distance (cm) float distance = duration * 0.034 / 2; Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm"); delay(100); }
Advanced Applications
Obstacle Avoidance
// Robot obstacle detection
if(distance < 20) { // 20cm threshold
stopMotors();
turnRight();
}
Liquid Level Monitoring
// Tank level measurement
float tankHeight = 50; // cm
float level = tankHeight - distance;
float percentage = (level/tankHeight)*100;
Multiple Sensors
// Array of sensors
const int sensors = 3;
const int trigPins[sensors] = {2,4,6};
const int echoPins[sensors] = {3,5,7};
void readAllSensors() {
for(int i=0; i<sensors; i++) {
// Add sensor reading logic
}
}
Moving Average Filter
// Smooth noisy readings
float readings[5];
int index = 0;
float getFilteredDistance() {
readings[index] = getDistance();
index = (index+1)%5;
float sum = 0;
for(int i=0; i<5; i++) {
sum += readings[i];
}
return sum/5;
}
Troubleshooting
Inconsistent Readings
- Ensure stable power supply (5V)
- Keep sensor perpendicular to target
- Add delay between measurements (≥50ms)
No Readings
- Check wiring connections
- Verify trigger pulse (10μs)
- Test with different objects
Incorrect Distance
- Calibrate speed of sound constant
- Check for acoustic interference
- Avoid soft/angled surfaces