สารบัญ:

แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน Google Voice AIY: 3 ขั้นตอน
แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน Google Voice AIY: 3 ขั้นตอน

วีดีโอ: แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน Google Voice AIY: 3 ขั้นตอน

วีดีโอ: แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน Google Voice AIY: 3 ขั้นตอน
วีดีโอ: แจ็คแปปโฮ กับสีภรรเยของเขา 😂❤️ #funny #แจ็คแปปโฮ #คลิปตลก 2024, พฤศจิกายน
Anonim
แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน AIY ของ Google Voice
แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน AIY ของ Google Voice
แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน AIY ของ Google Voice
แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน AIY ของ Google Voice
แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน AIY ของ Google Voice
แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน AIY ของ Google Voice
แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน AIY ของ Google Voice
แจ็คกระโดดควบคุมด้วยเสียง - เวอร์ชัน AIY ของ Google Voice

ดังนั้น คุณมีชุดเสียง AIY สำหรับคริสต์มาส และได้เล่นกับมันตามคำแนะนำ มันตลก แต่ตอนนี้?

โปรเจ็กต์ที่อธิบายต่อไปนี้นำเสนออุปกรณ์ง่ายๆ ที่สามารถสร้างได้โดยใช้ AIY voice HAT สำหรับ Raspberry Pi ใช้ระบบจดจำเสียงของ Google เพื่อควบคุมไฟ LED และเซอร์โวสองตัว ขับแขนและขาของแจ็คกระโดดด้วยเกียร์ธรรมดา

ซอฟต์แวร์ที่ทำงานอยู่เบื้องหลังเป็นการดัดแปลงสคริปต์ servo_demo.py ตามที่ได้อธิบายไว้ในคู่มือชุดเสียง AIY เพียงทำตามคำแนะนำที่ให้ไว้ที่นั่นเพื่อตั้งค่าฮาร์ดแวร์และซอฟต์แวร์ ตัวอุปกรณ์นั้นสร้างได้ง่ายและไม่ต้องใช้ทักษะการประดิษฐ์ด้วยมือมากนัก นอกจากมีดคัตเตอร์ สว่าน และหัวแร้งจะเป็นประโยชน์

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

คุณสามารถสร้างหุ่นยนต์เต้นรำ พูดคุย และร้องเพลงของคุณเองได้โดยใช้ความพยายามเพียงเล็กน้อย

เพื่อลดความซับซ้อนในการใช้งานโดยเฉพาะอย่างยิ่งสำหรับเด็กเล็ก และเพื่อเพิ่มปัจจัย 'เวทย์มนตร์' ปุ่มบนกล่อง AIY ถูกแทนที่ด้วยทริกเกอร์โดยพร็อกซิมิตีเซนเซอร์ เพื่อความเรียบง่าย ฉันใช้เซ็นเซอร์วัดระยะแบบดิจิทัลจาก Pololu ซึ่งรับรู้ว่าวัตถุอยู่ใกล้กว่า 5 ซม. และสามารถใช้งานได้มากเหมือนปุ่ม ไฟ LED แสดงเวลาที่อุปกรณ์กำลังรอคำสั่ง ฟัง หรือ "คิด" เซอร์โว เซ็นเซอร์ และไฟ LED ถูกควบคุมโดยไลบรารีซอฟต์แวร์ GPIOZero

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

คุณสามารถใช้ร่างกายทั้งสองข้างได้ ขึ้นอยู่กับว่าคุณต้องการนำเสนออุปกรณ์เคลื่อนที่หรือมีรูปแบบที่เป็นมิตรกับเด็ก ---------"Hampelmann" เป็นคำภาษาเยอรมันสำหรับ "jumping jack" ซึ่งมีความหมายแฝงบางประการ

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

วัสดุที่ใช้
วัสดุที่ใช้
วัสดุที่ใช้
วัสดุที่ใช้

ราสเบอร์รี่ Pi 3; 32 £ ที่ Pimoroni สหราชอาณาจักร

ชุดเสียง AIY; 25 £ ที่ Pimoroni สหราชอาณาจักร

Pololu เซนเซอร์วัดระยะแบบดิจิตอลพร้อมเซนเซอร์ Sharp, 5 ซม.; 5.90 € ที่ Exp-tec.de

เซอร์โว 9g สองตัว

ไฟ LED สีขาวสองดวงและตัวต้านทาน

ส่วนหัวและสายจัมเปอร์

เพลท Forex 2 มม. 250 x 500 มม. 1.70 € at Modulor, Berlin, Germany

สกรู น็อต และแหวน M3 เพื่อเชื่อมต่อชิ้นส่วนที่เคลื่อนไหวทั้งหมด ฉันใช้สกรูไนล่อนขนาด 10 และ 16 มม. หกตัวหกตัว

สกรูและน็อต M2 หกตัว เพื่อยึดเซอร์โวกับเพลต และเชื่อมต่อแขนและเฟืองเซอร์โว

กาวพลาสติกสองสามหยด

ขั้นตอนที่ 2: การประกอบและการใช้งานอุปกรณ์

การประกอบและการใช้งานอุปกรณ์
การประกอบและการใช้งานอุปกรณ์
การประกอบและการใช้งานอุปกรณ์
การประกอบและการใช้งานอุปกรณ์
การประกอบและการใช้งานอุปกรณ์
การประกอบและการใช้งานอุปกรณ์

เกี่ยวกับชุดเสียง AIY เอง เพียงทำตามคำแนะนำในคำอธิบายที่มาพร้อมกับชุด รวมถึงส่วนเกี่ยวกับเซอร์โว ฉันขอแนะนำให้ประสานส่วนหัวสามพินหลายตัวกับพอร์ตเซอร์โวบนสัญญาณเสียง AIY ดังนั้นคุณสามารถเชื่อมต่อเซอร์โว เซ็นเซอร์ และไฟ LED กับ HAT ได้ง่ายมาก

เกี่ยวกับแจ็คกระโดด คุณอาจใช้ภาพวาดที่ฉันให้ไว้ที่นี่เป็นไฟล์ svg- และ PDF เป็นเทมเพลต หรือเพียงแค่ปรับเปลี่ยนตามความคิดของคุณเอง คุณอาจต้องการรักษาเลย์เอาต์พื้นฐานของเกียร์ที่ขับขาและแขนของแม่แรงกระโดด ตรวจสอบให้แน่ใจว่าระยะห่างระหว่างจุดหมุนรอบกับเฟืองที่เซอร์โว แขน และขาเท่ากัน

อีกทางหนึ่ง คุณอาจสร้างเวอร์ชันที่แขนและขาขับเคลื่อนโดยตรงด้วยเซอร์โวสี่ตัวแยกกัน หรือด้วยเกียร์ขั้นสูง

ใช้ภาพวาด ตัดชิ้นส่วนจาก Forex แผ่นกระดาษแข็งหรือแผ่นไม้อัด แล้วเจาะรูในตำแหน่งที่เหมาะสม กาวชิ้นส่วนที่มีระยะห่างกับจุดหมุนของแขนและขา เพื่อให้แน่ใจว่าได้ตำแหน่งที่ดีของรู

แก้ไขเซอร์โวและชิ้นส่วนที่เคลื่อนไหวกับแผ่นฐาน เพิ่มเซ็นเซอร์วัดระยะและไฟ LED ตามที่ระบุ เซอร์โวได้รับการแก้ไขด้วยสกรู M2 ชิ้นส่วนที่เคลื่อนไหวทั้งหมดด้วยสกรู M3 ฉันใช้สกรูไนล่อน M3 แต่เพื่อความสวยงามเท่านั้น

ตรวจสอบว่าแขนเซอร์โวอยู่ในตำแหน่งตรงกลางหรือไม่ ต่อแขนเซอร์โวและเกียร์ ฉันใช้สกรู M2 เพื่อจุดประสงค์นี้

ติดเซอร์โว LED และเซ็นเซอร์วัดระยะเข้ากับคอนเน็กเตอร์เซอร์โวบนบอร์ด AIY คุณอาจต้องใช้สายยืด/จัมเปอร์ ฉันแนบเซอร์โวซ้ายกับ "เซอร์โว0" (GPIO 26) เซอร์โวขวากับ "เซอร์โว2" (GPIO 13), ไฟ LED กับ "เซอร์โว5" (GPIO 24) และเซ็นเซอร์ไปที่ "เซอร์โว3" (GPIO 5) บน AIY แฮทเสียง

คัดลอกไฟล์ “Hampelmann.py” ที่ให้มาไปยังโฟลเดอร์ย่อย “src” ของ AIY และทำให้ไฟล์สั่งการได้โดยตรงสำหรับทุกคน ในการดำเนินการดังกล่าว คุณสามารถเลือกไฟล์ในตัวจัดการไฟล์ จากนั้นคลิกขวาและเลือก Properties เลือก Permissions ไปที่ Execute เลือก ~ ทุกคน หรือเขียน “chmod +x src/Hampelmann.py” ในคอนโซลผู้พัฒนา

ตรวจสอบว่าทุกอย่างได้รับการตั้งค่าและคงที่ หรือเคลื่อนย้ายได้เมื่อจำเป็น เปิดบรรทัดคำสั่ง Dev ป้อน “src/Hampelmann.py” แล้วเริ่มโปรแกรม หากคุณขยับมือหรือนิ้วไปด้านหน้าเซ็นเซอร์ระยะ หน่วย AIY จะถามคำสั่งและไฟ LED จะกะพริบ คำสั่งที่ดำเนินการคือ "ขวา/ซ้าย/มือขึ้น/ลง/ตรงกลาง", "เต้นรำ", "เปิด/ปิด LED" และ "ลาก่อน"

เล่น. ยื่นมือไปข้างหน้าเซ็นเซอร์ พูดเมื่อถูกถาม และให้เวลาอุปกรณ์ตอบสนองเล็กน้อย เวลาในการตอบสนองค่อนข้างสูง Crtl+C หรือ “ลาก่อน” จะหยุดโปรแกรม

คุณสามารถแก้ไขไฟล์โดยใช้ Nano หรือโปรแกรมแก้ไขข้อความทั่วไป

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

ขั้นตอนที่ 3: สคริปต์ Python

ดังที่ได้กล่าวไว้ก่อนหน้านี้ สคริปต์นี้ใช้สคริปต์ servo_demo.py จากคำสั่งเสียงของ AIY โดยมีส่วนเพิ่มเติมบางส่วน เวอร์ชันแรกคือไฟล์ Hampelmann.py ที่คุณจะพบที่แนบมา AngularServo จาก GPIOZero อนุญาตให้จำกัดช่วงการทำงานของเซอร์โวและกำหนดได้ชัดเจนว่าจะเคลื่อนที่ได้ไกลแค่ไหน แต่ฉันชอบเสียงอังกฤษมากกว่าเสียงต้นฉบับ และตัวเครื่องยังสามารถพูดได้ แต่ไม่เข้าใจ (?) อังกฤษ เยอรมัน อิตาลี ฝรั่งเศส และสเปน ด้านล่างนี้ คุณจะพบสคริปต์ Hampelmann2.py ที่มีเสียงอังกฤษ และภาษาอิตาลีและเยอรมันเล็กน้อย โปรดจำไว้ว่าคุณต้องทำให้สคริปต์สามารถเรียกใช้งานได้

#!/usr/bin/env python3# สคริปต์นี้เป็นการดัดแปลงของสคริปต์ servo_demo.py สำหรับ AIY voice HAT # ปรับให้เหมาะสมสำหรับการนำเข้า AIY jumping jack aiy.audio นำเข้า aiy.cloudspeech นำเข้า aiy.voicehat จาก gpiozero import LED จาก gpiozero นำเข้า AngularServo จากปุ่มนำเข้า gpiozero จากเวลาที่นำเข้า sleep def main(): Recognger = aiy.cloudspeech.get_recognizer() Recognger.expect_phrase('right up') forgetr.expect_phrase('right down') recognitionr.expect_phrase('Right ศูนย์') # ตัวพิมพ์ใหญ่มีอยู่ในตัวจำแนกตามวัตถุประสงค์ ('hands down') referer.expect_phrase('hands Center') recognitionr.expect_phrase('Dance') recognitionr.expect_phrase('LED on') recognitionr.expect_phrase('LED off') recognitionr.expect_phrase('ลาก่อน') aiy.audio.get_recorder().start() servo0 = AngularServo(26, min_angle=-40, max_angle=40) # 1st connect หรือ GPIO 26 servo2 = AngularServo (13, min_angle=-40, max_angle=40) # 3rd connector, GPIO 13 led0 = LED(24) # LEDs เชื่อมต่อกับ servo5/GPIO 24 distance= Button(5) # distance sensor connected ถึง servo3/GPIO 05 # อื่น ๆ: GPIO 6 ที่ servo1, 12 ที่ servo4 aiy.audio.say("สวัสดี!",) aiy.audio.say("ในการเริ่ม ให้ขยับมือของคุณใกล้กับเซ็นเซอร์",) ในขณะที่ True: led0.on() # LEDs ขณะพิมพ์("หากต้องการเปิดใช้งานการจดจำเสียง ให้ขยับมือใกล้กับเซ็นเซอร์ระยะห่าง แล้วพูด") พิมพ์ ('คำหลักที่คาดหวังคือ: มือ/ซ้าย/ขวา ขึ้น/ลง/กลาง, ') print('เปิด/ปิด LED, เต้นรำและลาก่อน') print() distance.wait_for_press() print('Listening…') aiy.audio.say("Please give your orders",) led0.blink() # light กะพริบข้อความ = จดจำ () ถ้าข้อความไม่มี: aiy.audio.say('ขออภัย ฉันไม่ได้ยินคุณ',) อื่น: พิมพ์ ('คุณพูดว่า "' ข้อความ '"') # ให้คุณ ตรวจสอบการตีความของระบบว่า 'ถูกต้อง' ในข้อความ: พิมพ์ ('กำลังย้าย servo0 ไปยังตำแหน่งสูงสุด') servo0.angle=35 elif 'ขวาลง' ในข้อความ: พิมพ์ ('กำลังย้าย servo0 ไปยังตำแหน่งต่ำสุด') servo0.angle=-35 elif 'Right Center' ในข้อความ: #correct captials เป็นการพิมพ์ที่สำคัญ ('การย้าย servo0 ไปยังตำแหน่งตรงกลาง') servo0.angle=0 elif 'ซ้ายขึ้น' ในข้อความ: พิมพ์ (' การย้าย servo2 ไปยังตำแหน่งสูงสุด ') servo2.angle=-35 elif 'left down' ในข้อความ: พิมพ์ ('การย้าย servo2 ไปยังตำแหน่งต่ำสุด') servo2.angle = 35 elif 'left Center' ในข้อความ: พิมพ์ ('การย้าย servo2 ไปยัง ตำแหน่งตรงกลาง') servo2.angle=0 elif 'ยกมือขึ้น' ในข้อความ: พิมพ์ ('การย้าย servo2 ไปยังตำแหน่งสูงสุด') servo2.angle=-35 servo0.angle=35 elif 'ลงมือ' ในข้อความ: พิมพ์ ('การย้าย servo2 ไปยังตำแหน่งต่ำสุด') servo2.angle=35 servo0.angle=-35 elif 'hands Center' ในข้อความ: พิมพ์ ('การย้าย servo2 ไปยังตำแหน่งตรงกลาง') servo2.angle=0 servo0.angle=0 elif 'LED off' ในข้อความ: พิมพ์ ('ปิด LED ภายนอก 0') led0.off () elif 'เปิด LED' ในข้อความ: พิมพ์ ('เปิดไฟ LED ภายนอก 0') led0.on () # elif ไลท์ 'เต้นรำ' ในข้อความ: print ('ตอนนี้กำลังเต้นอันดับหนึ่ง') aiy.audio.say("ฉันจะทำให้ดีที่สุด!",) led0.on() # ไฟสว่างขึ้น สำหรับฉันในช่วง (3): servo0.angle=0 servo2.angle=0 sleep(1) servo0.angle=35 servo2.angle=-35 sleep(1) servo0.angle=0 servo2.angle=-35 sleep(1) servo0.angle=-25 servo2.angle=0 sleep(1) servo0.angle=30 servo2.angle=20 sleep(1) servo0.angle=0 servo2.angle=0 led0.off() # light off elif 'ลาก่อน' ในข้อความ: aiy.audio.say("ลาก่อน",) aiy.audio.say('Arrivederci',) aiy.audio.say('Auf Wiedersehen',) servo0.angle=0 servo2.angle=0 led0.off() sleep (3) print('bye!') หยุดอย่างอื่น: print('ไม่รู้จักคำหลัก!') aiy.audio.say("ขออภัย ฉันไม่เข้าใจคุณ") ถ้า _name_ == ' _main_': หลัก()

แนะนำ: