- วัสดุที่ต้องการ:
- การพิมพ์ 3D ชิ้นส่วนที่ต้องการ (อุปกรณ์เสริม):
- แผนผังและฮาร์ดแวร์:
- การตั้งค่าแอปพลิเคชัน Android ของคุณ:
- การเขียนโปรแกรม Arduino ของคุณ:
- การทำงาน:
เคยต้องการสร้างแขนหุ่นยนต์ติดตามใบหน้าหรือหุ่นยนต์โดยใช้ Arduinoไม่ใช่การเขียนโปรแกรมอื่น ๆ เช่น OpenCV พื้นฐานภาพ C # ฯลฯ หรือไม่? จากนั้นอ่านต่อในโครงการนี้เราจะใช้การตรวจจับใบหน้าโดยผสมผสานพลังของ Arduino และ Android ในโครงการนี้กล้องมือถือจะเคลื่อนไปตามใบหน้าของคุณด้วยความช่วยเหลือของเซอร์โว ข้อดีของการใช้โทรศัพท์มือถือ Androidที่นี่คือคุณไม่จำเป็นต้องลงทุนกับโมดูลกล้องและงานตรวจจับภาพทั้งหมดสามารถทำได้ในโทรศัพท์เองคุณไม่จำเป็นต้องเชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณเพื่อให้สามารถใช้งานได้ ที่นี่เราได้ใช้โมดูลบลูทู ธ กับ Arduino เพื่อสื่อสารกับมือถือแบบไร้สาย
แอปพลิเคชัน Android ที่ใช้ในโครงการนี้สร้างขึ้นโดยใช้การประมวลผล Androidคุณสามารถติดตั้งแอปพลิเคชันได้โดยตรงโดยดาวน์โหลดไฟล์ APK (อ่านเพิ่มเติมสำหรับลิงก์) หรือใส่ขีด จำกัด การเขียนโปรแกรมของคุณและสร้างแอปพลิเคชัน Android ที่น่าสนใจยิ่งขึ้นโดยใช้รหัสการประมวลผลที่กำหนด เพิ่มเติมในบทช่วยสอน เรียนรู้เพิ่มเติมเกี่ยวกับการประมวลผลโดยตรวจสอบโครงการประมวลผลก่อนหน้านี้ของเรา
ในตอนท้ายของบทช่วยสอนนี้คุณจะมีMini Tilt และ Span Robotic Arm ที่สามารถติดตามใบหน้าของคุณและเคลื่อนที่ไปด้วยได้ คุณสามารถใช้สิ่งนี้ (เพื่อความก้าวหน้ามากขึ้น) เพื่อบันทึกวิดีโอ vlog ของคุณหรือแม้แต่ถ่ายเซลฟี่ด้วยกล้องหลังของโทรศัพท์มือถือของคุณเนื่องจากวางใบหน้าของคุณไว้ตรงกลางหน้าจอมือถือ ดังนั้น!! ฟังดูน่าสนใจ? ตรวจสอบวิดีโอสาธิตในตอนท้ายบทช่วยสอนนี้เพื่อดูว่าใช้งานได้จริง มาดูกันว่าเราจะสร้างกันได้อย่างไร…
ฉันพยายามอย่างเต็มที่เพื่อให้โปรเจ็กต์นี้ทำงานได้ง่ายที่สุดทุกคนที่มีความรู้ขั้นต่ำเกี่ยวกับฮาร์ดแวร์หรือการเข้ารหัสสามารถใช้แนวทางนี้เพื่อทำให้โปรเจ็กต์นี้ทำงานได้ในเวลาอันรวดเร็ว อย่างไรก็ตามเมื่อคุณทำเสร็จแล้วฉันขอแนะนำให้คุณใช้รหัสเพื่อที่คุณจะได้รู้ว่าอะไรทำให้สิ่งนี้ทำงานได้จริงและอย่างไร
วัสดุที่ต้องการ:
- Arduino นาโน
- เซอร์โวมอเตอร์ SG90 - 2Nos
- โทรศัพท์ Android พร้อมกล้องที่ดี
- โมดูลบลูทู ธ HC-05 / HC-06
- คอมพิวเตอร์สำหรับการเขียนโปรแกรม
- เครื่องพิมพ์ 3D (อุปกรณ์เสริม)
- แบตเตอรี่ 9V
การพิมพ์ 3D ชิ้นส่วนที่ต้องการ (อุปกรณ์เสริม):
ในการแพนและเอียงโทรศัพท์มือถือของเราเราจำเป็นต้องมีโครงสร้างเชิงกลเช่นที่วางมือถือและตัวยึดเซอร์โวสองสามตัว คุณสามารถใช้กระดาษแข็งทำขึ้นมาได้เนื่องจากฉันมีเครื่องพิมพ์ 3 มิติฉันจึงตัดสินใจที่จะพิมพ์ชิ้นส่วนเหล่านี้ 3 มิติ
การพิมพ์ 3 มิติเป็นเครื่องมือที่น่าทึ่งที่สามารถมีส่วนร่วมได้มากเมื่อสร้างโครงการต้นแบบหรือทดลองออกแบบเครื่องจักรกลใหม่ ๆ หากคุณยังไม่ได้ค้นพบประโยชน์ของเครื่องพิมพ์ 3 มิติหรือวิธีการทำงานคุณสามารถอ่านคู่มือเริ่มต้นสำหรับการพิมพ์ 3 มิติ
หากคุณเป็นเจ้าของหรือมีสิทธิ์เข้าถึงเครื่องพิมพ์ 3 มิติคุณสามารถใช้ไฟล์ STL ซึ่งสามารถดาวน์โหลดได้จากที่นี่เพื่อพิมพ์และประกอบโดยตรง อย่างไรก็ตามบางส่วนเช่นที่วางโทรศัพท์มือถืออาจต้องมีการปรับเปลี่ยนตามขนาดของโทรศัพท์ของคุณ ฉันได้ออกแบบมาสำหรับโทรศัพท์มือถือ MOTO G ของฉัน ฉันใช้เครื่องพิมพ์พื้นฐานของฉันเพื่อพิมพ์ชิ้นส่วนทั้งหมด เครื่องพิมพ์เป็น FABX v1 จาก 3ding ซึ่งมาในราคาที่เหมาะสมด้วยปริมาณการพิมพ์ 10 ลูกบาศก์ซม. ราคาถูกมาพร้อมกับการแลกเปลี่ยนที่มีความละเอียดการพิมพ์ต่ำและไม่มีการ์ด SD หรือฟังก์ชันการพิมพ์ต่อ ฉันใช้ซอฟต์แวร์ที่เรียกว่า Cura เพื่อพิมพ์ไฟล์ STL การตั้งค่าที่ฉันใช้ในการพิมพ์วัสดุมีให้ด้านล่างนี้คุณสามารถใช้การตั้งค่าเดียวกันหรือเปลี่ยนตามเครื่องพิมพ์ของคุณ
เมื่อคุณพิมพ์วัสดุที่จำเป็นทั้งหมดแล้วคุณสามารถยึดให้เข้าที่ได้โดยใช้สกรูและกาวร้อน หลังจากที่คุณประกอบเสร็จแล้วควรมีลักษณะดังนี้ด้านล่าง
แผนผังและฮาร์ดแวร์:
วงจรสำหรับการติดตามใบหน้าในโครงการสมาร์ทโฟนแสดงในภาพด้านล่าง:
วงจรประกอบด้วยเซอร์โวมอเตอร์สองตัวซึ่งใช้ในการเลื่อนโทรศัพท์มือถือไปทางซ้าย / ขวาและอีกตัวใช้เพื่อเอียงโทรศัพท์มือถือขึ้น / ลง ทิศทางที่เซอร์โวต้องเคลื่อนที่จะได้รับคำสั่งจาก Arduino Nano ซึ่งรับข้อมูลจากโมดูล Bluetooth (HC-05) วงจรทั้งหมดใช้พลังงานจากแบตเตอรี่ 9V
วงจรนี้สามารถเชื่อมต่อได้อย่างง่ายดายบนเขียงหั่นขนมของคุณหรือคุณสามารถบัดกรีสิ่งเหล่านี้บนบอร์ด Perf ขนาดเล็กอย่างที่ฉันทำที่นี่
การตั้งค่าแอปพลิเคชัน Android ของคุณ:
ดังที่ฉันได้กล่าวไปก่อนหน้านี้สมองหลักที่ทำงานอยู่เบื้องหลังโครงการนี้คือแอปพลิเคชัน Android นี้ แอปพลิเคชัน Android นี้ได้รับการพัฒนาโดยใช้การประมวลผล Android คุณสามารถติดตั้งแอปพลิเคชันนี้โดยตรงบนโทรศัพท์มือถือของคุณและเปิดใช้งานโดยทำตามขั้นตอนด้านล่าง
- ดาวน์โหลดไฟล์ APK จากที่นี่
- เปิดวงจรที่แสดงด้านบน
- ในการตั้งค่าโทรศัพท์ของคุณให้ค้นหาโมดูลบลูทู ธ ชื่อ“ HC-05”
- หากคุณตั้งชื่อเป็นอย่างอื่นที่ไม่ใช่“ HC-05” ให้เปลี่ยนกลับเป็น HC-05 เพียงเท่านี้แอปพลิเคชันก็จะทำงานได้
- จับคู่กับโมดูลบลูทู ธ ของคุณด้วยรหัสผ่าน“ 1234” หรือ“ 0000”
- ตอนนี้เปิดแอปพลิเคชันในโหมดแนวตั้ง คุณจะเห็นหน้าจอกล้องของคุณและ“ เชื่อมต่อกับ: HC-05” ที่ด้านบนของหน้าจอ
- ลองเคลื่อนกล้องของคุณไปบนใบหน้าและกล่องสีเขียวควรปรากฏขึ้นที่ด้านบนของกล้องและตำแหน่งของกล้องจะปรากฏที่มุมบนซ้ายของหน้าจอดังที่แสดงด้านล่าง
คุณสามารถนำArduino Face Tracking Project นี้ไปสู่อีกระดับได้โดยนำความก้าวหน้ามากมายที่คุณไม่จำเป็นต้องเขียนโค้ดแอปพลิเคชัน Android ของคุณเอง การสร้างแอปพลิเคชัน Android อาจฟังดูยาก แต่เชื่อฉันด้วยความช่วยเหลือของการประมวลผลที่คุณสามารถเรียนรู้ได้ในเวลาไม่นาน รหัสประมวลผลที่สมบูรณ์ที่ใช้ในการสร้างแอปพลิเคชันนี้สามารถดาวน์โหลดได้ที่นี่ คุณมีอิสระที่จะก้าวหน้าด้วยความคิดสร้างสรรค์ของคุณเอง ตรวจสอบโครงการด้านล่างเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการประมวลผล:
- ความจริงเสมือนโดยใช้ Arduino และการประมวลผล
- เกม Ping Pong โดยใช้ Arduino
- สมาร์ทโฟนควบคุมวิทยุ FM โดยใช้การประมวลผล
- ระบบเรดาร์ Arduino โดยใช้การประมวลผลและเซ็นเซอร์อัลตราโซนิก
การเขียนโปรแกรม Arduino ของคุณ:
แอปพลิเคชัน Android จะตรวจจับใบหน้าและตำแหน่งบนหน้าจอ จากนั้นจะตัดสินใจว่าควรเคลื่อนที่ไปในทิศทางใดโดยขึ้นอยู่กับตำแหน่งของใบหน้าเพื่อให้ใบหน้าอยู่ตรงกลางหน้าจอ จากนั้นทิศทางนี้จะถูกส่งไปยัง Arduino ผ่านโมดูลบลูทู ธ
โปรแกรม Arduino สำหรับโครงการนี้ค่อนข้างง่ายเราต้องควบคุมทิศทางของเซอร์โวมอเตอร์สองตัวตามค่าที่ได้รับจากโมดูลบลูทู ธ รหัสที่สมบูรณ์สามารถพบได้ในตอนท้ายของการกวดวิชานี้ผมยังได้อธิบายสายสำคัญบางประการดังต่อไปนี้
ด้านล่างบรรทัดของรหัสสร้างการเชื่อมต่อแบบอนุกรมโดยมีพิน D12 เป็น RX และ D11 เป็น TX ดังนั้นพิน D12 จะต้องเชื่อมต่อกับ TX ของโมดูล BT และพิน D11 กับ RX ของโมดูล BT
SoftwareSerial cam_BT (12, 11); // RX, TX
จากนั้นเราได้เริ่มต้นโมดูลบลูทู ธ ที่อัตราการส่งข้อมูลที่ 9600 ตรวจสอบให้แน่ใจว่าโมดูลของคุณทำงานในอัตราการส่งข้อมูลเดียวกัน อื่นเปลี่ยนตาม
cam_BT.begin (9600); // เริ่มการสื่อสาร Bluetooth ที่ 9600 baudrate cam_BT.println ("พร้อมรับคำสั่ง");
บรรทัดด้านล่างอ่านสิ่งที่เข้ามาผ่านโมดูลบลูทู ธ นอกจากนี้ข้อมูลจะถูกบันทึกไว้ในตัวแปร“ BluetoothData”
if (cam_BT.available ()) // อ่านสิ่งที่เข้ามาผ่านบลูทู ธ {BluetoothData = cam_BT.read (); Serial.print ("ขาเข้าจาก BT:"); Serial.println (BluetoothData); }
จากข้อมูลที่ได้รับจากบลูทู ธ ทิศทางมอเตอร์จะถูกควบคุม ในการหมุนมอเตอร์ไปทางซ้ายมอเตอร์จะลดลงด้วยค่า 2 จากตำแหน่งก่อนหน้า คุณสามารถเพิ่มค่านี้ได้ 2 ถึง 4 หรือ 6 หากคุณต้องการให้แขนเคลื่อนที่เร็วขึ้น แต่มันอาจจะกระตุกบ้างทำให้กล้องไม่เสถียร
ถ้า (BluetoothData == 49) // เลี้ยวซ้าย {pos1 + = 2; servo1.write (pos1);} if (BluetoothData == 50) // เลี้ยวขวา {pos1- = 2; servo1.write (pos1);} if (BluetoothData == 51) // เปิดขึ้น {pos2- = 2; servo2.write (pos2);} if (BluetoothData == 52) // ปิดลง {pos2 + = 2; servo2.write (pos2);}
การทำงาน:
เมื่อเราพร้อมกับฮาร์ดแวร์โค้ดและแอปพลิเคชัน Android แล้วก็ถึงเวลาดำเนินการบางอย่าง เพียงแค่เปิด Arduino ของคุณและเปิดแอปพลิเคชัน Android แอปพลิเคชันจะเชื่อมต่อกับโมดูลบลูทู ธ HC-05 (ต้องใช้ชื่อว่า HC-05) โดยอัตโนมัติและจะรอให้ตรวจพบใบหน้า เพียงวางโทรศัพท์ไว้ในที่วางมือถือของเราแล้วนั่งตรงหน้า คุณควรสังเกตว่าเซอร์โวมอเตอร์ของคุณกำลังเคลื่อนที่โทรศัพท์ของคุณเพื่อให้ใบหน้าของคุณวางอยู่ตรงกลางหน้าจอ ตอนนี้ย้ายไปรอบ ๆ ภายในระยะของกล้องและโทรศัพท์มือถือของคุณจะติดตามการเคลื่อนไหวของคุณ คุณยังสามารถลองใช้งานได้โดยการวางและย้ายรูปภาพใด ๆ
การทำงานที่สมบูรณ์แบบของโครงการจะแสดงในวิดีโอด้านล่างคุณสามารถสร้างได้มาก