İçindekiler:

Köpek Mood Dedektörü (Raspberry Pi): 5 Adım
Köpek Mood Dedektörü (Raspberry Pi): 5 Adım

Video: Köpek Mood Dedektörü (Raspberry Pi): 5 Adım

Video: Köpek Mood Dedektörü (Raspberry Pi): 5 Adım
Video: Deli mi ne Öldürülen köpekler için AĞLADI 2024, Mayıs
Anonim
Köpek Mood Dedektörü (Raspberry Pi)
Köpek Mood Dedektörü (Raspberry Pi)

Bu Eğitilebilirlik, bir köpeğin çıkardığı sesleri almak ve bunlara gösterge LED'leri ile yaklaşılıp yaklaşılmaması gerektiğini belirlemek için tasarlanmıştır. Çoğu köpek sahibi evcil hayvanlarını tanır ve verdikleri sinyalleri okuyabilir, bu nedenle bu Eğitilebilir Kitap çoğunlukla köpeğinizle temas edebilecek yabancılara yöneliktir.

Adım 1: Parçalar

Parçalar
Parçalar
Parçalar
Parçalar
Parçalar
Parçalar

İhtiyacın olacak:

  • Ahududu Pi
  • Kırmızı/Yeşil LED'ler (X2)
  • monitör
  • USB'li klavye/fare
  • WiFi Dongle'ı
  • Harici USB Mikrofon
  • 330 ohm Direnç (X2)

Opsiyonel Parçalar

  • Harici Raspberry Pi Güç Kaynağı
  • Köpek tasması

2. Adım: Prosedür

prosedür
prosedür

Bu projeye başlamanın ilk adımı, köpeğinizle ilgili davranış ve kalıpları gözlemlemektir. Ne aramanız gerektiğine dair basit bir kılavuz için BURAYA tıklayabilirsiniz. Benim durumumda, köpeğim ne zaman birisini gördüğüne sevinse ya da heyecanlansa uluyor ve gergin ya da sinirli olduğunda aralıklı olarak havlıyor. Sonraki birkaç adımda, köpeğinizin davranışlarına uyum sağlamak için programımı nasıl değiştireceğimi açıklayacağım.

Adım 3: Programlama

Programlama
Programlama

Köpeğim için kullandığım Python programı aşağıdadır. Bir sonraki adımda, köpeğinizin davranışı için programı nasıl değiştireceğinizi açıklayacağım. Programı henüz çalıştırmayın, çünkü bir sonraki adımı yapana kadar çalışmayacaktır.

#!/usr/bin/pythonimport pyaudio içe aktarma sys zaman dizisini içe aktarma uykuyu diziden içe aktarma diziyi içe aktarma RPi. GPIO as GPIO

havlama=0

uluma=Yanlış bekletme=0 barkLength=5 gecikme=0 bekle = 2 bayrak = 0 kırmızı = 7 yeşil=5 çıkışFlag = Yanlış

def toggleLightRed(c):

GPIO.setmode(GPIO. BOARD) GPIO.setup(kırmızı, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Kırmızı değiştirildi")

def toggleLightGreen(c):

GPIO.setmode(GPIO. BOARD) GPIO.setup(yeşil, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Yeşil geçişli")

tanım ana():

küresel havlama küresel uluma küresel tutma küresel havlamaUzunluk küresel gecikme küresel bayrak küresel kırmızı küresel yeşil

yığın = 8192

FORMAT = pyaudio.paInt16 KANALLAR = 1 ORAN = 44100 eşik = 3000 maks_değer = 0 p = pyaudio. PyAudio() akış = p.open(format=FORMAT, kanallar=KANALLAR, oran=ORU, giriş=Doğru, çıktı=Doğru, çerçeveler_per_buffer=yığın) GPIO.setmode(GPIO. BOARD) GPIO.setup(kırmızı, GPIO. OUT) GPIO.setup(yeşil, GPIO. OUT) deneyin: Yazdır "Algılama başlatıldı" iken True: deneyin: data = stream.read(öbek) IOError dışında örneğin: if ex[1] != pyaudio.paInputOverflowed: veriyi yükselt = '\x00' * yığın as_ints = dizi('h', veri) max_value = max(as_ints) iken max_value>eşik: delay= 0 hold=hold+1 try: data = stream.read(chunk) IOError dışında örneğin: if ex[1] != pyaudio.paInputOverflowed: upgrade data = '\x00' * stack as_ints = array('h', data) max_value = max(as_ints) ise hold>=barkLength: howl=True print "HOWL DETECTED" toggleLightGreen(green) GPIO.cleanup() elif hold>0 ve hold

eğer _name_ == '_main_':

ana()

4. Adım: Sorun Giderme ve Değiştirme

Sorun Giderme ve Değiştirme
Sorun Giderme ve Değiştirme
Sorun Giderme ve Değiştirme
Sorun Giderme ve Değiştirme
Sorun Giderme ve Değiştirme
Sorun Giderme ve Değiştirme

Kurmak

Programı çalıştırmadan önce PyAudio'yu kurmak için Terminal'e aşağıdakileri yazmanız gerekir:

sudo apt-get intall python-pyaudio

Bundan sonra, düzgün çalıştığından emin olmak için programı test edebilirsiniz.

Sorun giderme

Aşağıdaki hatayla karşılaşabilirsiniz:

IOError: [Errno Girişi taştı] -9981

Bunu düzeltmek için, hata artık görünmeyene kadar değişken yığınına atanan sayıyı artırmanız yeterlidir.

değiştiriliyor

barkLength değişkeni, bir gürültü artık bir havlama olarak değil, bir uluma olarak görülmeden önce programın döngü sayısını belirler. Köpekleriniz uluyor ama bunu sadece kısa bir patlama için yapıyorsa, bu sayıyı azaltmalısınız.

Kırmızı ve yeşil değişkenler, LED göstergeleri için kullanılacak çıkış portlarını ifade eder. Bunlar ihtiyaçlarınıza göre değiştirilebilir.

Gecikme değişkenini programımda aktif olarak kullanmamama rağmen, havlama veya uluma sıklığını gösterdiği gözlemlenebilir.

Tutma değişkeni, gürültü seviyesinin eşiğin üzerinde olduğu yerlerde programın kaç kez döngüye girdiğini belirtir ve bir uluma olup olmadığını belirlemek için kullanılır. barkLength değişkeninin manipülasyonu yoluyla ulumalar tespit edildiğinden, bu değişken hiçbir şekilde değiştirilmemelidir.

Havlama çok yüksek değilse veya köpekten çıkan gürültü olarak yanlış yorumlanabilecek arka plan gürültüsü varsa, eşik değişkeni düşürülebilir.

Adım 5: Donanım

Donanım
Donanım
Donanım
Donanım
Donanım
Donanım

Bu noktada, donanımın ne yapacağını ekranda gösteren tam işlevli bir programınız olmalıdır. Projedeki bu nokta, bunun tek bir yere yerleştirilmiş sabit bir mikrofon mu olacağına (örneğin, evde köpeğin normalde sık ziyaret ettiği veya ziyaretçilerle temas ettiği bir yer) mi yoksa projenin en aza indirilip mi küçültüleceğine karar vermeniz gereken yerdir. ve köpekle etkileşime giren kişiye anında geri bildirim sağlamak için köpeğin tasmasına takılır.

Sabit

Yapılması en kolay şey, kabloları koparacak hiçbir hareket olmayacağı için her şeyi bir breadboard üzerinde bırakmaktır. Kırmızı LED'lerin katotlarını Raspberry Pi ve Anotlardaki Topraklama pimine ya 330 ohm'luk bir direnç üzerinden ya da doğrudan Raspberry Pi'nin 7. pimine bağlayın. Aynısını Yeşil LED'ler için de yapın, ancak Anotları pim 5'e bağlayın. Programı çalıştırın ve kodu ihtiyaçlarınıza göre değiştirdikten sonra tamamlanmış bir projeniz olmalıdır.

Durağan Olmayan

Her şeyin çalıştığından emin olmak için önce sabit sürümü tamamlamanızı ve ardından her şeyi birbirine lehimleyerek oradan ilerlemenizi tavsiye ederim, böylece hiçbir kablo köpeğin hareketinden bağlantısız kalmaz.

LED'leri, hem rahat bir konumda olmaları hem de yaklaşırken birileri tarafından görülebilmeleri için yakaya takın.

Ardından, HERE'daki gibi harici güç kaynağınızı ahududu pi'ye bağlayın ve köpeğin rahat edebileceği şekilde tasmaya sabitleyin.

Her şey yerine oturduğunda, devam edin ve programı çalıştırın, tasmayı köpeğe takın ve işiniz bitti!

Önerilen: