Innholdsfortegnelse:

Auto-tracking Water Blaster: 9 trinn
Auto-tracking Water Blaster: 9 trinn

Video: Auto-tracking Water Blaster: 9 trinn

Video: Auto-tracking Water Blaster: 9 trinn
Video: 40 полезных автотоваров с Aliexpress, которые упростят жизнь любому автовладельцу #3 2024, Juli
Anonim
Auto-tracking Water Blaster
Auto-tracking Water Blaster

Rose-spising hjort motiverte meg til å bygge en mål-sporing vann blaster for å hjelpe avskrekke de glupsk critters … Denne vannblaster bruker videobasert bevegelsesdeteksjon for å sikte en servo og utløse korte utbrudd av vann mot målet. Den skyter bare etter at et ervervet mål står stille i noen sekunder (forsinkelsen kan justeres i koden). Jeg bryr meg ikke om hjorten bare går forbi, men hvis de stopper for en matbit, sploosh!

Her er en video av meg som tester vannblasteren:

Water blaster er en frittstående boks som kan kobles eksternt til (via wi-fi/VNC) fra hvilken som helst datamaskin i nettverket for å overvåke hva den gjør. Det tar et bilde hver gang det utløses, slik at du senere kan se hva som ble sprengt.

Jeg brukte en Raspberry Pi, NoIR cam, IR illuminator, standard lineær servo og en vannventil for å lage denne dag/natt, målsporing vannblaster. Koden er skrevet i Python og låner tungt fra Adrian Rosebrock cv2 bildebehandlingskodeeksempler. Du kan se hans oppslag på:

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

Siden jeg går etter relativt store, bakkebaserte mål (hjort), er problemet mitt noe forenklet. Jeg krever bare horisontalt sikte, slik at jeg kan komme unna med å bruke bare en servo. Å vente på at hjorten skal stå stille hjelper meg å eliminere mange falske utløsere. Dette er mitt rev-0-forsøk, og jeg har funnet noen ting jeg ville endre hvis jeg bygde en annen. Jeg har lagt merke til disse tingene i den detaljerte beskrivelsen som følger.

Trinn 1: Koden

Water blaster bruker Raspberry Pi 3 til behandling. For å ta video, brukes en NoIR Raspberry Pi -kamera sammen med en IR -belysning for nattvideo. OpenCV/cv2 Python -pakken brukes til å fange og behandle bildeinformasjon og beregne målkoordinater. Pigebiobiblioteket brukes til å kontrollere gpio for stabil servodrift. Bruk av den vanlige RPi. GPIO -pakken resulterte i en rystende servo. MERK: Når du bruker pigpio -biblioteket, må du kjøre pigpio -demonen. Legg dette til Pi's /etc/rc.local oppstartsfil for pigpio lib og Raspberry Pi kamera grensesnitt:

/etc/rc.local# Sett opp/dev/video0 for å koble til Raspberry Pi innebygd kamera grensesnittmodusprobe bcm2835-v4l2# Start pigpio-demonen for Raspberry Pi IO-kontrollbiblioteket

Se https://pypi.python.org/pypi/pigpi for mer informasjon.

Kildekoden heter: water_blaster.py og er vedlagt nedenfor.

Ansvarsfraskrivelse: Jeg er ny i Python -koding, så ikke behandle det som en god modell av Python -kodestil!

Den grunnleggende algoritmen er som følger:

  • Ta en innledende videoreferanseramme. Dette vil bli brukt til å sammenligne mot for å oppdage bevegelse.
  • Ta en annen ramme.
  • Konverter rammen til gråskala, størrelse den, slør den.
  • Beregn differansen fra referanserammen
  • Filtrer ut små forskjeller, få koordinater for største forskjell.
  • Still inn en tidtaker. Hvis målkoordinaten ikke endres på noen få sekunder, ta et bilde av det vi skal skyte og utløser vannventilen for en vannsprengning. Sveip servoen frem og tilbake noen grader for en "hagle" -blast.
  • Hvis vi får tre utløsere for raskt, deaktiverer du fotografering, stopper litt, oppdaterer deretter referanserammen, ettersom vi kan skyte på en skygge eller veranda som nettopp var slått på …
  • Hvert par minutter oppdater referanserammen for å ta hensyn til lavfrekvente endringer (solen stiger/går ned, overskyet beveger seg inn, etc.)

Jeg bruker bare en horisontal siktemekanisme, men mange pan/tilt servofester er tilgjengelige på EBay, og det ville være enkelt å legge til en annen servo for å kontrollere vertikal sikte hvis du ville ha mer presis målretting.

Jeg konfigurerte Raspberry Pi til å kjøre som en VNC -server, og kobler deretter til den via VNC fra min bærbare datamaskin for å starte programmet og overvåke videoen og loggene. cd i katalogen der du lagrer water_blaster.py og kjører den ved å skrive:

./python water_blaster.py

Det åpner et videomonitorvindu, starter en loggfil med navnet "./log_phia_date]_time" og oppretter en undermir med navnet "trigger_pictures" der jpg-filer (trigger_ [date] _ [time]) lagres for hvert skudd som tas.

Her er noen notater om hvordan du konfigurerer VNC på Raspberry Pi:

Første gang jeg konfigurerte Raspberry Pi, brukte jeg en ekstern skjerm/tastatur/mus for å sette opp ting. Der aktiverte jeg VNC -serveren ved RasPi -konfigurasjonen (Raspberry Logo / Preferences / Raspberry Pi Configuration / Interfaces / Check VNC option). Etterpå, når den starter opp, lar den deg koble til sin: 0 -skjerm via VNC -klient (med samme legitimasjon som standardbrukeren "pi").

I hodeløs modus er den som standard en veldig liten oppløsning (siden den ikke oppdager noen skjerm), for å tvinge den til en større oppløsning, legger du denne til /boot/config.txt og starter på nytt:

# Bruk hvis du har skjerm# hdmi_ignore_edid = 0xa5000080hdmi_group = 2# 1400x1050 m/ 60Hz# hdmi_mode = 42# 1356x768 w/ 60Hzhdmi_mode = 39

Her er litt mer informasjon:

Trinn 2: Elektronikken

Kravene til vannblasterelektronikken er minimale ved bruk av Raspberry Pi 3 gpio for å drive en servo, vannventil og IR -belysning via diskrete transistorbuffere (bygget på et lite prototavle). Et standard NoIR -kamera kobles direkte til Raspberry Pi.

Navnet på skjematikken er: water_blaster_schematic.pdf og er vedlagt nedenfor.

Jeg brukte en 5v/2.5A dedikert forsyning for Raspberry Pi og en 12v/1A forsyning for å drive IR -belysningen og vannventilen. 12V -forsyningen driver også en 5v -regulator for å levere strøm til 5v -servoen. Dette ble gjort for å holde den "bråkete" motorstyringskraften isolert fra Raspberry Pi 5v -forsyningen. 12v/1A -forsyningen viste seg å være på grensen (faktisk litt over når jeg la til viften). Koden slår av IR -belysningen før du slår på vannventilreléet for å holde strømmen innenfor rekkevidde … Det ville være bedre hvis du brukte en 1,5A forsyning. Sørg for å koble jordterminalene til alle strømforsyningene sammen.

Kameramodulen er en standard NoIR -versjon som kobles direkte til Raspberry Pi. Det er en Raspberry Pi -kamera med IR -filteret allerede fjernet, slik at den kan brukes med en IR -belysning for å ta nattvideo.

Servoen som brukes er en standard størrelse 5v lineær servo med 3-4 kg-cm dreiemoment.

IR -belysningen var en billig 48 led -ring jeg fant på eBay for omtrent $ 4. Den er ikke super sterk og kan bare lyse opp til omtrent 15 fot. Hvis du har et ekstra budsjett, er det en god forbedring å få en sterkere belysning.

Jeg la til en "feilsøkingsbryter" til gpio23. Koden sjekker tilstanden til bryteren, og hvis den trykkes, deaktiveres vannventilreléet for tørrbrannstesting. Jeg trodde jeg ville gjøre mer med den bryteren, men endte ikke med å bruke den i det hele tatt. Jeg ville fjerne den og koden som ser etter den …

Trinn 3: Konstruksjon: Kamera og IR -belysning

Konstruksjon: Kamera og IR -belysning
Konstruksjon: Kamera og IR -belysning

Jeg brukte en Harbour Freight ammunisjonsboks av plast som et kabinett. Hovedsakelig trengte jeg noe vanntett ettersom mye vannspray/avrenning er uunngåelig. Det er mange hull/utskjæringer, men de er dekket av markiser, klar plast, eller bores under overheng for å kaste vann. I bakhodet burde jeg ha brukt en metallboks med kjøleribber internt festet til komponentene med høy effekt. Ved å gjøre det tror jeg at jeg kunne ha unngått å legge til viften. Plastboksen var for isolerende og lot innetemperaturen stige for mye.

Et lite vindu ble kuttet til slutt for kameraet å se ut og IR -belysningen ble montert inne i en gammel plastlinsekasse jeg hadde liggende.

Trinn 4: Konstruksjon: Vannrør

Konstruksjon: Vannrør
Konstruksjon: Vannrør
Konstruksjon: Vannrør
Konstruksjon: Vannrør

Vanninnløpet ledes inn i en 12v vannventil som er koblet til et ¼”ID x 3/8” OD vinylrør. Det er igjen koblet til et ¼”hullet rør til ¾ slip fit PVC -kontakt og limt til et ¾” PVC -vannlokk med et 1/16”hull boret for vannstrømmen. Jeg ønsket å holde vannventilreléet ute av været, så det er montert inne i esken. Det er fare for at jeg kan få en lekkasje, men jeg har boret dreneringshull i bunnen av esken og montert elektronikken høyt opp for å minimere sjansen for potensiell vannskade på elektronikken hvis det skjer. En mindre estetisk tiltalende, men tryggere, plan ville være å montere ventilen på utsiden og kjøre 12v reléledninger inne. Den klare plastskiven over servoen var en praktisk måte å montere slangeenden på, og den forhindrer at vann drypper ned på servoen. Viften var en ettertanke da esken varmet opp for mye. Jeg bygde en liten markise over den for å unngå at vannet drypper inn.

Trinn 5: Konstruksjon: Siktende servo

Konstruksjon: Siktende servo
Konstruksjon: Siktende servo

Et hull kuttes i toppen av esken og siktservoen monteres og forsegles med silisium for å holde vannet ute.

Trinn 6: Konstruksjon: Montering av strømforsyninger, vifte, bringebær Pi og proto-brett

Konstruksjon: Montering av strømforsyninger, vifte, Raspberry Pi og Proto-board
Konstruksjon: Montering av strømforsyninger, vifte, Raspberry Pi og Proto-board

De to strømforsyningene (5v og 12v) er koblet til en enkelt strømledning som går ut av boksen. Raspberry Pi og et proto -brett er montert på siden av esken nær toppen. Legg merke til dreneringshullene som er boret i bunnen og luftventilhullene som er boret langs den øvre kanten. Viften er montert overfor Raspberry Pi. Det er ingen på/av -bryter, da jeg ikke vil oppfordre til å slå av Raspberry Pi uten en formell kommando "sudo shutdown now" (dvs. ikke at strømmen skal slås av for lett).

Trinn 7: Konstruksjon: Proto Board

Konstruksjon: Proto Board
Konstruksjon: Proto Board

Proto-kortet inneholder en 5v regulator, filterhette, effekttransistorer (som driver servoen og vannventilen) og en feilsøkingsbryter.

Trinn 8: Konstruksjon: Raspberry Pi -kamera

Konstruksjon: Raspberry Pi -kamera
Konstruksjon: Raspberry Pi -kamera

Raspberry Pi -kammen kobles direkte til Raspberry Pi via båndkabelen og er montert på den klare plastplaten som dekker utsnittet foran på esken.

Trinn 9: Deleliste

Prosjektet endte opp med å koste rundt $ 120. Hoveddelen av kostnaden for prosjektet er Raspberry Pi, kamera, servo og strømforsyninger. Jeg fant de fleste delene på eBay eller Amazon og rørleggerdelene på den lokale maskinvarebutikken.

  • Raspberry Pi 3 (Amazon) $ 38
  • NoIR -kamera (EBay) $ 30
  • 5v analog servo (4 kg-cm dreiemoment) (EBay) $ 10
  • 5v/2,4A veggstrømforsyning (EBay) $ 8
  • 12v ½”vannventil (EBay) $ 5
  • Slange, rørkoblinger (Osh) $ 5
  • Ammunisjonsboks av plast (havnefrakt) $ 5
  • 12v/1.5A veggstrømforsyning (EBay) $ 5
  • IR Illuminator (EBay) $ 4
  • Diverse Komponenter (motstander, brytere, dioder) $ 2
  • CPU -vifte (EBay) $ 2
  • Proto Board, Standoffs, Screws (EBay) $ 2
  • (2) Strømtransistorer (2n5296) (EBay) $ 1
  • 5v regulator (LM7805) (EBay) $ 1
  • Klar plast 3/32”(Trykk på plast diverse beholder) $ 1
  • Strømledning (Osh) $ 1

Butikker/nettsteder der jeg kjøpte varer:

  • Alice1101983 EBay-nettsted:
  • 2bevoque EBay nettsted:
  • Havnefrakt
  • Orchard Supply Hardware
  • Amazon
  • Trykk på Plast

Anbefalt: