วิธีการเคลื่อนย้ายอาหารไปรอบ ๆ ชั้นวางของในครัวโดยใช้หุ่นยนต์?
หากคุณกำลังมองหาวิธีเพิ่มเสน่ห์และฟังก์ชันการทำงานของห้องครัวของคุณอย่างมากให้พิจารณาลดความพยายามของมนุษย์ที่นั่นให้น้อยที่สุด ความพยายามของมนุษย์สามารถลดลงได้โดยการสร้างหุ่นยนต์ในบ้านที่จะมีอยู่ในห้องครัวและมันจะนำเครื่องใช้ที่สกปรกไปที่อ่างล้างจานและหยุดที่นั่น เมื่อบุคคลนั้นปลดสิ่งของเครื่องใช้ออกจากหุ่นยนต์มันจะกลับมาและนำสิ่งของเหล่านั้นมาเพิ่ม บางครั้งในห้องครัวขนาดใหญ่อ่างล้างจานไม่ได้อยู่ใกล้กับตู้ดังนั้นหุ่นยนต์จะนำจานจากที่หนึ่งของชั้นวางไปยังอีกที่หนึ่ง ทางเดินสำหรับหุ่นยนต์จะถูกสร้างขึ้นบนชั้นวางโดยใช้เทปสีดำ หุ่นยนต์จะใช้เซ็นเซอร์ความใกล้เคียงอินฟราเรดสองตัวเพื่อตรวจจับเส้นทางและขึ้นอยู่กับอินพุตที่ได้รับจากเซ็นเซอร์ Arduino จะสั่งให้มอเตอร์เคลื่อนที่ด้วยความช่วยเหลือของตัวขับมอเตอร์
จะเชื่อมต่ออุปกรณ์ต่อพ่วงที่จำเป็นทั้งหมดในการสร้างหุ่นยนต์ในประเทศได้อย่างไร?
ตอนนี้เราต้องรวบรวมส่วนประกอบที่จำเป็นและเริ่มสร้างหุ่นยนต์
ขั้นตอนที่ 1: ส่วนประกอบที่ใช้
ขั้นตอนที่ 2: ศึกษาส่วนประกอบ
ในขณะที่เราได้ทำรายการส่วนประกอบแล้วให้เราก้าวไปข้างหน้าและศึกษาสั้น ๆ เกี่ยวกับการทำงานของแต่ละองค์ประกอบ
Arduino UNO เป็นบอร์ดไมโครคอนโทรลเลอร์ซึ่งประกอบด้วยไมโครชิป ATMega 328P และพัฒนาโดย Arduino.cc บอร์ดนี้มีชุดพินข้อมูลดิจิทัลและแอนะล็อกที่สามารถเชื่อมต่อกับบอร์ดขยายหรือวงจรอื่นๆ ได้ บอร์ดนี้มี 14 Digital pins, 6 Analog pins และสามารถตั้งโปรแกรมด้วย Arduino IDE (Integrated Development Environment) ผ่านสาย USB Type B ต้องใช้พลังงาน 5V บน และก รหัส Cในการดำเนินการ
L298N Motor Driver ใช้สำหรับควบคุมมอเตอร์กระแสตรง L298N เป็นตัวขับมอเตอร์ H-Bridge คู่ที่ช่วยให้สามารถควบคุมความเร็วและทิศทางของมอเตอร์กระแสตรงสองตัวได้ในเวลาเดียวกัน โมดูลสามารถขับมอเตอร์กระแสตรงที่มีแรงดันไฟฟ้าระหว่าง 5 ถึง 35V โดยมีกระแสไฟฟ้าสูงสุดถึง 2A ขึ้นอยู่กับแรงดันไฟฟ้าที่ใช้ที่ขั้ว VCC ของมอเตอร์ ในโครงการของเราจะใช้พิน 5V เป็นอินพุตเนื่องจากเราจำเป็นต้องเชื่อมต่อกับแหล่งจ่ายไฟ 5V เพื่อให้ IC ทำงานได้อย่างถูกต้อง แผนภาพวงจรของตัวขับมอเตอร์ L298N ที่เชื่อมต่อกับมอเตอร์กระแสตรง แสดงไว้ด้านล่างเพื่อทำความเข้าใจกลไกของไดรเวอร์มอเตอร์ L298N สำหรับการสาธิตอินพุตจะได้รับจากไฟล์ สถานะลอจิกแทนเซ็นเซอร์ IR
ขั้นตอนที่ 3: ทำความเข้าใจแผนภาพบล็อกและหลักการทำงาน
ประการแรกเราจะดูแผนภาพบล็อกทำความเข้าใจหลักการทำงานจากนั้นไปสู่การประกอบส่วนประกอบฮาร์ดแวร์
เซ็นเซอร์ที่เราจะใช้เป็นแบบดิจิทัลและสามารถให้เอาต์พุตได้ทั้ง 0 หรือ 1 เซ็นเซอร์ที่เราซื้อมาให้ 1 บนพื้นผิวสีขาวและ 0 บนพื้นผิวสีดำ เซ็นเซอร์ที่เราซื้อนั้นให้ค่าแบบสุ่ม บางครั้งมันก็ให้ 0 บนพื้นผิวสีขาวและ 1 บนพื้นผิวสีดำ เราจะใช้เซ็นเซอร์ห้าตัวในหุ่นยนต์นี้มีสี่เงื่อนไขในรหัสสำหรับเซ็นเซอร์ห้าตัว
- ส่งต่อในบรรทัด: เมื่อเซ็นเซอร์ตรงกลางอยู่บนพื้นผิวสีดำและส่วนที่เหลือของเซ็นเซอร์อยู่บนพื้นผิวสีขาวเงื่อนไขไปข้างหน้าจะทำงานและหุ่นยนต์จะเคลื่อนที่ไปข้างหน้าอย่างตรงไปตรงมา ถ้าเราเริ่มจาก เซนเซอร์ 1 และดำเนินการต่อไปจนถึง เซนเซอร์5, ค่าที่เซ็นเซอร์แต่ละตัวจะให้ตามลำดับคือ (1 1 0 1 1).
- เลี้ยวขวาหักศอก:เมื่อ เซนเซอร์ 1 และ เซนเซอร์ 2 อยู่บนพื้นผิวสีขาวและเซ็นเซอร์ที่เหลืออยู่บนพื้นผิวสีดำเงื่อนไขการเลี้ยวขวาที่คมจะทำงานและหุ่นยนต์จะเลี้ยวขวา ถ้าเราเริ่มจาก เซนเซอร์ 1 และดำเนินการต่อไปจนถึง เซนเซอร์ 5, ค่าที่เซ็นเซอร์แต่ละตัวจะให้ตามลำดับคือ (1 1 0 0 0).
- เลี้ยวซ้ายหักศอก:เมื่อ เซนเซอร์ 4 และ เซนเซอร์ 5 อยู่บนพื้นผิวสีขาวและเซ็นเซอร์ส่วนที่เหลืออยู่บนพื้นผิวสีดำเงื่อนไขการเลี้ยวซ้ายที่คมจะทำงานและหุ่นยนต์จะเลี้ยวซ้ายอย่างเฉียบคม ถ้าเราเริ่มจาก เซนเซอร์ 1 และดำเนินการจนถึง เซนเซอร์ 5, ค่าที่เซ็นเซอร์แต่ละตัวจะให้ตามลำดับคือ (0 0 0 1 1).
- หยุด: เมื่อเซ็นเซอร์ทั้งห้าอยู่บนพื้นผิวสีดำหุ่นยนต์จะหยุดและมอเตอร์จะหมุน ปิด จุดที่มีพื้นผิวสีดำห้าจุดนี้จะอยู่ใกล้อ่างล้างจานเพื่อให้เครื่องล้างจานสามารถถอดจานออกจากหุ่นยนต์เพื่อล้างได้
เราจะทำทางเดินบนชั้นวางของในครัวโดยใช้เทปสีดำและเส้นทางนั้นจะไปสิ้นสุดที่อ่างล้างจานดังนั้นหุ่นยนต์จะหยุดใกล้อ่างล้างจานและเครื่องล้างจานจะขนจานออกจากนั้นหุ่นยนต์จะเคลื่อนไปยังเส้นทางและค้นหาเครื่องใช้ อีกครั้ง.
ขั้นตอนที่ 4: เริ่มต้นกับ Arduino
หากคุณไม่คุ้นเคยกับ Arduino IDE มาก่อนไม่ต้องกังวลเพราะด้านล่างนี้คุณสามารถดูขั้นตอนการเขียนโค้ดบนบอร์ดไมโครคอนโทรลเลอร์ได้อย่างชัดเจนโดยใช้ Arduino IDE คุณสามารถดาวน์โหลด Arduino IDE เวอร์ชันล่าสุดได้จากที่นี่และทำตามขั้นตอนด้านล่าง:
- เมื่อบอร์ด Arduino เชื่อมต่อกับพีซีของคุณแล้วให้เปิด“ แผงควบคุม” และคลิกที่“ ฮาร์ดแวร์และเสียง” จากนั้นคลิกที่“ อุปกรณ์และเครื่องพิมพ์” ค้นหาชื่อของพอร์ตที่บอร์ด Arduino ของคุณเชื่อมต่ออยู่ ในกรณีของฉันมันคือ“ COM14” แต่อาจแตกต่างกันในพีซีของคุณ
- ตอนนี้เปิด Arduino IDE จาก Tools ให้ตั้งค่าบอร์ด Arduino เป็น Arduino / Genuino UNO
- จากเมนูเครื่องมือเดียวกัน ให้ตั้งค่าหมายเลขพอร์ตที่คุณเห็นในแผงควบคุม
- ดาวน์โหลดรหัสที่แนบด้านล่างและคัดลอกไปยัง IDE ของคุณ ในการอัปโหลดรหัสให้คลิกที่ปุ่มอัปโหลด
คุณสามารถดาวน์โหลดรหัสได้จากที่นี่
ขั้นตอนที่ 5: ทำความเข้าใจรหัส
รหัสนั้นง่ายมาก มีคำอธิบายสั้น ๆ ด้านล่าง:
- ที่จุดเริ่มต้นของรหัส หมุดเซ็นเซอร์จะถูกเตรียมข้อมูลเบื้องต้น และหมุดสำหรับไดรเวอร์มอเตอร์ L298N จะถูกเตรียมข้อมูลเบื้องต้นด้วย
int enable1pin = 10; // การเริ่มต้น PWM Pin สำหรับอินพุตแบบอนาล็อกสำหรับมอเตอร์ 1 int motor1pin1 = 2; // การเริ่มต้น Positive Pin สำหรับมอเตอร์ 1 int motor1pin2 = 3; // การเริ่มต้น Negative Pin สำหรับ Motor 1 int enable2pin = 11; // การเริ่มต้น PWM Pin สำหรับอินพุตแบบอนาล็อกสำหรับมอเตอร์ 2 int motor2pin1 = 4; // การเริ่มต้น Positive Pin สำหรับมอเตอร์ 2 int motor2pin2 = 5; // การเริ่มต้น Negative Pin สำหรับ Motor 2 int S1 = 12; // การเริ่มต้น Pin 12 สำหรับเซนเซอร์ 1 int S2 = 9; // การเริ่มต้น Pin 9 สำหรับ Sensor 2 int S3 = 8; // กำลังเริ่มต้น Pin 8 สำหรับเซนเซอร์ 3 int S4=7 ; // การเริ่มต้น Pin 7 สำหรับ Sensor 4 int S5 = 6; // การเริ่มต้น Pin 6 สำหรับเซนเซอร์ 5
- การตั้งค่าเป็นโมฆะ ()เป็นฟังก์ชันที่ใช้ในการตั้งค่าพินเป็น INPUT หรือ OUTPUT นอกจากนี้ยังกำหนดอัตราการรับส่งข้อมูลของ Arduino อัตราบอดคือความเร็วที่บอร์ดไมโครคอนโทรลเลอร์สื่อสารกับส่วนประกอบอื่น ๆ ที่แนบมา
{pinMode (enable1pin, เอาท์พุท); // การเปิดใช้งาน PWM สำหรับ Motor 1 pinMode (enable2pin, OUTPUT); // การเปิดใช้งาน PWM สำหรับ Motor 2 pinMode (motor1pin1, OUTPUT); // การตั้งค่า motor1 pin1 เป็นเอาต์พุต pinMode (motor1pin2, OUTPUT); // การตั้งค่า motor1 pin2 เป็น pinMode ขาออก (motor2pin1, OUTPUT); // การตั้งค่า motor2 pin1 เป็น pinMode ขาออก (motor2pin2, OUTPUT); // การตั้งค่า motor2 pin2 เป็น pinMode ขาออก (S1, INPUT); // การตั้งค่า sensor1 เป็นอินพุต pinMode (S2, INPUT); // การตั้งค่า sensor2 เป็นอินพุต pinMode (S3, INPUT); // การตั้งค่า sensor3 เป็นอินพุต pinMode (S4, INPUT); //การตั้งค่า sensor4 เป็นอินพุต pinMode (S5, INPUT); // การตั้งค่า sensor5 เป็นอินพุต Serial.begin (9600); // การตั้งค่าอัตราการส่งข้อมูล}
- ห่วงเป็นโมฆะ () เป็นฟังก์ชันที่ทำงานซ้ำแล้วซ้ำอีกในวงจร ในลูปนี้เราจะให้คำแนะนำแก่ Arduino UNO ว่าจะดำเนินการอย่างไร ความเร็วเต็มของมอเตอร์คือ 255 และมอเตอร์ทั้งสองมีความเร็วต่างกัน ดังนั้นหากเราต้องการเคลื่อนหุ่นยนต์ไปข้างหน้าให้เลี้ยวขวาและอื่น ๆ เราจำเป็นต้องปรับความเร็วของมอเตอร์ เราใช้หมุดอะนาล็อกในรหัสเนื่องจากเราต้องการเปลี่ยนความเร็วของมอเตอร์ทั้งสองตัวในสภาวะที่แตกต่างกัน คุณสามารถปรับความเร็วของมอเตอร์ได้ด้วยตัวคุณเอง
โมฆะ loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5))) // ส่งต่อ บรรทัด {analogWrite (enable1pin, 61); // มอเตอร์ 1 speed analogWrite (enable2pin, 63); // มอเตอร์ 2 speed digitalWrite (motor1pin1, HIGH); // มอเตอร์ 1 ขา 1 ตั้งค่าเป็น High digitalWrite (motor1pin2, LOW); //มอเตอร์ 1 พิน 2 ตั้งค่าเป็น Low digitalWrite (motor2pin1, HIGH); // มอเตอร์ 2 ขา 1 ตั้งค่าเป็น High digitalWrite (motor2pin2, LOW); // มอเตอร์ 2 ขา 2 ตั้งค่าเป็น Low} if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) / / เลี้ยวขวาหักศอก {analogWrite (enable1pin, 60); // มอเตอร์ 1 speed analogWrite (enable2pin, 80); // มอเตอร์ 2 speed digitalWrite (motor1pin1, HIGH); // มอเตอร์ 1 ขา 1 ตั้งค่าเป็น High digitalWrite (motor1pin2, LOW); // มอเตอร์ 1 ขา 2 ตั้งค่าเป็น Low digitalWrite (motor2pin1, LOW); // มอเตอร์ 2 ขา 1 ตั้งค่าเป็น Low digitalWrite (motor2pin2, LOW); // มอเตอร์ 2 ขา 2 ตั้งค่าเป็น Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5))) / / เลี้ยวซ้ายหักศอก {analogWrite (enable1pin, 80); // มอเตอร์ 1 ความเร็ว analogWrite (เปิดใช้งาน 2 พิน, 65); // มอเตอร์ 2 speed digitalWrite (motor1pin1, LOW); // มอเตอร์ 1 ขา 1 ตั้งค่าเป็น Low digitalWrite (motor1pin2, LOW); // มอเตอร์ 1 ขา 2 ตั้งค่าเป็น Low digitalWrite (motor2pin1, HIGH); // มอเตอร์ 2 ขา 1 ตั้งค่าเป็น High digitalWrite (motor2pin2, LOW); // มอเตอร์ 2 ขา 2 ตั้งค่าเป็น Low} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) // หยุด {analogWrite (enable1pin, 0); // มอเตอร์ 1 speed analogWrite (enable2pin, 0); // มอเตอร์ 2 speed digitalWrite (motor1pin1, LOW); // มอเตอร์ 1 พิน 1 ตั้งค่าเป็น Low digitalWrite (motor1pin2, LOW); // มอเตอร์ 1 ขา 2 ตั้งค่าเป็น Low digitalWrite (motor2pin1, LOW); // มอเตอร์ 2 ขา 1 ตั้งค่าเป็น Low digitalWrite (motor2pin2, LOW); // มอเตอร์ 2 ขา 2 ตั้งไว้ที่ต่ำ}}
แอพพลิเคชั่น
- การใช้งานในอุตสาหกรรม: หุ่นยนต์เหล่านี้สามารถใช้เป็นผู้ให้บริการอุปกรณ์อัตโนมัติในอุตสาหกรรมที่เปลี่ยนสายพานลำเลียงแบบเดิมได้
- การใช้งานในประเทศ: สิ่งเหล่านี้สามารถใช้ที่บ้านเพื่อวัตถุประสงค์ในบ้านเช่นการทำความสะอาดพื้นงานครัว ฯลฯ
- แอปพลิเคชันคำแนะนำ: หุ่นยนต์เหล่านี้สามารถใช้ในสถานที่สาธารณะเช่นห้างสรรพสินค้าศูนย์อาหารพิพิธภัณฑ์ ฯลฯ เพื่อให้คำแนะนำเส้นทาง