Mündəricat:

Cat-a-way-Computer Vision Cat Sprinkler: 6 addım (şəkillərlə)
Cat-a-way-Computer Vision Cat Sprinkler: 6 addım (şəkillərlə)

Video: Cat-a-way-Computer Vision Cat Sprinkler: 6 addım (şəkillərlə)

Video: Cat-a-way-Computer Vision Cat Sprinkler: 6 addım (şəkillərlə)
Video: Alltag und Beruf - B2 - Deutsch lernen mit Dialogen 2024, Iyun
Anonim
Cat-a-way-Computer Vision Cat Sprinkler
Cat-a-way-Computer Vision Cat Sprinkler

Problem - Pişiklər bağçanızı tualet kimi istifadə edirlər

Həll - Avtomatik youtube yükləmə xüsusiyyəti olan bir pişik çiləyicisini qurmaq üçün çox vaxt sərf edin

Bu addım -addım deyil, inşaat və bəzi kodlara ümumi bir baxışdır

#BeforeYouCallPETA - Pişiklər yaxşıdır, hətta yağış kimi aşağı təzyiqli bir çiləyicidir, hətta ətrafa fırlanmadan da qabağa keçə bilərlər. Layihə bir pişiyi islatmaq deyil, Barkers Yumurtasının pişik versiyası ilə bağçamı zibil etməzdən əvvəl onları göstərməkdir.

Addım 1: Lazım olan əsas maddələr

Tələb olunan əsas maddələr
Tələb olunan əsas maddələr

Raspberry Pi zero və SD kart

Raspberry Pi kamera

Relay

555 taymer …. (və ya 555 taymeriniz gəlməsə bir arduino və başqa bir relay)

Solenoid

Çiləyici

Elektronika üçün bir növ mənzil

6 tonluq çənə çəkiclə metaforik çivəyə vurmaq istəyi

Suyu çətinliklə görə biləcəyiniz qədər kiçik bir qətnaməsi olan bir kamera, ancaq pişiklərin sığınmaq üçün qaçdığını hələ də görə bilir

Addım 2: Sistem

Image
Image

1, Pi kamera, bir neçə kamera çərçivəsi üçün hərəkət edən bir pişik ölçülü bir cisim algılar (növbəti addımda silinir)

2, Pi çiləyicini işə salır

3, Pişik örtük üçün qaçır

4, zövqə baxmaq üçün video avtomatik olaraq youtube -a yüklənir

Addım 3: Kodlaşdırma vaxtı

Birlikdə qoyulması
Birlikdə qoyulması

Çərçivə toplama əməliyyatından istifadə edərək, çərçivənin zamanla dəyişən sahələrini tapa bilərsiniz, bəzi yararsız funksiyalardan istifadə edərək bu dəyişikliklərin nə qədər böyük olduğunu və zamanla davam edib -etməyəcəyini və ən əsası pişik ölçüsündə olub olmadığını öyrənə bilərsiniz.

Google -da sürətli bir axtarış etsəniz, çərçivəni çıxarmaqla bağlı çox detallı dərslər var.

Kodun necə işlədiyinə ümumi baxış

1, Kamera çərçivələri çəkməyə və son ilə müqayisə etməyə davam edir

2, bir pişik ölçüsündə bir forma aşkar edilərsə qeyd olunur

3, pişik ölçüsündə bir dəyişiklik təxminən 4 çərçivədə davam edərsə, pi GPU -nu arduino başlatmaq üçün güc rölesi üçün istifadə edir.

4, Arduino, solenoidi aktivləşdirən 5 saniyəlik ikinci röleyi gücləndirmək üçün bir siqnal göndərir

5, Solenoid gücə malik olduqda su çiləyiciyə su verir

6, çiləyici aktiv olarkən kamera aşkarlamağı dayandırır və video yazır

7, Video Youtube -a yüklənir

8, İncə tənzimləmə sistemi üçün hələ də dropboxa yüklənmişdir

Qeyd - Solenoidi 5 saniyə açmaq üçün niyə 2 röle və bir arduino istifadə etdim?..

1, Pi videonu yazarkən solenoidi işə sala və dayandıra bilməz, çünki python skripti video bitənə qədər durur, buna görə də arduino (və ya 555 taymer) solenoidin skriptdən asılı olmayaraq açılmasına və bağlanmasına icazə verməyə ehtiyac duyur. video hələ də çəkilir.

2, İlk röle və arduino 555 sayğacı ilə əvəz edilə bilər, lakin bu layihə üçün vaxtında gəlməmişdir, 555 çox vaxta və addımlara qənaət edəcəkdir.

3, Pi GPIO 3.3v və 51mA maksimumda işlədiyi üçün pi solenoidi birbaşa işə sala bilməz və solenoid 5V və 51mA -dan çox tetiklenmesini istəyir.

4, Neigbors bağı kimi istenmeyen yerlərdə hərəkət algılamasını aradan qaldırmaq üçün hər bir çərçivə kəsilə bilər. Bunu etməməyiniz, qonşunuzun bağçanıza çaşqın bir görünüş verməsi ilə nəticələnəcək, çünki çiləyici hər dəfə öz tökmə otağına girmək istədikdə sönür.

5, yəqin ki, açıq bir şeyi qaçırdım və bu şəkildə qurmaq üçün vaxtımı itirdim.

Aşağıdakı kod

np idxal argparse kimi cv2import numpy #cat idxal vaxtı GPP olaraq idxal et ------------------------------ YouTube-a yüklə ----------------- ---------------------- def HDtoYoutube (): ctime = time.strftime ("_%H-%M-%S") cdate = time.strftime ("_%d-%m-%Y") vidname = ctime + cdate #Trigger rölesi GPIO.output (11, True) time.sleep (.5) GPIO.output (11, False) print ("Video çəkilir")) cəhd edin: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Youtube çapına yüklə ("YouTube -a yüklənir") os. sistem ('sudo youtube-upload --title = "Cat Islanıb {0}" --client-secret = client_secret.json vid {0}.h264'.format (vidname)) #Bitirdikdə video faylını sil os.remove ('vid {0}.h264'.format (vidname)) çap ("Video Pi-dən yükləndi və silindi") istisna olmaqla: pass #-------------------- ---------------------------- Dropbox-da qaldı ------------------- -------------------- def St illsToDropbox (): print ("Hələ Dropbox Funksiyasına Yüklənir") access_token = 'Ah ah ah, sehrli söz demədin… Ah ah ah, sən' ctime = time.strftime (" %H:%M:%S ") cdate = time.strftime ("%d-%m-%Y ") cəhd edin: fayl adı =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) çap (fayl adı) müştəri = dropbox.client. DropboxClient (access_token) image = açıq ("ToDropbox.jpg", 'rb') client.put_file (fayl adı, görüntü) image.close () os.remove ("ToDropbox-j.webp

#NecəTriggerRealProgrammersWithBadCode ilə

Addım 4: Bir yerə qoyun

Birlikdə qoyulması
Birlikdə qoyulması
Birlikdə qoyulması
Birlikdə qoyulması
Birlikdə qoyulması
Birlikdə qoyulması

Elektrik cihazlarını su keçirməyən bir korpusa bağlayın, əşyaları divara vidalayın və çoxlu yapışqan və isti yapışqan istifadə edin

Addım 5: Nəticələr

Image
Image
Nəticələr
Nəticələr

İşlədikdə işləyir

Addım 6: Yanlış pozitivlər

Yanlış pozitivlər
Yanlış pozitivlər

Bu edilmədikdə, pişik kölgələri, həyat yoldaşınız və qızınız.

Pro -tip - Hərəkət aşkarlama proqramını dayandıran qapıya bir keçid qoyun …. sonra qutuları çıxardanda istifadə etməyi və islanmağı unutmayın.

Ümid edirəm proqramlaşdırma, elektronika və DIY mövzusunda hər hansı bir mütəxəssis yəqin ki, etdiyim bütün səhvləri sındırdım və xüsusən də bütün yazım səhvlərimdən zövq aldığınızı ümid edirəm.

Tövsiyə: