- ส่วนประกอบที่ต้องการ:
- การประกอบหุ่นยนต์ทำความสะอาดพื้น:
- การเดินสายไฟและการเชื่อมต่อ:
- คำอธิบายการเขียนโปรแกรม:
น้ำยาทำความสะอาดพื้นอัตโนมัติไม่ใช่เรื่องใหม่ แต่ทุกอย่างมีปัญหาร่วมกัน ทั้งหมดนี้แพงเกินไปสำหรับสิ่งที่พวกเขาทำ วันนี้เราจะสร้างหุ่นยนต์ทำความสะอาดบ้านอัตโนมัติที่มีราคาเพียงเล็กน้อยในตลาด หุ่นยนต์นี้สามารถตรวจจับสิ่งกีดขวางและสิ่งของที่อยู่ข้างหน้าและสามารถเคลื่อนที่ต่อไปได้โดยหลีกเลี่ยงสิ่งกีดขวางจนกว่าจะทำความสะอาดทั้งห้อง มีแปรงเล็ก ๆ ติดมาเพื่อทำความสะอาดพื้น
ตรวจสอบหุ่นยนต์ทำความสะอาดเครื่องดูดฝุ่นอัจฉริยะของเราโดยใช้ Arduino
ส่วนประกอบที่ต้องการ:
- Arduino UNO R3
- อัลตราโซนิกเซนเซอร์
- โล่ Arduino Motor Driver
- แชสซีหุ่นยนต์ขับเคลื่อนล้อ
- คอมพิวเตอร์เพื่อตั้งโปรแกรม Arduino
- แบตเตอรี่สำหรับมอเตอร์
- Power Bank เพื่อเพิ่มพลังให้กับ Arduino
- แปรงขัดรองเท้า
- แผ่นขัดสก๊อตช์ไบรต์
หมายเหตุ: แทนที่จะใช้แบตเตอรี่คุณยังสามารถใช้สายยาว 4 เส้นได้เหมือนเดิม แม้ว่านี่จะไม่ใช่วิธีแก้ปัญหาที่หรูหราหรือใช้ได้จริง แต่คุณสามารถทำได้หากคุณไม่ได้วางแผนที่จะใช้มันในโลกแห่งความเป็นจริงทุกวัน ตรวจสอบให้แน่ใจว่าความยาวของสายเคเบิลเพียงพอ
ก่อนที่จะลงรายละเอียดให้พูดคุยเกี่ยวกับ Ultrasonic ก่อน
HC-SR04 อัลตราโซนิกเซนเซอร์:
Ultrasonic Sensor ใช้ในการวัดระยะทางด้วยความแม่นยำสูงและการอ่านค่าที่เสถียร สามารถวัดระยะทางได้ตั้งแต่ 2 ซม. ถึง 400 ซม. หรือตั้งแต่ 1 นิ้วถึง 13 ฟุต มันจะปล่อยคลื่นอัลตร้าซาวด์ที่ความถี่ 40KHz ในอากาศและถ้าวัตถุเข้ามาขวางมันก็จะเด้งกลับไปที่เซ็นเซอร์ เมื่อใช้เวลาดังกล่าวในการชนวัตถุและกลับมาคุณสามารถคำนวณระยะทางได้
เซ็นเซอร์อัลตราโซนิกใช้เทคนิคที่เรียกว่า“ ECHO” “ ECHO” เป็นเพียงคลื่นเสียงที่สะท้อน คุณจะมี ECHO เมื่อเสียงสะท้อนกลับหลังจากถึงทางตัน
โมดูล HCSR04 สร้างการสั่นสะเทือนของเสียงในช่วงอัลตราโซนิกเมื่อเราทำให้พิน 'Trigger' สูงประมาณ 10us ซึ่งจะส่งการระเบิดของเสียง 8 รอบด้วยความเร็วของเสียงและหลังจากกระทบกับวัตถุแล้วขา Echo จะได้รับ ขึ้นอยู่กับเวลาที่การสั่นสะเทือนของเสียงในการย้อนกลับมันให้เอาต์พุตพัลส์ที่เหมาะสม หากวัตถุอยู่ไกลจะต้องใช้เวลามากขึ้นในการได้ยิน ECHO และความกว้างของพัลส์เอาต์พุตจะใหญ่ และถ้าสิ่งกีดขวางอยู่ใกล้ ECHO จะได้ยินเร็วขึ้นและความกว้างพัลส์เอาต์พุตจะเล็กลง
เราสามารถคำนวณระยะห่างของวัตถุโดยอาศัยเวลาที่คลื่นอัลตราโซนิกถ่ายกลับไปที่เซ็นเซอร์ เนื่องจากทราบเวลาและความเร็วของเสียงเราจึงสามารถคำนวณระยะทางได้ตามสูตรต่อไปนี้
ระยะทาง = (เวลา x ความเร็วของเสียงในอากาศ (343 ม. / วินาที)) / 2.
ค่าจะถูกหารด้วยสองเนื่องจากคลื่นเคลื่อนที่ไปข้างหน้าและข้างหลังซึ่งครอบคลุมระยะทางเท่ากัน ดังนั้นเวลาในการเข้าถึงอุปสรรคจึงเป็นเพียงครึ่งหนึ่งของเวลาทั้งหมด
ดังนั้นระยะทางเป็นเซนติเมตร = 17150 * T
ก่อนหน้านี้เราได้ทำโครงการที่มีประโยชน์มากมายโดยใช้เซ็นเซอร์อัลตราโซนิกและ Arduinoตรวจสอบด้านล่าง:
- การวัดระยะทางโดยใช้ Arduino โดยใช้เซ็นเซอร์อัลตราโซนิก
- สัญญาณเตือนประตูโดยใช้ Arduino และ Ultrasonic Sensor
- การตรวจสอบถังขยะโดยใช้ IOT โดยใช้ Arduino
การประกอบหุ่นยนต์ทำความสะอาดพื้น:
ติดตั้ง Arduino บนแชสซี ตรวจสอบให้แน่ใจว่าคุณไม่เกิดไฟฟ้าลัดวงจรในกรณีที่โครงเครื่องของคุณทำจากโลหะ เป็นความคิดที่ดีที่จะซื้อกล่องสำหรับ Arduino และแผงควบคุมมอเตอร์ ยึดมอเตอร์เข้ากับล้อและแชสซีโดยใช้สกรู แชสซีของคุณควรมีทางเลือกในการทำเช่นนี้จากโรงงาน แต่ถ้าไม่มีคุณสามารถปรับแก้วิธีอื่นได้ อีพ็อกซี่ไม่ใช่ความคิดที่ไม่ดี ติดแปรงขัดรองเท้าที่ด้านหน้าของโครงเครื่อง เราใช้อีพ็อกซี่ M-Seal ร่วมกับสกรูเจาะสำหรับสิ่งนี้แม้ว่าคุณจะสามารถใช้วิธีอื่นที่อาจง่ายกว่าสำหรับคุณ ติดแผ่นขัดสก๊อตช์ไบรต์ไว้ด้านหลังแปรง เราใช้เพลาข้ามแชสซีที่ถือมันในการเล่นแม้ว่าสิ่งนี้จะเป็นไปไม่ได้เช่นกัน สามารถใช้เพลาสปริงโหลดประกอบได้ ติดตั้งแบตเตอรี่ (หรือสายเคเบิลที่ด้านหลังของโครงเครื่อง)อีพ็อกซี่หรือที่ใส่แบตเตอรี่เป็นวิธีที่ดีในการทำเช่นนี้ กาวร้อนก็ไม่เลวเช่นกัน
การเดินสายไฟและการเชื่อมต่อ:
วงจรสำหรับหุ่นยนต์ทำความสะอาดบ้านอัตโนมัตินี้ง่ายมาก เชื่อมต่อเซ็นเซอร์อัลตราโซนิกเข้ากับ Arduino ตามที่ระบุไว้ด้านล่างและวางแผงควบคุมมอเตอร์เข้ากับ Arduino เหมือนกับโล่อื่น ๆ
Trig pin ของ Ultrasonic เชื่อมต่อกับพินที่ 12 บน Arduino, ขา Echo เชื่อมต่อกับพินที่ 13, พินแรงดันไฟฟ้าไปยังพิน 5V และพินกราวด์กับพินกราวด์ ขา Echo และขา Trig ช่วยให้ Arduino สื่อสารกับเซ็นเซอร์ได้ พลังงานจะถูกส่งไปยังเซ็นเซอร์ผ่านแรงดันไฟฟ้าและพินกราวด์และพิน Trig และ Echo ช่วยให้ส่งและรับข้อมูลด้วย Arduino เรียนรู้เพิ่มเติมเกี่ยวกับ Interfacing Ultrasonic sensor กับ Arduino ที่นี่
โล่มอเตอร์ควรมีอย่างน้อย 2 เอาต์พุตและควรเชื่อมต่อกับมอเตอร์ 2 ตัวของคุณ โดยปกติเอาต์พุตเหล่านี้จะมีข้อความว่า“ M1” และ“ M2” หรือ“ Motor 1” และ“ Motor 2” ต่อแบตเตอรี่และแบตสำรองเข้ากับมอเตอร์และ Arduino ตามลำดับ อย่าเชื่อมต่อข้ามกัน โล่มอเตอร์ของคุณควรมีช่องสัญญาณเข้า หากคุณใช้สายไฟให้เชื่อมต่อกับอะแดปเตอร์ AC
คำอธิบายการเขียนโปรแกรม:
เปิด Arduino IDE วางรหัส Arduino ที่สมบูรณ์ซึ่งระบุไว้ในตอนท้ายของบทช่วยสอนนี้ลงใน IDE เชื่อมต่อ Arduino กับคอมพิวเตอร์ เลือกพอร์ตใน Tools / Port คลิกปุ่มอัปโหลด
ทดสอบหุ่นยนต์ ถ้าเปลี่ยนน้อยเกินไปหรือมากเกินไปให้ทดลองใช้ค่าความล่าช้าจนกว่าจะลงตัว
ก่อนที่จะเข้าสู่รหัสเราต้องติดตั้งAdafruit Motor Shield Libraryเพื่อขับเคลื่อนมอเตอร์กระแสตรง เนื่องจากเราใช้ชิลด์ไดรเวอร์มอเตอร์ L293D เราจึงจำเป็นต้องดาวน์โหลด AFmotor Library จากที่นี่ จากนั้นเพิ่มลงในโฟลเดอร์ไลบรารี Arduino IDE ของคุณ ให้แน่ใจว่าคุณเปลี่ยนชื่อไปAFMotor เรียนรู้เพิ่มเติมเกี่ยวกับการติดตั้งไลบรารีนี้
รหัสเป็นเรื่องง่ายและสามารถเข้าใจได้ง่าย แต่ในที่นี้เราได้อธิบายบางส่วน:
รหัสด้านล่างตั้งค่าหุ่นยนต์ อันดับแรกเราได้รวม Adafruit Library สำหรับการขับเคลื่อนมอเตอร์ด้วย Motor driver shield หลังจากนั้นเรากำหนด Trig pin และ Echo pin นอกจากนี้ยังตั้งค่ามอเตอร์ ตั้งค่าขา Trig เป็นเอาต์พุตและขา Echo เพื่อป้อนข้อมูล
# รวม # กำหนด trigPin 12 # กำหนด echoPin 13 AF_DCMotor motor1 (1, MOTOR12_64KHZ); AF_DCMotor มอเตอร์ 2 (2, MOTOR12_8KHZ); การตั้งค่าเป็นโมฆะ () {pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); }
โค้ดด้านล่างบอก Arduino ให้วนซ้ำคำสั่งต่อไปนี้ หลังจากนั้นจะใช้เซ็นเซอร์เพื่อส่งและรับเสียงอัลตราโซนิก จะคำนวณระยะทางที่อยู่ห่างจากวัตถุเมื่อคลื่นอัลตร้าโซนิคตีกลับหลังจากสังเกตว่าวัตถุอยู่ในระยะทางที่กำหนดมันจะบอก Arduino ให้หมุนมอเตอร์ตามนั้น
โมฆะ loop () {ระยะยาวระยะทาง; digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, สูง); delayMicroseconds (10); digitalWrite (trigPin, LOW); ระยะเวลา = pulseIn (echoPin, HIGH); ระยะทาง = (ระยะเวลา / 2) / 29.1; ถ้า (ระยะ <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (ย้อนกลับ); motor2.run (ย้อนกลับ); ล่าช้า (2000); // เปลี่ยนสิ่งนี้ตามวิธีการหมุนของหุ่นยนต์
สิ่งนี้ทำให้หุ่นยนต์หมุนโดยการหมุนมอเตอร์ตัวหนึ่งและทำให้อีกตัวหยุดนิ่ง
รหัสด้านล่างทำให้หุ่นยนต์หมุนมอเตอร์ทั้งสองตัวไปในทิศทางเดียวกันเพื่อให้มันเคลื่อนที่ไปข้างหน้าจนกว่าจะตรวจพบวัตถุในขอบเขตดังกล่าว
อื่น ๆ {motor1.setSpeed (160); // เปลี่ยนสิ่งนี้ตามความรวดเร็วของหุ่นยนต์ของคุณที่ควรไป motor2.setSpeed (160); // เปลี่ยนค่านี้ให้เป็นค่าเดียวกันตามที่คุณใส่ไว้ข้างต้น motor1.run (FORWARD); motor2.run (FORWARD); }