Arduino + Ultrasonic: สร้าง Parking Sensor แบบ DIY

 

Arduino + Ultrasonic Parking Sensor: เริ่มต้นระบบวัดระยะและต่อยอดสู่ IoT

บทความสรุปจาก IFPE Electronics Challenge | Globalbyteshop Blog

Arduino Ultrasonic Parking Sensor Project

วิดีโอสาธิตการทำงานของ Arduino Parking Sensor

ภาพรวมโปรเจกต์

เคยจอดรถแล้วกลัวชนกำแพงไหม? โปรเจกต์นี้จะพาทำ Parking Sensor แบบง่ายๆ ด้วย Arduino + Ultrasonic Sensor ที่จะส่งเสียง Buzzer เตือนเมื่อใกล้สิ่งกีดขวาง ยิ่งใกล้ยิ่งถี่!

โปรเจกต์นี้มาจาก IFPE Electronics Challenge ของนักศึกษาบราซิล เหมาะมากสำหรับมือใหม่ที่อยากเข้าใจหลักการทำงานของ Sensor และนำไปต่อยอดสู่ระบบ IoT ได้

แนวคิดและที่มา (The Concept)

โปรเจกต์นี้เกิดจากการแข่งขัน IFPE Electronics Challenge ที่ต้องการให้นักศึกษา ประยุกต์ใช้ความรู้อิเล็กทรอนิกส์แก้ปัญหาในชีวิตจริง

ปัญหา: การจอดรถในที่แคบโดยไม่มีตัวช่วยวัดระยะ อาจทำให้ชนสิ่งกีดขวางได้

แนวทางแก้: ใช้ Ultrasonic Sensor วัดระยะ แล้วแจ้งเตือนด้วยเสียง Buzzer

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

Hardware

อุปกรณ์ จำนวน หมายเหตุ
Arduino UNO 1 หรือ Arduino Nano ก็ได้
Ultrasonic Sensor HC-SR04 1 ตัววัดระยะทาง
Buzzer (Piezo) 1 แบบ Active หรือ Passive
Breadboard 1 สำหรับต่อวงจรทดลอง
สายไฟ Jumper หลายเส้น Male-to-Male

Software

  • Arduino IDE - โปรแกรมเขียน Code และ Upload
  • Tinkercad (Optional) - จำลองวงจรออนไลน์ก่อนต่อจริง

หลักการทำงาน (How it Works)

Ultrasonic Sensor HC-SR04 ทำงานคล้ายกับค้างคาว คือส่งคลื่นเสียงความถี่สูง (Ultrasonic) ออกไป แล้ววัดเวลาที่คลื่นสะท้อนกลับมา

สูตรคำนวณระยะทาง:

ระยะทาง (cm) = (เวลา × 0.034) / 2

* หาร 2 เพราะคลื่นเดินทางไป-กลับ

ขั้นตอนการทำงาน:

  1. 1. Arduino ส่งสัญญาณ Trigger ไปที่ Sensor (10 microseconds)
  2. 2. Sensor ส่งคลื่น Ultrasonic ออกไป
  3. 3. คลื่นชนวัตถุแล้วสะท้อนกลับ
  4. 4. Sensor รับคลื่นที่ Echo Pin
  5. 5. Arduino คำนวณระยะทางจากเวลา
  6. 6. ถ้าระยะน้อยกว่าที่กำหนด Buzzer จะดัง

แผนผังวงจร (Schematics)

Parking Sensor Circuit Schematic

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

การต่อวงจร (Hardware Stack)

การต่อ Ultrasonic Sensor HC-SR04

HC-SR04 Pin Arduino Pin คำอธิบาย
VCC 5V จ่ายไฟ +5V
GND GND กราวด์
Trig Pin 9 สัญญาณ Trigger
Echo Pin 10 รับสัญญาณสะท้อน

การต่อ Buzzer

Buzzer Pin Arduino Pin
+ (Positive) Pin 11
- (Negative) GND

โค้ด Arduino (Code)

โค้ดด้านล่างจะอ่านค่าระยะทางจาก Ultrasonic Sensor แล้วสั่ง Buzzer ให้ดังเมื่อระยะน้อยกว่า 50 cm ยิ่งใกล้ Buzzer จะดังถี่ขึ้น

// Parking Sensor with Arduino
// Ultrasonic HC-SR04 + Buzzer

// กำหนด Pin
const int trigPin = 9;
const int echoPin = 10;
const int buzzerPin = 11;

// ตัวแปรเก็บค่า
long duration;
int distance;

void setup() {
  // กำหนดโหมด Pin
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzerPin, OUTPUT);
  
  // เปิด Serial Monitor (ดู Debug)
  Serial.begin(9600);
}

void loop() {
  // ส่งสัญญาณ Trigger
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // อ่านค่าเวลาจาก Echo
  duration = pulseIn(echoPin, HIGH);
  
  // คำนวณระยะทาง (cm)
  distance = duration * 0.034 / 2;
  
  // แสดงค่าใน Serial Monitor
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  
  // ตรวจสอบระยะและสั่ง Buzzer
  if (distance < 10) {
    // ใกล้มาก - ดังต่อเนื่อง
    tone(buzzerPin, 1000);
  } 
  else if (distance < 30) {
    // ใกล้ - ดังถี่
    tone(buzzerPin, 1000);
    delay(100);
    noTone(buzzerPin);
    delay(100);
  } 
  else if (distance < 50) {
    // ปานกลาง - ดังห่าง
    tone(buzzerPin, 1000);
    delay(200);
    noTone(buzzerPin);
    delay(300);
  } 
  else {
    // ไกล - ไม่ดัง
    noTone(buzzerPin);
  }
  
  delay(50);
}

อธิบายโค้ด:

  • trigPin / echoPin - Pin สำหรับ Sensor
  • pulseIn() - ฟังก์ชันวัดเวลาที่ Echo Pin เป็น HIGH
  • tone() - สั่งให้ Buzzer ดังที่ความถี่ที่กำหนด
  • noTone() - หยุด Buzzer
  • การ delay() ระหว่าง tone/noTone ทำให้เกิดจังหวะดังๆ หยุดๆ

บทสรุปและการต่อยอด (Academic Reflection)

สิ่งที่ได้เรียนรู้:

  • หลักการทำงานของ Ultrasonic Sensor
  • การคำนวณระยะทางจากเวลาและความเร็วเสียง
  • การใช้ Conditional Logic (if-else) ควบคุมการทำงาน
  • การใช้ tone() / noTone() สร้างเสียงเตือน

ต่อยอดสู่ IoT:

  • ESP32/ESP8266 - เปลี่ยนจาก Arduino UNO มาใช้บอร์ดที่มี WiFi แล้วส่งข้อมูลระยะทางขึ้น Cloud
  • OLED Display - เพิ่มจอแสดงผลระยะทางแบบ Real-time
  • LED Bar - เพิ่มไฟ LED แสดงระดับระยะทางแบบกราฟิก
  • Mobile App - ส่งค่าไป Blynk หรือ MQTT แล้วดูผ่านมือถือ
  • Multiple Sensors - ใช้หลาย Sensor วัดหลายทิศทาง

เริ่มต้นทำโปรเจกต์ของคุณ

สนใจอุปกรณ์ Arduino, Sensor และอะไหล่อิเล็กทรอนิกส์ สำหรับทำโปรเจกต์ IoT?

คำเตือน

เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา

อ้างอิง: Hackster.io - Parking Sensor by dcs31

Globalbyteshop Blog | สรุปและเรียบเรียงเนื้อหาเพื่อชุมชน Maker ไทย

Original Content by dcs31 @ Hackster.io | Thai Localization by Globalbyteshop

แท็ก


Blog posts

เข้าสู่ระบบ

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

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