HC-SR04 with ESP8266 and TM1637 Display
In this tutorial, we’ll explore how to integrate an HC-SR04 ultrasonic sensor with an ESP8266 microcontroller and display the measured distance on a TM1637 7-segment display. The HC-SR04 sensor uses ultrasonic waves to calculate distance, and the TM1637 display makes it easy to showcase the results.
Requirements:
- ESP8266 Development Board (such as Wemos D1 mini) (Affiliate) – https://s.click.aliexpress.com/e/_DD3JQhj
- TM1637 display module (Affiliate) – https://s.click.aliexpress.com/e/_DCwvPgx
- Logic Converter (Affiliate) – https://s.click.aliexpress.com/e/_Dmx9x5D
- HC-SR04 ultrasonic sensor (Affiliate) – https://s.click.aliexpress.com/e/_DBmmmYr
- Breadboard and jumper wires (Affiliate) – https://s.click.aliexpress.com/e/_Dl5kuk1
- Arduino IDE installed
- TM1637Display and NewPing libraries installed
Understanding the Logic Level Conversion
The Wemos D1 Mini operates at 3.3V, while the TM1637 and the Ultrasonic Sensor typically works at 5V. To bridge this voltage gap, we’ll use a logic level converter to ensure proper communication between the devices.
Wiring:
- Connect the HC-SR04 sensor:
- Trigger Pin to D1 (GPIO5)
- Echo Pin to D2 (GPIO4)
- Connect the TM1637 display:
- CLK Pin to D5 (GPIO14)
- DIO Pin to D6 (GPIO12)
Installing Libraries:
- Open Arduino IDE.
- Go to “Sketch” -> “Include Library” -> “Manage Libraries…”
- Search for and install “TM1637Display” and “NewPing” libraries.
Code Implementation:
#include <TM1637Display.h> #include <NewPing.h> const int CLK_PIN = D5; // CLK pin connected to D5 (GPIO14) const int DIO_PIN = D6; // DIO pin connected to D6 (GPIO12) const int trigPin = D1; // Trigger pin connected to D1 (GPIO5) const int echoPin = D2; // Echo pin connected to D2 (GPIO4) TM1637Display display(CLK_PIN, DIO_PIN); NewPing sonar(trigPin, echoPin, 200); void setup() { Serial.begin(115200); display.setBrightness(5); } void loop() { delay(50); int distance_cm = sonar.ping_cm(); int distance_mm = distance_cm * 10; display.showNumberDec(distance_mm); // No delays or display clearing }
Explanation:
- We use the TM1637Display library to control the 7-segment display and the NewPing library to interface with the HC-SR04 sensor.
- The
sonar.ping()
function retrieves the distance in centimeters, which is then multiplied by 10 to convert it to millimeters. - The result is displayed on the TM1637 display.
Conclusion:
By following this tutorial, you can easily set up a system to measure distances using an HC-SR04 sensor, display the results on a TM1637 display, and integrate it into various projects such as distance measurement devices, obstacle detection systems, or smart home applications.