Talaan ng mga Nilalaman:

Cat-a-way - Computer Vision Cat Sprinkler: 6 Mga Hakbang (na may Mga Larawan)
Cat-a-way - Computer Vision Cat Sprinkler: 6 Mga Hakbang (na may Mga Larawan)

Video: Cat-a-way - Computer Vision Cat Sprinkler: 6 Mga Hakbang (na may Mga Larawan)

Video: Cat-a-way - Computer Vision Cat Sprinkler: 6 Mga Hakbang (na may Mga Larawan)
Video: 10 Effective Ways to Get Rid of Fleas 2024, Nobyembre
Anonim
Cat-a-way - Computer Vision Cat Sprinkler
Cat-a-way - Computer Vision Cat Sprinkler

Suliranin - Mga pusa na ginagamit ang iyong hardin bilang isang banyo

Solusyon - Gumugol ng masyadong maraming oras sa pag-engineering ng isang pandilig ng pusa na may tampok na pag-upload ng auto youtube

Hindi ito isang hakbang-hakbang, ngunit isang pangkalahatang ideya ng konstruksyon at ilang code

#BeBeYouCallPETA - Ang mga pusa ay mabuti, ito ay isang mababang presyon ng tubig tulad ng ulan, na maaari silang lumakas bago ito kahit na mga pivot sa paligid nila. Ang proyekto ay hindi upang magbabad isang pusa, ngunit upang ipakita ang mga ito ang layo bago nila magkalat ang aking hardin sa bersyon ng pusa ng Barkers Egg.

Hakbang 1: Kinakailangan ang Pangunahing Mga Item

Pangunahing Mga bagay na Kinakailangan
Pangunahing Mga bagay na Kinakailangan

Raspberry Pi zero at SD card

Kamera ng Raspberry Pi

Relay

555 timer…. (o isang arduino at isa pang relay kung ang iyong 555 timer ay hindi dumating)

Solenoid

Pandilig

Ang ilang mga uri ng pabahay para sa electronics

Isang pagpayag na tamaan ang isang matalinghagang kuko gamit ang isang 6 tonelada na martilyo ng sledge

Isang kamera na may napakaliit na resolusyon na halos hindi mo makita ang tubig, ngunit maaari mo pa ring makita ang mga pusa na tumatakbo para sa takip

Hakbang 2: Ang Sistema

Image
Image

1, nakita ng Pi camera ang isang cat na laki ng bagay na gumagalaw para sa ilang mga frame ng camera (exapline sa susunod na hakbang)

2, itinakda ni Pi ang pandilig

3, tumatakbo ang Cat para sa takip

4, Awtomatikong na-upload ang video sa youtube para sa pagtingin sa kasiyahan

Hakbang 3: Oras ng Coding

Pagsasama-sama nito
Pagsasama-sama nito

Gamit ang openCV gamit ang pagbabawas ng frame maaari kang makahanap ng mga lugar ng frame na nagbabago sa paglipas ng panahon, gamit ang ilang magagaling na pag-andar maaari mong malaman kung gaano kalaki ang mga pagbabagong ito at kung mananatili ang mga ito sa paglipas ng panahon, at pinakamahalagang alamin kung sila ay laki ng pusa.

Mayroong ilang mga tutorial sa pagbabawas ng frame na napupunta sa mahusay na detalye kung gagawin mo ang isang mabilis na paghahanap sa google.

Pangkalahatang-ideya ng kung paano gumagana ang code

1, Patuloy na kumukuha ng mga frame ang camera at inihambing ang mga ito sa huli

2, Kung ang isang cat na hugis ng hugis ay napansin na ito ay nabanggit

3, Kung ang pagbabago ng laki ng pusa ay nagpatuloy sa paligid ng 4 na mga frame ang pi ay gumagamit ng GPIO nito sa power relay upang simulan ang arduino

4, Ang arduino ay nagpapadala ng isang senyas upang mapagana ang pangalawang relay sa loob ng 5 segundo na nagpapagana ng solenoid

5, Ang solenoid kapag pinapatakbo ay nagbibigay-daan sa tubig sa pandilig

6, Habang ang pandilig ay aktibo ang camera ay tumitigil sa pagtuklas at nagtatala ng video

7, na-upload ang video sa Youtube

8, na-upload pa rin sa dropbox para sa fine system ng pag-tune

Tandaan - Bakit natapos akong gumamit ng 2 relay at isang arduino upang i-on ang isang solenoid sa loob ng 5 segundo …..

1, ang pi ay hindi maaaring magsimula at ihinto ang solenoid habang naitala ang video habang ang python scrips ay naka-pause hanggang sa natapos ang video, samakatuwid ang pangangailangan para sa arduino (o 555 timer) upang payagan ang solenoid na buksan at isara nang nakapag-iisa sa script habang ang nagre-record pa rin ang video.

2, Ang unang relay at arduino ay maaaring mapalitan ng isang 555 timer ngunit hindi dumating sa post sa oras para sa proyektong ito, 555 ay makatipid ng maraming pera at mga hakbang sa oras.

3, Ang pi ay hindi maaaring mag-trigger ng solenoid nang direkta habang ang Pi GPIO ay gumagana sa 3.3v at 51mA max, at nais ng solenoid ang 5V at higit sa 51mA na mag-uudyok.

4, Ang bawat frame ay maaaring i-crop upang alisin ang paggalaw ng paggalaw sa mga hindi ginustong mga lugar, tulad ng isang neigbours na hardin. Ang kabiguang gawin ito ay magreresulta sa nasabing kapitbahay na nagbibigay ng nalilito na hitsura sa iyong hardin dahil ang pandilig ay lumalabas sa tuwing nais niyang pumunta sa kanyang libangan.

5, malamang na napalampas ko ang isang bagay na halata at nasayang ang oras ko sa pagse-set up nito ng ganito.

Code sa ibaba

i-import ang cv2import numpy bilang np import argparse #cat import time import RPi. GPIO bilang GPIO import os import dropbox mula sa picamera.array import PiRGBArray mula sa picamera import PiCamera # ---------------- ---------------------------- Mag-upload sa youtube ----------------- ----------------- def HDtoYoutube (): ctime = time.strftime ("_% H-% M-% S") cdate = time.strftime ("_% d-% m-% Y") vidname = ctime + cdate #Trigger relay GPIO.output (11, True) time.s Sleep (.5) GPIO.output (11, Mali) print ("Pagkuha ng Video") subukan: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Upload to youtube print ("Uploading to YouTube") os. system ('sudo youtube-upload --title = "Cat Got Wet {0}" --client-lihim = client_secret.json vid {0}.h264'.format (vidname)) #Katanggal ang file ng video kapag tapos na os.remove ('vid {0}.h264'.format (vidname)) print ("Na-upload ang video at inalis mula sa Pi") maliban sa: ipasa ang # ----------------- ---------------------------- Stills to dropbox ------------------- -------------------- def St. illsToDropbox (): print ("Pag-upload Pa rin sa Dropbox Function") access_token = 'Ah ah ah, hindi mo sinabi ang mahika na salita … Ah ah ah, hindi mo sinabi ang mahika na salitang' ctime = time.strftime (" % H:% M:% S ") cdate = time.strftime ("% d-% m-% Y ") subukan: filename =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) print (filename) client = dropbox.client. DropboxClient (access_token) image = open ("ToDropbox.jpg", 'rb') client.put_file (filename, image) image.close () os.remove ("ToDropbox.jpg ") maliban sa: pumasa # ------------------------------------------ ------ Tuklasin ang paggalaw --------------------- def DetectMotion (): #Define vars min_area = 400 tolarance = 25 #pagpalit sa pixel bluramount = 21 timetoforget = 0.5 kernel = np.ones ((5, 5), np.uint8) #ginagamit para sa dialate MotionCounter = 0 MinTargetArea = 600 # pinakamaliit na sukat upang makita ang MaxTargetArea = 5000 # Pinakamalaking sukat upang matukoy ngayon = oras.time () pagkatapos = oras.time () #initialise camera camera = PiCamera () camera.resolution = (640, 480) camera.framerate = 10 raw Capture = PiRGBArray (camera, size = (640, 480)) #warmup camera time. Sleep (1) #Grab first frame & prep it to go into cv2.acumulate weight camera.capture (rawCapture, format = "bgr") avg = rawCapture.array #Crop out hindi ginustong rehiyon PolyCrop = np.array (

#HowToTriggerRealProgrammersWithBadCode

Hakbang 4: Pagsasama-sama Ito

Pagsasama-sama nito
Pagsasama-sama nito
Pagsasama-sama nito
Pagsasama-sama nito
Pagsasama-sama nito
Pagsasama-sama nito

I-cram ang mga electrics sa isang hindi tinatagusan ng tubig na pabahay, i-tornilyo ang mga bagay sa dingding at gumamit ng maraming duct tape at mainit na pandikit

Hakbang 5: Mga Resulta

Image
Image
Mga Resulta
Mga Resulta

Kapag gumagana ito gumagana

Hakbang 6: Maling Mga Positibo

Maling positibo
Maling positibo

Kapag hindi ito nag-spray ng mga anino ng pusa, ang iyong asawa at ang iyong anak na babae.

Pro-tip - Maglagay ng isang switch sa pamamagitan ng pintuan na nag-pause sa programa ng paggalaw ng paggalaw ….. pagkatapos kalimutan na gamitin ito at magbabad kapag inilalagay ang mga bins.

Inaasahan kong gumawa ako ng anumang mga dalubhasa sa pagprograma, electronics at DIY cringe sa lahat ng mga pagkakamali na malamang na nagawa ko, at lalo na inaasahan kong nasiyahan ka sa lahat ng aking pagkakamali sa pagbaybay.

Inirerekumendang: