สารบัญ:

หุ่นยนต์ขอทานด้วยการติดตามและควบคุมใบหน้าโดย Xbox Controller - Arduino: 9 ขั้นตอน (พร้อมรูปภาพ)
หุ่นยนต์ขอทานด้วยการติดตามและควบคุมใบหน้าโดย Xbox Controller - Arduino: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: หุ่นยนต์ขอทานด้วยการติดตามและควบคุมใบหน้าโดย Xbox Controller - Arduino: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: หุ่นยนต์ขอทานด้วยการติดตามและควบคุมใบหน้าโดย Xbox Controller - Arduino: 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: EP 27. Arduino ฉบับไวจนไฟลุก !! - สาระเดฟ ใน 3 นาที 2024, กรกฎาคม
Anonim
Image
Image
การติดตั้งและกำหนดค่า OpenCV และ C++
การติดตั้งและกำหนดค่า OpenCV และ C++

เรากำลังจะสร้างหุ่นยนต์ขอทาน หุ่นยนต์ตัวนี้จะพยายามทำให้ระคายเคืองหรือดึงความสนใจจากผู้คนที่ผ่านไปมา มันจะตรวจจับใบหน้าของพวกเขาและพยายามยิงเลเซอร์มาที่พวกเขา หากคุณให้เหรียญกับหุ่นยนต์ เขาจะร้องเพลงและเต้นรำ หุ่นยนต์จะต้องใช้ Arduino, ฟีดข้อมูลสดของกล้องและคอมพิวเตอร์เพื่อใช้งาน openCV หุ่นยนต์จะสามารถควบคุมโดยตัวควบคุม xBox หากเชื่อมต่อกับพีซี

ขั้นตอนที่ 1: วัสดุ

ฮาร์ดแวร์ อิเล็กทรอนิกส์

  • Arduino NANO หรือ UNO
  • กล้อง USB 2.0
  • สายจัมเปอร์ (ชายและหญิง)
  • 2 x Servo - ทั่วไป (ขนาดย่อยไมโคร)
  • 2 x LED - RGB แคโทด 5 มม.
  • เลเซอร์ 2 x 5mW
  • 1 x LED สีแดง 5mm
  • 1 x เขียงหั่นขนม
  • ตัวต้านทาน 4 x 220Ω
  • ตัวต้านทาน 1 x 1KΩ
  • 1 x โปรโตบอร์ด
  • 1 x โซนาร์เซนเซอร์ 4 พิน
  • คอนโทรลเลอร์ Xbox

ฮาร์ดแวร์อนาล็อก

  • กล่องไม้ (15 x 15 x 7 ซม.)
  • กาว
  • เทปพันสายไฟ

ซอฟต์แวร์

  • Arduino IDE
  • วิชวลสตูดิโอ 2017
  • 3Ds Max (หรือซอฟต์แวร์ดัดแปลง 3 มิติอื่น ๆ)
  • Preform 2.14.0 หรือใหม่กว่า
  • OpenCV 3.4.0 หรือใหม่กว่า

เครื่องมือ

  • อุปกรณ์บัดกรี
  • เลื่อยและเจาะ
  • เครื่องตัดลวด

ขั้นตอนที่ 2: การติดตั้งและกำหนดค่า OpenCV และ C++

การติดตั้งและกำหนดค่า OpenCV และ C++
การติดตั้งและกำหนดค่า OpenCV และ C++

ขั้นตอนที่ 2.1: รับซอฟต์แวร์

Visual studio 2017: ดาวน์โหลด Visual studio Comunity 2017openCV 3.4.0 Win pack: ไปที่หน้าดาวน์โหลดอย่างเป็นทางการ

ขั้นตอนที่ 2.2: การติดตั้ง OpenCV2.2.1: แตกไฟล์ zipfile ไปยังไดรฟ์ Windows(:C).2.2.2: ไปที่การตั้งค่าระบบขั้นสูงของคุณ สามารถพบได้ในฟังก์ชันการค้นหา win10 ของคุณ2.2.3: เราจำเป็นต้องตั้งค่าตัวแปรสิ่งแวดล้อมใหม่ ค้นหาสภาพแวดล้อม "เส้นทาง" และกด edit.2.2.4: ตอนนี้ เราต้องเพิ่มตำแหน่งของ "bin map" ให้กับตัวแปรใหม่ในสภาพแวดล้อมของเส้นทาง หากคุณติดตั้ง openCV บนไดรฟ์ C เส้นทางสามารถเป็นดังนี้: C:\opencv\build\x64\vc14\bin วางเส้นทางและกด "ตกลง" บนหน้าต่างทั้งหมดที่คุณอาจเปิดในระหว่างกระบวนการนี้

ขั้นตอนที่ 2.3: กำหนดค่า visual studio C++2.3.1: สร้างโปรเจ็กต์ Visual C++ ใหม่ ทำให้เป็น win32 Console Application project.2.3.2: ในแท็บไฟล์ต้นฉบับคลิกขวาและเพิ่มไฟล์ C ++ ใหม่ (.cpp) และตั้งชื่อว่า "main.cpp".2.3.3: คลิกขวาที่โครงการ- ในตัวสำรวจโซลูชันและเลือก Properties.2.3.4: เราจำเป็นต้องเพิ่ม Include Directory เพิ่มเติม สามารถพบได้ภายใต้แท็บ C/C++ โดยทั่วไป คัดลอกเส้นทางต่อไปนี้: C:\opencv\build\include แล้ววางด้านหลัง "AID" แล้วคลิก Apply.2.3.5: ในหน้าต่างเดียวกัน เราจำเป็นต้อง เลือกแท็บ "ตัวเชื่อมโยง" โดยทั่วไปเราจำเป็นต้องสร้างไดเร็กทอรี Libary เพิ่มเติมอื่น ๆ วางเส้นทางต่อไปนี้ด้านหลัง "AID" C:\opencv\build\x64\vc14\lib แล้วกด Apply อีกครั้ง 2.3.6: ภายใต้แท็บ Linker เดียวกัน ให้เลือกแท็บ "Input" และกด "Additional Dependencies > edit" แล้ววางไฟล์ต่อไปนี้ opencv_world320d.lib และ xinput.lib (สำหรับคอนโทรลเลอร์) แล้วกด Apply อีกครั้ง ปิดหน้าต่าง ตอนนี้ไฟล์ C++ ของคุณก็พร้อมใช้งานแล้ว

ขั้นตอนที่ 3: การตั้งค่า Arduino

การตั้งค่า Arduino
การตั้งค่า Arduino
การตั้งค่า Arduino
การตั้งค่า Arduino
การตั้งค่า Arduino
การตั้งค่า Arduino
การตั้งค่า Arduino
การตั้งค่า Arduino

พบกับเซอร์โว: เซอร์โวสามารถหมุนได้ ~ 160 ° โดยต้องมีระหว่าง 4, 8 และ 6, 0 โวลต์เพื่อให้ทำงานได้ตามปกติ เซอร์โวมี 3 พิน: กราวด์ 4, 8 - 6, 0 โวลต์พินและข้อมูล เข็มหมุด. สำหรับโครงการของเรา เราจะตั้งค่าหมุดข้อมูลสำหรับเซอร์โวบน DigitalPin 9 และ 10

พบกับไฟ LED RGB: ไฟ LED RGB มี 4 พินพินสีแดง, เขียว, น้ำเงินและกราวด์ เพื่อประหยัดพื้นที่บน Arduino เราสามารถเชื่อมต่อไฟ LED RGB 2 ดวงเข้าด้วยกัน ดังนั้นเราจะใช้ 3 พินเท่านั้น เราสามารถเชื่อมต่อและประสานไฟ LED RGB บนโปรโตบอร์ดเหมือนในภาพ ขาสีแดง => DigitalPin 3 (PWM) พินสีเขียว => DigitalPin 4 พินสีน้ำเงิน => DigitalPin 7

พบกับเสียง Piezo: หุ่นยนต์ตัวน้อยของเรากำลังจะส่งเสียง เพื่อที่จะทำสิ่งนี้เราต้องส่งเสียงให้เขา! เราสามารถเลือกที่จะทำให้เขาดังจริงๆ หรือเราสามารถใส่ตัวต้านทาน 220Ω ไว้ข้างหน้าเสียง Piezo เพื่อทำให้เขาดูน่ารังเกียจน้อยลง เรากำลังทิ้งเสียง Piezo ไว้บนเขียงหั่นขนม ไม่จำเป็นต้องบัดกรี เราเชื่อมต่อดาต้าพิน (+) กับ DigitalPin 2 และพินกราวด์กับกราวด์บนเขียงหั่นขนม

พบกับโซนาร์:เพื่อไม่ให้หุ่นยนต์พยายามเล็งไปที่บุคคลที่อยู่ห่างออกไป 10 เมตร เราสามารถกำหนดระยะให้หุ่นยนต์สามารถเล็งไปที่ผู้คนได้ เราทำสิ่งนี้ด้วยเซ็นเซอร์โซนาร์ VCC => 5 voltTrig => DigitalPin 6Echo => DigitalPin 5GND => กราวด์

พบกับเครื่องตรวจจับเหรียญ:เรากำลังจะสร้างเครื่องตรวจจับเหรียญ เครื่องตรวจจับเหรียญจะทำงานโดยการตรวจจับว่าวงจรปิดหรือขาดหรือไม่ มันเกือบจะทำงานเหมือนสวิตช์ แต่เราต้องระวัง หากเราทำผิด จะต้องใช้ Arduino อย่างแรก: เชื่อมต่อ AnalogPin A0 กับสายเคเบิล 5 โวลต์ แต่ให้แน่ใจว่าได้ใส่ตัวต้านทาน 1KΩ ระหว่างนั้น ประการที่สอง: ต่อสายเข้ากับกราวด์ เราสามารถประสานสายไฟและตัวต้านทานกับโปรโตบอร์ดเดียวกันกับไฟ LED RGB ได้ทันที หากเราสัมผัสสายไฟ 2 เส้นเข้าด้วยกัน Arduino จะตรวจจับวงจรปิด ซึ่งหมายความว่ามีเหรียญ!พบกับเลเซอร์แห่งความหายนะหุ่นยนต์ต้องการอาวุธในการยิง! เพื่อประหยัดพื้นที่ ฉันประสานเลเซอร์ 2 ตัวเข้าด้วยกัน พวกมันจะพอดีกับกรอบของกล้องอย่างสมบูรณ์แบบ เชื่อมต่อพวกมันเข้ากับ DigitalPin 11 และต่อกับกราวด์ ไล่เจ้าตัวเล็กออกไป!

กลไกเสริม เราสามารถใส่ไฟ LED สีแดงใต้ช่องเหรียญ นี่จะเป็นกลไกเล็กๆ น้อยๆ ที่สนุกเมื่ออยู่ในความมืด ต่อสายไฟเข้ากับ DigitalPin 8 และใส่ตัวต้านทาน 220Ω ระหว่าง LED กับสายไฟเพื่อป้องกันไม่ให้ไฟระเบิด ต่อขาสั้นของ LED กับกราวด์

ขั้นตอนที่ 4: รหัส C ++

ขั้นตอนที่ 4.1: การตั้งค่า main.cpp code4.1.1: ดาวน์โหลด "main.cpp" และคัดลอกรหัสไปยัง main.cpp.4.1.2 ของคุณเอง: ในบรรทัดที่ 14 เปลี่ยน "com" เป็น com ที่ Arduino ใช้ "\.\COM(เปลี่ยนสิ่งนี้)"4.1.3: ในบรรทัดที่ 21 และ 22 ให้กำหนดเส้นทางที่ถูกต้องสำหรับไฟล์ "haarcascade_frontalface_alt.xml" และ "haarcascade_eye_tree_eyeglasses.xml"หากติดตั้ง openCV บนไดรฟ์ C ไฟล์เหล่านี้สามารถอยู่ที่นี่: "C:\opencv\build\etc\haarcascades\" เก็บแบ็กสแลชคู่หรือเพิ่มไฟล์ที่มีไฟล์เดียวเท่านั้น

ขั้นตอนที่ 4.2: เพิ่ม tserial.h และ Tserial.cpp 2 ไฟล์นี้จะดูแลการสื่อสารระหว่าง Arduino และ PC.4.2.1: ดาวน์โหลด tserial.h และ Tserial.cpp.4.2.2: วาง 2 ไฟล์นี้ในโครงการ ไดเรกทอรี ในตัวสำรวจโซลูชัน ให้คลิกขวาที่โครงการและเลือก เพิ่ม > รายการที่มีอยู่ ในหน้าต่างป๊อปอัป ให้เลือกสองไฟล์ที่จะเพิ่ม

ขั้นตอนที่ 4.2: เพิ่ม CXBOXController.h และ CXBOXController.h ไฟล์เหล่านี้จะใช้กับส่วนควบคุมของโปรเจ็กต์ 4.2.1: ในตัวสำรวจโซลูชัน คลิกขวาที่โปรเจ็กต์และเลือก เพิ่ม > รายการที่มีอยู่ ในหน้าต่างป๊อปอัป ให้เลือกสองไฟล์ที่จะเพิ่ม ไฟล์ C++ ได้รับการตั้งค่าแล้ว

ขั้นตอนที่ 5: รหัส Arduino

ขั้นตอนที่ 5.1: NewPing library5.1.1: ดาวน์โหลด ArduinoCode.ino และเปิดใน arduino IDE.5.1.2: ไปที่ "Sketch > Include libary > Manage libaries".5.1.3: ค้นหาในกล่องตัวกรองเพื่อ "NewPing" และติดตั้งไลบรารีนี้

ขั้นตอนที่ 5.2: Pitches library5.2.1: ดาวน์โหลด pitches.txt และคัดลอกเนื้อหาของ pitches.txt.5.2.2: ใน Arduino IDE ให้กด CTRL+Shift+N เพื่อเปิด tab.5.2.3 ใหม่: วางโค้ดจาก pitches.txt ในแท็บใหม่และบันทึกเป็น "pitches.h" รหัส Arduino ได้รับการตั้งค่าแล้ว

ขั้นตอนที่ 6: การพิมพ์ 3 มิติและการปรับแต่งการพิมพ์

การพิมพ์ 3 มิติและการปรับแต่งการพิมพ์
การพิมพ์ 3 มิติและการปรับแต่งการพิมพ์
การพิมพ์ 3 มิติและการปรับแต่งการพิมพ์
การพิมพ์ 3 มิติและการปรับแต่งการพิมพ์

ขั้นตอนที่ 6.1: พิมพ์ไฟล์ 3D เปิด printfile.form และตรวจสอบว่าทุกอย่างเรียบร้อยหรือไม่ หากทุกอย่างเรียบร้อยดี ให้ส่งงานพิมพ์ไปที่เครื่องพิมพ์ หากมีอะไรเกิดขึ้นหรือคุณต้องการเปลี่ยนรุ่น ฉันได้รวมไฟล์ 3Ds Max และไฟล์ OBJ ให้คุณแก้ไขแล้ว

ขั้นตอนที่ 6.2: ปรับแต่ง model6.2.1: หลังจากพิมพ์เสร็จแล้วให้แช่ 2 รุ่นในแอลกอฮอล์ 70% เพื่อลบการพิมพ์ resedu.6.2.2: หลังจากพิมพ์แล้วให้วางนางแบบไว้กลางแดดสองสามชั่วโมงเพื่อให้แสงยูวี ทำให้โมเดลแข็งตัว หรือคุณสามารถใช้หลอด UV เพื่อทำให้โมเดลแข็งตัว ต้องทำอย่างนี้เพราะโมเดลจะเหนียว

6.2.3: ลบกรอบการสนับสนุน สามารถทำได้ด้วยเครื่องตัดลวด หรือเครื่องมืออื่นใดที่สามารถตัดพลาสติกได้ 6.2.4: บางส่วนของงานพิมพ์ 3 มิติยังสามารถนิ่มได้ แม้ว่าโมเดลจะอยู่ในแสงยูวีมากก็ตาม ชิ้นส่วนที่นุ่มได้ก็คือชิ้นส่วนที่อยู่ใกล้กับโครงรองรับ วางแบบจำลองไว้ภายใต้แสงแดดที่ส่องผ่านมากขึ้นเพื่อให้แข็งตัว 6..2.5: ด้วย "เดรเมล" คุณสามารถขจัดสิ่งเล็กๆ น้อยๆ ที่เกิดจากเฟรมเวิร์กออกไปได้ คุณสามารถลองใส่เซอร์โวเข้ากับเฟรมได้ หากไม่พอดี คุณสามารถใช้เดรเมลเพื่อขัดวัสดุได้ ทำให้พอดี

ขั้นตอนที่ 7: สร้างกล่อง

การสร้างกล่อง
การสร้างกล่อง
การสร้างกล่อง
การสร้างกล่อง

ขั้นตอนที่ 7.1: การทำหลุมฉันได้รวมพิมพ์เขียวของกล่องที่เป็นปัญหา พิมพ์เขียวไม่ถึงมาตราส่วน แต่ขนาดทั้งหมดถูกต้อง 7.1.1: เริ่มต้นด้วยการทำเครื่องหมายหลุมทั้งหมดในตำแหน่งที่ถูกต้อง7.1.2: เจาะรูทั้งหมด Dremel.7.1.3 สามารถเจาะรูที่ใหญ่ขึ้นได้: รูสี่เหลี่ยมก็สามารถเจาะได้เช่นกัน แต่เพื่อให้เป็นสี่เหลี่ยมจัตุรัส คุณสามารถใส่ Dremel ด้วยไฟล์ขนาดเล็กและตะไบออกในมุมที่แหลมได้ 7.1.4: พยายามใส่ส่วนประกอบทั้งหมดให้พอดี ถ้าพอดีก็ไปได้เลย! 7.1.5: ระวังเศษไม้ ใช้กระดาษทรายกำจัดมัน

ขั้นตอนที่ 7.2: การทาสี 7.2.1: เริ่มต้นด้วยการขัดฝา เราต้องการให้สีติด 7.2.2: ใช้ผ้าแล้วทาน้ำมันสนเล็กน้อยเพื่อทำความสะอาดกล่อง 7..2.3: ตอนนี้คุณสามารถพ่นสีกล่องตามที่คุณต้องการ

ขั้นตอนที่ 8: เสร็จสิ้น

เสร็จสิ้นขึ้น
เสร็จสิ้นขึ้น
เสร็จสิ้นขึ้น
เสร็จสิ้นขึ้น
เสร็จสิ้นขึ้น
เสร็จสิ้นขึ้น

ตอนนี้ เราต้องใส่ทุกอย่างเข้าที่และปล่อยให้มันเป็นอย่างนั้นขั้นตอนที่ 8.1: เครื่องตรวจจับเหรียญ8.1.1: กาวเหล็กดัดบาง ๆ สำหรับเครื่องตรวจจับเหรียญ 8.1.2: บัดกรีแต่ละเส้นจากขั้วต่อไปยังเหล็กค้ำยัน8.1.3: ทดสอบการเชื่อมต่อกับเหรียญ หากไม่มีวงจรปิด ให้บัดกรีสายไฟให้ชิดขอบมากขึ้น ขั้นตอนที่ 8.2: บอร์ดโปรโตบอร์ดและไฟ LED RGB 8.2.1: วางโปรโตบอร์ดที่มุมขวาบนแล้วปิดเทปไว้!8.2.2: เชื่อมต่อไฟ LED RGB กับสายไฟ จาก protoboard!8.2.3: เชื่อมต่อสายไฟทั้งหมดจาก protoboard tot the arduino ขั้นตอนที่ 8.3: เซ็นเซอร์โซนาร์ 8.3.1: วางเซ็นเซอร์ในรูที่เราสร้างขึ้นหากคุณมี jumpwires ตัวผู้กับตัวเมีย คุณสามารถข้ามได้ 8.3.28.3.2: ตัดสายตัวผู้และตัวเมียบางส่วนครึ่งหนึ่งแล้วประสานสายตัวเมียและตัวผู้เข้าด้วยกันเพื่อสร้างสายเส้นเดียวที่เราสามารถใช้เชื่อมต่อเซ็นเซอร์กับ Arduino.8.3.3: เชื่อมต่อเซ็นเซอร์กับ Arduino

ขั้นตอนที่ 8.4: เลเซอร์และกล้อง 8.4.1: กาวกรอบเล็กๆ กับกล้อง ตรวจสอบให้แน่ใจว่าตั้งตรง 8.4.2: ใส่เลเซอร์เข้าไปในเฟรมด้วย กาวพวกเขาลงเพื่อที่ศัตรูจะไม่ขโมยพวกเขา!

ขั้นตอนที่ 8.5: เซอร์โวและการพิมพ์ 3 มิติ 8.5.1: กาวเซอร์โวในรูของฝาปิด 8.5.2: อัปโหลดไฟล์ Arduino ไปยัง Arduino (ซึ่งจะทำให้เซอร์โวอยู่ในตำแหน่งที่ถูกต้อง) 8.5.3: เมื่อเซอร์โวมี a ที่ราบสูงทรงกลมเล็กน้อย วางสิ่งนี้บนเซอร์โวในฝา 8.5.4: วางงานพิมพ์ 3 มิติขนาดใหญ่บนเซอร์โวและที่ราบแล้วขันให้แน่นด้วยสกรู 8.5.5: วางเซอร์โวตัวที่สองบนงานพิมพ์ 3 มิติขนาดเล็กแล้วติดกาวเข้าด้วยกัน 8.5.6: วางกล้องให้เข้าที่แล้วทุกอย่างก็พร้อมลุย!

ขั้นตอนที่ 9: เริ่มโปรแกรม

ในการเริ่มหุ่นยนต์ให้เปิดไฟล์ C++ ใน Visual studio ตรวจสอบให้แน่ใจว่าคุณอยู่ใน "โหมดแก้ไขข้อบกพร่อง" อัปโหลดไฟล์ Arduino ไปยัง Arduino เมื่ออัปโหลดแล้วให้กดเล่นใน visual studio และหุ่นยนต์จะยิงและเก็บเหรียญทั้งหมดในโลก!!!

แนะนำ: