Оглавление:

Детектор настроения собаки (Raspberry Pi): 5 шагов
Детектор настроения собаки (Raspberry Pi): 5 шагов

Видео: Детектор настроения собаки (Raspberry Pi): 5 шагов

Видео: Детектор настроения собаки (Raspberry Pi): 5 шагов
Видео: Учебное пособие AR Guide book. 5 часть. 2024, Май
Anonim
Детектор настроения собаки (Raspberry Pi)
Детектор настроения собаки (Raspberry Pi)

Это руководство предназначено для того, чтобы улавливать звуки, издаваемые собакой, и определять, следует ли к ним приближаться или нет, с помощью светодиодных индикаторов. Большинство владельцев собак знают своих питомцев и могут читать сигналы, которые они издают, поэтому данное руководство в основном предназначено для незнакомцев, которые могут вступить в контакт с вашей собакой.

Шаг 1: Детали

Запчасти
Запчасти
Запчасти
Запчасти
Запчасти
Запчасти

Тебе понадобится:

  • Raspberry Pi
  • Красный / зеленый светодиоды (X2)
  • Монитор
  • Клавиатура / мышь с USB
  • Wi-Fi ключ
  • Внешний USB-микрофон
  • Резистор 330 Ом (X2)

Дополнительные детали

  • Внешний блок питания Raspberry Pi
  • Собачий ошейник

Шаг 2: Процедура

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

Первым шагом к началу этого проекта является наблюдение за поведением и паттернами, связанными с вашей собакой. Вы можете щелкнуть ЗДЕСЬ, чтобы получить простое руководство о том, что вам следует искать. В моем случае моя собака воет всякий раз, когда она взволнована или рада кого-то видеть, и периодически лает, когда нервничает или раздражается. В следующих нескольких шагах я объясню, как изменить мою программу, чтобы приспособиться к поведению вашей собаки.

Шаг 3: программирование

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

Ниже представлена программа Python, которую я использовал для своей собаки. На следующем этапе я объясню, как изменить программу для поведения вашей собаки. Пока не запускайте программу, так как она не будет работать, пока вы не выполните следующий шаг.

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

кора = 0

howl = False hold = 0 barkLength = 5 delay = 0 wait = 2 flag = 0 красный = 7 зеленый = 5 exitFlag = False

def toggleLightRed (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (красный, GPIO. OUT) GPIO.output (c, True) sleep (10) GPIO.output (c, False) print («Красный переключен»)

def toggleLightGreen (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (зеленый, GPIO. OUT) GPIO.output (c, True) спящий режим (10) GPIO.output (c, False) print («Зеленый переключен»)

def main ():

глобальный лай глобальный вой глобальный удерживающий глобальный лай

кусок = 8192

FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 threshold = 3000 max_value = 0 p = pyaudio. PyAudio () stream = p.open (формат = FORMAT, каналы = CHANNELS, rate = RATE, input = True, output = True, frames_per_buffer = chunk) GPIO.setmode (GPIO. BOARD) GPIO.setup (красный, GPIO. OUT) GPIO.setup (зеленый, GPIO. OUT) try: print "Detection initialized" while True: try: 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> threshold: delay = 0 hold = hold + 1 try: data = stream.read (chunk), кроме IOError как ex: if ex [1]! = Pyaudio.paInputOverflowed: поднять данные = '\ x00' * chunk as_ints = array ('h', data) max_value = max (as_ints) if hold> = barkLength: howl = True print "HOWL DETECTED" toggleLightGreen (зеленый) GPIO.cleanup () elif удерживайте> 0 и удерживайте

если _name_ == '_main_':

главный()

Шаг 4. Устранение неполадок и изменение

Устранение неполадок и изменение
Устранение неполадок и изменение
Устранение неполадок и изменение
Устранение неполадок и изменение
Устранение неполадок и изменение
Устранение неполадок и изменение

Настраивать

Перед запуском программы вам нужно будет ввести в Терминал следующее для установки PyAudio:

sudo apt-get intall python-pyaudio

После этого вы можете протестировать программу, чтобы убедиться, что она работает правильно.

Исправление проблем

Может возникнуть следующая ошибка:

IOError: [Errno Input overflowed] -9981

Чтобы исправить это, просто увеличивайте номер, присвоенный блоку переменной, до тех пор, пока ошибка не исчезнет.

Изменение

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

Переменные красный и зеленый относятся к выходным портам, которые будут использоваться для светодиодных индикаторов. Их можно изменить в соответствии с вашими потребностями.

Хотя я не использую активно переменную задержку в своей программе, можно заметить, что она указывает на частоту лая или воя.

Переменная hold указывает, сколько раз программа повторяет цикл, когда уровень шума превышает пороговое значение, и используется для определения того, имеет ли место вой. Эту переменную не следует изменять каким-либо образом, поскольку завывания обнаруживаются посредством манипуляций с переменной barkLength.

Пороговую переменную можно уменьшить, если лай не очень громкий, или повысить, если имеется фоновый шум, который можно ошибочно принять за шум, исходящий от собаки.

Шаг 5: Оборудование

Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение

Именно в этот момент у вас должна быть полностью работающая программа, которая отображает на экране, что будет делать оборудование. На этом этапе проекта вы должны решить, будет ли это стационарный микрофон, установленный в одном месте (например, в месте в доме, где собака обычно бывает или контактирует с посетителями), или проект будет минимизирован. и прикреплен к ошейнику собаки, чтобы обеспечить немедленную обратную связь с человеком, взаимодействующим с собакой.

Стационарный

Проще всего оставить все на макетной плате, поскольку не будет движения, которое могло бы отсоединить провода. Подключите катоды красных светодиодов к контакту заземления на Raspberry Pi, а аноды либо через резистор 330 Ом, либо прямо к контакту 7 Raspberry Pi. Сделайте то же самое с зелеными светодиодами, но подключите аноды к контакту 5. Запустите программу, и у вас должен быть завершенный проект после того, как вы изменили код в соответствии с вашими потребностями.

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

Я бы рекомендовал сначала завершить стационарную версию, чтобы убедиться, что все работает, а затем двигаться дальше, спаяв все вместе, чтобы никакие провода не отключались от движения собаки.

Прикрепите светодиоды к ошейнику так, чтобы они оба находились в удобном положении и чтобы кто-нибудь мог их видеть при приближении.

Затем подключите внешний источник питания, такой как тот, который показан ЗДЕСЬ, к raspberry pi и закрепите его на ошейнике удобным для собаки способом.

Как только все будет закреплено на месте, запустите программу, прикрепите ошейник к собаке, и все готово!

Рекомендуемые: