Original source: https://arduinogetstarted.com/tutorials/arduino-ultrasonic-sensor
Hardware Required
1 | × | Arduino UNO or Genuino UNO | |
1 | × | USB 2.0 cable type A/B | |
1 | × | Ultrasonic Sensor | |
1 | × | Jumper Wires | |
1 | × | Breadboard |
About Ultrasonic Sensor
Ultrasonic sensor HC-SR04 is used to measure the distance to an object by using ultrasonic waves.
Pinout
The ultrasonic sensor HC-SR04 includes four pins:
- VCC pin needs to be connected to VCC (5V)
- GND pin needs to be connected to GND (0V)
- TRIG pin this pin receives the control signal (pulse) from Arduino.
- ECHO pin this pin sends a signal (pulse) to Arduino. Arduino measures the duration of pulse to calculate distance.
How It Works
This section is the in-depth knowledge. DON'T worry if you don't understand. Ignore this section if it overloads you, and come back in another day. Keep reading the next sections.
- Micro-controller: generates a 10-microsecond pulse on the TRIG pin.
- The ultrasonic sensor automatically emits the ultrasonic waves.
- The ultrasonic wave is reflected after hitting an obstacle.
- The ultrasonic sensor:
- Detects the reflected ultrasonic wave.
- Measures the travel time of the ultrasonic wave.
- Ultrasonic sensor: generates a pulse to the ECHO pin. The duration of the pulse is equal to the travel time of the ultrasonic wave.
- Micro-controller measures the pulse duration in the ECHO pin, and then calculate the distance between sensor and obstacle.
See animated GIF image here (you may need to wait a moment for loading)
How to Get Distance From Ultrasonic Sensor
To get distance from the ultrasonic sensor, we only need to do two steps (1 and 6 on How It Works part)
- Generates a 10-microsecond pulse on TRIG pin
- Measures the pulse duration in ECHO pin, and then calculate the distance between sensor and obstacle
Distance Calculation
We have:
- The travel time of the ultrasonic wave (µs): travel_time = pulse_duration
- The speed of the ultrasonic wave: speed = SPEED_OF_SOUND = 340 m/s = 0.034 cm/µs
So:
- The travel distance of the ultrasonic wave (cm): travel_distance = speed × travel_time = 0.034 × pulse_duration
- The distance between sensor and obstacle (cm): distance = travel_distance / 2 = 0.034 × pulse_duration / 2 = 0.017 × pulse_duration
Arduino - Ultrasonic Sensor
Arduino's pins can generate a 10-microsecond pulse and measure the pulse duration. Therefore, we can get the distance from the ultrasonic sensor by using two Arduino's pins:
- One pin is connected to TRIG PIN to generate 10µs pulse to TRIG pin of the sensor
- Another pin is connected to ECHO PIN measure pulse from the sensor
Wiring Diagram
Image is developed using Fritzing
How To Program
- How to generate a 10-microsecond pulse in Arduino's pin, for example, pin 9:
digitalWrite(9, HIGH); delayMicroseconds(10); digitalWrite(9, LOW);
- How to measures the pulse duration (µs) in Arduino's pin, for example, pin 8:
duration_us = pulseIn(8, HIGH);
- How to calculate distance (cm):
distance_cm = 0.017 * duration_us;
Arduino Code
/*
* Created by ArduinoGetStarted, https://arduinogetstarted.com
*
* Arduino - Ultrasonic Sensor HC-SR04
*
* Wiring: Ultrasonic Sensor -> Arduino:
* - VCC -> 5VDC
* - TRIG -> Pin 9
* - ECHO -> Pin 8
* - GND -> GND
*
* Tutorial is available here: https://arduinogetstarted.com/tutorials/arduino-ultrasonic-sensor.php
*/
int trigPin = 9; // TRIG pin
int echoPin = 8; // ECHO pin
float duration_us, distance_cm;
void setup() {
// begin serial port
Serial.begin (9600);
// configure the trigger pin to output mode
pinMode(trigPin, OUTPUT);
// configure the echo pin to input mode
pinMode(echoPin, INPUT);
}
void loop() {
// generate 10-microsecond pulse to TRIG pin
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// measure duration of pulse from ECHO pin
...
Read more »
Wow, very cool !
I like the way you present how sensor works