สารบัญ:
- ขั้นตอนที่ 1: ภาพรวม
- ขั้นตอนที่ 2: การสร้างโปรเจ็กต์
- ขั้นตอนที่ 3: คำแนะนำในการสร้าง/เดินสาย
- ขั้นตอนที่ 4: ทำความเข้าใจ WebIOPi Framework
- ขั้นตอนที่ 5: เรียกใช้โครงการ
วีดีโอ: หุ่นยนต์ค้นหาและกำจัดระยะไกลที่ควบคุมด้วย Leap Motion: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ในการเข้าร่วม Leap Motion #3D Jam ของฉัน ฉันตื่นเต้นที่จะสร้างหุ่นยนต์ค้นหา/กู้ภัยที่ควบคุมด้วยท่าทางไร้สายนี้โดยใช้ Raspberry Pi โปรเจ็กต์นี้สาธิตและให้ตัวอย่างง่ายๆ เกี่ยวกับวิธีการใช้ท่าทางมือ 3 มิติแบบไร้สายเพื่อควบคุมและโต้ตอบกับสิ่งของที่จับต้องได้
เนื่องจากโปรเจ็กต์นี้ใช้เฟรมเวิร์ก WebIOPi IoT ยอดนิยมบน Raspberry Pi จึงสามารถขยายเพื่อควบคุมและเชื่อมต่อโดยทั่วไปกับเซนเซอร์/ฮาร์ดแวร์/อิเล็กทรอนิกส์ใดๆ ที่สามารถเชื่อมต่อกับ Raspberry Pi ได้ง่ายมาก
สถานการณ์ที่เป็นไปได้บางอย่างที่ฉันจินตนาการถึงผู้สร้างคนอื่นๆ อาจใช้โปรเจ็กต์นี้เป็นเฟรมเวิร์กพื้นฐานในการสร้าง:
1. หุ่นยนต์กำจัดระเบิดด้วยท่าทางระยะไกล (ใช้ OWI Arm เป็นต้น)
2. การผ่าตัดทางไกลโดยแพทย์
3. นิทรรศการศิลปะเชิงโต้ตอบที่ควบคุมด้วยท่าทางสัมผัสหรือเนื้อหาเพื่อการศึกษา
4. ความเป็นไปได้ / การบูรณาการอื่น ๆ ที่ไม่มีที่สิ้นสุด (ฉันถูก จำกัด ด้วยจินตนาการของฉัน:))
ขั้นตอนที่ 1: ภาพรวม
โปรเจ็กต์นี้อนุญาตให้ผู้ใช้ควบคุมหุ่นยนต์แบบโต้ตอบโดยใช้ท่าทางมือ 3 มิติผ่าน Leap Motion ที่เชื่อมต่อกับพีซี
Raspberry Pi ออนบอร์ด Robot ยังมีเว็บแคม USB ที่สตรีมวิดีโอสดกลับไปยังผู้ใช้ซึ่งสามารถมองเห็นได้บนเว็บเบราว์เซอร์ ไลบรารี LeapMotion JavaScript ที่ฝังอยู่ในหน้าเว็บนี้จะประมวลผลท่าทางของมือและส่งสัญญาณควบคุมกลับไปที่ Robot ซึ่งจะย้ายตามนั้น
Raspberry Pi บน Robot ได้รับการกำหนดค่าเป็น Hotspot (โหมด AP) โดยใช้ดองเกิล USB WiFi ที่เชื่อมต่ออยู่ ซึ่งช่วยให้พีซี/อุปกรณ์ของเราสามารถเชื่อมต่อโดยตรงกับ Raspberry Pi และควบคุมผ่านหน้าเว็บได้ Raspberry Pi ยังสามารถกำหนดค่าให้ทำงานในโหมดไคลเอนต์ได้ โดยจะเชื่อมต่อแบบไร้สายกับ AP ของเราเตอร์ WiFi ที่พีซี/อุปกรณ์เชื่อมต่ออยู่แล้ว
โปรเจ็กต์นี้ใช้ WebIOPi (https://webiopi.trouch.com/) ซึ่งเป็นเฟรมเวิร์ก IoT ยอดนิยมสำหรับ Raspberry Pi ด้วยการใช้ Weaved IoT Kit (หรือผ่านการส่งต่อพอร์ตบนเราเตอร์) หุ่นยนต์นี้สามารถควบคุมและ/หรือรับข้อมูลจากส่วนใดส่วนหนึ่งของโลกได้จากระยะไกล
ส่วนประกอบต่อไปนี้ใช้สำหรับสร้างโครงการ:
- Raspberry Pi B (เข้ากันได้กับ Raspberry Pi B+ 100%)
- Logitech USB Webcam (เล็ก 1.3 ล้านพิกเซล)
- L293D Motor Driver IC และ Breakout Shield
- USB WiFi Dongle สำหรับ Raspberry Pi
- USB Power Bank สำหรับ Raspberry Pi
- แบตเตอรี่ภายนอก 4V/1.5A สำหรับขับมอเตอร์หุ่นยนต์
ขั้นตอนที่ 2: การสร้างโปรเจ็กต์
การติดตั้ง WebIOPi การเขียนโค้ดแบบกำหนดเอง และการกำหนดค่าเว็บแคม:
คำแนะนำในการติดตั้ง WebIoPi พื้นฐานของเฟรมเวิร์ก และตัวอย่างมากมายมีอยู่ที่หน้าโครงการที่นี่:
เพื่อให้ได้ฟังก์ชัน LeapMotion ที่ฝังอยู่บนหน้าเว็บทริกเกอร์การดำเนินการ GPIO บน Raspberry Pi เราได้ใช้มาโครซึ่งมีรายละเอียดอยู่ที่นี่:
ฉันได้เขียนบันทึกการเริ่มต้นเกี่ยวกับกระบวนการข้างต้นที่แนบมาด้วย
การติดตั้งและกำหนดค่าเว็บแคม
เรากำลังใช้ MJPG-Streamer เพื่อสตรีมฟีดวิดีโอจาก Raspberry Pi กลับไปยังเบราว์เซอร์ผ่านเว็บแคม USB ที่เชื่อมต่อกับ Pi โปรดปฏิบัติตามคำแนะนำในการตั้งค่าและสร้างที่ระบุไว้ที่นี่ https://blog.miguelgrinberg.com/post/how-to-build-… เพื่อให้ MJPG-Streamer ทำงานบน Raspberry Pi
การกำหนดค่า Raspberry Pi เป็น AP/Hotspot
ในการตั้งค่า Raspberry Pi เป็น Hostpot โปรดทำตามคำแนะนำที่ให้ไว้ที่นี่: https://elinux.org/RPI-Wireless-Hotspot ฉันกำหนดค่า IP แบบคงที่ของ Raspberry Pi เป็น 192.168.42.1 ซึ่งเป็นสิ่งที่เราจะพิมพ์ลงในเบราว์เซอร์เมื่อ Pi บูทเข้าสู่โหมด AP
บริการ WebIOPi, MJPG-Streamer และ WiFi hotspot ได้รับการกำหนดค่าให้ทำงานอัตโนมัติเมื่อบู๊ต ซึ่งช่วยให้เราสามารถเปิดเว็บเบราว์เซอร์โดยตรงและเชื่อมต่อกับ Robot หลังจากที่บูทเครื่อง ไฟล์ rc.local ที่มีอยู่ใน repo ใช้เพื่อเรียกใช้เว็บแคมขณะบู๊ต
ขั้นตอนที่ 3: คำแนะนำในการสร้าง/เดินสาย
4 GPIO ของ Raspberry Pi คือ GPIO 9, 11, 23 และ 24 เชื่อมต่อกับ L293D Motor Driver IC ซึ่งขับเคลื่อนมอเตอร์ตามลำดับหลังจากได้รับคำขอมาโครจากหน้าเว็บที่ให้บริการโดยเฟรมเวิร์ก Webiopi ดองเกิล USB WiFi และเว็บแคม USB Logitech เชื่อมต่อกับพอร์ต USB 2 พอร์ตที่มีอยู่ใน Raspberry Pi ธนาคารพลังงาน 5V 4000 Mah จ่ายพลังงานหลักให้กับ Pi ใช้แบตเตอรี่ตะกั่วกรดขนาด 4V 1.5A เพื่อขับเคลื่อนมอเตอร์
หมายเหตุ: เนื่องจากกระแสไฟขาออกสูงสุดของพาวเวอร์แบงค์ที่ฉันใช้คือ 1,000 มิลลิแอมป์ชั่วโมง ฉันจึงต้องใช้แบตเตอรี่ตะกั่วกรดภายนอกเพื่อขับเคลื่อนมอเตอร์ หากคุณมีพาวเวอร์แบงค์ที่ให้ >= 2000Mah คุณสามารถขับมอเตอร์จากราง 5V บน Pi ได้โดยตรง (ฉันไม่แนะนำสิ่งนี้สำหรับมอเตอร์ที่ใช้พลังงานมาก)
ส่วนย่อยที่สำคัญ 3 ส่วนของโปรเจ็กต์ LeapMotion Javascript API, WebIOPi และ MJPG-Streamer และการทำงาน/การตั้งค่าพื้นฐานมีรายละเอียดคร่าวๆ ด้านล่าง
ขั้นตอนที่ 4: ทำความเข้าใจ WebIOPi Framework
ส่วนหน้าที่แสดงบนเบราว์เซอร์เขียนด้วยภาษา HTML (ชื่อไฟล์:index.html) และจาวาสคริปต์ ส่วนส่วนหลังที่ขับเคลื่อน GPIO จะเขียนด้วยภาษา Python (ชื่อไฟล์: script.py) หมายเหตุโดยละเอียดเกี่ยวกับการสร้าง WebApp แบบกำหนดเองตามกรอบงาน WebIOPi จะถูกแนบเป็นบันทึกย่อใน Bitbucket repo
มาโครแบบกำหนดเองที่กำหนดไว้ในสคริปต์ Python สามารถเรียกใช้งานได้จากไฟล์ HTML
เช่น webiopi().callMacro("go_forward"); นี่คือการเรียกแบบกำหนดเองไปยังแมโคร go_forward ที่กำหนดไว้ในสคริปต์ Python ที่จัดการกระบวนการขับเคลื่อนมอเตอร์ทั้งสองในทิศทางไปข้างหน้า
ลำดับชั้นของไดเร็กทอรีของตำแหน่งที่เก็บไฟล์บน Pi จะแสดงอยู่ในภาพที่แนบ
โฟลเดอร์ Robot ประกอบด้วยโฟลเดอร์ย่อยเหล่านี้:
- html: มี index.html
- หลาม: มี script.py
- mjpg-streamer-r63: มีไฟล์บิลด์และสามารถเรียกใช้งานได้เพื่อเรียกใช้ Webcam
MJPG-Streamer: สตรีมวิดีโอสดจากเว็บแคม USB ทำงานบนพอร์ต 8080 ของ Pi โดยค่าเริ่มต้น ในการดูสตรีมด้วยตนเอง ให้ไปที่ RASPBERRYPI_IP:8080 บนเบราว์เซอร์หลังจากเปิดเว็บแคม
รหัส LeapMotion:
ข้อมูลโค้ดจากตัวอย่างที่ให้ไว้ใน LeapMotion SDK ถูกฝังลงในไฟล์ index.html ต้องเพิ่มไฟล์ leap.js ของ LeapMotion ลงในโฟลเดอร์ html ในไดเรกทอรีโครงการบน Raspberry Pi
พารามิเตอร์ palmPosition ที่ส่งโดย LeapMotion ใช้เพื่อกำหนดว่ามาโครใดที่จะทริกเกอร์บน Raspberry Pi
ขั้นตอนที่ 5: เรียกใช้โครงการ
เพียงเปิด Raspberry Pi แล้วรอประมาณหนึ่งนาที คุณจะเห็น hotpsot RaspberryPi ใหม่ปรากฏขึ้น เชื่อมต่อกับฮอตสปอตนี้และเปิดที่อยู่ IP แบบคงที่ในเบราว์เซอร์: 192.168.42.1:8000 8000 เป็นพอร์ตเริ่มต้นของ WebIOPi
Raspberry Pi ยังสามารถกำหนดค่าให้เชื่อมต่อกับเครือข่าย WiFi ในพื้นที่เป็นไคลเอนต์ในแทนที่จะแสดงเป็นฮอตสปอต จากนั้นคุณจะต้องกำหนด IP แบบไดนามิกที่กำหนดให้กับ Raspberry Pi โดยเราเตอร์แล้วกดขึ้นในเบราว์เซอร์เพื่อเล่นกับ Bot
คุณสามารถแสดงความคิดเห็นได้หากต้องการความช่วยเหลือหรือมีคำถามเกี่ยวกับโครงการ กระโดดอย่างมีความสุข!
แนบซอร์สโค้ดทั้งหมดแล้ว คุณสามารถแสดงความคิดเห็นได้หากต้องการความช่วยเหลือเกี่ยวกับส่วนใดส่วนหนึ่งของการสร้างโครงการ กระโดดอย่างมีความสุข!
แนะนำ:
Motion Reactive Surfboard LED Strips: 8 ขั้นตอน (พร้อมรูปภาพ)
Motion Reactive Surfboard LED Strips: เมื่อเร็ว ๆ นี้ เพื่อนบางคนและฉันค้นพบการโต้คลื่นในแม่น้ำ การใช้ชีวิตในมิวนิก เราโชคดีที่มีคลื่นแม่น้ำสามลูกที่เล่นเซิร์ฟได้ท่ามกลางจุดโต้คลื่น Eisbach ที่มีชื่อเสียง ข้อเสียของการโต้คลื่นในแม่น้ำคือมันค่อนข้างจะเล่นแล้วติด เลยไม่ค่อยมีเวลาเล่นกระดานโต้คลื่น
Sound Sensor & Servo: Reactive Motion: 4 ขั้นตอน
Sound Sensor & Servo: Reactive Motion: ก่อนอื่นคุณต้องรวบรวมวัสดุที่เกี่ยวข้องเพื่อรวมวงจรนี้เข้าด้วยกัน
DIY Exploding Wall Clock พร้อม Motion Lighting: 20 ขั้นตอน (พร้อมรูปภาพ)
DIY Exploding Wall Clock พร้อม Motion Lighting: ในคำแนะนำ / วิดีโอนี้ฉันจะแสดงให้คุณเห็นทีละขั้นตอนเกี่ยวกับวิธีการสร้างนาฬิกาแขวนที่ดูสร้างสรรค์และไม่เหมือนใครด้วยระบบไฟส่องสว่างแบบเคลื่อนไหวในตัว แนวคิดการออกแบบนาฬิกาที่ไม่เหมือนใครนี้มีการปรับทิศทางเพื่อให้นาฬิกาโต้ตอบได้มากขึ้น . เมื่อฉันเดิน
Night Light Motion & Darkness Sensing - No Micro: 7 ขั้นตอน (พร้อมรูปภาพ)
Night Light Motion & Darkness Sensing - No Micro: คำแนะนำนี้เป็นการป้องกันไม่ให้นิ้วเท้าของคุณสะดุดเมื่อเดินผ่านห้องมืด คุณสามารถพูดได้ว่าเพื่อความปลอดภัยของคุณเองถ้าคุณลุกขึ้นในเวลากลางคืนและพยายามไปถึงประตูอย่างปลอดภัย แน่นอนว่าคุณสามารถใช้โคมไฟข้างเตียงหรือโคมไฟระ
สร้าง Wearable Motion Tracker (BLE จาก Arduino ไปยัง Custom Android Studio App): 4 ขั้นตอน
สร้าง Wearable Motion Tracker (BLE จาก Arduino ไปยัง Custom Android Studio App): Bluetooth Low Energy (BLE) เป็นรูปแบบหนึ่งของการสื่อสาร Bluetooth ที่ใช้พลังงานต่ำ อุปกรณ์สวมใส่ได้ เช่น เสื้อผ้าอัจฉริยะ ที่ฉันช่วยออกแบบที่ Predictive Wear ต้องจำกัดการใช้พลังงานในทุกที่ที่ทำได้เพื่อยืดอายุการใช้งานแบตเตอรี่ และใช้ BLE บ่อยครั้ง