Spisu treści:

Czujnik nastroju psa (Raspberry Pi): 5 kroków
Czujnik nastroju psa (Raspberry Pi): 5 kroków

Wideo: Czujnik nastroju psa (Raspberry Pi): 5 kroków

Wideo: Czujnik nastroju psa (Raspberry Pi): 5 kroków
Wideo: Jak z InfluxDB i Grafana na RaspberryPi zrobić wizualizację czujnika smogu Luftdaten 2024, Listopad
Anonim
Czujnik nastroju psa (Raspberry Pi)
Czujnik nastroju psa (Raspberry Pi)

Ten instruktaż jest przeznaczony do zbierania dźwięków wydawanych przez psa i określania, czy należy się do niego zbliżyć, czy nie, za pomocą wskaźników LED. Większość właścicieli psów zna swoje zwierzęta i potrafi odczytać sygnały, które wysyłają, więc ta instrukcja jest skierowana głównie do nieznajomych, którzy mogą mieć kontakt z twoim psem.

Krok 1: Części

Części
Części
Części
Części
Części
Części

Będziesz potrzebować:

  • Malina Pi
  • Czerwone/zielone diody LED (X2)
  • Monitor
  • Klawiatura/mysz z USB
  • Klucz WiFi
  • Zewnętrzny mikrofon USB
  • Rezystor 330 omów (X2)

Części opcjonalne

  • Zewnętrzny zasilacz Raspberry Pi
  • Obroża psa

Krok 2: Procedura

Procedura
Procedura

Pierwszym krokiem do rozpoczęcia tego projektu jest obserwacja zachowań i wzorców związanych z twoim psem. Możesz kliknąć TUTAJ, aby uzyskać prosty przewodnik po tym, czego powinieneś szukać. W moim przypadku mój pies wyje, gdy jest podekscytowany lub szczęśliwy widząc kogoś i szczeka z przerwami, gdy jest zdenerwowany lub zdenerwowany. W kolejnych kilku krokach wyjaśnię, jak zmodyfikować mój program, aby dostosować się do zachowań Twojego psa.

Krok 3: Programowanie

Programowanie
Programowanie

Poniżej znajduje się program Pythona, którego użyłem dla mojego psa. W następnym kroku wyjaśnię, jak zmodyfikować program pod kątem zachowania psa. Nie uruchamiaj jeszcze programu, ponieważ nie zadziała, dopóki nie wykonasz następnego kroku.

#!/usr/bin/pythonimport pyaudio import sys import wątku od czasu import snu z tablicy import tablicy import RPi. GPIO jako GPIO

kora=0

howl=False hold=0 barkLength=5 delay=0 wait = 2 flaga = 0 czerwony = 7 zielony=5 exitFlag = False

def przełączJasnoCzerwony(c):

GPIO.setmode(GPIO. BOARD) GPIO.setup(red, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Czerwony przełączony")

def przełączJasnozielony(c):

GPIO.setmode(GPIO. BOARD) GPIO.setup(zielony, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Przełączane na zielono")

def główna():

global bark globalne howl global hold global barkdługość globalne opóźnienie globalna flaga globalny czerwony globalny zielony

kawałek = 8192

FORMAT = pyaudio.paInt16 KANAŁY = 1 RATE = 44100 próg = 3000 max_value = 0 p = pyaudio. PyAudio() stream = p.open(format=FORMAT, kanały=KANAŁY, tempo=RATE, input=True, output=True, frame_per_buffer=chunk) GPIO.setmode(GPIO. BOARD) GPIO.setup(czerwony, GPIO. OUT) GPIO.setup(zielony, GPIO. OUT) try: print „Zainicjowano wykrywanie”, podczas gdy True: try: data = stream.read(chunk) z wyjątkiem IOError jako 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) z wyjątkiem IOError jako 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 „WYKRYTO WYCIE” toggleLightGreen(zielony) GPIO.cleanup() elif przytrzymaj>0 i przytrzymaj

if _name_ == '_main_':

Główny()

Krok 4: Rozwiązywanie problemów i modyfikacja

Rozwiązywanie problemów i modyfikacja
Rozwiązywanie problemów i modyfikacja
Rozwiązywanie problemów i modyfikacja
Rozwiązywanie problemów i modyfikacja
Rozwiązywanie problemów i modyfikacja
Rozwiązywanie problemów i modyfikacja

Ustawiać

Przed uruchomieniem programu musisz wpisać w Terminalu następujące polecenie, aby zainstalować PyAudio:

sudo apt-get intall python-pyaudio

Następnie możesz przetestować program, aby upewnić się, że działa poprawnie.

Rozwiązywanie problemów

Może wystąpić następujący błąd:

IOError: [Przepełnienie danych wejściowych Errno] -9981

Aby to naprawić, po prostu zwiększ liczbę przypisaną do porcji zmiennej, aż błąd przestanie się pojawiać.

Modyfikowanie

Zmienna barkLength określa, ile razy program się zapętli, zanim hałas nie będzie już postrzegany jako szczekanie, ale jako wycie. Jeśli twoje psy wyją, ale robią to tylko przez krótką chwilę, powinieneś zmniejszyć tę liczbę.

Zmienne czerwony i zielony odnoszą się do portów wyjściowych, które będą używane dla wskaźników LED. Można je zmienić, aby dopasować je do swoich potrzeb.

Chociaż nie używam aktywnie zmiennego opóźnienia w moim programie, można zaobserwować, że wskazuje częstotliwość szczekania lub wycia.

Zmienna hold odnosi się do liczby pętli programu, w których poziom hałasu jest powyżej progu i jest używana do określenia, czy ma miejsce wycie. Ta zmienna nie powinna być w żaden sposób modyfikowana, ponieważ poprzez manipulację zmienną barkLength wykrywane są wycia.

Zmienna progowa może zostać obniżona, jeśli szczekanie nie jest zbyt głośne lub podniesione, jeśli w tle występuje hałas, który mógłby zostać błędnie zinterpretowany jako hałas pochodzący od psa.

Krok 5: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy

W tym momencie powinieneś mieć w pełni działający program, który wyświetla na ekranie, co będzie robił sprzęt. W tym punkcie projektu należy zdecydować, czy będzie to mikrofon stacjonarny, który jest ustawiony w jednym miejscu (np. miejsce w domu, w którym pies na co dzień bywa lub ma kontakt z gośćmi), czy też projekt zostanie zminimalizowany i przymocowane do obroży psa, aby zapewnić natychmiastową informację zwrotną osobie wchodzącej w interakcję z psem.

Stacjonarny

Najłatwiej jest zostawić wszystko na płytce stykowej, ponieważ nie będzie ruchu, który mógłby oderwać przewody. Podłącz katody czerwonych diod LED do styku uziemienia w Raspberry Pi i anody przez rezystor 330 omów lub bezpośrednio do styku 7 Raspberry Pi. Zrób to samo z zielonymi diodami LED, ale podłącz anody do pinu 5. Uruchom program i powinieneś mieć ukończony projekt po zmodyfikowaniu kodu do swoich potrzeb.

Niestacjonarne

Polecam najpierw dokończyć wersję stacjonarną tylko po to, aby upewnić się, że wszystko działa, a następnie przejść od tego miejsca, lutując wszystko razem, aby żadne przewody nie zostały odłączone od ruchu psa.

Przymocuj diody LED do obroży tak, aby znajdowały się w wygodnej pozycji i były widoczne dla kogoś, kto się zbliży.

Następnie podłącz zewnętrzny zasilacz, taki jak ten widoczny TUTAJ, do raspberry pi i przymocuj go do obroży w sposób wygodny dla psa.

Gdy wszystko jest już zabezpieczone, uruchom program, załóż obrożę na psa i gotowe!

Zalecana: