Съдържание:

Детектор за кучешко настроение (Raspberry Pi): 5 стъпки
Детектор за кучешко настроение (Raspberry Pi): 5 стъпки

Видео: Детектор за кучешко настроение (Raspberry Pi): 5 стъпки

Видео: Детектор за кучешко настроение (Raspberry Pi): 5 стъпки
Видео: Цвергшнауцер д.р. 09.08.21 2024, Ноември
Anonim
Детектор за кучешко настроение (Raspberry Pi)
Детектор за кучешко настроение (Raspberry Pi)

Тази инструкция е предназначена да приема звуците, които издава кучето, и да определи дали трябва да се приближи или не с помощта на светодиодни индикатори. Повечето собственици на кучета познават своите домашни любимци и могат да четат сигналите, които издават, така че тази инструкция е насочена най -вече към непознати, които могат да влязат в контакт с вашето куче.

Стъпка 1: Части

Части
Части
Части
Части
Части
Части

Ще имаш нужда:

  • Малина Пи
  • Червени/зелени светодиоди (X2)
  • Монитор
  • Клавиатура/мишка с USB
  • WiFi Dongle
  • Външен USB микрофон
  • Резистор 330 ома (X2)

Допълнителни части

  • Външно захранване Raspberry Pi
  • Кучешки нашийник

Стъпка 2: Процедура

Процедура
Процедура

Първата стъпка към започването на този проект е да наблюдавате поведението и моделите, свързани с вашето куче. Можете да кликнете ТУК за просто ръководство за това какво трябва да търсите. В моя случай кучето ми вие, когато е развълнувано или щастливо да види някого и лае периодично, когато е нервно или влошено. В следващите няколко стъпки ще обясня как да променя програмата си, за да приспособя поведението на вашето куче.

Стъпка 3: Програмиране

Програмиране
Програмиране

По -долу е програмата Python, която използвах за кучето си. В следващата стъпка ще обясня как да променя програмата за поведението на вашето куче. Не стартирайте програмата все още, тъй като тя няма да работи, докато не направите следващата стъпка.

#!/usr/bin/pythonimport pyaudio импортира нишка за импортиране на система от време за импортиране на сън от масив за импортиране на масив импортиране на RPi. GPIO като GPIO

кора = 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 (червен, GPIO. OUT) GPIO.output (c, Вярно) спящ (10) GPIO.output (c, False) печат ("Червен превключен")

def toggleLightGreen (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (зелен, GPIO. OUT) GPIO.output (c, True) спящ (10) GPIO.output (c, False) печат ("Зелено превключено")

def main ():

глобална кора глобален вой вой глобална задръжка глобална кора Дължина глобално забавяне глобален флаг глобално червено глобално зелено

парче = 8192

FORMAT = pyaudio.paInt16 КАНАЛИ = 1 RATE = 44100 праг = 3000 max_value = 0 p = pyaudio. PyAudio () поток = p.open (формат = FORMAT, канали = КАНАЛИ, скорост = RATE, вход = вярно, изход = вярно, frame_per_buffer = chunk) GPIO.setmode (GPIO. BOARD) GPIO.setup (червено, GPIO. OUT) GPIO.setup (зелено, GPIO. OUT) опит: отпечатайте "Откриване инициализирано", докато True: опитайте: data = stream.read (chunk), с изключение на IOError като ex: if ex [1]! = pyaudio.paInputOverflowed: raise data = '\ x00' * chunk as_ints = array ('h', data) max_value = max (as_ints) докато max_value> праг: delay = 0 задържане = задържане+1 опит: data = stream.read (chunk) с изключение на IOError като 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 (зелено) GPIO.cleanup () elif hold> 0 и задръжте

ако _name_ == '_main_':

main ()

Стъпка 4: Отстраняване на неизправности и промяна

Отстраняване на неизправности и промяна
Отстраняване на неизправности и промяна
Отстраняване на неизправности и промяна
Отстраняване на неизправности и промяна
Отстраняване на неизправности и промяна
Отстраняване на неизправности и промяна

Настройвам

Преди да стартирате програмата, ще трябва да въведете следното в терминала, за да инсталирате PyAudio:

sudo apt-get intall python-pyaudio

След това можете да тествате програмата, за да се уверите, че работи правилно.

Отстраняване на неизправности

Може да получите следната грешка:

IOError: [Errno Input overflowed] -9981

За да поправите това, просто увеличете броя, присвоен на променливата част, докато грешката вече не се появява.

Промяна

Променливата barkLength диктува колко пъти програмата се затваря, преди шумът вече да не се разглежда като кора, а като вой. Ако кучетата вият, но го правят само за кратко, тогава трябва да намалите този брой.

Променливите червено и зелено се отнасят до изходните портове, които ще се използват за светодиодните индикатори. Те могат да бъдат променени според вашите нужди.

Въпреки че не използвам променливото забавяне активно в програмата си, може да се наблюдава, че показва честотата на лай или вой.

Променливата задържане се отнася до това колко пъти програмата се затваря, където нивото на шума е над прага, и се използва за определяне дали се чува вой. Тази променлива не трябва да се променя по никакъв начин, тъй като вой се открива чрез манипулиране на променливата barkLength.

Праговата променлива може да бъде намалена, ако кората не е много силна или повишена, ако има фонов шум, който би могъл да бъде тълкуван погрешно като шум, излъчван от кучето.

Стъпка 5: Хардуер

Хардуер
Хардуер
Хардуер
Хардуер
Хардуер
Хардуер

В този момент трябва да имате напълно функционираща програма, която да показва на екрана какво ще прави хардуерът. Тази точка в проекта е мястото, където трябва да решите дали това ще бъде стационарен микрофон, който е поставен на едно място (напр. Място в къщата, където кучето обикновено ходи или влиза в контакт с посетители), или дали проектът ще бъде минимизиран и прикрепен към яката на кучето, за да осигури незабавна обратна връзка на лицето, което взаимодейства с кучето.

Стационарен

Най -лесното нещо, което трябва да направите, е да оставите всичко на макет, тъй като няма да има движение, което да откъсне проводниците. Свържете катодите на червените светодиоди към заземяващия щифт на Raspberry Pi и анодите или чрез резистор от 330 ома, или направо в щифт 7 на Raspberry Pi. Направете същото със зелените светодиоди, но свържете анодите към щифт 5. Стартирайте програмата и трябва да имате завършен проект, след като промените кода според вашите нужди.

Нестационарен

Бих препоръчал първо да завършите стационарната версия, само за да се уверите, че всичко работи и след това да продължите оттам, като запоявате всичко заедно, така че нито един проводник да не се откъсне от движението на кучето.

Прикрепете светодиодите към яката, така че и двете да са в удобно положение и да могат да бъдат видени от някой, когато се приближат.

След това свържете външното си захранване, като това, което виждате ТУК, към малиновото пи и го закрепете към яката по начин, удобен за кучето.

След като всичко е фиксирано на място, продължете и стартирайте програмата, прикрепете яката към кучето и сте готови!

Препоръчано: