Sommario:

Rilevatore dell'umore del cane (Raspberry Pi): 5 passaggi
Rilevatore dell'umore del cane (Raspberry Pi): 5 passaggi

Video: Rilevatore dell'umore del cane (Raspberry Pi): 5 passaggi

Video: Rilevatore dell'umore del cane (Raspberry Pi): 5 passaggi
Video: Mortal Kombat 1 One-Shot | Sindel Vs. The Realms 2024, Dicembre
Anonim
Rilevatore dell'umore del cane (Raspberry Pi)
Rilevatore dell'umore del cane (Raspberry Pi)

Questo Instructable è progettato per prendere i suoni emessi da un cane e determinare se devono essere avvicinati o meno con gli indicatori LED. La maggior parte dei proprietari di cani conosce i propri animali domestici e può leggere i segnali che emettono, quindi questo Instructable è principalmente diretto verso estranei che potrebbero entrare in contatto con il tuo cane.

Passaggio 1: parti

Parti
Parti
Parti
Parti
Parti
Parti

Avrai bisogno:

  • Lampone Pi
  • LED rosso/verde (X2)
  • Tenere sotto controllo
  • Tastiera/mouse con USB
  • Chiavetta WiFi
  • Microfono USB esterno
  • Resistenza da 330 ohm (X2)

Parti opzionali

  • Alimentatore esterno Raspberry Pi
  • Collare per cani

Passaggio 2: procedura

Procedura
Procedura

Il primo passo per iniziare questo progetto è osservare i comportamenti e gli schemi associati al tuo cane. Puoi fare clic QUI per una semplice guida su ciò che dovresti cercare. Nel mio caso, il mio cane ulula ogni volta che è eccitata o felice di vedere qualcuno e abbaia a intermittenza quando è nervoso o irritato. Nei prossimi passaggi ti spiegherò come modificare il mio programma per adattarlo ai comportamenti del tuo cane.

Passaggio 3: programmazione

Programmazione
Programmazione

Di seguito è riportato il programma Python che ho usato per il mio cane. Nel passaggio successivo ti spiegherò come modificare il programma per il comportamento del tuo cane. Non eseguire ancora il programma poiché non funzionerà fino a quando non eseguirai il passaggio successivo.

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

corteccia=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(red, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Rosso attivato")

def toggleLightGreen(c):

GPIO.setmode(GPIO. BOARD) GPIO.setup(green, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Green attivato")

def principale():

global bark global ululato global hold global barkLunghezza ritardo globale bandiera globale rosso globale verde globale

pezzo = 8192

FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 soglia = 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(red, GPIO. OUT) GPIO.setup(green, GPIO. OUT) try: print "Rilevamento inizializzato" mentre True: try: data = stream.read(chunk) eccetto IOError come 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) tranne IOError come 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 e hold

if _name_ == '_main_':

principale()

Passaggio 4: risoluzione dei problemi e modifica

Risoluzione dei problemi e modifica
Risoluzione dei problemi e modifica
Risoluzione dei problemi e modifica
Risoluzione dei problemi e modifica
Risoluzione dei problemi e modifica
Risoluzione dei problemi e modifica

Impostare

Prima di eseguire il programma dovrai digitare quanto segue nel Terminale per installare PyAudio:

sudo apt-get intall python-pyaudio

Dopodiché puoi provare a eseguire il programma per assicurarti che funzioni correttamente.

Risoluzione dei problemi

Potresti riscontrare il seguente errore:

IOError: [Errno Input overflow] -9981

Per risolvere questo problema, aumenta semplicemente il numero assegnato al blocco variabile fino a quando l'errore non viene più visualizzato.

Modifica

La variabile barkLength determina il numero di volte in cui il programma esegue il ciclo prima che un rumore non venga più visto come un latrato, ma come un ululato. Se i tuoi cani ululano ma lo fanno solo per una breve raffica, dovresti diminuire questo numero.

Le variabili rosso e verde si riferiscono alle porte di uscita che verranno utilizzate per gli indicatori LED. Questi possono essere modificati in base alle proprie esigenze.

Sebbene non utilizzi attivamente il ritardo variabile nel mio programma, può essere osservato per indicare la frequenza di abbaiare o ululare.

La variabile hold si riferisce a quante volte il programma esegue un loop in cui il livello di rumore è al di sopra della soglia e viene utilizzato per determinare se si sta verificando un ululato. Questa variabile non deve essere modificata in alcun modo poiché vengono rilevati ululati attraverso la manipolazione della variabile barkLength.

La variabile di soglia può essere abbassata se l'abbaio non è molto forte o alzata se c'è rumore di fondo che potrebbe essere interpretato erroneamente come rumore emanato dal cane.

Passaggio 5: hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

È a questo punto che dovresti avere un programma completamente funzionante che mostri sullo schermo cosa farà l'hardware. Questo punto del progetto è dove dovresti decidere se questo sarà un microfono fisso posizionato in un posto (es. un luogo della casa dove il cane normalmente frequenta o entra in contatto con i visitatori) o se il progetto sarà ridotto al minimo e attaccato al collare del cane per fornire un feedback immediato alla persona che interagisce con il cane.

Stazionario

La cosa più semplice da fare è lasciare tutto su una breadboard poiché non ci sarà alcun movimento che possa staccare i fili. Collega i catodi dei LED rossi al pin Ground sul Raspberry Pi e agli Anodi tramite un resistore da 330 ohm o direttamente nel pin 7 del Raspberry Pi. Fai lo stesso con i LED verdi ma collega gli Anodi al pin 5. Esegui il programma e dovresti avere un progetto completato una volta modificato il codice secondo le tue esigenze.

Non stazionario

Consiglierei di completare prima la versione stazionaria solo per assicurarti che tutto funzioni e poi di passare da lì saldando tutto insieme in modo che nessun filo si scolleghi dal movimento del cane.

Attacca i LED al collare in modo che siano entrambi in una posizione comoda e possano essere visti da qualcuno mentre si avvicina.

Quindi collega il tuo alimentatore esterno come quello visto QUI al lampone pi e fissalo al collare in un modo che sia comodo per il cane.

Una volta che tutto è fissato, vai avanti ed esegui il programma, attacca il collare al cane e il gioco è fatto!

Consigliato: