Cuprins:

Detector de dispoziție pentru câini (Raspberry Pi): 5 pași
Detector de dispoziție pentru câini (Raspberry Pi): 5 pași

Video: Detector de dispoziție pentru câini (Raspberry Pi): 5 pași

Video: Detector de dispoziție pentru câini (Raspberry Pi): 5 pași
Video: Raspberry Pi Based Recording System for Acoustic Monitoring of Bird Species. 2024, Noiembrie
Anonim
Detector de dispoziție pentru câini (Raspberry Pi)
Detector de dispoziție pentru câini (Raspberry Pi)

Acest instructabil este conceput pentru a prelua sunetele pe care le scoate un câine și pentru a determina dacă acestea trebuie abordate sau nu cu LED-uri indicatoare. Cei mai mulți proprietari de câini își cunosc animalele de companie și pot citi semnalele pe care le dau, astfel încât acest Instructable este îndreptat mai ales către străini care pot intra în contact cu câinele tău.

Pasul 1: Piese

Părți
Părți
Părți
Părți
Părți
Părți

Vei avea nevoie:

  • Raspberry Pi
  • LED-uri roșii / verzi (X2)
  • Monitor
  • Tastatură / mouse cu USB
  • WiFi Dongle
  • Microfon USB extern
  • Rezistor de 330 ohmi (X2)

Piese opționale

  • Alimentare externă Raspberry Pi
  • Zgarda pentru caini

Pasul 2: Procedură

Procedură
Procedură

Primul pas pentru a începe acest proiect este să observați comportamentele și tiparele asociate câinelui dvs. Puteți face clic AICI pentru un ghid simplu despre ceea ce ar trebui să căutați. În cazul meu, câinele meu urlă ori de câte ori este încântat sau fericit să vadă pe cineva și latră intermitent când este nervos sau agravat. În următorii pași vă voi explica cum să-mi modificați programul pentru a adapta comportamentele câinelui dvs.

Pasul 3: Programare

Programare
Programare

Mai jos este programul Python pe care l-am folosit pentru câinele meu. În pasul următor vă voi explica cum să modificați programul pentru comportamentul câinelui dvs. Nu rulați programul încă, deoarece nu va funcționa până nu faceți pasul următor.

#! / usr / bin / pythonimport pyaudio import sys import thread from time import sleep from array import array import RPi. GPIO as GPIO

scoarță = 0

howl = False hold = 0 bark Lungime = 5 întârziere = 0 wait = 2 flag = 0 roșu = 7 verde = 5 exitFlag = False

def toggleLightRed (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (roșu, GPIO. OUT) GPIO.output (c, True) sleep (10) GPIO.output (c, False) print ("Red toggled")

def toggleLightGreen (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (verde, GPIO. OUT) GPIO.output (c, True) sleep (10) GPIO.output (c, False) print ("Green toggled")

def main ():

scoarță globală urlu global țineți scoarță globală Lungime întârziere globală steag global roșu global verde verde

bucată = 8192

FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 prag = 3000 max_value = 0 p = pyaudio. PyAudio () stream = p.open (format = FORMAT, canale = CHANNELS, rate = RATE, input = True, output = True, frames_per_buffer = bucată) GPIO.setmode (GPIO. BOARD) GPIO.setup (roșu, GPIO. OUT) GPIO.setup (verde, GPIO. OUT) încearcă: tipărește „Detectare inițializată” în timp ce Adevărat: încearcă: date = stream.read (chunk) cu excepția IOError ca ex: if ex [1]! = pyaudio.paInputOverflowed: raise data = '\ x00' * chunk as_ints = array ('h', data) max_value = max (as_ints) în timp ce max_value> prag: întârziere = 0 hold = hold + 1 try: data = stream.read (chunk) except IOError as ex: if ex [1]! = Pyaudio.paInputOverflowed: raise data = '\ x00' * chunk as_ints = array ('h', data) max_value = max (as_ints) if hold> = barkLength: howl = True print "HOWL DETECTED" toggleLightGreen (green) GPIO.cleanup () elif hold> 0 and hold

dacă _name_ == '_main_':

principal()

Pasul 4: Depanarea și modificarea

Depanarea și modificarea
Depanarea și modificarea
Depanarea și modificarea
Depanarea și modificarea
Depanarea și modificarea
Depanarea și modificarea

Înființat

Înainte de a rula programul, va trebui să tastați următoarele în Terminal pentru a instala PyAudio:

sudo apt-get intall python-pyaudio

După aceasta, puteți testa-rula programul pentru a vă asigura că funcționează corect.

Depanare

Este posibil să aveți următoarea eroare:

IOError: [Intrare Errno depășită] -9981

Pentru a remedia acest lucru, pur și simplu creșteți numărul atribuit fragmentului variabil până când eroarea nu mai apare.

Modificatoare

Variabila barkLength dictează de câte ori se derulează programul înainte ca un zgomot să nu mai fie văzut ca o scoarță, ci ca un urlet. Dacă câinii dvs. urlă, dar o fac doar pentru o scurtă explozie, atunci ar trebui să micșorați acest număr.

Variabilele roșu și verde se referă la porturile de ieșire care vor fi utilizate pentru indicatorii LED. Acestea pot fi schimbate pentru a se potrivi nevoilor dumneavoastră.

Deși nu utilizez în mod activ întârzierea variabilă în programul meu, se poate observa că indică frecvența lătratului sau a urletului.

Ținerea variabilă se referă la de câte ori programul se bucură în cazul în care nivelul de zgomot este peste prag și este utilizat pentru a determina dacă are loc un urlet. Această variabilă nu trebuie modificată în niciun fel, deoarece urletele sunt detectate prin manipularea variabilei barkLength.

Variabila prag poate fi coborâtă dacă scoarța nu este foarte puternică sau ridicată dacă există zgomot de fond care ar putea fi interpretat greșit ca zgomot provenit de la câine.

Pasul 5: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

În acest moment ar trebui să aveți un program pe deplin funcțional, care afișează pe ecran ce va face hardware-ul. Acest punct al proiectului este locul în care ar trebui să decideți dacă acesta va fi un microfon staționar care este setat într-un singur loc (de exemplu, un loc din casă în care câinele frecventează în mod normal sau intră în contact cu vizitatorii) sau dacă proiectul va fi minimizat și atașat la gulerul câinelui pentru a oferi feedback imediat persoanei care interacționează cu câinele.

Staționar

Cel mai ușor lucru de făcut este să lăsați totul pe un panou, deoarece nu va exista nicio mișcare care ar putea desprinde firele. Conectați catodii LED-urilor roșii la pinul de la sol de pe Raspberry Pi și anode fie printr-un rezistor de 330 ohm, fie direct în pinul 7 al Raspberry Pi. Faceți același lucru cu LED-urile verzi, dar conectați anodii la pinul 5. Rulați programul și ar trebui să aveți un proiect finalizat după ce ați modificat codul în funcție de nevoile dvs.

Non-staționar

Aș recomanda completarea versiunii staționare mai întâi doar pentru a vă asigura că totul funcționează și apoi treceți de acolo lipind totul împreună, astfel încât niciun fir să nu fie deconectat de mișcarea câinelui.

Atașați LED-urile la guler, astfel încât să fie ambele într-o poziție confortabilă și să poată fi văzute de cineva când se apropie.

Conectați-vă apoi sursa de alimentare externă, cum ar fi cea văzută AICI, la zmeura pi și fixați-o pe guler într-un mod confortabil pentru câine.

Odată ce totul este fixat, continuați și rulați programul, atașați gulerul la câine și gata!

Recomandat: