Índice:

Detector de humor para cães (Raspberry Pi): 5 etapas
Detector de humor para cães (Raspberry Pi): 5 etapas

Vídeo: Detector de humor para cães (Raspberry Pi): 5 etapas

Vídeo: Detector de humor para cães (Raspberry Pi): 5 etapas
Vídeo: Kiosk mode Bruteforce Evasion with Flipper Zero 2024, Novembro
Anonim
Detector de humor para cães (Raspberry Pi)
Detector de humor para cães (Raspberry Pi)

Este Instructable é projetado para pegar os sons que um cão faz e determinar se ele deve ser abordado ou não com LEDs indicadores. A maioria dos donos de cães conhece seus animais de estimação e pode ler os sinais que eles emitem, portanto, este Instructable é direcionado principalmente a estranhos que possam entrar em contato com seu cão.

Etapa 1: peças

Peças
Peças
Peças
Peças
Peças
Peças

Você vai precisar de:

  • Raspberry Pi
  • LEDs vermelhos / verdes (X2)
  • Monitor
  • Teclado / mouse com USB
  • Dongle WiFi
  • Microfone USB Externo
  • Resistor de 330 ohm (X2)

Peças opcionais

  • Fonte de alimentação externa Raspberry Pi
  • Coleira

Etapa 2: Procedimento

Procedimento
Procedimento

O primeiro passo para iniciar este projeto é observar os comportamentos e padrões associados ao seu cão. Você pode clicar AQUI para obter um guia simples sobre o que você deve procurar. No meu caso, minha cadela uiva sempre que está animada ou feliz em ver alguém e late intermitentemente quando está nervosa ou irritada. Nas próximas etapas, explicarei como modificar meu programa para acomodar os comportamentos de seu cão.

Etapa 3: Programação

Programação
Programação

Abaixo está o programa Python que usei para meu cachorro. Na próxima etapa, explicarei como modificar o programa para o comportamento do seu cão. Não execute o programa ainda, pois ele não funcionará até que você execute a próxima etapa.

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

latido = 0

howl = False hold = 0 barkLength = 5 delay = 0 wait = 2 flag = 0 red = 7 green = 5 exitFlag = False

def toggleLightRed (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (vermelho, 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 ():

latido global uivo global global segurar latido global Comprimento global atraso bandeira global global vermelho global verde

pedaço = 8192

FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 threshold = 3000 max_value = 0 p = pyaudio. PyAudio () stream = p.open (format = FORMAT, channels = CHANNELS, rate = RATE, input = True, output = True, frames_per_buffer = chunk) GPIO.setmode (GPIO. BOARD) GPIO.setup (vermelho, GPIO. OUT) GPIO.setup (verde, GPIO. OUT) try: print "Detecção inicializada" enquanto True: try: data = stream.read (chunk) exceto IOError como ex: if ex [1]! = pyaudio.paInputOverflowed: raise data = '\ x00' * chunk as_ints = array ('h', data) max_value = max (as_ints) enquanto max_value> threshold: delay = 0 hold = hold + 1 try: data = stream.read (chunk) exceto 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_':

a Principal()

Etapa 4: Solução de problemas e modificação

Solução de problemas e modificação
Solução de problemas e modificação
Solução de problemas e modificação
Solução de problemas e modificação
Solução de problemas e modificação
Solução de problemas e modificação

Configurar

Antes de executar o programa, você precisará digitar o seguinte no Terminal para instalar o PyAudio:

sudo apt-get intall python-pyaudio

Depois disso, você pode executar um teste do programa para verificar se ele está funcionando corretamente.

Solução de problemas

Você pode enfrentar o seguinte erro:

IOError: [Errno Input overflowed] -9981

Para corrigir isso, basta aumentar o número atribuído ao pedaço variável até que o erro não apareça mais.

Modificando

A variável barkLength determina o número de vezes que o programa faz um loop antes que um ruído não seja mais visto como um latido, mas como um uivo. Se seus cães uivam, mas fazem isso apenas por um curto período, você deve diminuir esse número.

As variáveis vermelho e verde referem-se às portas de saída que serão usadas para os indicadores LED. Eles podem ser alterados para atender às suas necessidades.

Embora eu não use a variável delay ativamente em meu programa, ela pode ser observada para indicar a frequência de latidos ou uivos.

A variável hold refere-se a quantas vezes o programa faz um loop onde o nível de ruído está acima do limite e é usada para determinar se um uivo está ocorrendo. Esta variável não deve ser modificada de forma alguma, pois os uivos são detectados através da manipulação da variável barkLength.

A variável de limite pode ser reduzida se o latido não for muito alto ou aumentado se houver ruído de fundo que possa ser mal interpretado como ruído proveniente do cão.

Etapa 5: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

É neste ponto que você deve ter um programa em pleno funcionamento que exibe na tela o que o hardware estará fazendo. Este ponto no projeto é onde você deve decidir se este será um microfone fixo colocado em um lugar (por exemplo, um lugar na casa onde o cão normalmente frequenta ou entra em contato com visitantes) ou se o projeto será minimizado e presa à coleira do cão para fornecer feedback imediato à pessoa que interage com o cão.

Estacionário

A coisa mais fácil a fazer é deixar tudo em uma placa de ensaio, pois não haverá nenhum movimento que possa separar os fios. Conecte os cátodos dos LEDs vermelhos ao pino terra no Raspberry Pi e os ânodos por meio de um resistor de 330 ohms ou diretamente no pino 7 do Raspberry Pi. Faça o mesmo com os LEDs verdes, mas conecte os ânodos ao pino 5. Execute o programa e você deverá ter um projeto concluído depois de modificar o código de acordo com suas necessidades.

Não Estacionário

Eu recomendaria completar a versão estacionária primeiro apenas para garantir que tudo está funcionando e depois seguir em frente soldando tudo junto para que nenhum fio fique desconectado do movimento do cão.

Prenda os LEDs ao colar para que ambos fiquem em uma posição confortável e possam ser vistos por alguém quando se aproximar.

Em seguida, conecte sua fonte de alimentação externa, como a mostrada AQUI, ao pi de framboesa e prenda-a na coleira de maneira confortável para o cão.

Depois que tudo estiver preso no lugar, vá em frente e execute o programa, coloque a coleira no cachorro e pronto!

Recomendado: