Mundarija:

Itlarning kayfiyatini aniqlash vositasi (Raspberry Pi): 5 qadam
Itlarning kayfiyatini aniqlash vositasi (Raspberry Pi): 5 qadam

Video: Itlarning kayfiyatini aniqlash vositasi (Raspberry Pi): 5 qadam

Video: Itlarning kayfiyatini aniqlash vositasi (Raspberry Pi): 5 qadam
Video: Дебильный лабиринт и холодный Гилман ► 10 Прохождение The Beast Inside 2024, May
Anonim
Itlarning kayfiyatini aniqlash vositasi (Raspberry Pi)
Itlarning kayfiyatini aniqlash vositasi (Raspberry Pi)

Bu ko'rsatma itning ovozini qabul qilish va ularga LED indikatorlari bilan yaqinlashish kerak yoki yo'qligini aniqlash uchun mo'ljallangan. Ko'pchilik it egalari o'z uy hayvonlarini bilishadi va ular bergan signallarni o'qiy olishadi, shuning uchun bu ko'rsatma asosan sizning itingiz bilan aloqa qiladigan begonalarga qaratilgan.

1 -qadam: qismlar

Qismlar
Qismlar
Qismlar
Qismlar
Qismlar
Qismlar

Sizga kerak bo'ladi:

  • Raspberry Pi
  • Qizil/Yashil LEDlar (X2)
  • Monitor
  • USB bilan sichqoncha/klaviatura
  • WiFi Dongle
  • Tashqi USB mikrofon
  • 330 ohmli rezistor (X2)

Ixtiyoriy qismlar

  • Tashqi Raspberry Pi quvvat manbai
  • It yoqasi

2 -qadam: protsedura

Jarayon
Jarayon

Loyihani boshlash uchun birinchi qadam - itingiz bilan bog'liq xatti -harakatlar va naqshlarni kuzatish. Siz qidirmoqchi bo'lgan narsalar haqida oddiy ko'rsatma olish uchun BU YERNI bosishingiz mumkin. Mening holatimda, itim kimnidir ko'rganidan hayajonlanganida yoki xursand bo'lganida yig'laydi va asabiylashganda yoki vaqti -vaqti bilan baqiradi. Keyingi bir necha qadamda men sizning itingizning xatti -harakatlariga moslashish uchun dasturimni qanday o'zgartirish kerakligini tushuntiraman.

3 -qadam: dasturlash

Dasturlash
Dasturlash

Quyida men itim uchun ishlatgan Python dasturi. Keyingi bosqichda men sizning itingizning xatti -harakatlari uchun dasturni qanday o'zgartirish kerakligini tushuntiraman. Dasturni ishga tushirmang, chunki u keyingi bosqichga o'tguncha ishlamaydi.

№!

qobig'i = 0

howl = False hold = 0 barkLength = 5 kechikish = 0 kutish = 2 bayroq = 0 qizil = 7 yashil = 5 chiqishFlag = Noto'g'ri

def toggleLightRed (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (qizil, GPIO. OUT) GPIO.output (c, True) uyqu (10) GPIO.output (c, False) chop etish ("Qizil o'chirilgan")

def toggleLightGreen (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (yashil, GPIO. OUT) GPIO.output (c, True) uyqu (10) GPIO.output (c, False) chop etish ("Yashil almashtirilgan")

def main ():

global qobiq global qichqiriq global tutish global qobiq Uzunlik global kechikish global bayroq global qizil global yashil

qism = 8192

FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 pol = 3000 max_value = 0 p = pyaudio. PyAudio () oqim = p.open (format = FORMAT, kanallar = KANALLAR, tezlik = RATE, kirish = To'g'ri, chiqish = To'g'ri, frames_per_buffer = chunk) GPIO.setmode (GPIO. BOARD) GPIO.setup (qizil, GPIO. OUT) GPIO.setup (yashil, GPIO. OUT) urinib ko'ring: "Aniqlash ishga tushirildi" ni chop eting, True: harakat qiling: data = stream.read (chunk) IOError tashqari, ex: if ex [1]! = pyaudio.paInputOverflowed: data = '\ x00' * chunk as_ints = array ('h', data) max_value = max (as_ints) while max_value> threshold: delay = 0 hold = ushlab turish+1 urinish: data = stream.read (chunk) IOError tashqari ex: if ex [1]! = Pyaudio.paInputOverflowed: data = '\ x00' * chunk as_ints = array ('h', data)) max_value = max (as_ints) hold hold> = barkLength: howl = "HOWL DETECTED" haqiqiy bosimi toggleLightGreen (yashil) GPIO.cleanup () elif ushlab turing> 0

agar _name_ == "_main_" bo'lsa:

asosiy ()

4 -qadam: Nosozliklarni tuzatish va o'zgartirish

Nosozliklarni tuzatish va o'zgartirish
Nosozliklarni tuzatish va o'zgartirish
Nosozliklarni tuzatish va o'zgartirish
Nosozliklarni tuzatish va o'zgartirish
Nosozliklarni tuzatish va o'zgartirish
Nosozliklarni tuzatish va o'zgartirish

Sozlash

Dasturni ishga tushirishdan oldin PyAudio -ni o'rnatish uchun terminalga quyidagilarni kiritish kerak bo'ladi:

sudo apt-get intall python-pyaudio

Shundan so'ng siz dasturning to'g'ri ishlashini tekshirish uchun uni ishga tushirishingiz mumkin.

Muammolarni bartaraf qilish; nosozliklarni TUZATISH

Siz quyidagi xatolarga duch kelishingiz mumkin:

IOError: [Errno Input overflowed] -9981

Buni tuzatish uchun, xato paydo bo'lmaguncha, o'zgarmaydigan qismga berilgan sonni ko'paytirish kifoya.

O'zgartirish

BarkLength o'zgaruvchisi shovqinni qobiq sifatida emas, balki yig'lash sifatida ko'rishidan oldin dasturning necha marta aylanishini belgilaydi. Agar sizning itlaringiz qichqirsa, lekin faqat qisqa vaqt ichida shunday qilsa, bu sonni kamaytirish kerak.

Qizil va yashil o'zgaruvchilar LED ko'rsatkichlari uchun ishlatiladigan chiqish portlarini bildiradi. Bular sizning ehtiyojlaringizga mos ravishda o'zgartirilishi mumkin.

Men o'z dasturimda o'zgarmaydigan kechikishni faol ishlatmasam -da, u baqirish yoki yig'lashning tezligini ko'rsatadi.

O'zgaruvchan ushlab turish shovqin darajasi ostonadan yuqori bo'lgan dasturning necha marta aylanayotganini bildiradi va yig'layotganini aniqlash uchun ishlatiladi. Bu o'zgaruvchini hech qanday tarzda o'zgartirish mumkin emas, chunki barkLength o'zgaruvchisining manipulyatsiyasi orqali yig'lar aniqlanadi.

Agar qobiq juda baland bo'lmasa yoki baland ko'tarilmasa, pol qiymatini pasaytirish mumkin.

5 -qadam: Uskuna

Uskuna
Uskuna
Uskuna
Uskuna
Uskuna
Uskuna

Aynan shu vaqtda sizda apparat nima qilayotganini ko'rsatadigan to'liq ishlaydigan dastur bo'lishi kerak. Loyihaning bu nuqtasi - bu bitta joyga o'rnatilgan statsionar mikrofon bo'ladimi yoki yo'qmi (masalan, it odatda tashrif buyuradigan yoki tashrif buyuruvchilar bilan aloqa qiladigan uydagi joy) yoki loyihani minimallashtirish to'g'risida qaror qabul qilish kerak. va it bilan muloqotda bo'lgan odamga zudlik bilan javob berish uchun itning yoqasiga bog'langan.

Statsionar

Eng oson narsa - hamma narsani non taxtasida qoldirish, chunki simlarni ajratib oladigan harakat bo'lmaydi. Qizil LEDlarning katodlarini Raspberry Pi va Anodlarning Ground piniga 330 ohmli rezistor orqali yoki to'g'ridan -to'g'ri Raspberry Pi ning 7 -piniga ulang. Yashil LEDlar bilan ham shunday qiling, lekin Anodlarni 5 -pinga ulang. Dasturni ishga tushiring va kodni o'z ehtiyojlaringizga o'zgartirib bo'lgach, sizda tugallangan loyiha bo'lishi kerak.

Statsionar bo'lmagan

Men hamma narsani ishlayotganiga ishonch hosil qilish uchun avval statsionar versiyani to'ldirishni maslahat berardim, so'ngra itning harakatidan simlar uzilmasligi uchun hamma narsani bir -biriga lehimlab qo'yish kerak edi.

LEDlarni yoqaga ulang, shunda ular ikkalasi ham qulay holatda bo'ladi va yaqinlashganda kimdir ularni ko'ra oladi.

Keyin tashqi quvvat manbaini mana bu erda malina pi ga ulang va uni yoqaga itga qulay qilib mahkamlang.

Hammasi joyiga qo'yilgach, davom eting va dasturni ishga tushiring, yoqani itga mahkamlang, shunda ishingiz tugadi!

Tavsiya: