Turinys:
- 1 žingsnis: dalys
- 2 žingsnis: procedūra
- 3 žingsnis: programavimas
- 4 žingsnis: trikčių šalinimas ir keitimas
- 5 žingsnis: Aparatūra
Video: Šuns nuotaikos detektorius (Raspberry Pi): 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Š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
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
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
Ž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
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
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:
1 USD vertės LED nuotaikos lempa su ATtiny13 ir WS2812: 7 žingsniai
1 USD vertės LED nuotaikos lempa su ATtiny13 ir WS2812: tai nebrangi nuotaikos lempa su keturiais režimais. Vaivorykštės kibirkštis. Šviesos kibirkštis kartas nuo karto juda aukštyn ir pamažu keičia spalvą.2. Vaivorykštės švytėjimas. Stabilus švytėjimas, kuris palaipsniui keičia spalvą.3. Žvakės ugnies modeliavimas.4. Išjungta. Galite
Šuns maitinimo priminimas: 5 žingsniai
Šuns maitinimo priminimas: jei jūsų namuose taip pat yra šuo, jums gali prireikti šios mašinos, kad ji primintų, kad reikia šerti savo šunį, arba naudodama ją primindama, kada reikia vaikščioti. Ši mašina yra labai maža, todėl ją lengva nešiotis visiems, ir ji yra labai
Nepamirškite šerti šuns: 3 žingsniai
Nepamirškite šerti šuns: tai atsitiko per daug kartų! Aš pažvelgiau į maisto ar vandens dubenį ir jis buvo tuščias. Ilgą laiką norėjau išmokti naudotis „Arduino“, todėl supratau, kad tai bus geras pradinis projektas, norėjau iš pirmo žvilgsnio sužinoti, koks žemas yra maistas ir vat
Šuns robotas: „Lego Robot Rover“su kamera: 17 žingsnių (su nuotraukomis)
Šuns robotas: „Lego Robot Rover“su kamera: Štai kaip sukurti „Lego“robotą, kurį galite valdyti iš bet kurio ekrano per „Wi -Fi“. Jis taip pat turi internetinę kamerą, kad galėtumėte pamatyti, kur einate, ir LED lemputes akims! Tai puikus projektas, kurį galite padaryti su savo vaikais, nes jie gali sukurti logotipą, o jūs galite
Šuns pavadėlio trikojo diržas: 3 žingsniai
Šuns pavadėlio trikojis Aš ieškojau per savo spintą bet kokios virvės, bet radau šunų pavadėlį, kurio daugiau nenaudojome. Šis šunų pavadėlis yra apie 5 pėdų