Inhaltsverzeichnis:

Hundestimmungsdetektor (Raspberry Pi) - Gunook
Hundestimmungsdetektor (Raspberry Pi) - Gunook

Video: Hundestimmungsdetektor (Raspberry Pi) - Gunook

Video: Hundestimmungsdetektor (Raspberry Pi) - Gunook
Video: Eigene Website ohne Vorkenntnisse | Selbstexperiment 2024, April
Anonim
Hundestimmungsdetektor (Raspberry Pi)
Hundestimmungsdetektor (Raspberry Pi)

Dieses Instructable wurde entwickelt, um die Geräusche eines Hundes zu nehmen und festzustellen, ob sie sich mit Anzeige-LEDs nähern sollten oder nicht. Die meisten Hundebesitzer kennen ihre Haustiere und können die Signale lesen, die sie abgeben, daher richtet sich dieses Instructable hauptsächlich an Fremde, die mit Ihrem Hund in Kontakt kommen können.

Schritt 1: Teile

Teile
Teile
Teile
Teile
Teile
Teile

Du wirst brauchen:

  • Himbeer-Pi
  • Rote/Grüne LEDs (X2)
  • Monitor
  • Tastatur/Maus mit USB
  • WLAN-Dongle
  • Externes USB-Mikrofon
  • 330 Ohm Widerstand (X2)

Optionale Teile

  • Externes Raspberry Pi-Netzteil
  • Hundehalsband

Schritt 2: Verfahren

Verfahren
Verfahren

Der erste Schritt zu Beginn dieses Projekts besteht darin, die Verhaltensweisen und Muster Ihres Hundes zu beobachten. Sie können HIER klicken, um eine einfache Anleitung zu erhalten, wonach Sie suchen sollten. In meinem Fall heult meine Hündin, wenn sie aufgeregt oder glücklich ist, jemanden zu sehen, und bellt zeitweise, wenn sie nervös oder verärgert ist. In den nächsten Schritten erkläre ich Ihnen, wie Sie mein Programm an das Verhalten Ihres Hundes anpassen können.

Schritt 3: Programmierung

Programmierung
Programmierung

Unten ist das Python-Programm, das ich für meinen Hund verwendet habe. Im nächsten Schritt erkläre ich Ihnen, wie Sie das Programm an das Verhalten Ihres Hundes anpassen können. Führen Sie das Programm noch nicht aus, da es erst im nächsten Schritt funktioniert.

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

Rinde=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(rot, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Rot toggled")

def toggleHellgrün(c):

GPIO.setmode(GPIO. BOARD) GPIO.setup(grün, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Grün umgeschaltet")

def main():

global bellen global heulen global halten global barkLänge globale Verzögerung globale Flagge global rot global grün

Stück = 8192

FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 Threshold = 3000 max_value = 0 p = pyaudio. PyAudio() stream = p.open(format=FORMAT, channel=CHANNELS, rate=RATE, input=True, output=True, frames_per_buffer=chunk) GPIO.setmode(GPIO. BOARD) GPIO.setup(rot, GPIO. OUT) GPIO.setup(grün, GPIO. OUT) try: print "Erkennung initialisiert" während True: try: data = stream.read(chunk) außer 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) außer 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

if _name_ == '_main_':

hauptsächlich()

Schritt 4: Fehlerbehebung und Änderung

Fehlerbehebung und Änderung
Fehlerbehebung und Änderung
Fehlerbehebung und Änderungen
Fehlerbehebung und Änderungen
Fehlerbehebung und Änderung
Fehlerbehebung und Änderung

Aufstellen

Bevor Sie das Programm ausführen, müssen Sie Folgendes in das Terminal eingeben, um PyAudio zu installieren:

sudo apt-get intall python-pyaudio

Danach können Sie das Programm testen, um sicherzustellen, dass es richtig funktioniert.

Fehlerbehebung

Es kann zu folgendem Fehler kommen:

IOError: [Errno Input overflowed] -9981

Um dies zu beheben, erhöhen Sie einfach die dem Variablen-Chunk zugewiesene Nummer, bis der Fehler nicht mehr auftritt.

Ändern

Die Variable barkLength bestimmt die Anzahl der Programmschleifen, bevor ein Geräusch nicht mehr als Bellen, sondern als Heulen wahrgenommen wird. Wenn Ihr Hund heult, dies aber nur für einen kurzen Stoß tut, sollten Sie diese Zahl verringern.

Die Variablen Rot und Grün beziehen sich auf die Ausgangsports, die für die LED-Anzeigen verwendet werden. Diese können an Ihre Bedürfnisse angepasst werden.

Obwohl ich die variable Verzögerung in meinem Programm nicht aktiv verwende, kann sie beobachtet werden, um die Häufigkeit des Bellens oder Heulens anzuzeigen.

Die Variable Hold bezieht sich darauf, wie oft das Programm wiederholt, wenn der Rauschpegel über dem Schwellenwert liegt, und wird verwendet, um zu bestimmen, ob ein Heulen stattfindet. Diese Variable sollte in keiner Weise verändert werden, da durch die Manipulation der Variablen barkLength Heulen erkannt wird.

Die Schwellenwertvariable kann gesenkt werden, wenn das Bellen nicht sehr laut ist, oder erhöht werden, wenn Hintergrundgeräusche vorhanden sind, die als Geräusche vom Hund fehlinterpretiert werden könnten.

Schritt 5: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

An diesem Punkt sollten Sie über ein voll funktionsfähiges Programm verfügen, das auf dem Bildschirm anzeigt, was die Hardware tun wird. An dieser Stelle im Projekt sollten Sie entscheiden, ob es sich um ein stationäres Mikrofon handelt, das an einem Ort aufgestellt wird (z. B. an einem Ort im Haus, an dem sich der Hund normalerweise aufhält oder mit Besuchern in Kontakt kommt) oder ob das Projekt minimiert wird und am Halsband des Hundes befestigt, um der Person, die mit dem Hund interagiert, sofortiges Feedback zu geben.

Stationär

Am einfachsten ist es, alles auf einem Steckbrett zu belassen, da es keine Bewegung gibt, die Drähte lösen könnte. Verbinden Sie die Kathoden der roten LEDs mit dem Massestift des Raspberry Pi und den Anoden entweder über einen 330-Ohm-Widerstand oder direkt in Pin 7 des Raspberry Pi. Machen Sie dasselbe mit den grünen LEDs, aber verbinden Sie die Anoden mit Pin 5. Führen Sie das Programm aus und Sie sollten ein abgeschlossenes Projekt haben, sobald Sie den Code an Ihre Bedürfnisse angepasst haben.

Nicht stationär

Ich würde empfehlen, zuerst die stationäre Version abzuschließen, nur um sicherzustellen, dass alles funktioniert, und dann weiterzumachen, indem Sie alles zusammenlöten, damit keine Drähte von der Bewegung des Hundes getrennt werden.

Befestigen Sie die LEDs so am Halsband, dass sie beide in einer bequemen Position sind und von jemandem gesehen werden können, wenn sie sich nähern.

Als nächstes schließen Sie Ihr externes Netzteil wie das HIER gesehene an den Himbeer-Pi an und befestigen es auf eine für den Hund angenehme Weise am Halsband.

Sobald alles gesichert ist, führen Sie das Programm aus, befestigen Sie das Halsband am Hund und Sie sind fertig!

Empfohlen: