Inhoudsopgave:

Hondenstemmingsdetector (Raspberry Pi) - Ajarnpa
Hondenstemmingsdetector (Raspberry Pi) - Ajarnpa

Video: Hondenstemmingsdetector (Raspberry Pi) - Ajarnpa

Video: Hondenstemmingsdetector (Raspberry Pi) - Ajarnpa
Video: Компиляция и декомпиляция скриптов Python 2024, Mei
Anonim
Hondenstemmingsdetector (Raspberry Pi)
Hondenstemmingsdetector (Raspberry Pi)

Deze Instructable is ontworpen om de geluiden die een hond maakt te nemen en te bepalen of ze moeten worden benaderd of niet met indicatie-LED's. De meeste hondenbezitters kennen hun huisdieren en kunnen de signalen lezen die ze afgeven, dus deze Instructable is meestal gericht op vreemden die in contact kunnen komen met uw hond.

Stap 1: Onderdelen

Onderdelen
Onderdelen
Onderdelen
Onderdelen
Onderdelen
Onderdelen

Je zal nodig hebben:

  • Raspberry Pi
  • Rode/Groene LED's (X2)
  • Toezicht houden op
  • Toetsenbord/muis met USB
  • WiFi-dongle
  • Externe USB-microfoon
  • 330 ohm Weerstand (X2)

Optionele onderdelen

  • Externe Raspberry Pi-voeding
  • Hondenhalsband

Stap 2: Procedure

Procedure
Procedure

De eerste stap om met dit project te beginnen, is het observeren van het gedrag en de patronen die bij uw hond horen. U kunt HIER klikken voor een eenvoudige gids over waar u naar moet zoeken. In mijn geval huilt mijn hond wanneer ze opgewonden of blij is om iemand te zien en blaft met tussenpozen als ze nerveus of geïrriteerd is. In de volgende paar stappen zal ik uitleggen hoe ik mijn programma kan aanpassen aan het gedrag van uw hond.

Stap 3: Programmeren

Programmeren
Programmeren

Hieronder staat het Python-programma dat ik voor mijn hond heb gebruikt. In de volgende stap zal ik uitleggen hoe u het programma kunt aanpassen aan het gedrag van uw hond. Voer het programma nog niet uit, want het zal pas werken als u de volgende stap uitvoert.

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

schors=0

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

def toggleLightRed(c):

GPIO.setmode(GPIO. BOARD) GPIO.setup(rood, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Rood geschakeld")

def toggleLightGreen(c):

GPIO.setmode(GPIO. BOARD) GPIO.setup(groen, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Groen geschakeld")

def hoofd():

globaal blaffen globaal huilen globaal vasthouden globaal blaffenLengte globaal vertraging globaal vlag globaal rood globaal groen

stuk = 8192

FORMAT = pyaudio.paInt16 KANALEN = 1 RATE = 44100 drempel = 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(rood, GPIO. OUT) GPIO.setup(groen, GPIO. OUT) probeer: print "Detectie geïnitialiseerd" terwijl True: probeer: data = stream.read(chunk) behalve IOError als 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) behalve 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 en hold

if _name_ == '_main_':

hoofd()

Stap 4: Problemen oplossen en wijzigen

Problemen oplossen en wijzigen
Problemen oplossen en wijzigen
Problemen oplossen en wijzigen
Problemen oplossen en wijzigen
Problemen oplossen en wijzigen
Problemen oplossen en wijzigen

Opstelling

Voordat u het programma uitvoert, moet u het volgende in de Terminal typen om PyAudio te installeren:

sudo apt-get intall python-pyaudio

Hierna kunt u het programma testen om te controleren of het goed werkt.

Probleemoplossen

U kunt de volgende fout ervaren:

IOError: [Errno Input overflowed] -9981

Om dit op te lossen, verhoogt u eenvoudig het nummer dat aan de variabele chunk is toegewezen totdat de fout niet meer verschijnt.

Aanpassen

De variabele barkLength bepaalt het aantal keren dat het programma een lus maakt voordat een geluid niet langer wordt gezien als een blaf, maar als een gehuil. Als uw honden huilen, maar dit slechts voor een korte uitbarsting doen, moet u dit aantal verlagen.

De variabelen rood en groen verwijzen naar de uitgangspoorten die zullen worden gebruikt voor de LED-indicatoren. Deze kunnen worden gewijzigd om aan uw behoeften te voldoen.

Hoewel ik de variabele vertraging niet actief in mijn programma gebruik, kan het worden waargenomen om de frequentie van blaffen of huilen aan te geven.

De variabele hold verwijst naar hoe vaak het programma een lus maakt waarbij het geluidsniveau boven de drempel ligt en wordt gebruikt om te bepalen of er een gehuil plaatsvindt. Deze variabele mag op geen enkele manier worden gewijzigd, omdat gehuil wordt gedetecteerd door de manipulatie van de variabele barkLength.

De variabele drempelwaarde kan worden verlaagd als het blaffen niet erg luid is of verhoogd als er achtergrondgeluid is dat verkeerd kan worden geïnterpreteerd als geluid van de hond.

Stap 5: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Op dit punt zou u een volledig functionerend programma moeten hebben dat op het scherm laat zien wat de hardware zal doen. Dit punt in het project is waar u moet beslissen of dit een stationaire microfoon is die op één plaats wordt geplaatst (bijvoorbeeld een plaats in het huis waar de hond normaal vaak komt of in contact komt met bezoekers) of dat het project tot een minimum wordt beperkt en bevestigd aan de halsband van de hond om onmiddellijke feedback te geven aan de persoon die met de hond omgaat.

Stationair

Het gemakkelijkste om te doen is om alles op een breadboard te laten staan, omdat er geen beweging zal zijn die draden zou kunnen losmaken. Verbind de kathodes van de rode LED's met de grondpin op de Raspberry Pi en de anodes, hetzij via een weerstand van 330 ohm of rechtstreeks in pin 7 van de Raspberry Pi. Doe hetzelfde met de groene LED's, maar sluit de anodes aan op pin 5. Voer het programma uit en u zou een voltooid project moeten hebben zodra u de code naar uw behoeften hebt aangepast.

Niet-stationair

Ik zou aanraden om eerst de stationaire versie te voltooien om er zeker van te zijn dat alles werkt en dan verder te gaan door alles aan elkaar te solderen, zodat er geen draden losraken van de beweging van de hond.

Bevestig de LED's aan de halsband zodat ze allebei in een comfortabele positie zitten en door iemand kunnen worden gezien als ze dichterbij komen.

Sluit vervolgens uw externe voeding, zoals die HIER te zien is, aan op de raspberry pi en bevestig deze aan de halsband op een manier die comfortabel is voor de hond.

Zodra alles op zijn plaats zit, ga je gang en voer je het programma uit, bevestig de halsband aan de hond en je bent klaar!

Aanbevolen: