Tabla de contenido:

Detector de humor para perros (Raspberry Pi): 5 pasos
Detector de humor para perros (Raspberry Pi): 5 pasos

Video: Detector de humor para perros (Raspberry Pi): 5 pasos

Video: Detector de humor para perros (Raspberry Pi): 5 pasos
Video: ✅ RASPBERRY PI PICO | GUIA TECNICA para PRINCIPIANTES con CODIGOS BASICOS y FACILES de PROGRAMAR 2024, Mayo
Anonim
Detector de humor para perros (Raspberry Pi)
Detector de humor para perros (Raspberry Pi)

Este Instructable está diseñado para tomar los sonidos que hace un perro y determinar si deben acercarse o no con indicadores LED. La mayoría de los dueños de perros conocen a sus mascotas y pueden leer las señales que emiten, por lo que este Instructable está principalmente dirigido a extraños que pueden entrar en contacto con su perro.

Paso 1: Partes

Partes
Partes
Partes
Partes
Partes
Partes

Necesitará:

  • Frambuesa pi
  • LED rojo / verde (X2)
  • Monitor
  • Teclado / mouse con USB
  • Dongle WiFi
  • Micrófono USB externo
  • Resistencia de 330 ohmios (X2)

Partes opcionales

  • Fuente de alimentación externa para Raspberry Pi
  • Collar de perro

Paso 2: procedimiento

Procedimiento
Procedimiento

El primer paso para comenzar este proyecto es observar los comportamientos y patrones asociados con su perro. Puede hacer clic AQUÍ para obtener una guía sencilla sobre lo que debe buscar. En mi caso, mi perro aúlla cuando está emocionado o feliz de ver a alguien y ladra intermitentemente cuando está nervioso o agravado. En los siguientes pasos, explicaré cómo modificar mi programa para adaptarlo a los comportamientos de su perro.

Paso 3: programación

Programación
Programación

A continuación se muestra el programa Python que utilicé para mi perro. En el siguiente paso, explicaré cómo modificar el programa para el comportamiento de su perro. No ejecute el programa todavía, ya que no funcionará hasta que realice el siguiente paso.

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

ladrar = 0

aullido = Falso retención = 0 ladrido Longitud = 5 retraso = 0 espera = 2 bandera = 0 rojo = 7 verde = 5 salida Bandera = Falso

def toggleLightRed (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (rojo, 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 ("Verde alternado")

def principal ():

ladrido global aullido global espera global ladrido global Longitud retraso global bandera global global rojo global verde

trozo = 8192

FORMATO = pyaudio.paInt16 CANALES = 1 VELOCIDAD = 44100 umbral = 3000 valor_máx = 0 p = pyaudio. PyAudio () flujo = p.open (formato = FORMATO, canales = CANALES, velocidad = VELOCIDAD, entrada = Verdadero, salida = Verdadero, frames_per_buffer = chunk) GPIO.setmode (GPIO. BOARD) GPIO.setup (rojo, GPIO. OUT) GPIO.setup (verde, GPIO. OUT) try: print "Detection initialized" while True: try: data = stream.read (chunk) excepto IOError como ex: if ex [1]! = pyaudio.paInputOverflowed: raise data = '\ x00' * chunk as_ints = array ('h', data) max_value = max (as_ints) while max_value> umbral: retraso = 0 hold = hold + 1 try: data = stream.read (chunk) excepto IOError como 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

if _name_ == '_main_':

principal()

Paso 4: resolución de problemas y modificación

Resolución de problemas y modificación
Resolución de problemas y modificación
Resolución de problemas y modificación
Resolución de problemas y modificación
Resolución de problemas y modificación
Resolución de problemas y modificación

Configuración

Antes de ejecutar el programa, deberá escribir lo siguiente en la Terminal para instalar PyAudio:

sudo apt-get intall python-pyaudio

Después de esto, puede probar y ejecutar el programa para asegurarse de que esté funcionando correctamente.

Solución de problemas

Puede experimentar el siguiente error:

IOError: [Errno Input overflowed] -9981

Para solucionar este problema, simplemente aumente el número asignado al fragmento de la variable hasta que ya no aparezca el error.

Modificando

La variable barkLength dicta el número de veces que el programa se repite antes de que un ruido ya no se vea como un ladrido, sino como un aullido. Si su perro aúlla pero solo lo hace por un breve momento, debe disminuir este número.

Las variables rojo y verde se refieren a los puertos de salida que se utilizarán para los indicadores LED. Estos se pueden cambiar para adaptarse a sus necesidades.

Aunque no utilizo activamente la variable delay en mi programa, se puede observar que indica la frecuencia de los ladridos o aullidos.

La retención variable se refiere a cuántas veces se repite el programa cuando el nivel de ruido está por encima del umbral y se utiliza para determinar si se está produciendo un aullido. Esta variable no debe modificarse de ninguna manera ya que los aullidos se detectan mediante la manipulación de la variable barkLength.

La variable de umbral puede reducirse si el ladrido no es muy fuerte o aumentarse si hay ruido de fondo que podría malinterpretarse como ruido que emana del perro.

Paso 5: hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Es en este punto que debería tener un programa en pleno funcionamiento que muestre en la pantalla lo que hará el hardware. Este punto del proyecto es donde debe decidir si se trata de un micrófono estacionario que se coloca en un lugar (por ejemplo, un lugar de la casa donde el perro suele frecuentar o entra en contacto con los visitantes) o si el proyecto se minimizará. y se adjunta al collar del perro para proporcionar retroalimentación inmediata a la persona que interactúa con el perro.

Estacionario

Lo más fácil de hacer es dejar todo en una placa de pruebas, ya que no habrá ningún movimiento que pueda desprender los cables. Conecte los cátodos de los LED rojos al pin de tierra en la Raspberry Pi y los ánodos a través de una resistencia de 330 ohmios o directamente al pin 7 de la Raspberry Pi. Haga lo mismo con los LED verdes pero conecte los ánodos al pin 5. Ejecute el programa y debería tener un proyecto completo una vez que haya modificado el código según sus necesidades.

No estacionario

Recomendaría completar la versión estacionaria primero solo para asegurarse de que todo esté funcionando y luego seguir adelante soldando todo para que ningún cable se desconecte del movimiento del perro.

Coloque los LED en el collar para que ambos estén en una posición cómoda y puedan ser vistos por alguien cuando se acerque.

A continuación, conecte su fuente de alimentación externa, como la que se ve AQUÍ, a la frambuesa pi y fíjela al collar de una manera que sea cómoda para el perro.

Una vez que todo esté asegurado en su lugar, ejecute el programa, coloque el collar en el perro y ¡listo!

Recomendado: