นี่คือโปรเจคง่ายๆ เอาไว้วัดระยะห่างของวัตถุ พอดีรุ่นพี่นั่งเซิร์ฟเน็ตอยู่ก็ปิ๊งไอเดียขึ้นมาว่าทำอะไรเล่นๆ ด้วยเซ็นเซอร์อัลตราโซนิกกับ Arduino Uno สักหน่อยดีกว่า
ในโปรเจคนี้เราจะใช้เซ็นเซอร์อัลตราโซนิก HC-SR04 นะน้อง
และน้องก็ต้องมีไลบรารี่ NewPing ด้วย หาดาวน์โหลดได้ตามเว็บทั่วไปเลยจ้า
มุมมองของโปรเจค
การวัดระยะด้วยเซ็นเซอร์อัลตราโซนิก นี่คือพื้นฐานสุดคลาสสิกและเป็นเหมือน "Hello World" แบบไม่ต้องสัมผัสของวงการวัดระยะเลยนะ เริ่มจากของพื้นฐานอย่าง HC-SR04 กับ Arduino นี่แหละ น้องจะได้เรียนรู้การจัดตำแหน่งและติดตามระยะห่างของเป้าหมาย โดยใช้ลอจิกซอฟต์แวร์เฉพาะทางและการตั้งค่าฮาร์ดแวร์ที่มั่นคง
ลงลึกเทคนิค: พัลส์เสียงกับคณิตศาสตร์
โปรเจคนี้จะเผยให้เห็นเลเยอร์ที่ซ่อนอยู่เบื้องหลังการทำงานแบบพัลส์สู่ดิจิทัล:
- เลเยอร์ตรวจจับ: เซ็นเซอร์อัลตราโซนิก (HC-SR04) ทำหน้าที่เหมือนดวงตาความละเอียดสูงที่ส่งคลื่นเสียง 40kHz ออกไป แล้วคอยฟังเสียงสะท้อนกลับมาเพื่อคำนวณระยะ
- เลเยอร์แปลงสัญญาณ: Arduino ใช้พินดิจิทัล (Trigger และ Echo) ในการส่งและรับพัลส์ความเร็วสูง และประสานงานภารกิจการวัด
- เลเยอร์ลอจิกประมวลผล: โค้ด Arduino จะใช้กลยุทธ์ "ถอดรหัสแบบเป็นลำดับ" คือจะแสดงผลก็ต่อเมื่อได้รับสัญญาณเอคโค่กลับมาแล้วเท่านั้น
- เลเยอร์สื่อสาร: ข้อมูลจะถูกส่งเป็นจังหวะไปยัง Serial monitor และคอมพ์ของน้อง เพื่อประสานสถานะการวัดแบบเรียลไทม์
- ลูปลอจิกข้อมูล: Arduino จะทำการคำนวณ (ระยะทาง = เวลา x 0.034 / 2) เพื่อหาคำตอบสุดท้าย
โครงสร้างฮาร์ดแวร์
- Arduino Uno: เป็น "สมอง" ของโปรเจค จัดการเรื่องไทมิงความเร็วสูงและประสานงานการส่งออกข้อมูลไปยัง Serial
- เซ็นเซอร์อัลตราโซนิก: ให้ความสามารถในการติดตามระยะแบบไม่สัมผัสและน่าเชื่อถือสำหรับเป้าหมายของน้อง
- เบรดบอร์ด: ช่องทางที่สะดวกสำหรับทำวงจรอัลตราโซนิกต้นแบบแรก โดยไม่ต้องบัดกรี
- สาย Micro-USB: ใช้สำหรับอัพโหลดโปรแกรมลง Arduino และเป็นแหล่งจ่ายไฟหลักให้กับเซ็นเซอร์
ต่อสาย...
ต่อขา VCC ของ SR04 เข้ากับ 5v ของ Arduino ต่อขา GND ของ SR04 เข้ากับ GND ของ Arduino ต่อขา TRG ของ SR04 เข้ากับ Digital pin 12 ของ Arduino ต่อขา ECHO ของ SR04 เข้ากับ Digital pin 11 ของ Arduino
ขั้นตอนการติดตามระยะและการโต้ตอบ
กระบวนการตรวจจับระยะนี้ออกแบบมาให้ใช้ง่ายสุดๆ:
- เตรียมฮาร์ดแวร์: วางเซ็นเซอร์อัลตราโซนิกบนเบรดบอร์ดให้ถูกต้อง ตามคำแนะนำการต่อสายด้านบน
- ตั้งค่าซิงค์พลังงานสูง: ในฟังก์ชัน
setup()กำหนดพิน Trigger/Echo และเริ่มต้นพอร์ต Serial - ลูปการทำงาน: Arduino จะรอสัญญาณเอคโค่และอัพเดตค่าที่วัดได้บนหน้าจอแบบเรียลไทม์
- บูรณาการฟีดแบ็คภาพ: ดูสิว่าค่าที่วัดได้จะกลายเป็นสัญญาณภาพเป็นจังหวะ พัลส์ขึ้นลงตามการเคลื่อนไหวของเป้าหมายในห้องเลย
โค้ดสำหรับทำเจ้านี่...
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(115200);
}
void loop() {
delay(50);
Serial.print("Ping: ");
Serial.print(sonar.ping_cm());
Serial.println("cm");
}
ต่อยอดในอนาคตได้อีกจัดเต็ม
- ต่อจอ OLED ทำ Dashboard ดูเท่ๆ: เอาเจอเล็กๆ มาแปะไว้ที่สถานีเซนเซอร์ เพื่อโชว์ข้อความ "ระยะทาง (ซม.)" และ "Life Bar" (%)
- เพิ่มเสียงเตือนแบบมัลติเซนเซอร์: ต่อพีโซ บัซเซอร์ (Piezo Buzzer) เข้าไป ให้มันร้องเพลงเตือนทุกครั้งที่ของเป้าหมาย "ใกล้เกินไป" (เช่น น้อยกว่า 10 ซม.)
- โยนข้อมูลขึ้นคลาวด์เก็บประวัติ: ใส่โมดูล WiFi (ESP8266/ESP32) แล้วลิงก์กับเว็บแดชบอร์ดเฉพาะทาง เพื่อติดตามและบันทึกประวัติการวัดแบบเป๊ะๆ
- เพิ่มฟีเจอร์ออโต้คาลิเบรทขั้นสูง: ปรับโค้ดให้มีฟังก์ชัน "ปรับเทียบอัตโนมัติ" เพื่อให้เซนเซอร์แม่นยำเสมอไม่ว่าอุณหภูมิจะเปลี่ยนไปแค่ไหน
การวัดระยะด้วยเซนเซอร์อัลตราโซนิกเป็นโปรเจกต์ที่เพอร์เฟกต์สำหรับเด็กช่างหรือใครก็ตามที่อยากได้เครื่องมือวัดแบบอินเทอร์แอคทีฟและน่าสนใจ! สู้งานนะน้อง ห้ามช็อตนะตัวนี้