2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ฉันไม่ชอบเสียงบี๊บที่ดังมากที่คุณได้รับจากรถยนต์สมัยใหม่เมื่อเปิดใช้งานเซ็นเซอร์จอดรถ แต่เดี๋ยวก่อน…มันมีประโยชน์มากใช่ไหม!
ฉันจำเป็นต้องมีเซ็นเซอร์แบบพกพาที่บอกว่าฉันอยู่ห่างจากสิ่งกีดขวางหรือไม่? อาจจะไม่ อย่างน้อยก็จนกว่าตาของฉันจะทำงานต่อไป
อย่างไรก็ตาม ฉันยังต้องการทดลองและสร้างเซ็นเซอร์ "ที่จอดรถ" แบบพกพาของตัวเอง (หรือเครื่องมือวัดระยะทางที่ได้ยิน)
เซ็นเซอร์ในรถยนต์เป็น IR แต่ฉันไม่มีตัวรับสัญญาณ IR สำรองที่บ้าน แต่ฉันพบเซ็นเซอร์อัลตราโซนิก HC-SR04 ในลิ้นชักแทน การเดินสาย/เขียนโค้ดง่ายๆ และ…นี่คือ: วิธีบี๊บเหมือนรถ!
รายการวัสดุ:
- HC-SR04 x 1: เซ็นเซอร์อัลตราโซนิก
- uChip: บอร์ดที่รองรับ Arduino IDE
Piezoelectric Buzzer
- ตัวต้านทาน 10 KOhm, 820 Ohm (หรือค่าอื่นใดที่คุณพบว่าเข้าใกล้พอ)
NPN BJT
- สายเคเบิล micro-USB (พร้อมแหล่งจ่ายไฟ USB 5V หากคุณต้องการพกพา)
ขั้นตอนที่ 1: การเดินสายไฟ
ขั้วต่อ micro-USB ให้พลังงานที่ uChip มอบให้กับ VEXT (pin_16) และ GND (pin_8)
สำหรับการเดินสาย GPIO การรวมกันสามารถทำได้ตราบใดที่คุณใช้พอร์ตพินที่เปิดใช้งาน PWM
ในกรณีของฉัน ฉันใช้ pin_1 เพื่อควบคุมออด ในขณะที่ pin_9 และ pin_10 เชื่อมต่อกับหมุดสัญญาณ ECHO และ TRIGGER ตามลำดับของเซ็นเซอร์อัลตราโซนิก
ไม่ว่าคุณจะใช้ออดแบบแอ็คทีฟหรือพาสซีฟ (ซึ่งเป็นออดที่มีวงจรขับในตัวหรือเมมเบรนแบบเพียโซอิเล็กทริกแบบธรรมดาตามลำดับ) วงจรควบคุมจะเทียบเท่ากัน อย่างไรก็ตาม โปรดใช้ความระมัดระวังในการเดินสายออดที่ทำงานอยู่ เนื่องจากคุณต้องตรวจสอบขั้วของพิน ขณะที่ใช้พาสซีฟที่ไม่สำคัญ
เคล็ดลับ: คุณจะตรวจสอบได้อย่างไรว่าเสียงกริ่งของคุณทำงานหรืออยู่เฉยๆ
โดยปกติ Buzzer ที่ทำงานอยู่จะมีเครื่องหมาย + อยู่ที่ใดที่หนึ่งเพื่อระบุขั้ว ในทางกลับกันทรานสดิวเซอร์แบบพาสซีฟไม่มีเครื่องหมายดังกล่าว
ขั้นตอนที่ 2: การเขียนโปรแกรม
แก้ไข:
โหลดภาพร่างที่อัปเดต “BeepLikeACarMillis.ino” ลงใน uChip โดยใช้ Arduino IDE โค้ดเวอร์ชันนี้ไม่ได้ใช้การหน่วงเวลา () และเชื่อถือได้มากกว่า! MCU ตรวจสอบระยะทางอย่างต่อเนื่องโดยใช้โซนาร์ HC-SR04
กำหนด #define ต่างๆ ได้ตามความต้องการ ตามค่าเริ่มต้น ระยะห่างขั้นต่ำคือ 200 มม. ในขณะที่สูงสุดคือ 2500 มม. นอกจากนี้ คุณยังยินดีที่จะแก้ไขการกำหนด BUZZ_DIV เพื่อเปลี่ยนความถี่ที่เกิดเสียงบี๊บ
ตรวจสอบความแตกต่างในโค้ดที่เปรียบเทียบภาพสเก็ตช์ที่อัปเดต (“BeepLikeACarMillis.ino”) กับอันเก่า (“BeepLikeACar.ino”)
โค้ดเวอร์ชันเก่าใช้ฟังก์ชัน delay() ซึ่งทำให้โปรเซสเซอร์ไม่ว่างด้วยการนับเวลาที่สิ้นเปลือง และด้วยเหตุนี้ MCU จึงไม่สามารถประมวลผลข้อมูลอื่นๆ ได้ สิ่งที่เกิดขึ้นคือ ในกรณีที่เราเคลื่อนที่เร็วเกินไป อัตราการสแกนที่ต่ำจะไม่ตรวจจับระยะทางที่เปลี่ยนแปลง ดังนั้นเสียงบี๊บของเราจะไม่ตอบสนองเร็วพอที่จะมองเห็นสิ่งกีดขวาง เนื่องจากมันกำลัง "รอ" อยู่
ในทางกลับกัน โค้ดที่อัปเดตซึ่งใช้ millis() ช่วยให้อ่านระยะทางได้เร็วและต่อเนื่อง ดังนั้นจึงปลอดภัยกว่าเนื่องจากอัตราการรีเฟรชของระยะห่างจากสิ่งกีดขวางนั้นสูงกว่ามาก
ขั้นตอนที่ 3: สนุก
ต่อสาย micro-USB เข้ากับ uChip แล้วไปรอบๆ บ้านของคุณ ส่งเสียงบี๊บเหมือนรถ!