สอนใช้เซนเซอร์วัดระยะมหาชน (HC-SR04) กับ Arduino & ESP32 แบบจับมือทำ!

HC-SR04 Ultrasonic Distance Sensor with Arduino and ESP32
โปรเจกต์คู่บุญเด็ก IoT! จับ HC-SR04 มาต่อวัดระยะทางร่วมกับบอร์ด Arduino และ ESP32

Wassup สาย Maker มือใหม่และวัยรุ่น IoT ทุกคน! 🚀 ถ้าพูดถึงเซนเซอร์ตัวแรกๆ ที่ทุกคนต้องเคยจับตอนเริ่มเล่นบอร์ดไมโครคอนโทรลเลอร์ คงหนีไม่พ้นเจ้า HC-SR04 (Ultrasonic Distance Sensor) หรือเซนเซอร์ตาสองดวงที่หน้าตาคล้ายหุ่นยนต์ Wall-E นั่นเองครับ!

ทำไมมันถึงฮิตนัก? ก็เพราะมันทั้งถูก ใช้ง่าย และวัดระยะทางได้แม่นยำตั้งแต่ 2 เซนติเมตร ไปจนถึง 4 เมตร (400cm) เลยทีเดียว เอาไปทำโปรเจกต์ได้เพียบ ไม่ว่าจะเป็น หุ่นยนต์หลบสิ่งกีดขวาง, ถังขยะเปิดอัตโนมัติ, หรือระบบเช็กที่จอดรถว่าง วันนี้เราจะพามาเจาะลึกหลักการทำงาน และวิธีต่อใช้งานกับบอร์ดลูกรักอย่าง Arduino Uno และ ESP32 กันครับ!

ทำงานยังไง? (สวมวิญญาณค้างคาว 🦇)

เจ้า HC-SR04 ทำงานด้วยหลักการที่เรียกว่า Time of Flight (ToF) หรือการคำนวณระยะเวลาเดินทางของคลื่นเสียงครับ หลักการง่ายๆ คือ:

  1. บอร์ดของเราจะส่งสัญญาณสั้นๆ (10µs) ไปกระตุ้นที่ขา TRIG (Trigger)
  2. เซนเซอร์จะยิงคลื่นเสียงอัลตราโซนิกความถี่ 40kHz ออกไป (เป็นความถี่ที่หูคนไม่ได้ยิน)
  3. เมื่อคลื่นเสียงวิ่งไปชนวัตถุ มันจะสะท้อนกลับมาเข้าที่ตัวรับ
  4. ขา ECHO จะส่งสัญญาณกลับมาหาบอร์ดว่าใช้เวลาเดินทางไป-กลับกี่ไมโครวินาที

จากนั้นเราก็เอา "เวลา" ที่ได้ ไปเข้าสูตรคำนวณกับ "ความเร็วเสียง" (0.0343 cm/µs) แล้วหาร 2 (เพราะต้องคิดแค่ขาไปอย่างเดียว) แค่นี้ก็ได้ระยะทางเป็นเซนติเมตรเป๊ะๆ แล้ว!

💡 พร้อมลุยโปรเจกต์แรกหรือยัง? ของมันต้องมี!

สำหรับใครที่อ่านแล้วคันไม้คันมือ อยากทำโปรเจกต์หุ่นยนต์หลบหลีก หรือถังขยะอัจฉริยะ สามารถมาเหมา เซนเซอร์ HC-SR04, บอร์ด Arduino Uno R3, บอร์ด ESP32, สาย Jumper และตัวต้านทาน แบบครบเซ็ตได้ที่ Globalbyte Shop เลยครับ! ของแท้ ส่งไว พร้อมใช้งาน ทัก LINE OA มาให้แอดมินช่วยจัดเซ็ตให้ได้เลย!

การต่อสายใช้งาน (Wiring) 🔌

เซนเซอร์ตัวนี้มีแค่ 4 ขา คือ VCC (ไฟเลี้ยง), GND (กราวด์), TRIG (สั่งยิงเสียง), และ ECHO (รับสัญญาณกลับ) แต่เดี๋ยวก่อน! บอร์ดแต่ละรุ่นต่อไม่เหมือนกันนะ!

  • สำหรับ Arduino Uno: ต่อตรงๆ ได้เลย เอา VCC เข้า 5V, GND เข้า GND ส่วน TRIG กับ ECHO เสียบเข้าขา Digital (เช่น 9 กับ 10) ได้อย่างปลอดภัย เพราะลอจิกเป็น 5V เหมือนกัน

⚠️ คำเตือน: สาย ESP32 ต้องระวังพัง!

บอร์ด ESP32 ทำงานที่ลอจิก 3.3V แต่ขา ECHO ของเซนเซอร์ HC-SR04 ดันส่งสัญญาณกลับมาเป็น 5V! หากต่อตรงๆ บอร์ด ESP32 อาจจะพังได้ครับ จำเป็นต้องใช้ "Voltage Divider" (วงจรแบ่งแรงดัน) โดยเอาตัวต้านทาน (Resistor) 2kΩ และ 3.3kΩ มาต่อคั่นที่ขา ECHO ก่อนเข้าบอร์ดเสมอ!

แจกโค้ด (Arduino Sketch) 💻

ก๊อปปี้โค้ดด้านล่างนี้ไปวางในโปรแกรม Arduino IDE แล้วกด Upload ได้เลย! โค้ดนี้ใช้ได้ทั้ง Arduino และ ESP32 (เพียงแค่เปลี่ยนหมายเลขพินของ TRIG และ ECHO ให้ตรงกับบอร์ดที่ใช้ครับ)

const int trigPin = 9;
const int echoPin = 10;

long duration;
float distanceCm;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  Serial.begin(9600);
  Serial.println("HC-SR04 Distance Sensor Ready!");
}

void loop() {
  // เคลียร์สถานะพิน TRIG ให้เป็น LOW ก่อน
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  // สั่งยิงคลื่นเสียง (ส่งสัญญาณ HIGH เป็นเวลา 10 ไมโครวินาที)
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // จับเวลาที่คลื่นเสียงสะท้อนกลับมา (หน่วยเป็นไมโครวินาที)
  duration = pulseIn(echoPin, HIGH, 30000);

  // ตรวจสอบว่ามีวัตถุหรือไม่
  if (duration == 0) {
    Serial.println("No object detected or object out of range");
  } else {
    // คำนวณเป็นระยะทางเซนติเมตร (ความเร็วเสียง 0.0343 cm/µs หาร 2)
    distanceCm = duration * 0.0343 / 2.0;

    Serial.print("Distance: ");
    Serial.print(distanceCm, 2);
    Serial.println(" cm");
  }

  // หน่วงเวลา 0.5 วินาทีก่อนวัดรอบถัดไป
  delay(500);
}

🔗 ข้อมูลอ้างอิงและจุดวาร์ป:

ใครอยากอ่านคู่มือเจาะลึก ทริกแก้ปัญหา (Troubleshooting) หรือดาวน์โหลดโปรเจกต์ตัวเต็ม สามารถกดลิงก์อ้างอิงด้านล่างนี้ได้เลยครับ:

*Disclaimer (ข้อจำกัดความรับผิดชอบ): เนื้อหาบทความนี้และโค้ดตัวอย่าง ถูกเรียบเรียงและสรุปมาจากโปรเจกต์เพื่อการศึกษาบนแพลตฟอร์ม Hackster.io การต่อวงจรอิเล็กทรอนิกส์ควรตรวจสอบแรงดันไฟ (Voltage) ขาเข้าของบอร์ดให้ดีก่อนจ่ายไฟเสมอ โดยเฉพาะบอร์ด ESP32 ที่ไม่รองรับลอจิก 5V ตรงๆ หากต่อผิดพลาดอาจทำให้อุปกรณ์เสียหายได้ สามารถอ่านคู่มือวงจร Voltage Divider ฉบับเต็มเพิ่มเติมได้ที่ บทความต้นฉบับ ครับ!

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี