ว่าไงน้องๆ ทุกคน
รุ่นพี่ทำโปรเจคเจ๋งๆ มาฝาก ชื่อว่า "ผู้ช่วยจอดรถอัจฉริยะ" (Smart Car Parking Assistant) เนี่ยแหละ
ปัญหาคลาสสิคของมนุษย์เงินเดือนหรือแม้แต่ตัวพี่เอง เวลาจอดรถในโรงจอดทีไร ชนผนังทุกรอบ เสียอารมณ์! โปรเจคนี้จะมาช่วยให้น้องจอดรถแบบเนียนๆ ปลอดภัย ไม่มีสะดุด
อยากรู้ว่าทำยังไง ก็ดูวีดีโอด้านบนให้จบ แล้วทำตามขั้นตอนได้เลย รับรองไม่ยากเกินความสามารถเด็กช่างแน่นอน
ถ้าชอบก็ช่วยกันกดติดตามช่องยูทูปพี่ด้วยนะ เป้าหมายคือให้ถึง 1,000 ซับ เพื่อที่พี่จะได้มีแรงทำโปรเจคสนุกๆ แบบนี้มาให้ดูอีก
Proximity Impact Alerts: The Acoustic Parking Radar
รถหรูยุค 2024 เขามีระบบช่วยจอดอัตโนมัติป้องกันชนกันเป็นหมื่นๆ บาท Smart Car Parking Assistant ตัวนี้ก็เลียนแบบระบบนั้นมาให้เล่นในงบหลักร้อย! หลักการคือใช้เรดาร์อัลตราโซนิค HC-SR04 ความเร็วสูง คอยสแกนระยะห่างระหว่างกันชนรถกับผนังโรงจอด
เมื่อรถถอยหลังเข้าไป Arduino จะคำนวณเวลาที่เสียงเดินทางไป-กลับ (acoustic bounce delay) แปลงเป็นระยะทางเป็นเซนติเมตร พอระยะลดลงจาก 200cm มาถึงจุดวิกฤต ~10cm ระบบจะแปลงค่าระยะนั้นเป็นสัญญาณเสียงเตือนผ่านอาร์เรย์ของ Piezο Buzzer! เสียงบี๊ปจะเร่งความถี่ขึ้นเรื่อยๆ จนสุดท้ายกลายเป็นเสียงต่อเนื่องแหลมๆ สั่งให้ผู้ขับ "หยุดดดด!" ทันที
The Inverse Frequency Translation Algorithm
ห้ามใช้ คำสั่ง delay() ธรรมดาเพื่อควบคุมเสียงบี๊ปเป็นอันขาด! เพราะ delay(100) จะทำให้เซนเซอร์วัดระยะ (pulseIn()) หยุดทำงานชั่วขณะ รถอาจชนผนังไปแล้ว Arduino ยังไม่ทันรู้ตัว!
pulseIn()อ่านค่าความลึก (ระยะทาง) เป็นเซนติเมตร- ใช้การคำนวณทางคณิตศาสตร์หรือฟังก์ชัน
map()เพื่อกำหนดความถี่ - ถ้าระยะ
< 200cmให้บี๊ปช้า (delay 500ms) - ถ้าระยะ
< 30cmให้บี๊ปเร็วมาก (delay 50ms)
#define BUZZER_PIN 8
#define TRIG_PIN 9
#define ECHO_PIN 10
void loop() {
long distanceCmd = getCentimeters(); // Extracts 40KHz ping depth natively!
if (distanceCmd < 200 && distanceCmd > 5) {
// Math: The closer you get (distance goes DOWN), the beep delay goes DOWN!
// Example: 200cm = 2000ms delay. 50cm = 500ms delay!
int dynamicBeepPacing = distanceCmd * 10;
// Fire the severe 1500Hz alert!
tone(BUZZER_PIN, 1500);
delay(50); // Beep duration is always 50ms strictly!
noTone(BUZZER_PIN);
// The delay between the beeps changes aggressively based natively on physical distance!
delay(dynamicBeepPacing);
}
if (distanceCmd <= 5) {
// CRITICAL COLLISION IMMINENT! SOLID TONE!
tone(BUZZER_PIN, 1500);
} else if (distanceCmd >= 200) {
// Completely empty space. Complete silence!
noTone(BUZZER_PIN);
}
}
เพิ่มระบบแสดงผลแบบ RGB แบบชัดเจน
เสียงบี๊บอาจจะโดนเสียงเพลงในรถกลบจนไม่ได้ยินเลยก็ได้
- การอัพเกรดระบบให้ทันสมัยต้องเพิ่ม
WS2812B NeoPixelหรือLED RGB Common-Cathodeเข้าไปเพื่อแสดงผลแบบเห็นชัดๆ! - เราเพิ่มเงื่อนไขการทำงานเข้าไป:
- ระยะห่าง > 100 ซม.: แสงไฟจะสว่างเป็นสี เขียวเต็มที่ ทันที
- ระยะห่าง < 50 ซม.: แถบไฟจะเปลี่ยนเป็นสี เหลืองกระพริบเตือน แบบดุดัน
- ระยะห่าง < 10 ซม.: แถบไฟจะ กระพริบสีแดงสุดแรง พร้อมกับเสียงบัซเซอร์ดังต่อเนื่องแบบไม่หยุด!
การติดตั้งระบบอัลตราโซนิกในรถยนต์
- Arduino Uno/Nano (ทำงานอัตโนมัติเต็มรูปแบบ ประมวลผลข้อมูลระยะทางได้แม่นยำ)
- โมดูลอัลตราโซนิก HC-SR04 (ระวังอย่าให้มีอะไรมาบังตัวรับ-ส่งสัญญาณนะ ไม่งั้นคลื่นเสียงจะวิ่งไปไม่ถึง!)
- บัซเซอร์แบบแอคทีฟ 5V หรือ เพียโซแบบพาสซีฟ (สำหรับสร้างเสียงเตือนความถี่สูงประมาณ 1500Hz)
- LED 5mm สีแดง, เหลือง, เขียว (เพิ่มระบบแสดงผลแบบเห็นด้วยตาให้ชัดเจนขึ้น!)
- ควรมีกล่องหรือเคสสำหรับป้องกันชิ้นส่วนจากความร้อนและสภาพแวดล้อมในรถหรือในอู่
ขั้นตอนการทำ
เตรียมอุปกรณ์ให้ครบ Arduino Uno, เซนเซอร์อัลตราโซนิก, ตัวต้านทาน 330 โอห์ม 3 ตัว, LED (แดง เขียว เหลือง), บัซเซอร์, เบรดบอร์ด, จัมเปอร์ไวร์ ฯลฯ
ใช้ปากกาด้ามนั้นแหละ ต่อ LED 3 ดวงตามรูปด้านล่างเลย

ต่อสายจาก LED ตามนี้: สายสีดำ -> ขาแอโนด (ขาลบ / ขาสั้น) ของ LED ทุกดวง สายสีแดง -> ขาแคโทด (ขาบวก / ขายาว) ของ LED สีแดง สายสีขาว -> ขาแคโทด (ขาบวก / ขายาว) ของ LED สีเหลือง สายสีเขียว -> ขาแคโทด (ขาบวก / ขายาว) ของ LED สีเขียว

วางเซนเซอร์อัลตราโซนิกบนเบรดบอร์ด:

ต่อ VCC ไปที่ +5V และ GND ไปที่ขา GND ของเซนเซอร์อัลตราโซนิก:

ต่อตัวต้านทานทั้ง 3 ตัวบนเบรดบอร์ดตามรูป:

วางบัซเซอร์บนเบรดบอร์ด:

วางปากกาที่ติด LED ไว้ข้างๆ เบรดบอร์ดตามรูป:
การต่อสายสัญญาณ: ขา Trig -> D7 ขา Echo -> D8 LED สีแดง -> D6 LED สีเหลือง -> D5 LED สีเขียว -> D4 ขาบัซเซอร์ -> A0 หลังจากต่อเสร็จแล้วจะได้หน้าตาประมาณนี้:
อัพโหลดโค้ดและทดสอบระบบเลย

ถ้าทดสอบแล้วเวิร์ค ตามขั้นตอนสุดท้ายในรูปได้เลย
จัดไปวัยรุ่น!
หวังว่าน้องๆ จะมีวันที่ดีนะ
สู้งานนะน้อง!