Sadržaj:

Automatsko praćenje vodenog blastera: 9 koraka
Automatsko praćenje vodenog blastera: 9 koraka

Video: Automatsko praćenje vodenog blastera: 9 koraka

Video: Automatsko praćenje vodenog blastera: 9 koraka
Video: Transform Your Video Editing Skills with the Ultimate DaVinci Resolve (Free V.) Guide for Beginners 2024, Novembar
Anonim
Water Blaster sa automatskim praćenjem
Water Blaster sa automatskim praćenjem

Jeleni koji jedu ruže motivirali su me da napravim vodeni blaster za praćenje ciljeva koji će pomoći u odvraćanju od proždrljivih stvorenja … Ovaj vodeni blaster koristi video detekciju pokreta kako bi usmjerio servo i pokrenuo kratke rafale vode u metu. Puca tek nakon što zadobijena meta miruje nekoliko sekundi (kašnjenje se može podesiti u kodu). Nije me briga da li jeleni samo prolaze, ali ako svrate na užinu, sploosh!

Evo video snimka na kojem testiram vodeni blaster:

Water blaster je samostalna kutija koja se može daljinski povezati (putem wi-fi/VNC) sa bilo kojeg računara na vašoj mreži kako bi nadgledala šta radi. On snima sliku svaki put kada se aktivira, tako da kasnije možete vidjeti šta je sve uništeno.

Koristio sam Raspberry Pi, NoIR kameru, IR osvjetljivač, standardni linearni servo i vodeni ventil za stvaranje ovog danonoćnog ciljanog vodenog blastera za praćenje. Kôd je napisan na Pythonu i velikim dijelom posuđuje uzorke koda cv2 za obradu slika Adriana Rosebrocka. Njegovo pisanje možete pogledati na:

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

Budući da lovim relativno velike kopnene mete (jelene), moj problem je donekle pojednostavljen. Potrebno mi je samo horizontalno ciljanje kako bih se mogao izvući koristeći samo jedan servo. Čekanje da jelen stane mi pomaže u uklanjanju mnogih lažnih okidača. Ovo je moj pokušaj rev-0 i pronašao sam nekoliko stvari koje bih izmijenio da napravim još jednu. Zabeležio sam ove stvari u detaljnom tekstu koji sledi.

Korak 1: Kôd

Blaster za vodu koristi Raspberry Pi 3 za obradu. Za snimanje videa koristi se NoIR Raspberry Pi kamera zajedno s IC iluminatorom za noćni video. Paket OpenCV/cv2 Python koristi se za snimanje i obradu informacija o slici i izračunavanje koordinata cilja. Biblioteka pigpio koristi se za kontrolu gpio -a za stabilan rad serva. Korištenje običnog RPi. GPIO paketa rezultiralo je drhtavim servom. NAPOMENA: Kada koristite pigpio biblioteku, morate pokrenuti demon pigpio. Dodajte ovo u početnu datoteku vašeg Pi /etc/rc.local za pigpio lib i sučelje kamere Raspberry Pi:

/etc/rc.local# Podesite/dev/video0 za povezivanje sa Raspberry Pi ugrađenim interfejsom kameremodprobe bcm2835-v4l2# Pokrenite demon pigpio za Raspberry Pi IO kontrolnu bibliotekupigpiod

Za više detalja pogledajte

Izvorni kod se zove: water_blaster.py i dolje je priložen.

Odricanje od odgovornosti: Ja sam tek prvi u Python kodiranju pa ga nemojte tretirati kao neki sjajan model Python stila kodiranja!

Osnovni algoritam je sljedeći:

  • Uhvatite početni video referentni okvir. Ovo će se koristiti za upoređivanje radi otkrivanja pokreta.
  • Uzmite drugi okvir.
  • Pretvorite okvir u sivu ljestvicu, povećajte veličinu i zamaglite ga.
  • Izračunajte razliku od referentnog okvira
  • Filtrirajte male razlike, dobijte koordinate najveće razlike.
  • Postavite tajmer. Ako se koordinata mete ne promijeni nekoliko sekundi, tada fotografirajte ono što ćemo snimiti i aktivirajte ventil za vodu za eksploziju vode. Pomerite servo napred -nazad nekoliko stepeni za eksploziju "sačmarice".
  • Ako prebrzo dobijemo tri okidača, onemogućimo snimanje, malo zastanemo, a zatim ažuriramo referentni okvir jer možda snimamo u sjeni ili svjetlu na verandi koje je upravo uključeno …
  • Svakih nekoliko minuta ažurirajte referentni okvir kako biste uzeli u obzir promjene niske frekvencije (izlazak/zalazak sunca, naoblačenje, useljenje itd.)

Koristim samo vodoravni mehanizam za ciljanje, ali mnogi servo nosači za pomicanje/naginjanje dostupni su na EBayu i bilo bi lako dodati još jedan servo za kontrolu okomitog ciljanja ako želite preciznije ciljanje.

Postavio sam Raspberry Pi da radi kao VNC server, a zatim se povežem na njega putem VNC -a sa svog prijenosnog računala da pokrenem program i nadgledam video zapise i zapisnike. cd u direktorij u koji pohranjujete water_blaster.py i pokrenite ga upisivanjem:

./python water_blaster.py

Otvorit će prozor video monitora, pokrenuti datoteku dnevnika pod nazivom "./log_[date]_[time] i stvoriti poddir pod nazivom" trigger_pictures "u kojem su pohranjene-j.webp

Evo nekoliko napomena o postavljanju VNC -a na vašem Raspberry Pi:

Prvi put kada sam postavljao Raspberry Pi, koristio sam vanjski monitor/tastaturu/miš za postavljanje stvari. Tamo sam omogućio VNC server u RasPi konfiguraciji (Raspberry Logo / Preferences / Raspberry Pi Configuration / Interfaces / Check VNC option). Nakon toga, kada se pokrene, omogućava vam da se povežete na njegov: 0 prikaz putem VNC klijenta (sa istim vjerodajnicama kao zadani korisnik "pi").

U načinu rada bez glave prema zadanim postavkama prikazuje zaslon vrlo male rezolucije (jer ne detektira nikakav prikaz), da biste ga prisilili na neku veću rezoluciju, ovo dodajete u /boot/config.txt i ponovo pokrećete:

# Koristite ako imate ekran# hdmi_ignore_edid = 0xa5000080hdmi_group = 2# 1400x1050 w/ 60Hz# hdmi_mode = 42# 1356x768 w/ 60Hzhdmi_mode = 39

Evo još nekih informacija:

Korak 2: Elektronika

Zahtjevi za elektroniku vodenog blastera su minimalni ako se pomoću Raspberry Pi 3 gpio pokreće servo, ventil za vodu i IC iluminator putem diskretnih tranzistorskih međuspremnika (izgrađeno na maloj proto ploči). Standardna NoIR kamera se priključuje direktno na Raspberry Pi.

Naziv sheme je: water_blaster_schematic.pdf i dolje je priložen.

Koristio sam namjensko napajanje od 5v/2.5A za Raspberry Pi i napajanje od 12v/1A za pogon IR iluminatora i ventila za vodu. Napajanje od 12 volti također pokreće regulator od 5 volti za napajanje servo servera od 5 volti. To je učinjeno kako bi „bučna“snaga upravljanja motorom bila izolirana od napajanja Raspberry Pi 5v. Pokazalo se da je napajanje 12v/1A na granici (zapravo malo više kad sam dodao ventilator). Kod isključuje IC osvjetljivač prije nego što se napaja relej ventila za vodu kako bi se struja zadržala u rasponu … Bilo bi bolje da koristite napajanje od 1,5A. Obavezno spojite uzemljene terminale svih izvora napajanja.

Modul kamere je standardna NoIR verzija koja se direktno priključuje na Raspberry Pi. To je Raspberry Pi kamera sa već uklonjenim IC filterom što joj omogućuje da se koristi s IC iluminatorom za snimanje noćnog videa.

Koristi se servo standardne veličine 5v linearni servo sa 3-4 kg-cm obrtnog momenta.

IC iluminator je bio jeftin 48 LED prsten koji sam našao na EBayu za oko 4 USD. Nije super jak i može osvijetliti samo do 15 stopa. Ako imate dodatni budžet, nabavka jačeg iluminatora bila bi dobro poboljšanje.

Dodao sam “debug-switch” u gpio23. Kôd provjerava stanje prekidača i ako se pritisne, onemogućit će relej ventila za vodu radi ispitivanja na suho. Mislio sam da ću s tim prekidačem učiniti više, ali ga na kraju uopće nisam koristio. Uklonio bih ga i kôd koji ga traži …

Korak 3: Konstrukcija: Kamera i IC iluminator

Konstrukcija: Kamera i IR osvetljivač
Konstrukcija: Kamera i IR osvetljivač

Koristio sam plastičnu kutiju municije Harbour Freight kao kućište. Uglavnom mi je trebalo nešto vodootporno jer je puno prskanja/otjecanja vode neizbježno. Postoji mnogo rupa/izreza, ali oni su prekriveni tendama, prozirnom plastikom ili su izbušeni ispod prevjesa za ispuštanje vode. S druge strane, trebao sam upotrijebiti metalnu kutiju s hladnjacima koji su unutra pričvršćeni na komponente velike snage. Time mislim da sam mogao izbjeći dodavanje ventilatora. Plastična kutija bila je previše izolirana i dopuštala je da se unutrašnja temperatura previše podigne.

Na kraju je izrezan mali prozor kako bi kamera mogla vidjeti, a IC iluminator je postavljen unutar starog plastičnog kućišta za leće koje sam ležao okolo.

Korak 4: Konstrukcija: Vodovod

Konstrukcija: Vodovod
Konstrukcija: Vodovod
Konstrukcija: Vodovod
Konstrukcija: Vodovod

Ulaz za vodu je spojen u ventil za vodu od 12 volti koji je spojen na vin”ID x 3/8” OD vinil cijev. To je zauzvrat povezano s ¼”bodljikavom cijevi za PVC connector konektor sa ¾ klizanjem i zalijepljeno na PVC ¾” poklopac vode sa 1/16”rupom izbušenom za mlaz vode. Htio sam držati ventil ventila za vodu izvan vremenskih uvjeta tako da se montira unutar kutije. Postoji opasnost da mogu procuriti, ali izbušio sam odvodne rupe na dnu kutije i montirao elektroniku visoko gore kako bi se smanjila mogućnost potencijalnog oštećenja elektronike vodom ako se to dogodi. Manje estetski ugodan, ali sigurniji plan bio bi montirati ventil na vanjsku stranu i unutra provesti žice releja od 12 V. Prozirni plastični disk preko serva bio je zgodan način za postavljanje kraja crijeva i sprječava kapanje vode na servo. Ventilator je bio dodatna zamisao jer se kutija previše zagrijavala. Preko toga sam sagradio malu tendu da voda ne kaplje.

Korak 5: Konstrukcija: Usmjerite servo

Konstrukcija: Ciljanje servo
Konstrukcija: Ciljanje servo

Na vrhu kutije je izrezana rupa, a servo pogon je montiran i zapečaćen silikonom kako bi se održala nesigurnost.

Korak 6: Konstrukcija: Montiranje izvora napajanja, ventilatora, Raspberry Pi i proto ploče

Konstrukcija: Montiranje izvora napajanja, ventilatora, Raspberry Pi i proto ploče
Konstrukcija: Montiranje izvora napajanja, ventilatora, Raspberry Pi i proto ploče

Dva izvora napajanja (5v i 12v) spojena su na jedan kabel za napajanje koji izlazi sa strane kutije. Raspberry Pi i proto ploča postavljeni su sa strane kutije pri vrhu. Obratite pažnju na odvodne rupe izbušene na dnu i otvore za ventilaciju izbušene duž gornje ivice. Ventilator je montiran nasuprot Raspberry Pi. Ne postoji prekidač za uključivanje/isključivanje jer ne želim poticati isključivanje Raspberry Pi -a bez formalne naredbe "sudo shutdown now" (tj. Ne želim da se napajanje isključi tako lako).

Korak 7: Konstrukcija: Proto Board

Konstrukcija: Proto Board
Konstrukcija: Proto Board

Proto ploča sadrži regulator od 5V, poklopac filtera, tranzistore za napajanje (koji pokreću servo i ventil za vodu) i prekidač za otklanjanje grešaka.

Korak 8: Konstrukcija: Raspberry Pi kamera

Konstrukcija: Raspberry Pi kamera
Konstrukcija: Raspberry Pi kamera

Raspberry Pi kamera se spaja direktno na Raspberry Pi putem vrpčnog kabela i montira se na prozirnu plastičnu ploču koja prekriva izrez za gledanje na prednjoj strani kutije.

Korak 9: Lista dijelova

Projekat je na kraju koštao oko 120 dolara. Najveći dio troškova projekta čine Raspberry Pi, kamera, servo i napajanje. Većinu dijelova pronašao sam na EBayu ili Amazonu, a vodovodne dijelove u lokalnoj trgovini hardvera.

  • Raspberry Pi 3 (Amazon) 38 USD
  • NoIR kamera (EBay) 30 USD
  • 5v analogni servo (okretni moment 4 kg-cm) (EBay) 10 USD
  • 5v/2.4A zidno napajanje (EBay) 8 USD
  • 12v ½”ventil za vodu (EBay) 5 USD
  • Cijevi, spojnice za cijevi (Osh) 5 USD
  • Plastična kutija za streljivo (lučki teret) 5 USD
  • 12v/1.5A zidno napajanje (EBay) 5 USD
  • IR iluminator (EBay) 4 USD
  • Ostalo Komponente (otpornici, prekidači, diode) 2 USD
  • CPU ventilator (EBay) 2 USD
  • Proto ploča, držači, vijci (EBay) 2 USD
  • (2) Snažni tranzistori (2n5296) (EBay) 1 USD
  • 5v regulator (LM7805) (EBay) $ 1
  • Prozirna plastika 3/32”(Dodirnite Plastika, razna posuda) 1 USD
  • Kabel za napajanje (Osh) 1 USD

Prodavnice/web lokacije na kojima sam kupovao artikle:

  • Alice1101983 EBay stranica:
  • 2bevoque EBay stranica:
  • Harbour Freight
  • Hardver za opskrbu voćnjaka
  • Amazon
  • Dodirnite Plastika

Preporučuje se: