Turinys:

Šuns nuotaikos detektorius (Raspberry Pi): 5 žingsniai
Šuns nuotaikos detektorius (Raspberry Pi): 5 žingsniai

Video: Šuns nuotaikos detektorius (Raspberry Pi): 5 žingsniai

Video: Šuns nuotaikos detektorius (Raspberry Pi): 5 žingsniai
Video: How to make Metal Detector using Multimeter 2024, Lapkritis
Anonim
Šuns nuotaikos detektorius (Raspberry Pi)
Šuns nuotaikos detektorius (Raspberry Pi)

Ši instrukcija skirta šuns skleidžiamiems garsams atpažinti ir nustatyti, ar prie jų prieiti, ar ne su indikatoriaus šviesos diodais. Dauguma šunų savininkų žino savo augintinius ir gali perskaityti jų duodamus signalus, todėl ši instrukcija dažniausiai skirta nepažįstamiems žmonėms, kurie gali liestis su jūsų šunimi.

1 žingsnis: dalys

Dalys
Dalys
Dalys
Dalys
Dalys
Dalys

Jums reikės:

  • Raspberry Pi
  • Raudoni/žali šviesos diodai (X2)
  • Monitorius
  • Klaviatūra/pelė su USB
  • „WiFi“raktas
  • Išorinis USB mikrofonas
  • 330 omų rezistorius (X2)

Papildomos dalys

  • Išorinis Raspberry Pi maitinimo šaltinis
  • Šuns antkaklis

2 žingsnis: procedūra

Procedūra
Procedūra

Pirmasis žingsnis pradedant šį projektą yra stebėti elgesį ir modelius, susijusius su jūsų šunimi. Spustelėkite ČIA, kad gautumėte paprastą vadovą apie tai, ko turėtumėte ieškoti. Mano atveju, mano šuo staugia kiekvieną kartą, kai jaudinasi ar džiaugiasi ką nors matydamas, ir periodiškai loja, kai nervinasi ar pasunkėja. Kituose žingsniuose paaiškinsiu, kaip pakeisti savo programą, kad ji atitiktų jūsų šuns elgesį.

3 žingsnis: programavimas

Programavimas
Programavimas

Žemiau yra „Python“programa, kurią naudoju savo šuniui. Kitame žingsnyje paaiškinsiu, kaip pakeisti savo šuns elgesio programą. Dar nepaleiskite programos, nes ji neveiks, kol neatliksite kito veiksmo.

#!/usr/bin/pythonimport pyaudio import sys importavimo gija iš laiko importo miego iš masyvo importo masyvo importavimo RPi. GPIO kaip GPIO

žievė = 0

kaukimas = klaidingas sulaikymas = 0 žievės ilgis = 5 uždelsimas = 0 laukimas = 2 vėliava = 0 raudona = 7 žalia = 5 išėjimasFlag = klaidinga

def toggleLightRed (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (raudona, GPIO. OUT) GPIO.output (c, True) miego režimas (10) GPIO.putput (c, False) spausdinimas („Raudona perjungta“)

def toggleLightGreen (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (žalia, GPIO. OUT) GPIO.output (c, True) miego režimas (10) GPIO.putput (c, False) spausdinimas („žalia perjungta“)

def main ():

global bark global howl global hold global hold

gabalas = 8192

FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 slenkstis = 3000 max_value = 0 p = pyaudio. PyAudio () stream = p.open (format = FORMAT, channels = CHANNELS, rate = RATE, input = True, output = True, frame_per_buffer = gabalas) GPIO.setmode (GPIO. BOARD) GPIO.setup (raudona, GPIO. OUT) GPIO.setup (žalia, GPIO. OUT) bandyti: spausdinti „Aptikimas inicijuotas“, o tiesa: try: data = stream.read (gabalas), išskyrus IOError kaip ex: if ex [1]! = pyaudio.paInputOverflowed: raise data = '\ x00' * chunk as_ints = array ('h', data) max_value = max (as_ints), o max_value> slenkstis: delay = 0 palaikymas = sulaikymas+1 bandymas: duomenys = srautas. Skaitymas (dalis), išskyrus IOError kaip pvz: jei ex [1]! = Pyaudio.paInputOverflowed: padidinkite duomenis = '\ x00' * dalis as_ints = masyvas ('h', duomenys) max_value = max (as_ints) if hold> = barkLength: howl = True print "HOWL DETECTED" toggleLightGreen (žalia) GPIO.cleanup () elif hold> 0 and hold

jei _vardas_ == '_main_':

pagrindinis ()

4 žingsnis: trikčių šalinimas ir keitimas

Trikčių šalinimas ir keitimas
Trikčių šalinimas ir keitimas
Trikčių šalinimas ir keitimas
Trikčių šalinimas ir keitimas
Trikčių šalinimas ir keitimas
Trikčių šalinimas ir keitimas

Sąranka

Prieš paleisdami programą, norėdami įdiegti „PyAudio“, į terminalą turėsite įvesti:

sudo apt-get intall python-pyaudio

Po to galite išbandyti programą ir įsitikinti, kad ji veikia tinkamai.

Problemų sprendimas

Galite patirti šią klaidą:

IOError: [klaidos įvestis perpildyta] -9981

Norėdami tai išspręsti, tiesiog padidinkite kintamojo daliai priskirtą skaičių, kol klaida nebebus rodoma.

Modifikavimas

Kintamasis „barkLength“nurodo, kiek kartų programa cikliuoja, kol triukšmas nebebus vertinamas kaip žievė, o kaip kaukimas. Jei jūsų šunys staugia, bet tai daro tik trumpą pliūpsnį, turėtumėte sumažinti šį skaičių.

Kintamieji raudona ir žalia nurodo išvesties prievadus, kurie bus naudojami LED indikatoriams. Jie gali būti pakeisti pagal jūsų poreikius.

Nors savo programoje aktyviai nenaudoju kintamojo vėlavimo, galima pastebėti, kad tai rodo lojimo ar kaukimo dažnumą.

Kintamasis sulaikymas nurodo, kiek kartų programa cikliuoja, kai triukšmo lygis yra didesnis už slenkstį, ir naudojamas nustatyti, ar vyksta kaukimas. Šis kintamasis jokiu būdu neturėtų būti modifikuojamas, nes kaukimas aptinkamas manipuliuojant kintamuoju „barkLength“.

Slenksčio kintamąjį galima sumažinti, jei žievė nėra labai garsi arba pakelta, jei yra foninis triukšmas, kurį galima neteisingai suprasti kaip šuns skleidžiamą triukšmą.

5 žingsnis: Aparatūra

Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga

Būtent šiuo metu turėtumėte turėti visiškai veikiančią programą, kuri ekrane parodys, ką darys aparatūra. Šiame projekto taške turėtumėte nuspręsti, ar tai bus stacionarus mikrofonas, pastatytas vienoje vietoje (pvz., Vieta namuose, kur šuo paprastai lankosi ar liečiasi su lankytojais), ar projektas bus sumažintas iki minimumo. ir pritvirtintas prie šuns apykaklės, kad nedelsiant suteiktų grįžtamąjį ryšį su šunimi bendraujančiam asmeniui.

Stacionarus

Lengviausia viską palikti ant duonos lentos, nes nebus jokių judesių, galinčių atjungti laidus. Prijunkite raudonų šviesos diodų katodus prie Raspberry Pi ir anodų įžeminimo kaiščio per 330 omų rezistorių arba tiesiai į Raspberry Pi 7 kaištį. Darykite tą patį su žaliais šviesos diodais, bet prijunkite anodus prie 5 kaiščio. Vykdykite programą ir turėsite užbaigtą projektą, kai tik pakeisite kodą pagal savo poreikius.

Nestacionarus

Rekomenduočiau pirmiausia užpildyti stacionarią versiją vien tam, kad įsitikintumėte, jog viskas veikia, o tada judėkite toliau, lituodami viską, kad jokie laidai neatsijungtų nuo šuns judesio.

Pritvirtinkite šviesos diodus prie apykaklės, kad jie abu būtų patogioje padėtyje ir kad juos kas nors galėtų matyti artėjant.

Tada prijunkite išorinį maitinimo šaltinį, pvz., Čia matomą prie aviečių pi ir pritvirtinkite jį prie apykaklės taip, kaip patogu šuniui.

Kai viskas bus pritvirtinta, eikite į priekį ir paleiskite programą, pritvirtinkite antkaklį prie šuns ir baigsite!

Rekomenduojamas: