Kazalo:

Samodejno sledenje Water Blaster: 9 korakov
Samodejno sledenje Water Blaster: 9 korakov

Video: Samodejno sledenje Water Blaster: 9 korakov

Video: Samodejno sledenje Water Blaster: 9 korakov
Video: Тест каравана в -25° . Ночёвка зимой. Как не замёрзнуть? 2024, November
Anonim
Samodejno sledenje Water Blaster
Samodejno sledenje Water Blaster

Jeleni, ki jedo vrtnice, so me motivirali, da zgradim vodni blaster za sledenje tarči, ki bo pomagal odvrniti požrešne bitje … Ta vodni blaster uporablja video zaznavanje gibanja, da usmeri servo in sproži kratke izbruhe vode v tarčo. Strelja šele potem, ko pridobljena tarča miruje nekaj sekund (zamik lahko prilagodite v kodi). Ne zanima me, če jeleni samo hodijo mimo, če pa se ustavijo na prigrizku, sploosh!

Tukaj je videoposnetek, kako testiram vodni blaster:

Vodni blaster je samostojna škatla, ki jo lahko na daljavo povežete (prek wi-fi/VNC) iz katerega koli računalnika v omrežju in spremljate, kaj počne. Vsakič, ko se sproži, posname sliko, tako da lahko kasneje vidite, kaj se je razstrelilo.

Uporabil sem Raspberry Pi, NoIR cam, IR osvetljevalec, standardni linearni servo in vodni ventil, da sem ustvaril ta dan/noč vodni blaster za sledenje tarči. Koda je napisana v Pythonu in se v veliki meri izposoja iz vzorcev kode cv2 za obdelavo slik Adriana Rosebrocka. Njegovo pisanje si lahko ogledate na:

www.pyimagesearch.com/2015/06/01/home-surv…

Ker grem za relativno velikimi kopenskimi tarčami (jeleni), je moj problem nekoliko poenostavljen. Potrebujem le vodoravno usmerjanje, da se lahko izognem uporabi samo enega servomotorja. Čakanje, da jelen miruje, mi pomaga odpraviti veliko lažnih sprožilcev. To je moj poskus rev-0 in našel sem nekaj stvari, ki bi jih spremenil, če bi zgradil še eno. Te stvari sem opazil v podrobnem zapisu, ki sledi.

1. korak: Koda

Vodni blaster za obdelavo uporablja Raspberry Pi 3. Za snemanje videa se uporablja noir Raspberry Pi kamera skupaj z IR osvetljevalnikom za nočni video. Paket OpenCV/cv2 Python se uporablja za zajemanje in obdelavo slikovnih informacij ter izračun ciljnih koordinat. Knjižnica pigpio se uporablja za nadzor gpio za stabilno servo delovanje. Uporaba običajnega paketa RPi. GPIO je povzročila tresoč servo. OPOMBA: Ko uporabljate knjižnico pigpio, morate zagnati demon pigpio. Dodajte to v zagonsko datoteko vašega Pi /etc/rc.local za datoteko pigpio lib in vmesnik kamere Raspberry Pi:

/etc/rc.local# Nastavite/dev/video0 za povezavo z vgrajenim vmesnikom kamere Raspberry Pimodprobe bcm2835-v4l2# Zaženite demon pigpio za nadzorno knjižnico Raspberry Pi Ippiod

Za več podrobnosti glejte

Izvorna koda se imenuje: water_blaster.py in je priložena spodaj.

Izjava o omejitvi odgovornosti: Nov sem v kodiranju Pythona, zato ga ne obravnavajte kot odličen model kodiranja Python!

Osnovni algoritem je naslednji:

  • Zgrabite začetni video referenčni okvir. To bo uporabljeno za primerjavo proti zaznavanju gibanja.
  • Vzemite drug okvir.
  • Okvir pretvorite v sivo lestvico, ga prilagodite velikosti in zameglite.
  • Izračunajte razliko od referenčnega okvira
  • Filtrirajte majhne razlike in dobite koordinate največje razlike.
  • Nastavite časovnik. Če se koordinata cilja za nekaj sekund ne spremeni, potem fotografirajte, kaj bomo streljali, in sprožite vodni ventil za pišu vode. Pomaknite servo naprej in nazaj za nekaj stopinj, da bi dobili "puško".
  • Če prehitro dobimo tri sprožilce, onemogočimo fotografiranje, se malo ustavimo, nato posodobimo referenčni okvir, saj morda streljamo na senco ali svetlobo na verandi, ki se je ravnokar prižgala …
  • Vsakih nekaj minut posodobite referenčni okvir, da upoštevate nizkofrekvenčne spremembe (sončni vzhod/zahod, oblačno premikanje itd.)

Uporabljam samo vodoravni mehanizem za usmerjanje, vendar je na EBayu na voljo veliko servo nosilcev za pomikanje/nagibanje in če bi želeli natančnejše ciljanje, bi bilo enostavno dodati še en servo za nadzor navpičnega ciljanja.

Raspberry Pi sem nastavil, da deluje kot strežnik VNC, nato pa se povežem z njim prek prenosnega računalnika VNC, da zaženem program in spremljam video in dnevnike. cd v imenik, kjer shranjujete water_blaster.py, in ga zaženite tako, da vnesete:

./python water_blaster.py

Odprlo se bo okno video monitorja, zagnalo datoteko dnevnika z imenom "./log_[date]_[time] in ustvarilo poddirektor z imenom" trigger_pictures ", kjer so shranjene datoteke-j.webp

Tu je nekaj opomb o nastavitvi VNC na vašem Raspberry Pi:

Ko sem prvič nastavil Raspberry Pi, sem za nastavitev uporabil zunanji monitor/tipkovnico/miško. Tam sem omogočil strežnik VNC v konfiguraciji RasPi (Logotip Raspberry / Nastavitve / Konfiguracija Raspberry Pi / Vmesniki / Preveri možnost VNC). Potem, ko se zažene, se lahko povežete z njegovim prikazom: 0 prek odjemalca VNC (z enakimi poverilnicami kot privzeti uporabnik "pi").

V načinu brez glave privzeto prikaže zaslon z zelo majhno ločljivostjo (saj ne zazna nobenega zaslona). Če ga želite prisiliti na neko večjo ločljivost, to dodate v /boot/config.txt in znova zaženete:

# Uporabite, če imate zaslon# hdmi_ignore_edid = 0xa5000080hdmi_group = 2# 1400x1050 w/ 60Hz# hdmi_mode = 42# 1356x768 w/ 60Hzhdmi_mode = 39

Še nekaj informacij:

2. korak: Elektronika

Zahteve za elektroniko vodnega blasterja so minimalne, če uporabljate Raspberry Pi 3 gpio za pogon servo, vodnega ventila in IR osvetljevalnika prek diskretnih tranzistorskih vmesnikov (zgrajenih na majhni proto plošči). Standardna kamera NoIR se priključi neposredno na Raspberry Pi.

Ime sheme je: water_blaster_schematic.pdf in je priloženo spodaj.

Za Raspberry Pi sem uporabil namensko napajanje 5v/2.5A in napajanje 12v/1A za pogon IR osvetljevalnika in vodnega ventila. 12v napajanje poganja tudi regulator 5v za napajanje servo servera 5v. To je bilo storjeno, da bi bila "hrupna" krmilna moč motorja izolirana od napajanja Raspberry Pi 5v. Napajanje 12v/1A se je izkazalo za čisto na meji (pravzaprav nekoliko več, ko sem dodal ventilator). Koda izklopi IR osvetljevalec, preden vklopi rele vodnega ventila, da ohrani tok v dosegu … Bolje bi bilo, če bi uporabili napajanje 1,5A. Priključite ozemljitvene sponke vseh napajalnikov skupaj.

Modul kamere je standardna različica NoIR, ki se neposredno priključi na Raspberry Pi. Gre za kamero Raspberry Pi z že odstranjenim IR filtrom, ki omogoča uporabo z IR osvetljevalnikom za snemanje nočnega videa.

Uporabljen servo motor je standardni linearni servo 5V z navorom 3-4 kg-cm.

IR osvetljevalec je bil poceni 48 -obročni LED obroček, ki sem ga našel na EBayu za približno 4 USD. Ni super močan in lahko osvetli le do 15 čevljev. Če imate dodaten proračun, bi bil močnejši osvetljevalec dober napredek.

V gpio23 sem dodal »stikalo za odpravljanje napak«. Koda preveri stanje stikala in če pritisnete, onemogočite rele vodnega ventila za testiranje suhega ognja. Mislil sem, da bom s tem stikalom naredil več, vendar ga na koncu sploh nisem uporabil. Odstranil bi ga in kodo, ki ga išče …

3. korak: Konstrukcija: kamera in IR osvetljevalec

Konstrukcija: Kamera in IR osvetljevalec
Konstrukcija: Kamera in IR osvetljevalec

Kot ohišje sem uporabil plastično škatlo za strelivo Harbour Freight. V glavnem sem potreboval nekaj vodoodpornega, saj je veliko vodnega pršenja/odtekanja neizogibno. Obstaja veliko lukenj/izrezov, vendar so pokriti s tendami, iz prozorne plastike ali pa so izvrtani pod previsi za prelivanje vode. V zadnjem pogledu bi moral uporabiti kovinsko škatlo z notranjimi hladilnimi elementi, pritrjenimi na komponente velike moči. S tem mislim, da bi se lahko izognil dodajanju ventilatorja. Plastična škatla je bila preveč izolirana in je dopuščala, da se je notranja temperatura preveč dvignila.

Na koncu je bilo izrezano majhno okno, da je kamera lahko gledala, IR osvetljevalec pa je bil nameščen v starem plastičnem ohišju za leče, ki sem ga imel naokoli.

4. korak: Gradnja: cevovodi za vodo

Konstrukcija: vodovod
Konstrukcija: vodovod
Konstrukcija: vodovod
Konstrukcija: vodovod

Dovod vode je speljan v 12v vodni ventil, ki je povezan z vin”ID x 3/8” OD vinilno cevjo. Ta je nato povezan z ¼”bodečo cevjo do PVC priključka, ki se prilega ¾” in prilepljen na ¾”PVC pokrovček za vodo z 1/16” luknjo, izvrtano za vodni tok. Želel sem ohraniti rele vodnega ventila pred vremenskimi vplivi, tako da je nameščen znotraj škatle. Obstaja nevarnost, da bi lahko prišlo do puščanja, vendar sem izvrtal odtočne luknje na dnu škatle in elektroniko namestil visoko navzgor, da bi v tem primeru zmanjšali možnost morebitnih poškodb elektronike zaradi vode. Manj estetsko prijeten, a varnejši načrt bi bil namestitev ventila na zunanjo stran in napeljavo 12 -voltnih relejnih žic v notranjost. Prozorna plastična plošča nad servo je bil primeren način za namestitev konca cevi in preprečuje kapljanje vode na servo. Ventilator je bil premišljen, saj se je škatla preveč segrevala. Nad njo sem zgradil malo tendo, da voda ne kaplja.

5. korak: Gradnja: usmerjanje servo

Konstrukcija: Ciljanje servo
Konstrukcija: Ciljanje servo

Na vrhu škatle je izrezana luknja, nameščen je servo pogon in zapečaten s silikonom, da ohrani vodo.

Korak 6: Konstrukcija: Namestitev napajalnikov, ventilatorja, Raspberry Pi in proto plošče

Konstrukcija: Montaža napajalnikov, ventilatorja, Raspberry Pi in proto plošče
Konstrukcija: Montaža napajalnikov, ventilatorja, Raspberry Pi in proto plošče

Dva napajalnika (5v in 12v) sta priključena na en sam napajalni kabel, ki izstopa ob strani škatle. Raspberry Pi in proto plošča sta nameščeni na strani škatle blizu vrha. Opazite, da so odtočne luknje izvrtane na dnu in odprtine za odzračevanje, izvrtane vzdolž zgornjega roba. Ventilator je nameščen nasproti Raspberry Pi. Stikala za vklop/izklop ni, saj ne želim spodbujati izklopa Raspberry Pi brez uradnega ukaza "sudo shutdown now" (torej ne želim, da se napajanje izklopi preveč enostavno).

7. korak: Konstrukcija: Proto Board

Konstrukcija: Proto Board
Konstrukcija: Proto Board

Proto plošča vsebuje regulator 5V, pokrovček filtra, napajalne tranzistorje (ki poganjajo servo in vodni ventil) in stikalo za odpravljanje napak.

8. korak: Konstrukcija: Raspberry Pi kamera

Konstrukcija: Raspberry Pi Camera
Konstrukcija: Raspberry Pi Camera

Odmikalnik Raspberry Pi se prek trakovnega kabla poveže neposredno z Raspberry Pi in je nameščen na prozorni plastični plošči, ki pokriva izrez za ogled na sprednji strani škatle.

9. korak: Seznam delov

Na koncu je projekt stal okoli 120 dolarjev. Večino stroškov projekta predstavlja Raspberry Pi, kamera, servo in napajalniki. Večino delov sem našel na EBayu ali Amazonu, vodovodne dele pa v lokalni trgovini s strojno opremo.

  • Raspberry Pi 3 (Amazon) 38 dolarjev
  • NoIR kamera (EBay) 30 USD
  • 5v analogni servo (navor 4 kg-cm) (EBay) 10 USD
  • 5v/2.4A stenski napajalnik (EBay) 8 USD
  • 12v ½”vodni ventil (EBay) 5 USD
  • Cevi, spojke za cevi (Osh) 5 USD
  • Plastična škatla za strelivo (pristaniški tovorni promet) 5 USD
  • 12v/1.5A stenski napajalnik (EBay) 5 USD
  • IR osvetljevalec (EBay) 4 USD
  • Razno Komponente (upori, stikala, diode) 2 USD
  • CPU ventilator (EBay) 2 USD
  • Proto Board, stojala, vijaki (EBay) 2 USD
  • (2) Močni tranzistorji (2n5296) (EBay) 1 USD
  • Regulator 5v (LM7805) (EBay) 1 USD
  • Čista plastika 3/32”(Tapnite Plastika Razno. Koš) 1 USD
  • Napajalni kabel (Osh) 1 USD

Trgovine/spletna mesta, kjer sem kupil izdelke:

  • Alice1101983 Spletno mesto EBay:
  • 2bevoque spletno mesto EBay:
  • Harbour Freight
  • Strojna oprema za dobavo sadovnjakov
  • Amazon
  • Dotaknite se Plastika

Priporočena: