Indholdsfortegnelse:

Auto-tracking Water Blaster: 9 trin
Auto-tracking Water Blaster: 9 trin

Video: Auto-tracking Water Blaster: 9 trin

Video: Auto-tracking Water Blaster: 9 trin
Video: Cars vs Train 😂 #shorts 2024, Juli
Anonim
Auto-tracking vandblæser
Auto-tracking vandblæser

Rosespisende hjorte motiverede mig til at bygge en målsporende vandblaster for at hjælpe med at afskrække de grådige dyr … Denne vandblæser bruger videobaseret bevægelsesdetektering til at rette en servo og udløse korte udbrud af vand mod målet. Det skyder først, efter at et erhvervet mål er stationært i et par sekunder (forsinkelsen kan justeres i koden). Jeg er ligeglad med om hjorten bare går forbi, men hvis de stopper for en snack, sploosh!

Her er en video af mig, der tester vandblæseren:

Vandblæseren er en enkeltstående boks, der kan fjernbetjenes til (via wi-fi/VNC) fra enhver computer på dit netværk for at overvåge, hvad den laver. Det tager et billede hver gang det udløses, så du senere kan se, hvad der blev sprængt.

Jeg brugte en Raspberry Pi, NoIR cam, IR illuminator, standard lineær servo og en vandventil til at oprette denne dag/nat, målsporing vandblaster. Koden er skrevet i Python og låner stærkt fra Adrian Rosebrocks cv2 billedbehandlingskodeprøver. Du kan se hans opslag på:

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

Da jeg går efter relativt store, jordbaserede mål (hjorte), er mit problem noget forenklet. Jeg kræver kun vandret sigtning, så jeg kan slippe afsted med kun at bruge en servo. At vente på, at hjorten skal stå stille, hjælper mig med at fjerne en masse falske udløsere. Dette er mit rev-0 forsøg, og jeg har fundet et par ting, jeg ville ændre, hvis jeg byggede en anden. Jeg har noteret disse ting i den detaljerede opskrivning, der følger.

Trin 1: Koden

Vandblæseren bruger Raspberry Pi 3 til behandling. Til optagelse af video bruges et NoIR Raspberry Pi -kamera sammen med en IR -belysning til natvideo. OpenCV/cv2 Python -pakken bruges til at fange og behandle billedinformation og beregne målkoordinater. Pigpio -biblioteket bruges til at styre gpio'en til stabil servodrift. Brug af den almindelige RPi. GPIO -pakke resulterede i en rystende servo. BEMÆRK: Når du bruger pigpio -biblioteket, skal du køre pigpio -dæmonen. Føj dette til din Pi's /etc/rc.local opstartsfil til pigpio lib og Raspberry Pi kamera -grænsefladen:

/etc.

Se https://pypi.python.org/pypi/pigpi for flere detaljer.

Kildekoden hedder: water_blaster.py og er vedhæftet nedenfor.

Ansvarsfraskrivelse: Jeg er ny inden for Python -kodning, så behandl det ikke som en god model af Python -kodestil!

Den grundlæggende algoritme er som følger:

  • Tag en indledende videoreferenceramme. Dette vil blive brugt til at sammenligne mod at registrere bevægelse.
  • Tag en anden ramme.
  • Konverter rammen til gråtoner, størr den, slør den.
  • Beregn forskellen fra referencerammen
  • Filtrer små forskelle, få koordinater for største forskel.
  • Indstil en timer. Hvis målkoordinaten ikke ændrer sig i et par sekunder, skal du tage et billede af, hvad vi skal skyde og udløse vandventilen til en eksplosion af vand. Fej servoen frem og tilbage et par grader for et "haglgevær" blast.
  • Hvis vi får tre udløsere for hurtigt, deaktiverer optagelse, holder lidt pause, og opdaterer referencerammen, da vi muligvis skyder på en skygge eller veranda, der lige var tændt …
  • Hvert par minutter opdateres referencerammen for at tage højde for lavfrekvente ændringer (solen stiger/går ned, overskyet bevæger sig ind osv.)

Jeg bruger kun en vandret sigtemekanisme, men mange pan/tilt servo mounts er tilgængelige på EBay, og det ville være let at tilføje en anden servo til styring af lodret mål, hvis du ville have mere præcis målretning.

Jeg konfigurerede Raspberry Pi til at køre som en VNC -server og derefter oprette forbindelse til den via VNC fra min bærbare computer for at starte programmet og overvåge videoen og logfiler. cd i biblioteket, hvor du gemmer water_blaster.py og kører det ved at skrive:

./python water_blaster.py

Det åbner et videoovervågningsvindue, starter en logfil med navnet "./log_ [date]_time] og opretter en undermenu med navnet" trigger_pictures ", hvor jpg-filer (trigger_ [dato] _ [tid]) gemmes for hvert skud.

Her er nogle noter om opsætning af VNC på din Raspberry Pi:

Første gang jeg konfigurerede Raspberry Pi, brugte jeg en ekstern skærm/tastatur/mus til at konfigurere tingene. Der aktiverede jeg VNC -serveren ved RasPi -konfigurationen (Raspberry Logo / Preferences / Raspberry Pi Configuration / Interfaces / Check VNC option). Når den bagefter starter, giver den dig mulighed for at oprette forbindelse til dens: 0 -skærm via VNC -klient (med samme legitimationsoplysninger som standardbrugeren "pi").

I hovedløs tilstand er det som standard en meget lille opløsningsvisning (da den ikke registrerer nogen visning), for at tvinge den til en større opløsning, tilføjer du dette til /boot/config.txt og genstarter:

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

Her er lidt mere info:

Trin 2: Elektronikken

Kravene til vandblæserelektronik er minimale ved hjælp af Raspberry Pi 3 gpio til at drive en servo, vandventil og IR -belysning via diskrete transistorbuffere (bygget på et lille prototavle). Et standard NoIR -kamera tilsluttes direkte til Raspberry Pi.

Navnet på skematikken er: water_blaster_schematic.pdf og er vedhæftet nedenfor.

Jeg brugte en 5v/2.5A dedikeret forsyning til Raspberry Pi og en 12v/1A forsyning til at køre IR -belysningen og vandventilen. 12V -forsyningen driver også en 5v -regulator til at levere strøm til 5v -servoen. Dette blev gjort for at holde den "støjende" motorstyring isoleret fra Raspberry Pi 5v forsyningen. 12v/1A forsyningen viste sig at være lige ved sin grænse (faktisk lidt over når jeg tilføjede blæseren). Koden slukker IR -belysningen, før vandventilrelæet tændes for at holde strømstrømmen inden for rækkevidde … Det ville være bedre, hvis du brugte en 1,5A forsyning. Sørg for at forbinde jordklemmerne på alle strømforsyninger sammen.

Kameramodulet er en standard NoIR -version, der tilsluttes Raspberry Pi direkte. Det er et Raspberry Pi -kamera med allerede fjernet IR -filter, så det kan bruges sammen med en IR -belysning til optagelse af natvideo.

Den anvendte servo er en 5V lineær servo i standardstørrelse med 3-4 kg-cm drejningsmoment.

IR -belysningen var en billedring med 48 led, jeg fandt på eBay for omkring $ 4. Det er ikke super stærkt og kan kun belyse op til omkring 15 fod. Hvis du har et ekstra budget, ville det være en god forbedring at få en stærkere belysning.

Jeg tilføjede en "debug-switch" til gpio23. Koden kontrollerer switchens tilstand, og hvis den trykkes på, deaktiveres vandventilrelæet til tør-brand-test. Jeg troede, at jeg ville gøre mere med den switch, men endte faktisk ikke med at bruge den overhovedet. Jeg ville fjerne det og koden, der leder efter det …

Trin 3: Konstruktion: Kamera og IR -belysning

Konstruktion: Kamera og IR Illuminator
Konstruktion: Kamera og IR Illuminator

Jeg brugte en Harbour Freight -ammunitionsboks i plast som kabinet. Hovedsageligt havde jeg brug for noget vandtæt, da en masse vandsprøjt/afstrømning er uundgåelig. Der er masser af huller/udskæringer, men de er dækket af markiser, klar plast eller bores under udhæng for at kaste vand. I baghovedet skulle jeg have brugt en metalboks med køleplader internt fastgjort til komponenterne med høj effekt. Ved at gøre det tror jeg, at jeg kunne have undgået at tilføje blæseren. Plastkassen var for isolerende og lod den indvendige temperatur stige for meget.

Et lille vindue blev skåret til sidst, så kameraet kunne se ud, og IR -belysningen blev monteret inde i en gammel plastiklinsekasse, jeg havde liggende.

Trin 4: Konstruktion: Vandrør

Konstruktion: Vandrør
Konstruktion: Vandrør
Konstruktion: Vandrør
Konstruktion: Vandrør

Vandindløbet ledes ind i en 12v vandventil, der er forbundet med et ¼”ID x 3/8” OD vinylrør. Det er igen forbundet med et ¼”pigtråd til ¾ slip fit PVC -stik og limet til et ¾” PVC -vandhætte med et 1/16”hul boret til vandstrømmen. Jeg ville holde vandventilrelæet ude af vejret, så det er monteret inde i kassen. Der er fare for, at jeg kan få en lækage, men jeg har boret afløbshuller i bunden af kassen og monteret elektronikken højt op for at minimere risikoen for potentiel vandskade på elektronikken, hvis det sker. En mindre æstetisk tiltalende, men mere sikker plan, ville være at montere ventilen på ydersiden og køre 12v relæledninger indeni. Den klare plastikskive over servoen var en bekvem måde at montere slangeenden på, og den forhindrer vand i at dryppe ned på servoen. Ventilatoren var en eftertanke, da kassen var ved at varme op for meget. Jeg byggede en lille markise over den for at forhindre vand i at dryppe ind.

Trin 5: Konstruktion: Målrettet servo

Konstruktion: Målrettet servo
Konstruktion: Målrettet servo

Et hul skæres i toppen af kassen, og sigteservoen monteres og forsegles med silicium for at holde vandet ude.

Trin 6: Konstruktion: Montering af strømforsyninger, blæser, Raspberry Pi og Proto-board

Konstruktion: Montering af strømforsyninger, blæser, Raspberry Pi og Proto-board
Konstruktion: Montering af strømforsyninger, blæser, Raspberry Pi og Proto-board

De to strømforsyninger (5v og 12v) er forbundet til en enkelt netledning, der forlader boksens side. Raspberry Pi og et proto board er monteret på siden af kassen nær toppen. Læg mærke til afløbshullerne, der er boret i bunden, og ventilationshullerne, der er boret langs den øvre kant. Ventilatoren er monteret overfor Raspberry Pi. Der er ingen tænd/sluk -kontakt, da jeg ikke ønsker at tilskynde til at lukke Raspberry Pi uden en formel kommando "sudo shutdown now" (dvs. ikke have strømmen slukket for let).

Trin 7: Konstruktion: Proto Board

Konstruktion: Proto Board
Konstruktion: Proto Board

Proto-kortet indeholder en 5v regulator, filterhætte, effekttransistorer (der driver servo og vandventil) og en fejlfindingsafbryder.

Trin 8: Konstruktion: Raspberry Pi -kamera

Konstruktion: Raspberry Pi kamera
Konstruktion: Raspberry Pi kamera

Raspberry Pi -cam tilsluttes direkte til Raspberry Pi via båndkablet og er monteret på den klare plastplade, der dækker udsynet foran på boksen.

Trin 9: Deleliste

Projektet endte med at koste omkring $ 120. Hovedparten af omkostningerne ved projektet er Raspberry Pi, kamera, servo og strømforsyninger. Jeg fandt de fleste dele på eBay eller Amazon og VVS -dele i den lokale isenkræmmer.

  • Raspberry Pi 3 (Amazon) $ 38
  • NoIR -kamera (EBay) $ 30
  • 5v analog servo (4 kg-cm drejningsmoment) (EBay) $ 10
  • 5v/2,4A vægstrømforsyning (EBay) $ 8
  • 12v ½”vandventil (EBay) $ 5
  • Slange, rørkoblinger (Osh) $ 5
  • Ammunitionsboks i plast (havnefrag) $ 5
  • 12v/1.5A vægstrømforsyning (EBay) $ 5
  • IR Illuminator (EBay) $ 4
  • Diverse Komponenter (modstande, switches, diode) $ 2
  • CPU -blæser (EBay) $ 2
  • Proto Board, Standoffs, Screws (EBay) $ 2
  • (2) Strømtransistorer (2n5296) (EBay) $ 1
  • 5v Regulator (LM7805) (EBay) $ 1
  • Klar plast 3/32”(Tap Plast Diverse skraldespand) $ 1
  • Netledning (Osh) $ 1

Butikker/websteder, hvor jeg købte varer:

  • Alice1101983 eBay-websted:
  • 2bevoque EBay -websted:
  • Havnefrakt
  • Orchard Supply Hardware
  • Amazon
  • Tryk på Plastik

Anbefalede: