Talaan ng mga Nilalaman:

Awtomatikong pagsubaybay sa Water Blaster: 9 Mga Hakbang
Awtomatikong pagsubaybay sa Water Blaster: 9 Mga Hakbang

Video: Awtomatikong pagsubaybay sa Water Blaster: 9 Mga Hakbang

Video: Awtomatikong pagsubaybay sa Water Blaster: 9 Mga Hakbang
Video: Я ПРОБУДИЛ ЗАПЕЧАТАННОГО ДЬЯВОЛА / I HAVE AWAKENED THE SEALED DEVIL 2024, Nobyembre
Anonim
Awtomatikong pagsubaybay sa Water Blaster
Awtomatikong pagsubaybay sa Water Blaster

Nag-uudyok sa akin ang usa ng rosas na kumakain ng usa na bumuo ng isang target na pagsubaybay sa blaster ng tubig upang makatulong na mapigilan ang masasarap na mga critter … Ang water blaster na ito ay gumagamit ng detalyadong paggalaw na batay sa video upang maghangad ng isang servo at magpalitaw ng maikling pagsabog ng tubig sa target. Nag-shoot lamang ito matapos ang isang nakuhang target ay nakatigil sa loob ng ilang segundo (ang pagkaantala ay maaaring ayusin sa code). Wala akong pakialam kung naglalakad lang ang usa ngunit kung huminto sila para sa meryenda, sploosh!

Narito ang isang video sa akin na sumusubok sa water blaster:

Ang blaster ng tubig ay isang kahon na nakapag-iisa na maaaring malayo na konektado (sa pamamagitan ng wi-fi / VNC) mula sa anumang computer sa iyong network upang subaybayan kung ano ang ginagawa nito. Kumukuha ito ng larawan sa tuwing nai-trigger ito upang makita mo sa ibang pagkakataon kung ano ang sumabog.

Gumamit ako ng isang Raspberry Pi, NoIR cam, IR illuminator, karaniwang linear servo, at isang balbula ng tubig upang likhain ngayong araw / gabi, na target ang pagsubaybay sa blaster ng tubig. Ang code ay nakasulat sa Python at nanghihiram nang husto mula sa mga sample ng code ng pagproseso ng imahe ng cv2 ni Adrian Rosebrock. Maaari mong makita ang kanyang pagsulat sa:

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

Dahil pupunta ako sa medyo malaki, mga target na nakabatay sa lupa (usa), medyo pinasimple ang aking problema. Nangangailangan lamang ako ng pahalang na pagpuntirya upang makawala ako gamit ang isang servo lamang. Ang paghihintay para sa usa na tumayo pa rin ay makakatulong sa akin na alisin ang maraming maling pag-trigger. Ito ang aking pagtatangka sa rev-0 at nakakita ako ng ilang mga bagay na babaguhin ko kung bumuo ako ng isa pa. Nabanggit ko ang mga bagay na ito sa detalyadong pagsulat na sumusunod.

Hakbang 1: Ang Code

Gumagamit ang water blaster ng Raspberry Pi 3 para sa pagproseso. Para sa pagkuha ng video, isang NoIR Raspberry Pi cam ang ginagamit kasama ang isang IR illuminator para sa night video. Ang pakete ng OpenCV / cv2 Python ay ginagamit upang makuha at maproseso ang impormasyon ng imahe at makalkula ang mga target na target. Ginagamit ang library ng pigpio upang makontrol ang gpio para sa matatag na operasyon ng servo. Ang paggamit ng regular na RPi. GPIO package ay nagresulta sa isang nanginginig na servo. TANDAAN: Kapag ginagamit ang library ng pigpio kailangan mong patakbuhin ang pigpio daemon. Idagdag ito sa iyong Pi's /etc/rc.local startup file para sa pigpio lib at ang interface ng Raspberry Pi camera:

/etc/rc.local# Set up / dev / video0 upang mag-link sa Raspberry Pi na naka-built sa camera interfacemodprobe bcm2835-v4l2 # Simulan ang pigpio daemon para sa Raspberry Pi IO control librarypigpiod

Tingnan ang https://pypi.python.org/pypi/pigpi para sa karagdagang detalye.

Ang source code ay pinangalanang: water_blaster.py at nakakabit sa ibaba.

Pagwawaksi: Bago ako sa pag-cod ng Python kaya't huwag itong tratuhin bilang anumang mahusay na modelo ng istilo ng pag-cod ng Python!

Ang pangunahing algorithm ay ang mga sumusunod:

  • Grab isang paunang frame ng sanggunian ng video. Ito ay gagamitin upang ihambing laban sa tiktikan ang paggalaw.
  • Grab ng isa pang frame.
  • I-convert ang frame sa grey scale, sukatin ito, i-blur ito.
  • Kalkulahin ang pagkakaiba mula sa frame ng sanggunian
  • I-filter ang maliliit na pagkakaiba, kumuha ng mga coordinate ng pinakamalaking pagkakaiba.
  • Magtakda ng isang timer. Kung ang target na coordinate ay hindi nagbabago ng ilang segundo, pagkatapos ay kumuha ng larawan kung ano ang kukunan namin at mai-trigger ang balbula ng tubig para sa isang pasabog na tubig. Walisin ang servo pabalik-balik ng ilang degree para sa isang "shotgun" na pagsabog.
  • Kung nakakakuha kami ng tatlong mga pag-trigger nang masyadong mabilis, huwag paganahin ang pagbaril, huminto nang kaunti, pagkatapos ay i-update ang frame ng sanggunian dahil maaari kaming mag-shoot sa isang anino o ilaw ng beranda na nakabukas lamang…
  • Ang bawat ilang minuto i-update ang sanggunian frame sa account para sa mga mababang pagbabago ng dalas (ang araw pagsikat / setting, overcast paglipat sa, atbp.)

Gumagamit lang ako ng isang pahalang na mekanismo ng pag-target ngunit maraming mga pan / ikiling servo mount ang magagamit sa EBay at madali itong magdagdag ng isa pang servo para sa pagkontrol sa patayong pag-target kung nais mo ng mas tumpak na pag-target.

Itinakda ko ang Raspberry Pi upang tumakbo bilang isang VNC server, pagkatapos ay kumonekta dito sa pamamagitan ng VNC mula sa aking laptop upang simulan ang programa at subaybayan ang video at mga tala. cd sa direktoryo kung saan mo iniimbak ang water_blaster.py at patakbuhin ito sa pamamagitan ng pagta-type:

./python water_blaster.py

Bubuksan nito ang isang window ng monitor ng video, magsisimula ng isang file ng log na pinangalanang "./log_[date para sa bawat kuha.

Narito ang ilang mga tala sa pag-set up ng VNC sa iyong Raspberry Pi:

Sa kauna-unahang pag-set up ko ng Raspberry Pi, gumamit ako ng isang panlabas na monitor / keyboard / mouse upang i-set up ang mga bagay. Doon ay pinagana ko ang VNC server sa RasPi config (Raspberry Logo / Mga Kagustuhan / Raspberry Pi Configuration / Interfaces / Suriin ang pagpipilian ng VNC). Pagkatapos, kapag nag-boot ito, binibigyang-daan ka nitong kumonekta sa: 0 display sa pamamagitan ng VNC client (w / parehong mga kredensyal bilang default na "pi" na gumagamit).

Sa mode na walang ulo ay nagde-default ito sa isang napakaliit na display ng resolusyon (dahil hindi ito nakakakita ng anumang pagpapakita), upang pilitin ito sa ilang mas malaking resolusyon, idagdag mo ito sa /boot/config.txt at i-restart:

# Gumamit kung mayroon kang display # hdmi_ignore_edid = 0xa5000080hdmi_group = 2 # 1400x1050 w / 60Hz # hdmi_mode = 42 # 1356x768 w / 60Hzhdmi_mode = 39

Narito ang ilang karagdagang impormasyon:

Hakbang 2: Ang Elektronika

Ang mga kinakailangan sa electronics ng blaster ng tubig ay kakaunti gamit ang Raspberry Pi 3 gpio upang magmaneho ng isang servo, water balbula at IR illuminator sa pamamagitan ng discrete transistor buffers (na itinayo sa isang maliit na board board). Ang isang karaniwang NoIR camera ay naka-plug nang direkta sa Raspberry Pi.

Ang pangalan ng eskematiko ay: water_blaster_schematic.pdf at nakakabit sa ibaba.

Gumamit ako ng isang 5v / 2.5A na nakatuon na supply para sa Raspberry Pi at isang supply ng 12v / 1A para sa pagmamaneho ng IR illuminator at water balbula. Ang 12v na supply ay nagtutulak din ng isang 5v regulator upang magbigay ng lakas sa 5v servo. Ginawa ito upang mapanatili ang "maingay" na kontrol ng motor na ihiwalay mula sa supply ng Raspberry Pi 5v. Ang supply ng 12v / 1A ay naging tama sa limitasyon nito (talagang bahagyang lumipas sa sandaling idinagdag ko ang fan). Pinapatay ng code ang IR illuminator bago paandarin ang relay ng balbula ng tubig upang mapanatili ang kasalukuyang gumuhit sa loob ng saklaw … Mas mabuti kung gumamit ka ng isang 1.5A na supply. Siguraduhing ikonekta ang mga ground terminal ng lahat ng mga power supply nang magkasama.

Ang module ng camera ay isang karaniwang bersyon ng NoIR na direktang na-plug sa Raspberry Pi. Ito ay isang Raspberry Pi cam na may natanggal na na filter ng IR na nagbibigay-daan upang magamit ito sa isang IR illuminator para sa pagkuha ng night video.

Ang ginamit na servo ay isang pamantayan na laki ng 5v linear servo na may 3-4 kg-cm ng metalikang kuwintas.

Ang IR illuminator ay isang murang singsing na humantong sa 48 na nahanap ko sa EBay sa halos $ 4. Hindi ito napakalakas at maaaring mag-ilaw hanggang sa halos 15 talampakan. Kung mayroon kang dagdag na badyet, ang pagkuha ng isang mas malakas na illuminator ay isang mahusay na pagpapabuti.

Nagdagdag ako ng isang "debug-switch" sa gpio23. Sinusuri ng code ang estado ng switch at kung pinindot ay hindi pagaganahin ang relay ng balbula ng tubig para sa pagsubok sa dry-fire. Naisip kong magagawa ko ang higit pa sa switch na iyon ngunit hindi natapos na gamitin talaga ito. Aalisin ko ito at ang code na hinahanap para dito …

Hakbang 3: Konstruksyon: Camera at IR Illuminator

Konstruksiyon: Camera at IR Illuminator
Konstruksiyon: Camera at IR Illuminator

Gumamit ako ng isang kahon ng munisyon ng plastik na Harbour Freight bilang isang enclosure. Higit sa lahat kailangan ko ng isang bagay na lumalaban sa tubig tulad ng maraming spray ng tubig / runoff na hindi maiiwasan. Mayroong maraming mga butas / ginupit ngunit ang mga ito ay natatakpan ng mga awning, malinaw na plastik, o na-drill sa ilalim ng mga overhang upang malaglag ang tubig. Sa nakikitang paningin, dapat ay gumamit ako ng isang metal box na may mga heatsink na panloob na nakakabit sa mga sangkap ng mataas na lakas. Sa pamamagitan ng paggawa nito sa palagay ko ay maiiwasan ko ang pagdaragdag ng fan. Ang plastic box ay masyadong insulate at pinayagan ang temperatura sa interior na tumaas ng sobra.

Ang isang maliit na bintana ay pinutol sa dulo upang tingnan ng camera at ang IR illuminator ay naka-mount sa loob ng isang lumang plastic lens case na inilatag ko.

Hakbang 4: Konstruksiyon: Water Piping

Konstruksiyon: Water Piping
Konstruksiyon: Water Piping
Konstruksiyon: Water Piping
Konstruksiyon: Water Piping

Ang papasok ng tubig ay pipipe sa isang 12v water balbula na konektado sa isang ¼ "ID x 3/8" OD vinyl tube. Na siya namang ay konektado sa isang ¼”barbed tubing upang ¾ slip fit PVC konektor at nakadikit sa isang cap” PVC cap ng tubig na may 1/16”na butas na na-drill para sa stream ng tubig. Nais kong panatilihin ang relay ng tubig-balbula sa labas ng panahon kaya naka-mount ito sa loob ng kahon. Mayroong panganib na maaari akong makakuha ng isang tagas ngunit nag-drill ako ng mga butas sa ilalim ng kahon at na-mount ang electronics hanggang sa mabawasan ang pagkakataon ng potensyal na pinsala sa tubig sa electronics kung mangyari iyon. Ang isang hindi gaanong kaaya-aya, ngunit mas ligtas, na plano ay i-mount ang balbula sa panlabas at patakbuhin ang 12v relay wires sa loob. Ang malinaw na plastic disk sa servo ay isang maginhawang paraan upang mai-mount ang hose-end at pinipigilan nito ang tubig mula sa pagtulo pababa sa servo. Ang tagahanga ay isang pag-iisip dahil ang kahon ay umiinit ng sobra. Nagtayo ako ng isang maliit na awning dito upang hindi tumulo ang tubig.

Hakbang 5: Konstruksyon: Naglalayong Servo

Konstruksiyon: Aiming Servo
Konstruksiyon: Aiming Servo

Ang isang butas ay pinutol sa tuktok ng kahon at ang puntiryang servo ay naka-mount at tinatakan ng silikon upang mapanatili ang pag-waterout.

Hakbang 6: Konstruksiyon: Pag-mount ng mga Power-supply, Fan, Raspberry Pi, at Proto-board

Konstruksiyon: Pag-mount ng mga Power-supply, Fan, Raspberry Pi, at Proto-board
Konstruksiyon: Pag-mount ng mga Power-supply, Fan, Raspberry Pi, at Proto-board

Ang dalawang power supply (5v at 12v) ay naka-wire sa isang solong power cord na lumalabas sa gilid ng kahon. Ang Raspberry Pi at isang proto board ay naka-mount sa gilid ng kahon na malapit sa itaas. Pansinin ang mga butas ng alisan ng tubig na drill sa ilalim at ang mga butas ng vent ng hangin na drill kasama ang itaas na gilid. Ang fan ay naka-mount sa tapat ng Raspberry Pi. Walang on / off switch dahil hindi ko nais na hikayatin ang pag-shut off ng Raspberry Pi nang walang pormal na "sudo shutdown now" na utos (ibig sabihin ay hindi nais na napapatay ng masyadong madali).

Hakbang 7: Konstruksiyon: ang Lupon ng Proto

Konstruksiyon: ang Lupon ng Proto
Konstruksiyon: ang Lupon ng Proto

Naglalaman ang board board ng isang 5v regulator, filter-cap, power transistors (na nagdadala sa servo at water balbula), at isang debug-switch.

Hakbang 8: Konstruksiyon: Raspberry Pi Camera

Konstruksiyon: Raspberry Pi Camera
Konstruksiyon: Raspberry Pi Camera

Ang Raspberry Pi cam ay kumokonekta nang direkta sa Raspberry Pi sa pamamagitan ng ribbon cable at naka-mount sa malinaw na plastic plate na sumasakop sa cutout ng pagtingin sa harap ng kahon.

Hakbang 9: Listahan ng Mga Bahagi

Natapos ang proyekto na nagkakahalaga ng halos $ 120. Ang karamihan sa gastos ng proyekto ay ang Raspberry Pi, camera, servo at mga power-supply. Natagpuan ko ang karamihan sa mga bahagi sa EBay o Amazon at ang mga bahagi ng pagtutubero sa lokal na tindahan ng hardware.

  • Raspberry Pi 3 (Amazon) $ 38
  • NoIR Camera (EBay) $ 30
  • 5v Analog Servo (4kg-cm torque) (EBay) $ 10
  • 5v / 2.4A Wall Power Supply (EBay) $ 8
  • 12v ½”Water Valve (EBay) $ 5
  • Tubing, Pipe-Couplers (Osh) $ 5
  • Plastic Ammo Box (Harbour Freight) $ 5
  • 12v / 1.5A Wall Power Supply (EBay) $ 5
  • IR Illuminator (EBay) $ 4
  • Misc. Mga Bahagi (Resistors, Switch, Diode) $ 2
  • CPU Fan (EBay) $ 2
  • Proto Board, Standoffs, Screws (EBay) $ 2
  • (2) Mga Power Transistor (2n5296) (EBay) $ 1
  • 5v Regulator (LM7805) (EBay) $ 1
  • I-clear ang plastic 3/32 "(Tapikin ang Iba Pang Mga Plastics na Bin) $ 1
  • Power Cord (Osh) $ 1

Mga tindahan / site kung saan ako bumili ng mga item:

  • Alice1101983 EBay Site:
  • 2bevoque EBay Site:
  • Harbour Freight
  • Orchard Supply Hardware
  • Amazon
  • I-tap ang Mga Plastik

Inirerekumendang: