วัดระยะทางด้วยเซ็นเซอร์ HC-SR04 และแสดงผลบนจอ LCD พร้อมเสียงแจ้งเตือน

เครื่องวัดระยะทางด้วยเซ็นเซอร์HC-SR04

สร้างเครื่องวัดระยะทางด้วยเซ็นเซอร์ HC-SR04 และแสดงผลบนจอ LCD พร้อมเสียงแจ้งเตือน

บทนำเกี่ยวกับเซ็นเซอร์ HC-SR04

เราจะสร้างโปรเจกต์ที่ใช้ เซ็นเซอร์ HC-SR04 แสดงผลระยะทางบนจอ LCD I2C และใช้ Buzzer เพื่อแจ้งเตือนเมื่อพบวัตถุอยู่ในระยะใกล้ คุณจะได้เรียนรู้วิธีเชื่อมต่อฮาร์ดแวร์ เขียนโปรแกรมด้วยภาษา C และการใช้งานไลบรารีใน Arduino IDE

 


 

อุปกรณ์ที่ต้องใช้

  • บอร์ด esp32
  • เซ็นเซอร์ HC-SR04
  • จอ LCD I2C (16×2)
  • Buzzer
  • สายจัมเปอร์
  • Breadboard

 

แผนผังการต่อวงจร

ต่อวงจรตามรายละเอียดดังนี้:
  • ขา Trig ของ HC-SR04 ต่อกับขา 9 บน esp32
  • ขา Echo ของ HC-SR04 ต่อกับขา 10 บน esp32
  • ขา Buzzer ต่อกับขา 8 บน esp32
  • ขา SDA และ SCL ของจอ LCD ต่อกับขา 21 และ 22 บน esp32
ตรวจสอบให้แน่ใจว่าการเชื่อมต่อแน่นหนาและถูกต้อง

เซ็นเซอร์ HC-SR04 โครงงานวัดระยะทาง
 

โค้ดโปรแกรมสำหรับเซ็นเซอร์ HC-SR04

ไลบรารี LiquidCrystal_I2C ใช้งานร่วมกับ จอ LCD I2Cดาวน์โหลด ไลบรารี่ที่นี้ด้านล่างคือโค้ดตัวอย่างสำหรับโปรเจกต์นี้:

/*
   Link : www.devadiy.com
*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// กำหนดขาเซ็นเซอร์ HC-SR04
const int trigPin = 18;
const int echoPin = 19;

// กำหนดขา Buzzer
const int buzzerPin = 5;

// สร้างออบเจ็กต์สำหรับ LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);


void setup() {
  // ตั้งค่าขา
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzerPin, OUTPUT);

  // เริ่มต้น LCD
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Ultrasonic Dist");

  // เริ่มต้น Serial Monitor (ถ้าต้องการดูค่าทาง Serial)
  Serial.begin(115200);
}

void loop() {
  // วัดระยะทาง
  long duration;
  float distance;

  // ส่งสัญญาณ Trig
  digitalWrite(trigPin, LOW);
  delayMicroseconds(5);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(trigPin, LOW);

  // รับสัญญาณ Echo
  duration = pulseIn(echoPin, HIGH);

  // คำนวณระยะทาง (หน่วย: เซนติเมตร)
  distance = (duration/2) / 29.1;

  // แสดงผลบน LCD
  lcd.setCursor(0, 1);
  lcd.print("DT: ");
  lcd.print(distance);
  lcd.print(" cm "); // เพิ่มช่องว่างเพื่อเคลียร์ข้อความเก่า

  // เงื่อนไขสำหรับ Buzzer
  if (distance < 7) {
    // วัตถุใกล้น้อยกว่า 7 cm -> กระพริบเร็วมาก
    digitalWrite(buzzerPin, HIGH);
    delay(50);
    digitalWrite(buzzerPin, LOW);
    delay(50);
  } else if (distance < 15) {
    // วัตถุใกล้น้อยกว่า 15 cm -> กระพริบเร็ว
    digitalWrite(buzzerPin, HIGH);
    delay(200);
    digitalWrite(buzzerPin, LOW);
    delay(200);
  } else {
    // ระยะมากกว่า 15 cm -> ปิด Buzzer
    digitalWrite(buzzerPin, LOW);
    delay(100);
  }  
}

ดาวน์โหลดโค้ดที่นี้

กรุณา เข้าสู่ระบบ เพื่อดาวน์โหลด

 

คำอธิบายโค้ด

ส่วนการตั้งค่า (setup)

ในฟังก์ชัน setup() มีการตั้งค่าขา Trig และ Echo ของเซ็นเซอร์ HC-SR04 รวมถึงขาของ Buzzer และเริ่มต้นการทำงานของจอ LCD 

ส่วนการทำงานหลัก (loop)

ในฟังก์ชัน loop() มีการวัดระยะทางด้วยเซ็นเซอร์ HC-SR04 คำนวณค่าระยะทางและแสดงผลบนจอ LCD พร้อมทั้งควบคุมการทำงานของ Buzzer ตามระยะทางที่วัดได้
 
 

ผลลัพธ์ที่ได้

  • ระยะทางจะแสดงผลบนจอ LCD แบบเรียลไทม์
  • เสียง Buzzer จะดังแจ้งเตือนเมื่อพบวัตถุในระยะใกล้ โดยความถี่ของเสียงจะแตกต่างกันตามระยะทาง

 

ข้อควรระวัง

  • ตรวจสอบการเชื่อมต่อสายให้แน่ใจว่าถูกต้อง
  • ทดสอบโค้ดด้วย Serial Monitor เพื่อดูค่าที่เซ็นเซอร์วัดได้
  • หากจอ LCD ไม่แสดงผล อาจต้องตรวจสอบที่อยู่ I2C ของจอ LCD

 

สรุป

โปรเจกต์นี้เหมาะสำหรับผู้เริ่มต้นที่ต้องการเรียนรู้การใช้งาน เซ็นเซอร์ HC-SR04 และจอ LCD พร้อมทั้งการเขียนโปรแกรมเพื่อควบคุมอุปกรณ์ต่างๆ ผ่าน Arduino IDE คุณสามารถนำไปปรับใช้ในงานจริงได้หลากหลาย เช่น การทำระบบตรวจจับวัตถุ การทำประตูอัตโนมัติ หรือแม้กระทั่งระบบรักษาความปลอดภัย

Shopping Cart
Scroll to Top