Table des matières:

Détecteur d'humeur pour chien (Raspberry Pi): 5 étapes
Détecteur d'humeur pour chien (Raspberry Pi): 5 étapes

Vidéo: Détecteur d'humeur pour chien (Raspberry Pi): 5 étapes

Vidéo: Détecteur d'humeur pour chien (Raspberry Pi): 5 étapes
Vidéo: Caméra sans fil WIFI à 5€ incroyable ! DIY Vidéosurveillance Raspberry Pi [Chmaude77 - EP03] 2024, Novembre
Anonim
Détecteur d'humeur pour chien (Raspberry Pi)
Détecteur d'humeur pour chien (Raspberry Pi)

Ce Instructable est conçu pour prendre les sons d'un chien et déterminer s'ils doivent être approchés ou non avec des indicateurs LED. La plupart des propriétaires de chiens connaissent leurs animaux de compagnie et peuvent lire les signaux qu'ils émettent, donc ce Instructable est principalement destiné aux étrangers qui peuvent entrer en contact avec votre chien.

Étape 1: Pièces

les pièces
les pièces
les pièces
les pièces
les pièces
les pièces

Tu auras besoin de:

  • Tarte aux framboises
  • LED rouge/vert (X2)
  • Surveiller
  • Clavier/souris avec USB
  • Clé Wi-Fi
  • Micro USB externe
  • Résistance 330 ohms (X2)

Pièces en option

  • Alimentation externe Raspberry Pi
  • Collier de chien

Étape 2: Procédure

Procédure
Procédure

La première étape pour commencer ce projet est d'observer les comportements et les schémas associés à votre chien. Vous pouvez cliquer ICI pour un guide simple sur ce que vous devriez rechercher. Dans mon cas, mon chien hurle chaque fois qu'il est excité ou heureux de voir quelqu'un et aboie par intermittence lorsqu'il est nerveux ou aggravé. Dans les prochaines étapes, je vais vous expliquer comment modifier mon programme afin de s'adapter aux comportements de votre chien.

Étape 3: Programmation

La programmation
La programmation

Vous trouverez ci-dessous le programme Python que j'ai utilisé pour mon chien. Dans la prochaine étape, je vais vous expliquer comment modifier le programme pour le comportement de votre chien. N'exécutez pas le programme tout de suite car il ne fonctionnera pas tant que vous ne passerez pas à l'étape suivante.

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

écorce=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(rouge, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Red toggled")

def toggleLightGreen(c):

GPIO.setmode(GPIO. BOARD) GPIO.setup(vert, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Vert basculé")

def principal():

aboiement global hurlement global prise globale aboiement globalLongueur retard global drapeau global global rouge global vert

morceau = 8192

FORMAT = pyaudio.paInt16 CANAUX = 1 RATE = 44100 seuil = 3000 max_value = 0 p = pyaudio. PyAudio() stream = p.open(format=FORMAT, channels=CANELS, rate=RATE, input=True, output=True, frames_per_buffer=chunk) GPIO.setmode(GPIO. BOARD) GPIO.setup(rouge, GPIO. OUT) GPIO.setup(vert, GPIO. OUT) try: print "Detection initialized" while True: try: data = stream.read(chunk) sauf IOError as ex: if ex[1] != pyaudio.paInputOverflowed: raise data = '\x00' * chunk as_ints = array('h', data) max_value = max(as_ints) while max_value>threshold: delay= 0 hold=hold+1 try: data = stream.read(chunk) sauf 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 et hold

if _name_ == '_main_':

principale()

Étape 4: Dépannage et modification

Dépannage et modification
Dépannage et modification
Dépannage et modification
Dépannage et modification
Dépannage et modification
Dépannage et modification

Installer

Avant d'exécuter le programme, vous devrez taper ce qui suit dans le terminal pour installer PyAudio:

sudo apt-get intall python-pyaudio

Après cela, vous pouvez tester le programme pour vous assurer qu'il fonctionne correctement.

Dépannage

Vous pouvez rencontrer l'erreur suivante:

IOError: [Errno Input overflowed] -9981

Pour résoudre ce problème, augmentez simplement le nombre attribué au bloc variable jusqu'à ce que l'erreur n'apparaisse plus.

Modifier

La variable barkLength dicte le nombre de boucles du programme avant qu'un bruit ne soit plus considéré comme un aboiement, mais comme un hurlement. Si vos chiens hurlent mais ne le font que pendant une courte rafale, vous devez diminuer ce nombre.

Les variables rouge et verte se réfèrent aux ports de sortie qui seront utilisés pour les indicateurs LED. Ceux-ci peuvent être modifiés pour s'adapter à vos besoins.

Bien que je n'utilise pas activement le délai variable dans mon programme, il peut être observé pour indiquer la fréquence des aboiements ou des hurlements.

La variable hold fait référence au nombre de boucles du programme lorsque le niveau de bruit est supérieur au seuil et est utilisée pour déterminer si un hurlement a lieu. Cette variable ne doit en aucun cas être modifiée car les hurlements sont détectés par la manipulation de la variable barkLength.

La variable seuil peut être abaissée si l'aboiement n'est pas très fort ou augmentée s'il y a un bruit de fond qui pourrait être interprété à tort comme un bruit émanant du chien.

Étape 5: Matériel

Matériel
Matériel
Matériel
Matériel
Matériel
Matériel

C'est à ce stade que vous devriez avoir un programme entièrement fonctionnel qui affiche à l'écran ce que le matériel va faire. C'est à ce stade du projet que vous devez décider s'il s'agira d'un microphone fixe installé à un endroit (par exemple, un endroit de la maison où le chien fréquente ou entre normalement en contact avec les visiteurs) ou si le projet sera minimisé. et attaché au collier du chien pour fournir une rétroaction immédiate à la personne interagissant avec le chien.

Stationnaire

La chose la plus simple à faire est de tout laisser sur une planche à pain car il n'y aura aucun mouvement qui pourrait détacher les fils. Connectez les cathodes des LED rouges à la broche de terre du Raspberry Pi et aux anodes via une résistance de 330 ohms ou directement dans la broche 7 du Raspberry Pi. Faites de même avec les LED vertes mais connectez les anodes à la broche 5. Exécutez le programme et vous devriez avoir un projet terminé une fois que vous avez modifié le code selon vos besoins.

Non-stationnaire

Je recommanderais de terminer d'abord la version stationnaire juste pour m'assurer que tout fonctionne, puis de continuer à partir de là en soudant tout ensemble afin qu'aucun fil ne se déconnecte du mouvement du chien.

Fixez les LED au collier de manière à ce qu'elles soient toutes les deux dans une position confortable et puissent être vues par quelqu'un qui s'approche.

Ensuite, connectez votre alimentation externe telle que celle vue ICI au raspberry pi et fixez-la au collier d'une manière confortable pour le chien.

Une fois que tout est bien en place, lancez le programme, attachez le collier au chien et le tour est joué !

Conseillé: