- วิธีสร้างสิ่งกีดขวางหลีกเลี่ยงหุ่นยนต์โดยใช้ Ultrasonic Sensor
- ส่วนประกอบที่จำเป็น
- แผนภูมิวงจรรวม
- หุ่นยนต์หลีกเลี่ยงอุปสรรคโดยใช้ Arduino - รหัส
หุ่นยนต์หลีกเลี่ยงอุปสรรคเป็นอุปกรณ์อัจฉริยะที่สามารถตรวจจับสิ่งกีดขวางที่อยู่ข้างหน้าโดยอัตโนมัติและหลีกเลี่ยงโดยการหมุนตัวไปในทิศทางอื่น การออกแบบนี้ช่วยให้หุ่นยนต์สามารถนำทางในสภาพแวดล้อมที่ไม่รู้จักได้โดยหลีกเลี่ยงการชนกันซึ่งเป็นข้อกำหนดหลักสำหรับหุ่นยนต์เคลื่อนที่อัตโนมัติใด ๆ การประยุกต์ใช้หุ่นยนต์หลีกเลี่ยงอุปสรรคนั้นไม่ได้ จำกัด และใช้ในองค์กรทางทหารส่วนใหญ่ในขณะนี้ซึ่งช่วยทำงานเสี่ยงภัยมากมายที่ทหารไม่สามารถทำได้
ก่อนหน้านี้เราได้สร้าง Obstacle Avoiding Robot โดยใช้ Raspberry Pi และใช้ PIC Microcontroller คราวนี้เราจะสร้างหุ่นยนต์หลีกเลี่ยงอุปสรรคโดยใช้เซ็นเซอร์อัลตราโซนิกและ Arduino ที่นี่เซ็นเซอร์อัลตราโซนิกใช้เพื่อตรวจจับสิ่งกีดขวางในเส้นทางโดยการคำนวณระยะห่างระหว่างหุ่นยนต์และสิ่งกีดขวาง หากหุ่นยนต์พบสิ่งกีดขวางจะเปลี่ยนทิศทางและเคลื่อนที่ต่อไป
วิธีสร้างสิ่งกีดขวางหลีกเลี่ยงหุ่นยนต์โดยใช้ Ultrasonic Sensor
ก่อนที่จะสร้างหุ่นยนต์สิ่งสำคัญคือต้องเข้าใจว่าเซ็นเซอร์อัลตราโซนิกทำงานอย่างไรเนื่องจากเซ็นเซอร์นี้จะมีหน้าที่สำคัญในการตรวจจับสิ่งกีดขวาง หลักการพื้นฐานที่อยู่เบื้องหลังการทำงานของเซ็นเซอร์อัลตราโซนิกคือการจดบันทึกเวลาที่เซ็นเซอร์ส่งลำแสงอัลตราโซนิกและรับลำแสงอัลตราโซนิกหลังจากชนพื้นผิว จากนั้นคำนวณระยะทางเพิ่มเติมโดยใช้สูตร ในโครงการนี้ใช้อัลตราโซนิกเซนเซอร์ HC-SR04 ที่มีอยู่ทั่วไป ในการใช้เซ็นเซอร์นี้จะมีการปฏิบัติตามแนวทางที่คล้ายกันดังที่อธิบายไว้ข้างต้น
ดังนั้น Trig pin ของ HC-SR04 จึงสูงสำหรับอย่างน้อย 10 us ลำแสงโซนิคจะถูกส่งด้วย 8 พัลส์ที่ละ 40KHz
จากนั้นสัญญาณจะกระทบพื้นผิวและย้อนกลับและจับโดยขารับ Echo ของ HC-SR04 พินก้องได้ทำสูงแล้วในเวลาที่ส่งสูง
เวลาที่คานส่งกลับจะถูกบันทึกเป็นตัวแปรและแปลงเป็นระยะทางโดยใช้การคำนวณที่เหมาะสมดังต่อไปนี้
ระยะทาง = (เวลา x ความเร็วของเสียงในอากาศ (343 ม. / วินาที)) / 2
เราใช้เซ็นเซอร์อัลตราโซนิกในหลายโครงการเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับเซ็นเซอร์อัลตราโซนิกตรวจสอบโครงการอื่น ๆ ที่เกี่ยวข้องกับเซ็นเซอร์อัลตราโซนิก
ส่วนประกอบของหุ่นยนต์หลีกเลี่ยงอุปสรรคนี้สามารถพบได้ง่าย ในการสร้างแชสซีสามารถใช้แชสซีของเล่นใดก็ได้หรือสามารถทำเองได้
ส่วนประกอบที่จำเป็น
- Arduino NANO หรือ Uno (ทุกรุ่น)
- เซ็นเซอร์อัลตราโซนิก HC-SR04
- โมดูลตัวขับมอเตอร์ LM298N
- มอเตอร์ DC 5V
- แบตเตอรี่
- ล้อ
- แชสซี
- สายจัมเปอร์
แผนภูมิวงจรรวม
แผนภาพวงจรที่สมบูรณ์สำหรับโครงการนี้แสดงไว้ด้านล่างดังที่คุณเห็นโดยใช้ Arduino nano แต่เรายังสามารถสร้างสิ่งกีดขวางเพื่อหลีกเลี่ยงหุ่นยนต์โดยใช้ Arduino UNOด้วยวงจรเดียวกัน (ตามพินเอาต์เดียวกัน) และรหัส
เมื่อวงจรพร้อมแล้วเราต้องสร้างสิ่งกีดขวางเพื่อหลีกเลี่ยงรถโดยการประกอบวงจรที่ด้านบนของตัวถังหุ่นยนต์ดังที่แสดงด้านล่าง
หุ่นยนต์หลีกเลี่ยงอุปสรรคโดยใช้ Arduino - รหัส
โปรแกรมที่สมบูรณ์พร้อมวิดีโอสาธิตจะได้รับในตอนท้ายของโครงการนี้ โปรแกรมจะรวมการตั้งค่าโมดูล HC-SR04 และส่งสัญญาณออกไปยัง Motor Pins เพื่อเลื่อนทิศทางของมอเตอร์ให้สอดคล้องกัน จะไม่มีการใช้ไลบรารีในโครงการนี้
ขั้นแรกกำหนด Trig และ echo pin ของ HC-SR04ในโปรแกรม ในโครงการนี้ขาทริกเชื่อมต่อกับ GPIO9 และขาก้องเชื่อมต่อกับ GPIO10 ของ Arduino NANO
int trigPin = 9; // ทริกพินของ HC-SR04 int echoPin = 10; // Echo pin ของ HC-SR04
กำหนดพินสำหรับอินพุตของโมดูลไดรเวอร์มอเตอร์ LM298N LM298N มีพินอินพุตข้อมูล 4 พินที่ใช้ในการควบคุมทิศทางของมอเตอร์ที่เชื่อมต่ออยู่
int revleft4 = 4; // การเคลื่อนที่ย้อนกลับของมอเตอร์ด้านซ้าย int fwdleft5 = 5; // การเคลื่อนที่ ForWarD ของมอเตอร์ซ้าย int revright6 = 6; // REVerse motion ของ Right motor int fwdright7 = 7; // การเคลื่อนที่ ForWarD ของมอเตอร์ด้านขวา
ใน การติดตั้ง () ฟังก์ชั่นกำหนดทิศทางข้อมูลที่ใช้หมุด GPIO หมุดมอเตอร์ทั้งสี่ตัวและขา Trig ถูกตั้งค่าเป็น OUTPUT และ Echo Pin ถูกตั้งค่าเป็นอินพุต
pinMode (revleft4, เอาท์พุท); // ตั้งหมุดมอเตอร์เป็น pinMode ขาออก(fwdleft5, OUTPUT); pinMode (revright6, เอาท์พุท); pinMode (fwdright7, เอาท์พุท); pinMode (trigPin, เอาท์พุท); // ตั้งค่าพิ นทริกเป็นพินเอาต์พุต(echoPin, INPUT); // ตั้งค่า echo pin เป็นอินพุตเพื่อจับคลื่นสะท้อน
ในฟังก์ชัน loop () รับระยะทางจาก HC-SR04และขึ้นอยู่กับระยะทางในการเคลื่อนย้ายทิศทางของมอเตอร์ ระยะทางจะแสดงระยะวัตถุที่มาด้านหน้าของหุ่นยนต์ ระยะทางถ่ายโดยการยิงลำแสงอัลตราโซนิกถึง 10 เราและรับหลังจาก 10us หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการวัดระยะทางโดยใช้เซ็นเซอร์อัลตราโซนิกและ Arduino ให้ไปที่ลิงค์
digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, สูง); // ส่งคลื่นเป็นเวลา 10 us delayMicroseconds (10); ระยะเวลา = pulseIn (echoPin, HIGH); // รับคลื่นสะท้อน ระยะทาง = ระยะเวลา / 58.2; // แปลงเป็นการ หน่วงเวลา (10);
หากระยะทางมากกว่าระยะทางที่กำหนดหมายความว่าไม่มีสิ่งกีดขวางในเส้นทางและจะเคลื่อนที่ไปในทิศทางไปข้างหน้า
ถ้า (ระยะ> 19) { digitalWrite (fwdright7, HIGH); // ก้าวไปข้างหน้า digitalWrite (revright6, LOW); digitalWrite (fwdleft5, สูง); digitalWrite (revleft4, LOW); }
หากระยะทางที่น้อยกว่าระยะทางที่กำหนดไว้เพื่อหลีกเลี่ยงอุปสรรคหมายถึงมีบางข้างหน้าอุปสรรคดังนั้นในสถานการณ์เช่นนี้หุ่นยนต์จะหยุดในขณะที่และ movebackwards หลังจากนั้นอีกครั้งหยุดในขณะที่แล้วจะหันไปทิศทางอื่น
ถ้า (ระยะ <18) { digitalWrite (fwdright7, LOW); // หยุด digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); ล่าช้า (500); digitalWrite (fwdright7, LOW); // movebackword digitalWrite (revright6, สูง); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, สูง); ล่าช้า (500); digitalWrite (fwdright7, LOW); // หยุด digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); ล่าช้า (100); digitalWrite (fwdright7, สูง); digitalWrite (revright6, LOW); digitalWrite (revleft4, LOW); digitalWrite (fwdleft5, LOW); ล่าช้า (500); }
นี่คือวิธีที่หุ่นยนต์สามารถหลีกเลี่ยงอุปสรรคที่ขวางทางได้โดยไม่ติดขัด ค้นหารหัสที่สมบูรณ์และวิดีโอด้านล่าง