Spisu treści:
- Krok 1: Części
- Krok 2: Procedura
- Krok 3: Programowanie
- Krok 4: Rozwiązywanie problemów i modyfikacja
- Krok 5: Sprzęt
Wideo: Czujnik nastroju psa (Raspberry Pi): 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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
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
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
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
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
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:
Super łatwe kryształowe oświetlenie nastroju: 6 kroków
Super łatwe kryształowe światło nastroju: witajcie twórcy! Jest to super łatwy projekt arduino, który będzie działał jako narzędzie do nauki, a także niesamowite, niesamowite nastrojowe światło. To tylko kilka kawałków, więc możesz je ubić w czasie potrzebnym na wydrukowanie bazy. Sprawia, że świetna lekcja jest
DIY czujnik oddechu z Arduino (przewodzący czujnik rozciągnięcia dzianiny): 7 kroków (ze zdjęciami)
Czujnik oddechu DIY z Arduino (przewodzący czujnik rozciągnięcia dzianiny): Ten czujnik DIY przyjmie postać przewodzącego czujnika rozciągnięcia dzianiny. Będzie owijał się wokół klatki piersiowej/żołądka, a gdy klatka piersiowa/żołądek rozszerza się i kurczy, podobnie czujnik, a w konsekwencji dane wejściowe, które są przesyłane do Arduino. Więc
Zasilany energią słoneczną czujnik temperatury i wilgotności Arduino jako czujnik Oregon 433 mhz: 6 kroków
Czujnik temperatury i wilgotności Arduino zasilany energią słoneczną jako czujnik Oregon 433 mhz: Jest to konstrukcja czujnika temperatury i wilgotności zasilanego energią słoneczną. Czujnik emuluje czujnik Oregon 433 mhz i jest widoczny w bramce Telldus Net. Czujnik ruchu energii słonecznej" z serwisu eBay. Upewnij się, że mówi o cieście 3,7 V
Czujnik dzwonka do drzwi i czujnik temperatury: 6 kroków
Czujnik nacisku i temperatury dzwonka do drzwi: Ulepsza standardowy dzwonek przewodowy do drzwi z modułem esp-12F (esp8266). Instaluje się w samym dzwonku, aby uniknąć jakichkolwiek zmian w okablowaniu. Zapewnia następujące funkcje Wykrywanie przyciśnięć dzwonka do drzwiWysyła powiadomienia na telefon za pośrednictwem sklepów IFTTTS
Czujnik dotykowy i czujnik dźwięku kontrolujący światła AC/DC: 5 kroków
Czujnik dotykowy i czujnik dźwięku kontrolujący światła AC/DC: To mój pierwszy projekt i działa w oparciu o dwa podstawowe czujniki, jeden to czujnik dotykowy, a drugi to czujnik dźwięku, po naciśnięciu panelu dotykowego na czujniku dotykowym włącza się światło AC ON, jeśli go zwolnisz, światło będzie wyłączone i to samo