Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

ESP32-Based Dual Ultrasonic Sensor System with Servo Control

View and Edit Project In Cirkit DesignerImage of ESP32-Based Dual Ultrasonic Sensor System with Servo Control

Circuit Documentation

Summary

This circuit involves an ESP32 microcontroller interfacing with two HC-SR05 ultrasonic sensors and a Micro Servo 9G. The ESP32 reads distance measurements from the ultrasonic sensors and controls the servo motor based on the distance readings.

Component List

ESP32 on Baseboard

Micro Servo 9G

HC-SR05 (Sensor 1)

HC-SR05 (Sensor 2)

Wiring Details

ESP32 on Baseboard

Micro Servo 9G

HC-SR05 (Sensor 1)

HC-SR05 (Sensor 2)

Code Documentation

ESP32 on Baseboard

#include <Servo.h>

Servo myservo;

const int trigPin1 = 18;
const int echoPin1 = 19;
const int trigPin2 = 5;
const int echoPin2 = 17;
const int servoPin = 23;

void setup() {
  Serial.begin(115200);
  
  // Servo setup
  myservo.attach(servoPin);
  
  // Sensor 1 setup
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1, INPUT);
  
  // Sensor 2 setup
  pinMode(trigPin2, OUTPUT);
  pinMode(echoPin2, INPUT);
}

void loop() {
  // Read distance from sensor 1
  long duration1, distance1;
  digitalWrite(trigPin1, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin1, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin1, LOW);
  duration1 = pulseIn(echoPin1, HIGH);
  distance1 = (duration1 / 2) / 29.1;
  
  // Read distance from sensor 2
  long duration2, distance2;
  digitalWrite(trigPin2, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin2, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin2, LOW);
  duration2 = pulseIn(echoPin2, HIGH);
  distance2 = (duration2 / 2) / 29.1;
  
  // Print distances
  Serial.print("Distance 1: ");
  Serial.print(distance1);
  Serial.println(" cm");
  
  Serial.print("Distance 2: ");
  Serial.print(distance2);
  Serial.println(" cm");
  
  // Control servo based on distance1
  if (distance1 < 20) {
    myservo.write(90); // Rotate to 90 degrees
  } else {
    myservo.write(0); // Rotate to 0 degrees
  }
  
  delay(1000);
}

Micro Servo 9G

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

HC-SR05 (Sensor 1)

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

HC-SR05 (Sensor 2)

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}