İçindekiler:

Ses Kontrollü Jumping Jack- Google Voice AIY Versiyonu: 3 Adım
Ses Kontrollü Jumping Jack- Google Voice AIY Versiyonu: 3 Adım

Video: Ses Kontrollü Jumping Jack- Google Voice AIY Versiyonu: 3 Adım

Video: Ses Kontrollü Jumping Jack- Google Voice AIY Versiyonu: 3 Adım
Video: Eray Venom Dillere göre seslendirme izliyor 2024, Kasım
Anonim
Ses Kontrollü Zıplama Jack- Google Voice AIY Versiyonu
Ses Kontrollü Zıplama Jack- Google Voice AIY Versiyonu
Ses Kontrollü Zıplama Jack- Google Voice AIY Versiyonu
Ses Kontrollü Zıplama Jack- Google Voice AIY Versiyonu
Ses Kontrollü Zıplama Jack- Google Voice AIY Versiyonu
Ses Kontrollü Zıplama Jack- Google Voice AIY Versiyonu
Ses Kontrollü Zıplama Jack- Google Voice AIY Versiyonu
Ses Kontrollü Zıplama Jack- Google Voice AIY Versiyonu

Demek Noel için AIY ses setine sahipsin ve talimatları izleyerek onunla oynuyorsun. Komik ama şimdi?

Aşağıda açıklanan proje, Raspberry Pi için AIY sesli HAT kullanılarak oluşturulabilen basit bir cihaz sunmaktadır. LED'leri ve iki servoyu kontrol etmek için Google ses tanıma sistemini kullanır, çok basit bir vitesle bir zıplama krikosunun kollarını ve bacaklarını hareket ettirir.

Arka planda çalışan yazılım, AIY ses kiti kılavuzunda açıklandığı gibi servo_demo.py betiğinin bir modifikasyonudur. Donanımı ve yazılımı kurmak için orada verilen talimatları izlemeniz yeterlidir. Cihazın kendisinin yapımı kolaydır ve çok fazla el işi becerisi gerektirmez. Ayrıca bir kesici bıçak, bir matkap ve bir havya yardımcı olacaktır.

Ses tanıma sistemini göz kırparak etkinleştirir ve 'eller yukarı' derseniz, zıplama krikosu ellerinizi ve bacaklarınızı kaldırır, 'eller merkezi' her iki servoyu da orta konuma hareket ettirir ve 'eller aşağı'dayken eller ve bacaklar hareket eder. indirilecek. 'Sol yukarı'da sol el ve bacaklar kaldırılır ve "sağ aşağı"da sağ olanlar indirilir, "sağ yukarı"da ise tam tersi. "Dans", onu dans ettirecek, en azından bir nevi. Ayrıca konuşuyor, lütfen ekteki videoya bir göz atın.

Böylece çok az çabayla kendi dans eden, sohbet eden ve şarkı söyleyen robotunuzu oluşturabilirsiniz.

Özellikle daha küçük çocuklar tarafından kullanımını kolaylaştırmak ve 'sihir' faktörünü arttırmak için AIY kutusundaki düğme bir yakınlık sensörü ile tetikleyici olarak değiştirildi. Sadeliği için, bir nesnenin 5 cm'den daha yakın olup olmadığını tanıyan ve bir düğme gibi kullanılabilen Pololu'nun dijital mesafe sensörünü kullandım. LED'ler, cihazın ne zaman emir beklediğini, dinlediğini veya "düşündüğünü" gösterir. Servolar, sensörler ve LED'ler GPIOZero yazılım kitaplığı tarafından kontrol edilir.

Prototip, bir kesici bıçakla çok kolay kesilebilen ve yapıştırılabilen, ancak aynı zamanda oldukça stabil olan Forex, PVC köpük plakalardan yapılmıştır. Daha büyük, daha hoş, geliştirilmiş veya daha süslü bir sürüm oluşturmaktan çekinmeyin, ancak iyileştirmelerinizi belgeleyip sunmanız iyi olur.

Hareketli dişliyi sunmak veya güzel, çocuk dostu bir düzene sahip olmak isteyip istemediğinize bağlı olarak gövdenin her iki tarafını da kullanabilirsiniz. ---------"Hampelmann", belirli çağrışımlara sahip olan "zıplayan jack" için Almanca terimdir.

Adım 1: Kullanılan Malzemeler

Kullanılan malzemeler
Kullanılan malzemeler
Kullanılan malzemeler
Kullanılan malzemeler

Ahududu Pi 3; 32 £, Pimoroni, Birleşik Krallık

AIY ses Kiti; 25 £, Pimoroni, Birleşik Krallık

Sharp sensörlü Pololu dijital mesafe sensörü koparma, 5 cm; 5,90 € Exp-tec.de'de

İki adet 9g servo

İki beyaz LED ve bir direnç

Bazı başlıklar ve atlama kabloları

2 mm Forex plakası, 250 x 500 mm; 1.70 € Modulor, Berlin, Almanya

Tüm hareketli parçaları bağlamak için M3 vidalar, somunlar ve rondelalar. Altı adet 10 ve dört adet 16 mm Naylon vida kullandım.

Servoları plakalara sabitlemek ve servo kollarını ve dişlilerini bağlamak için altı adet M2 vida ve somun.

Birkaç damla plastik yapıştırıcı

Adım 2: Cihazın Montajı ve Kullanımı

Cihazın Montajı ve Kullanımı
Cihazın Montajı ve Kullanımı
Cihazın Montajı ve Kullanımı
Cihazın Montajı ve Kullanımı
Cihazın Montajı ve Kullanımı
Cihazın Montajı ve Kullanımı

AIY ses kitinin kendisiyle ilgili olarak, servo ile ilgili bölüm de dahil olmak üzere, kit ile birlikte gelen açıklamadaki talimatları izleyin. AIY ses çıkışındaki servo bağlantı noktalarına birkaç üç pimli başlığı lehimlemenizi tavsiye ederim, böylece HAT ile servoları, sensörleri ve LED'leri çok kolay bağlayabilirsiniz.

Zıplama jakıyla ilgili olarak, burada verdiğim çizimleri svg ve PDF dosyaları olarak şablon olarak kullanabilir veya kendi fikirlerinize göre değiştirebilirsiniz. Dönme noktası ile dişli arasındaki mesafenin servo, kol ve bacakta aynı olmasını sağlayarak, zıplama krikosunun bacaklarını ve kolunu hareket ettiren dişlinin temel düzenini korumak isteyebilirsiniz.

Alternatif olarak, kolların ve bacakların doğrudan dört ayrı servo veya daha gelişmiş bir dişli tarafından çalıştırıldığı bir versiyon da oluşturabilirsiniz.

Çizimi kullanarak parçaları bir Forex, karton veya kontrplak levhadan kesin ve uygun konumlarda delikler açın. Deliklerin iyi hizalanmasını sağlayarak, ara parçalarını kolların ve bacakların dönme noktalarına yapıştırın.

Servoları ve hareketli parçaları taban plakasına sabitleyin. Mesafe sensörünü ve LED'i belirtildiği gibi ekleyin. Servolar M2 vidalarla, tüm hareketli parçalar M3 vidalarla sabitlenmiştir. Naylon M3 vidaları kullandım, ancak sadece estetik nedenlerle.

Servo kolların orta konuma yerleştirilip yerleştirilmediğini kontrol edin. Servo kolları ve dişlileri bağlayın, bunun için M2 vida kullandım.

AIY kartındaki servo konektörlerine servoları, LED'leri ve mesafe sensörünü takın. Bazı uzama/atlama kablolarına ihtiyacınız olabilir. AIY'de sol servoyu "servo0"a (GPIO 26), sağ servoyu "servo2"ye (GPIO 13), LED'leri "servo5"e (GPIO 24) ve sensörü "servo3"e (GPIO 5) taktım. ses ŞAPKA.

Sağlanan “Hampelmann.py” dosyasını AIY “src” alt klasörüne kopyalayın ve herkes için doğrudan çalıştırılabilir hale getirin. Bunu yapmak için, dosya yöneticisinde dosyayı seçebilir, ardından sağ tıklayıp Özellikler'i seçin, İzinler'i seçin, Yürüt'e gidin, ~ herhangi birini seçin. Veya geliştirme konsoluna “chmod +x src/Hampelmann.py” yazın.

Her şeyin yerinde ve sabit olup olmadığını veya gerektiğinde taşınabilir olup olmadığını kontrol edin. Dev komut satırını açın, “src/Hampelmann.py” girin ve programı başlatın. Mesafe sensörünün önünde elinizi veya parmaklarınızı hareket ettirirseniz AIY ünitesi emir isteyecek ve LED'ler yanıp sönecektir. Uygulanan emirler “sağ/sol/eller yukarı/aşağı/orta”, “dans”, “LED açık/kapalı” ve “hoşçakal” şeklindedir.

Oynamak. Elinizi sensörün önüne getirin, sorulduğunda konuşun ve cihaza tepki vermesi için biraz zaman verin. Gecikme oldukça yüksek. Crtl+C veya “Hoşçakal” programı durduracaktır.

Dosyayı Nano veya başka bir basit metin düzenleyici kullanarak değiştirebilirsiniz.

Açıklamalar: Lütfen bazı kelimelerin ve terimlerin büyük harfle başlayan kelimeler olarak, 'Merkez' veya 'Sağ Merkez' olarak tanındığını, çünkü diğerlerinin tanınmadığını unutmayın, örn. 'doğru yukarı'. Bazı eylemleri tetiklemek için ses tanıma modülü tarafından verilen tam formu kullanmanız gerekir.

3. Adım: Python Komut Dosyası

Daha önce belirtildiği gibi, komut dosyası, bazı eklemelerle birlikte AIY sesli talimatlarındaki servo_demo.py komut dosyasına dayanmaktadır. İlk sürüm, ekte bulacağınız Hampelmann.py dosyasıdır. GPIOZero'dan AngularServo, servonun hareket aralığını kısıtlamaya ve tam olarak ne kadar hareket edeceğini tanımlamaya izin veriyor. Ama ben İngiliz sesini orijinal sese tercih ederim. Cihaz ayrıca İngilizce, Almanca, İtalyanca, Fransızca ve İspanyolca konuşabilir, ancak anlayamayabilir (?). Aşağıda, İngiliz sesi ve biraz İtalyanca ve Almanca ile Hampelmann2.py komut dosyasını bulacaksınız. Lütfen komut dosyalarını çalıştırmak için yürütülebilir hale getirmeniz gerektiğini unutmayın.

#!/usr/bin/env python3# Bu komut dosyası AIY ses HAT için servo_demo.py komut dosyasının bir uyarlamasıdır, # AIY atlama jakı için optimize edilmiştir aiy.audio içe aktarma aiy.cloudspeech içe aktarma aiy.voicehat gpiozero içe aktarma LED'inden gpiozero'dan AngularServo'yu gpiozero'dan içe aktar Zamandan düğmeyi içe aktar sleep def main(): tanıyıcı = aiy.cloudspeech.get_recognizer() tanıyıcı.expect_phrase('sağ yukarı') tanıyıcı.expect_phrase('sağ aşağı') tanıyıcı.expect_phrase('Right Merkez') # büyük harfler bilerek oradadır tanıyıcı.expect_phrase('sol yukarı') tanıyıcı.expect_phrase('sol aşağı') tanıyıcı.expect_phrase('sol Merkez') tanıyıcı.expect_phrase('eller yukarı') tanıyıcı.expect_phrase ('eller aşağı') tanıyıcı.expect_phrase('eller Merkezi') tanıyıcı.expect_phrase('Dans') tanıyıcı.expect_phrase('LED açık') tanıyıcı.expect_phrase('LED kapalı') tanıyıcı.expect_phrase('güle güle') aiy.audio.get_recorder().start() servo0 = AngularServo(26, min_angle=-40, max_angle=40) # 1. bağlantı veya, GPIO 26 servo2 = AngularServo(13, min_angle=-40, max_angle=40) # 3. konektör, GPIO 13 led0 = LED(24) # LED'ler servo5/GPIO'ya bağlı 24 mesafe= Düğme(5) # mesafe sensörü bağlı servo3/GPIO 05 # diğerlerine: GPIO 6 servo1, 12'de servo4 aiy.audio.say("Merhaba!",) aiy.audio.say("Başlamak için elinizi sensöre yaklaştırın",) iken True: led0.on() # LED'ler on print("Ses tanımayı etkinleştirmek için elinizi mesafe sensörüne yaklaştırın, sonra konuşun") print('Beklenen anahtar kelimeler: eller/sol/sağ yukarı/aşağı/orta, ') print('LED açık/kapalı, dans et ve hoşçakal.') print() Distance.wait_for_press() print('Dinleniyor…') aiy.audio.say("Lütfen siparişlerinizi verin",) led0.blink() # light yanıp sönen metin = tanıyıcı.recognize() metin Yok ise: aiy.audio.say('Üzgünüm, sizi duymadım.',) else: print('", metin, '"') # İzin verir metinde 'sağ yukarı' ise sistem yorumunu kontrol edin: print('Servo0'u maksimum konuma taşımak') servo0.angle=35 elif metinde 'sağ aşağı': print('Servo0'u hareket ettirmek minimum konuma') servo0.angle=-35 elif metinde 'Sağ Merkez': #correct büyük harfler kritiktir print('Servo0'u orta konuma taşımak') servo0.angle=0 elif metinde 'sol yukarı': print(' servo2'yi maksimum konuma taşıma') servo2.angle=-35 elif metinde 'sol aşağı': print('Servo2'yi minimum konuma taşıma') servo2.angle=35 elif metinde 'sol Merkez': print('Servo2'yi şu konuma taşıma orta konum') servo2.angle=0 elif metinde 'eller yukarı': print('Servo2'yi maksimum konuma taşıma') servo2.angle=-35 servo0.angle=35 elif metinde 'eller aşağı': print('Hareketli servo2 minimum konuma') servo2.angle=35 servo0.angle=-35 elif metinde 'eller Merkez': print('Servo2'yi orta konuma taşıma') servo2.angle=0 servo0.angle=0 elif 'LED kapalı' metinde: print ('harici LED 0'ı kapatmak') led0.off() elif 'LED açık' metinde: print ('harici LED 0'ı açmak') led0.on() # light elif 'dansı' metinde: print ('şimdi bir numaralı dansı gerçekleştiriyor') aiy.audio.say("Eh, elimden geleni yapacağım!",) led0.on() # ışıklar yanıyor (3) aralığındaki i için: servo0.açı=0 servo2.açı=0 uyku(1) servo0.açı=35 servo2.açı=-35 uyku(1) servo0.açı=0 servo2.açı=-35 uyku(1) servo0.angle=-25 servo2.angle=0 uyku(1) servo0.angle=30 servo2.angle=20 uyku(1) servo0.angle=0 servo2.angle=0 led0.off() # light off elif Metinde 'güle güle': aiy.audio.say("Güle güle",) aiy.audio.say('Arrivederci',) aiy.audio.say('Auf Wiedersehen',) servo0.angle=0 servo2.angle=0 led0.off() uyku (3) print('güle güle!') break else: print('anahtar kelime tanınmadı!') aiy.audio.say("Üzgünüm, sizi anlamadım",) if _name_ == ' _Ana ana()

Önerilen: