สวัสดีคุณเป็นมือใหม่ของโลกหุ่นยนต์หรืออิเล็กทรอนิกส์หรือไม่? หรือคุณกำลังมองหาโครงการที่เรียบง่าย แต่ทรงพลังเพื่อทำให้เพื่อน ๆ และครูของคุณประทับใจ? แล้วนี่คือสถานที่
ในโครงการนี้เราจะใช้พลังของระบบสมองกลฝังตัวและอิเล็คทรอนิคส์เพื่อสร้างหุ่นของเราเองซึ่งจะช่วยให้เรารักษาที่บ้านหรือที่ทำงานได้อย่างเป็นระเบียบเรียบร้อย หุ่นยนต์ตัวนี้เป็นเครื่องดูดฝุ่นแบบสี่ล้อซึ่งสามารถหลีกเลี่ยงอุปสรรคและสูญญากาศพื้นได้อย่างชาญฉลาดในเวลาเดียวกัน แนวคิดนี้สร้างแรงบันดาลใจจากเครื่องดูดฝุ่นชื่อดังจากRobot Roombaซึ่งแสดงในภาพด้านล่าง
IROBOT ROOMBA-สูญญากาศทำความสะอาด
ความคิดของเราคือการทำให้หุ่นยนต์แบบง่ายๆจากรอยขีดข่วนซึ่งสามารถหลีกเลี่ยงอุปสรรคในขณะที่ทำความสะอาดพื้นได้โดยอัตโนมัติ เชื่อฉันคนมันสนุก !!

วัสดุและส่วนประกอบที่จำเป็น:

เอาล่ะตอนนี้เรามีไอเดียของหุ่นยนต์เครื่องดูดฝุ่นอัตโนมัติของเราอยู่ในใจและเรารู้ว่าเรามีอะไรบ้าง ลองดูว่าเราควรจะเริ่มดำเนินการที่ไหน เพื่อที่จะสร้างหุ่นยนต์ของความคิดของเราก่อนอื่นเราจะต้องตัดสินใจเกี่ยวกับต่อไปนี้:
  • ชนิดของไมโครคอนโทรลเลอร์
  • จำเป็นต้องใช้เซนเซอร์ 
  • ต้องใช้มอเตอร์
  • วัสดุตัวถังหุ่นยนต์
  • ความจุแบตเตอรี่
ตอนนี้ให้เราตัดสินใจในแต่ละจุดที่กล่าวมาข้างต้น วิธีนี้จะเป็นประโยชน์สำหรับคุณไม่เพียง แต่สร้างหุ่นยนต์ทำความสะอาดบ้านนี้ แต่ยังมีหุ่นยนต์อื่น ๆ ซึ่งกระทบกับจินตนาการของคุณ

ประเภทไมโครคอนโทรลเลอร์:
การเลือกไมโครคอนโทรลเลอร์เป็นสิ่งที่สำคัญมากเนื่องจากตัวควบคุมนี้จะทำหน้าที่เป็นสมองของหุ่นยนต์ของคุณ โครงการ DIY ส่วนใหญ่ทำขึ้นรอบ ๆArduinoและRaspberry Piแต่ก็ไม่จำเป็นต้องเหมือนกัน ไม่มี Microcontroller เฉพาะที่คุณสามารถทำงานได้ ทุกอย่างขึ้นอยู่กับความต้องการและค่าใช้จ่าย 
เช่นแท็บเล็ตไม่สามารถออกแบบบนไมโครคอนโทรลเลอร์ 8 บิตและไม่มีค่าใช้ ARM cortex m4 ในการออกแบบเครื่องคิดเลขอิเล็กทรอนิกส์
การเลือกใช้ไมโครคอนโทรลเลอร์ขึ้นอยู่กับความต้องการของผลิตภัณฑ์:
1. ความต้องการด้านเทคนิคขั้นแรกจะระบุเช่นจำนวนขา I / O ที่ต้องการขนาดแฟลชจำนวน / ชนิดของโปรโตคอลการสื่อสารคุณลักษณะพิเศษใด ๆ เป็นต้น
2. จากนั้นรายการตัวควบคุมจะถูกเลือกตามข้อกำหนดทางเทคนิค รายการนี้ประกอบด้วยตัวควบคุมจากผู้ผลิตที่แตกต่างกัน ตัวควบคุมเฉพาะแอ็พพลิเคชันจำนวนมากมีอยู่
3. จากนั้นตัวควบคุมจะสรุปตามต้นทุนค่าใช้จ่ายความพร้อมใช้งานและการสนับสนุนจากผู้ผลิต

ถ้าคุณไม่ต้องการที่จะทำมากยกหนักและเพียงต้องการที่จะเรียนรู้พื้นฐานของไมโครคอนโทรลเลอร์และจากนั้นได้รับลึกเข้าไปในนั้นแล้วคุณสามารถเลือก Arduino ในโครงการนี้เราจะใช้Arduino ก่อนหน้านี้เราได้สร้างหุ่นยนต์หลายประเภทโดยใช้ Arduino :

จำเป็นต้องใช้เซนเซอร์:
มีเซ็นเซอร์อยู่มากมายในตลาดที่มีการใช้งานของตัวเอง ทุกหุ่นยนต์ได้รับการป้อนข้อมูลผ่านเซ็นเซอร์ที่พวกเขาทำหน้าที่เป็นอวัยวะประสาทสัมผัสสำหรับหุ่นยนต์ ในกรณีของเราหุ่นยนต์ของเราควรสามารถตรวจจับอุปสรรคและหลีกเลี่ยงได้
มีเซ็นเซอร์เย็นแบบอื่น ๆ อีกมากมายที่เราจะนำมาใช้ในโครงการในอนาคตของเรา แต่ตอนนี้ให้เรามุ่งเน้นไปที่เซ็นเซอร์ IR และ US (Ultrasonic sensor) เนื่องจากทั้งสองคนนี้จะให้ภาพลักษณ์ของรถโรโบ ดูการทำงานของเซ็นเซอร์ IRที่นี่ ด้านล่างแสดงภาพของเซ็นเซอร์รับสัญญาณ IR และอัลตราโซนิคเซนเซอร์ :
โมดูลเซนเซอร์ IR อัลตราโซนิก-Sensor
อัลตราโซนิคเซนเซอร์ประกอบด้วยดวงตากลมสองดวงซึ่งหนึ่งในนั้นใช้ในการส่งสัญญาณของสหรัฐฯและอีกอันหนึ่งเพื่อรับรังสียูวี คำนวณเวลาโดยรังสีเพื่อรับส่งและรับกลับคำนวณโดยไมโครคอนโทรลเลอร์ ตอนนี้เนื่องจากเวลาและความเร็วของเสียงเป็นที่รู้จักเราสามารถคำนวณระยะทางโดยใช้สูตรต่อไปนี้
  • ระยะทาง = เวลา x ความเร็วเสียงหารด้วย 2
ค่าจะถูกหารด้วยสองเนื่องจากรังสีจะเคลื่อนที่ไปข้างหน้าและย้อนกลับไปในระยะเดียวกัน คำอธิบายรายละเอียดของการใช้เซ็นเซอร์อัลตราโซนิกจะได้รับที่นี่

มอเตอร์ต้องมี:
มีค่อนข้างมากมอเตอร์ที่ใช้ในด้านของหุ่นยนต์ที่ใช้มากที่สุดคือ Stepper และ Servo มอเตอร์ เนื่องจากโครงการนี้ไม่ได้มีตัวกระตุ้นที่ซับซ้อนใด ๆ หรือการเข้ารหัสแบบหมุนเราจะใช้ตามปกติPMDC มอเตอร์ แต่แบตเตอรี่ของเรามีขนาดใหญ่และหนักเพราะฉะนั้นเราจึงใช้มอเตอร์ 4 ตัวเพื่อขับเคลื่อนหุ่นยนต์ทั้ง 4 รุ่นของเราเป็นมอเตอร์ PMDC เดียวกัน แต่แนะนำให้ตั้งมอเตอร์ stepper และ servo เมื่อคุณได้รับความสะดวกสบายกับมอเตอร์ PMDC

วัสดุของตัวถังหุ่นยนต์:
ในฐานะนักเรียนหรือนักเล่นสเป็คที่เป็นส่วนที่ยากที่สุดในขณะที่ทำหุ่นยนต์คือการเตรียมแชสซีของหุ่นยนต์ของเรา ปัญหาคือความพร้อมใช้งานของเครื่องมือและวัสดุ วัสดุที่เหมาะที่สุดสำหรับโครงการนี้คืออะคริลิค แต่ต้องใช้เครื่องมือเจาะและเครื่องมืออื่น ๆ เพื่อทำงานร่วมกับมัน ดังนั้นไม้จึงถูกเลือกให้ทุกคนสามารถทำงานได้อย่างง่ายดาย  
ปัญหานี้ได้หายไปจากสนามหลังจากการแนะนำเครื่องพิมพ์ 3D ฉันกำลังวางแผนที่จะพิมพ์ชิ้นส่วน 3D สักวันหนึ่งและอัปเดตให้กับคุณด้วยเหมือนกัน ดังนั้นตอนนี้ขอใช้แผ่นไม้เพื่อสร้างหุ่นยนต์ของเรา

ความจุแบตเตอรี่:
การเลือกกำลังการผลิตแบตเตอรี่ควรเป็นส่วนสุดท้ายของการทำงานเนื่องจากหมดจดขึ้นอยู่กับแชสซีและมอเตอร์ของคุณ ที่นี่แบตเตอรี่ของเราควรไดรฟ์เครื่องดูดฝุ่นที่ดึงประมาณ 3-5A และสี่มอเตอร์ PMDC ดังนั้นเราจะต้องใช้แบตเตอรี่หนัก ฉันได้เลือก12V 20Ah SLAB (แบตเตอรี่กรดตะกั่วปิดผนึก)และขนาดใหญ่ของมันทำให้หุ่นยนต์ของเราได้รับสี่มอเตอร์ PMDC เพื่อดึงคนที่แต่งตัวประหลาดขนาดใหญ่นี้

ตอนนี้ที่เราได้เลือกของเราทั้งหมดส่วนประกอบที่จำเป็นช่วยให้รายการพวกเขาลง
  • แผ่นไม้สำหรับแชสซี
  • เซ็นเซอร์ IR และ US
  • เครื่องดูดฝุ่นที่ทำงานบนกระแสไฟตรง
  • Arduino Uno
  • แบตเตอรี่ 12V 20Ah
  • IC ควบคุมมอเตอร์ (L293D)
  • เครื่องมือทำงาน
  • สายเชื่อมต่อ
  • พลังงานที่กระตือรือร้นที่จะเรียนรู้และทำงาน

องค์ประกอบส่วนใหญ่ของเราได้รับการกล่าวถึงในคำอธิบายด้านบนฉันจะอธิบายรายละเอียดด้านล่างซ้าย
DC เครื่องดูดฝุ่น:
ตั้งแต่หุ่นยนต์ของเราทำงานบนระบบ 12V 20Ah DC เครื่องดูดฝุ่นของเราควรเป็นเครื่องดูดฝุ่นแบบ 12V DC หากคุณสับสนในการที่จะได้รับหนึ่งแล้วคุณสามารถเยี่ยมชม eBay หรือ Amazon สำหรับทำความสะอาดเครื่องดูดฝุ่นทำความสะอาดรถ
เครื่องดูดฝุ่น
เราจะใช้เหมือนกันดังแสดงในภาพด้านบน

มอเตอร์ควบคุม (L293D):
ไดรเวอร์มอเตอร์เป็นโมดูลกลางระหว่าง Arduino และ Motor เนื่องจากไมโครคอนโทรลเลอร์ Arduino จะไม่สามารถจ่ายกระแสไฟฟ้าที่จำเป็นสำหรับมอเตอร์ให้ทำงานได้และสามารถจ่ายกระแสไฟ 40mA ได้ดังนั้นการดึงกระแสไฟจะเพิ่มความเสียหายให้กับตัวควบคุมอย่างถาวร ดังนั้นเราจึงเรียกใช้โปรแกรมควบคุมมอเตอร์ซึ่งจะควบคุมมอเตอร์
L293D-Motor ไดร์เวอร์ไอซี
เราจะใช้L293D Motor Motor ICซึ่งจะสามารถจัดหาได้ถึง 1A ดังนั้นไดรเวอร์นี้จะได้รับข้อมูลจาก Arduino และทำให้การทำงานของมอเตอร์ตามที่ต้องการ

แค่นั้นแหละ!! ฉันได้ให้ข้อมูลสำคัญมากที่สุด แต่ก่อนที่เราจะเริ่มสร้างหุ่นยนต์เราขอแนะนำให้อ่านแผ่นข้อมูลของ L293D และ Arduino หากคุณมีข้อสงสัยหรือปัญหาใด ๆ คุณสามารถติดต่อเราผ่านทางส่วนแสดงความคิดเห็น

การสร้างและทดสอบหุ่นยนต์:

เครื่องดูดฝุ่นเป็นส่วนสำคัญที่สุดในการจัดวางหุ่นยนต์ ต้องวางไว้ที่มุมเอียงตามที่แสดงในภาพเพื่อให้สามารถทำงานได้อย่างถูกต้อง เครื่องดูดฝุ่นไม่ได้ถูกควบคุมโดยArduino เมื่อคุณเปิดเครื่องหุ่นยนต์แล้วเครื่องสูญญากาศยังเปิดอยู่
ขั้นตอนหนึ่งในการสร้างหุ่นยนต์ของเราคืองานไม้ เราต้องแกะสลักไม้ของเราและเจาะหลุมบางส่วนเพื่อวางเซ็นเซอร์และเครื่องดูดฝุ่น
ขอแนะนำให้ทดสอบ Ride Robot ของคุณด้วยรหัสต่อไปนี้เมื่อคุณจัดให้มี Motor and Motor driver ก่อนที่จะเชื่อมต่อ Sensors
การตั้งค่าเป็นโมฆะ ()
{
Serial.begin (9600);
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
pinMode (11 OUTPUT);
pinMode (12 OUTPUT);
}

void loop ()
{
ล่าช้า (1000)
Serial.print ( "ไปข้างหน้า");
digitalWrite (9, HIGH);
digitalWrite (10, LOW);
digitalWrite (11 สูง);
digitalWrite (12 LOW);
ล่าช้า (500);
Serial.print ( "ย้อนกลับ");
digitalWrite (9, LOW);
digitalWrite (10, HIGH);
digitalWrite (11 LOW);
digitalWrite (12 HIGH);
}
 Arduino สูญญากาศทำความสะอาดหุ่นยนต์โดยใช้-IR และเซ็นเซอร์อัลตราโซนิก
ถ้าทุกสิ่งทุกอย่างทำงานได้ดีแล้วคุณสามารถเชื่อมต่อเซ็นเซอร์กับArduinoตามที่แสดงในแผนภาพวงจรและใช้รหัสแบบเต็มในตอนท้าย ที่คุณสามารถดูฉันได้ติดตั้งเซ็นเซอร์อัลตราโซนิกไปด้านหน้าและสองเซ็นเซอร์ IR ทั้งสองด้านของหุ่นยนต์ อ่างความร้อนติดตั้งอยู่กับ L293D ในกรณีที่ IC ร้อนขึ้นอย่างรวดเร็ว

นอกจากนี้คุณยังสามารถเพิ่มส่วนพิเศษบางอย่างเช่นนี้
กวาดจัดเรียงสำหรับ Arduino สูญญากาศทำความสะอาดหุ่นยนต์ Arduino หุ่นยนต์ดูดฝุ่นทำความสะอาดที่มีทิวทัศน์จัดเรียง
นี่คือการจัดเรียงแบบกวาด (Sweeping Arrangement)สามารถวางไว้ที่ปลายทั้งสองด้านของด้านหน้าซึ่งจะผลักดันฝุ่นไปตามบริเวณที่ดูดเข้าไป

นอกจากนี้คุณยังมีตัวเลือกในการทำSmaller Version ของ Vacuum Cleaning Robot เช่นนี้
Arduino-based-อุปสรรคหลีกเลี่ยงหุ่นยนต์
Robot ขนาดเล็กกว่านี้ทำจากกระดาษแข็งและทำงานบนบอร์ดพัฒนา ATMega16 ส่วนเครื่องดูดฝุ่นทำโดยใช้พัดลม BLDC และบรรจุในกล่อง คุณสามารถใช้วิธีนี้ได้หากต้องการให้งบประมาณต่ำ แนวคิดนี้ใช้งานได้ แต่ก็ไม่ได้มีประสิทธิภาพ

แผนภูมิวงจรรวม:

Arduino-อุปสรรคหลีกเลี่ยงหุ่นยนต์ดูดฝุ่นทำความสะอาดวงจร
รหัสสำหรับหุ่นยนต์ดูดฝุ่นนี้สามารถดูได้จากหัวข้อรหัสด้านล่าง เมื่อการเชื่อมต่อเสร็จสิ้นและโปรแกรมถูกทิ้งลงใน Arduino หุ่นยนต์ของคุณพร้อมที่จะเริ่มทำงานแล้ว การทำงานของโค้ดจะอธิบายโดยใช้ความคิดเห็น หากคุณต้องการดูหุ่นยนต์ตัวนี้ให้ดำเนินการโปรดดูวิดีโอด้านล่าง

นอกจากนี้ฉันยังวางแผนที่จะสมบูรณ์ 3D พิมพ์ชิ้นส่วนในรุ่นถัดไป ฉันยังจะได้รับการเพิ่มคุณสมบัติเย็นน้อยและขั้นตอนวิธีที่ซับซ้อนเพื่อให้ครอบคลุมพื้นที่พรมทั้งหมดและง่ายต่อการจัดการและขนาดกะทัดรัด โปรดคอยติดตามการอัปเดตในอนาคต
รหัส
#define trigPin 12 
# define echoPin 13 
# กำหนด ir1 7 
กำหนด ir2 6
การตั้งค่าเป็นโมฆะ () 

  Serial.begin (9600); 
  pinMode (8, OUTPUT); 
  pinMode (9, OUTPUT); 
  pinMode (10, OUTPUT); 
  pinMode (11 OUTPUT); 
  pinMode (trigPin, OUTPUT); 
  pinMode (echoPin, INPUT); 
  pinMode (ir1, INPUT); 
  pinMode (ir2, INPUT); 
}
void loop () 

  ระยะเวลา int, ระยะทาง; 
  ธง int, val1, val2; 
  VAL1 = digitalRead (IR1); 
  VAL2 = digitalRead (ir2); 
  Serial.println (VAL1); 
  Serial.println (VAL2); 
  digitalWrite (trigPin, HIGH); 
  delayMicroseconds (1000) 
  digitalWrite (trigPin, LOW); 
  ระยะเวลา = ชีพจร (echoPin, HIGH); 
  ระยะทาง = (ระยะเวลา / 2) / 29.1; 
  if (distance> = 200 || distance <= 0) { 
    Serial.println ("Out of range"); 
  } 
  else { 
    Serial.print (ระยะทาง); 
    Serial.println ("cm"); 
  } 
  ล่าช้า (500);
if (distance> = 20) 

  ล่าช้า (100); 
  Serial.println ( "ไปข้างหน้า"); 
  digitalWrite (8, HIGH); 
  digitalWrite (9, LOW); 
  digitalWrite (10, HIGH); 
  digitalWrite (11 LOW); 
  ล่าช้า (150); 
  Serial.println ( "STOP"); 
  digitalWrite (8, LOW); 
  digitalWrite (9, LOW); 
  digitalWrite (10, LOW); 
  digitalWrite (11 LOW); 
}
if (ระยะทาง <= 20) 

  if (val1 == 1) 
  {   
    Serial.print ("เลี้ยวขวา"); 
    digitalWrite (8, LOW); 
    digitalWrite (9, LOW); 
    digitalWrite (10, HIGH); 
    digitalWrite (11 LOW); 
    ล่าช้า (2000); 
  } 
  if (val2 == 1) 
  { 
    Serial.print ("เลี้ยวซ้าย"); 
    digitalWrite (8, HIGH); 
    digitalWrite (9, LOW); 
    digitalWrite (10, LOW); 
    digitalWrite (11 LOW); 
    ล่าช้า (500); 
  } 
}
ถ้า (ระยะทาง <= 10) 

    Serial.print ("rearrange back"); 
    digitalWrite (8, LOW); 
    digitalWrite (9, HIGH); 
    digitalWrite (10, LOW); 
    digitalWrite (11 สูง); 
    ล่าช้า (1000)  
    Serial.print ("rearranged left"); 
    digitalWrite (8, LOW); 
    digitalWrite (9, LOW); 
    digitalWrite (10, HIGH); 
    digitalWrite (11 LOW); 
    ล่าช้า (100); 
}
if (distance <= 20) 

   Serial.print ("Algorithum"); 
   Serial.print ("สิทธิเสรี"); 
   digitalWrite (8, HIGH); 
   digitalWrite (9, LOW); 
   digitalWrite (10, LOW); 
   digitalWrite (11 LOW); 
   if (val2 == 0) 
   { 
    Serial.print ("ปรับสมาร์ท"); 
    digitalWrite (8, LOW); 
    digitalWrite (9, HIGH); 
    digitalWrite (10, LOW); 
    digitalWrite (11 LOW); 
    ล่าช้า (500); 
   } 
 } 
}