Taula de continguts:

Detector d’humor caní (Raspberry Pi): 5 passos
Detector d’humor caní (Raspberry Pi): 5 passos

Vídeo: Detector d’humor caní (Raspberry Pi): 5 passos

Vídeo: Detector d’humor caní (Raspberry Pi): 5 passos
Vídeo: High Density 2022 2024, De novembre
Anonim
Detector d’humor caní (Raspberry Pi)
Detector d’humor caní (Raspberry Pi)

Aquest instructable està dissenyat per prendre els sons que fa un gos i determinar si s’han d’acostar o no amb LED indicadors. La majoria dels propietaris de gossos coneixen les seves mascotes i poden llegir els senyals que desprenen, de manera que aquest instructiu s’adreça principalment a persones desconegudes que puguin entrar en contacte amb el vostre gos.

Pas 1: parts

Parts
Parts
Parts
Parts
Parts
Parts

Necessitarà:

  • Raspberry Pi
  • LEDs vermells / verds (X2)
  • Monitor
  • Teclat / ratolí amb USB
  • Dongle WiFi
  • Micròfon USB extern
  • Resistència de 330 ohms (X2)

Parts opcionals

  • Font d'alimentació externa Raspberry Pi
  • Collar de gos

Pas 2: procediment

Procediment
Procediment

El primer pas per iniciar aquest projecte és observar els comportaments i les pautes associades al vostre gos. Podeu fer clic AQUÍ per obtenir una guia senzilla sobre el que heu de buscar. En el meu cas, el meu gos udola sempre que està emocionat o feliç de veure algú i borda de manera intermitent quan està nerviós o agreujat. En els propers passos explicaré com modificar el meu programa per adaptar-se als comportaments del vostre gos.

Pas 3: Programació

Programació
Programació

A continuació es mostra el programa Python que he utilitzat per al meu gos. Al següent pas explicaré com modificar el programa per al comportament del vostre gos. No executeu el programa encara, ja que no funcionarà fins que no feu el següent pas.

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

escorça = 0

udol = Mantenir fals = 0 escorça Longitud = 5 retard = 0 esperar = 2 senyal = 0 vermell = 7 verd = 5 sortida Bandera = fals

def toggleLightRed (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (vermell, GPIO. OUT) GPIO.output (c, True) sleep (10) GPIO.output (c, False) imprimir ("Red toggled")

def toggleLightGreen (c):

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

def main ():

escorça global aull global aguantar escorça globalDuració retard global bandera global vermell global verd

tros = 8192

FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 llindar = 3000 max_value = 0 p = pyaudio. PyAudio () flux = p.open (format = FORMAT, canals = CHANNELS, taxa = RATE, input = True, output = True, frames_per_buffer = tros) GPIO.setmode (GPIO. BOARD) GPIO.setup (vermell, GPIO. OUT) GPIO.setup (verd, GPIO. OUT) intenta: imprimeix "Detecció inicialitzada" mentre és cert: prova: dades = flux.read (tros) excepte IOError com ex: if ex [1]! = pyaudio.paInputOverflowed: raise data = '\ x00' * tros as_ints = array ('h', data) max_value = max (as_ints) mentre max_value> llindar: delay = 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

si _nom_ == '_principal_':

main ()

Pas 4: resolució de problemes i modificació

Resolució de problemes i modificació
Resolució de problemes i modificació
Resolució de problemes i modificació
Resolució de problemes i modificació
Resolució de problemes i modificació
Resolució de problemes i modificació

Configuració

Abans d'executar el programa, haureu d'escriure el següent al terminal per instal·lar PyAudio:

sudo apt-get intall python-pyaudio

Després d'això, podeu provar-executar el programa per assegurar-vos que funciona correctament.

Resolució de problemes

És possible que experimenteu el següent error:

IOError: [entrada d’error desbordada] -9981

Per solucionar-ho, només cal que augmenteu el nombre assignat al fragment de la variable fins que l'error ja no aparegui.

Modificant

La variable barkLength dicta el nombre de vegades que el programa fa bucles abans que un soroll ja no es vegi com una escorça, sinó com un udol. Si els vostres gossos udolen però ho fan només per una ràfega breu, hauríeu de disminuir aquest nombre.

Les variables vermell i verd fan referència als ports de sortida que s’utilitzaran per als indicadors LED. Es poden canviar per adaptar-les a les vostres necessitats.

Tot i que no faig servir el retard variable activament al meu programa, es pot observar que indica la freqüència dels lladrucs o udols.

La retenció de variable fa referència a quantes vegades el programa fa bucles on el nivell de soroll està per sobre del llindar i s’utilitza per determinar si s’està produint un udol. Aquesta variable no s'ha de modificar de cap manera ja que es detecten udols mitjançant la manipulació de la variable barkLength.

La variable llindar es pot reduir si l'escorça no és molt forta o augmenta si hi ha soroll de fons que es pot interpretar erròniament com a soroll que emana el gos.

Pas 5: maquinari

Maquinari
Maquinari
Maquinari
Maquinari
Maquinari
Maquinari

És en aquest moment que heu de tenir un programa completament funcional que mostri a la pantalla el que farà el maquinari. En aquest punt del projecte és on heu de decidir si es tracta d’un micròfon estacionari que es fixa en un lloc (per exemple, un lloc de la casa on el gos freqüenta o entra en contacte amb els visitants normalment) o si es minimitzarà el projecte. i fixat al coll del gos per proporcionar informació immediata a la persona que interactua amb el gos.

Estacionari

El més fàcil de fer és deixar-ho tot sobre una taula de treball, ja que no hi haurà cap moviment que pugui separar els cables. Connecteu els càtodes dels LED vermells al pin de terra del Raspberry Pi i els ànodes mitjançant una resistència de 330 ohm o directament al pin 7 del Raspberry Pi. Feu el mateix amb els LED verds, però connecteu els ànodes al pin 5. Executeu el programa i hauríeu de tenir un projecte completat un cop hàgiu modificat el codi a les vostres necessitats.

No estacionari

Recomanaria completar la versió estacionària primer només per assegurar-me que tot funcioni i, a continuació, passar d'allà soldant-ho tot de manera que no hi hagi cables fora del moviment del gos.

Col·loqueu els LED al collaret perquè estiguin tots dos en una posició còmoda i que algú els pugui veure a mesura que s’acosta.

A continuació, connecteu la font d'alimentació externa, com la que es veu AQUÍ, al raspberry pi i fixeu-la al coll de manera que sigui còmoda per al gos.

Un cop tot estigui assegurat al seu lloc, seguiu endavant i executeu el programa, fixeu el collaret al gos i ja ho teniu.

Recomanat: