Mündəricat:

CribSense: Kontaktsiz, Video əsaslı bir körpə monitoru: 9 addım (şəkillərlə)
CribSense: Kontaktsiz, Video əsaslı bir körpə monitoru: 9 addım (şəkillərlə)

Video: CribSense: Kontaktsiz, Video əsaslı bir körpə monitoru: 9 addım (şəkillərlə)

Video: CribSense: Kontaktsiz, Video əsaslı bir körpə monitoru: 9 addım (şəkillərlə)
Video: ИНФРАКРАСНЫЙ БЕСКОНТАКТНЫЙ ТЕРМОМЕТР с Алиэкспресс Обзор, Тесты 2024, Noyabr
Anonim
CribSense: Kontaktsiz, Video əsaslı bir körpə monitoru
CribSense: Kontaktsiz, Video əsaslı bir körpə monitoru
CribSense: Kontaktsiz, Video əsaslı bir körpə monitoru
CribSense: Kontaktsiz, Video əsaslı bir körpə monitoru

CribSense, banka zərər vermədən özünüzü edə biləcəyiniz video əsaslı, təmassız bir körpə monitorudur

CribSense, Raspberry Pi 3 Model B-də işləməyə uyğunlaşdırılmış Video Büyütmənin C ++ tətbiqidir. Həftə sonu körpənizin hərəkəti dayanarsa həyəcan siqnalı verən öz beşiyinizdəki körpə monitorunuzu qura bilərsiniz. Bir bonus olaraq, bütün proqramlar qeyri-kommersiya məqsədləri üçün istifadə edilə bilər və asanlıqla genişləndirilə bilər.

Mənbə sənədləri və sənədlər olan tam depoya https://github.com/lukehsiao/CribSense ünvanında baxmaq olar.

CribSense -in olduqca əyləncəli olduğunu düşünsək də, bunun həqiqətən təsdiqlənmiş, ağlasığmaz bir təhlükəsizlik cihazı olmadığını xatırlamaq vacibdir. Yəni işləmək üçün düzgün qurulmalı və yaxşı idarə olunan bir mühitə sahib olmalıdır. Məsələn, yaxşı kalibrlənməmişsə və/və ya videodakı mühit videonun böyüdülməsi üçün əlverişli deyilsə, istifadə edə bilməyəcəksiniz. Bunu bir Raspberry Pi kimi məhdud hesablanmış aparatlarda işləyən video böyütmə kimi ağır hesablama proqramına sahib ola biləcəyimizi görmək üçün əyləncəli bir layihə etdik. Hər hansı bir real məhsul, etdiyimizdən daha çox sınaq tələb edir. Beləliklə, bu layihəni istifadə edirsinizsə, bunun nə olduğunu götürün: bir Pi üzərində video böyütmə haqqında qısa bir araşdırma.

Nə lazımdır:

Raspberry Pi + Kamera + Konfiqurasiya Alətləri:

  • Raspberry Pi 3 Model B
  • 5V 2.5A Mikro USB Güc Təchizatı
  • Raspberry Pi NoIR Kamera Modulu V2
  • MicroSD Kart (16 GB Sınıf 10 Kartdan istifadə etdik)
  • Raspberry Pi Kamera üçün Flex Kabel (12 ")
  • 3,5 mm girişi olan dinamiklər
  • HDMI monitor
  • USB klaviatura
  • USB siçan
  • [isteğe bağlı] Raspberry Pi Soyuducu (istidən narahat olsanız, bunlardan birini Pi -yə yapışdıra bilərsiniz)

Aşağı işıqlı iş üçün IR LED Devresi:

  • [3x] 1N4001 Diodlar
  • 1 Ohm, 1W rezistor
  • 1W IR LED
  • LED -i Pi -yə bağlamaq üçün 2 tel
  • Lehimleme dəmir

Şassi:

  • Şassilərimizi çap etmək üçün 3D printerə (minimum quruluş həcmi = 9.9 "L x 7.8" W x 5.9 "H) daxil olun. Bununla belə, özünüzü qurmaqdan çekinmeyin.
  • Yapışqan (hər cür yapışqan işləyəcək, amma prototip üçün isti yapışqan tövsiyə olunur).

Addım 1: ön şərtlər

Addım-addım bələdçimizə başlamazdan əvvəl SD kartınıza Raspbian-ın ən son versiyasını quraşdırmalı və Pi-nin işlək olmasını təmin etməlisiniz. Kameraya girməzdən əvvəl kamera modulunu da aktiv etməlisiniz.

Addım 2: CribSense Proqramının Qurulması

CribSense, autoconf, libtool, OpenCV və libcanberra ilə birlikdə ümumi proqram vasitələrindən asılıdır.

  • autoconf və libtool, makefile fayllarını avtomatik olaraq konfiqurasiya etmək və bir çox platformalarda (Linux, OSX və Raspberry Pi kimi) CribSense üçün skriptlər qurmaq üçün istifadə olunur.
  • OpenCV, görüntünün işlənməsi üçün istifadə olunan güclü bir kompüter görmə paketidir və videonun böyüdülməsi və hərəkət aşkarlama kodunun əsasını təşkil edir. Böyük bir dəstəyə malikdir, istifadəsi asandır və yaxşı performansa malikdir.
  • libcanberra hadisə səsləri oynamaq üçün sadə bir kitabxanadır. CribSense üçün həyəcan səsini çalmaq üçün istifadə olunur.

Tam məlumat almaq üçün fərdi səhifələrini ziyarət edin.

Pi -də bir terminal açaraq işə salın:

sudo apt-get install git build-essential autoconf libtool libopencv-dev libcanberra-dev

Sonra bcm2835-v4l2 '/etc/modules-load.d/modules.conf`-a əlavə edərək kamera sürücüsünü avtomatik yükləməyə başlamalısınız. Modules.conf faylınız belə görünməlidir:

# /etc /modules: açılış zamanı yüklənəcək nüvə modulları.

# # Fayl, hər satırda bir açılış zamanı # yüklənməli olan nüvə modullarının adlarını ehtiva edir. "#" İlə başlayan sətirlər nəzərə alınmır. i2c-dev bcm2835-v4l2

Fayl redaktə edildikdən sonra Pi -ni yenidən başlatmalısınız. Bu sürücü CribSense tərəfindən NoIR Kamerasından çərçivələri birbaşa çəkmək üçün istifadə olunur.

Sonra, işləyərək anbarı klonlaya bilərsiniz:

git klonu

Sonra, depoya keçin və işləyərək proqramı qurun

cd CribSense

./autogen.sh --prefix =/usr --sysconfdir =/etc --disable-debug sudo install sudo systemctl daemon-reload qurun

Təbrik edirik, bütün lazımi proqramları quraşdırmısınız!

Konfiqurasiya

CribSense, sadə bir INI konfiqurasiya faylı vasitəsilə özelleştirilebilir. "Install install" işə salındıqdan sonra konfiqurasiya faylı /etc/cribsense/config.ini ünvanında yerləşir. Çalışaraq bu parametrləri görə və düzəldə bilərsiniz

sudo nano /etc/cribsense/config.ini

Varsayılan konfiqurasiyada hər bir parametrin qısa izahı verilmişdir, lakin daha ətraflı məlumatı https://lukehsiao.github.io/CribSense/setup/config/ saytında əldə etmək olar. Bu təlimatın sonunda kalibrləmə və konfiqurasiya haqqında da danışacağıq.

CribSense işlədilir

CribSense, bir sistem xidmətindən istifadə edərək başlanğıcda çalışmaq üçün hazırlanmışdır. Raspberry Pi -yə klaviatura və siçan ilə qoşularkən, konfiqurasiya parametrlərinin beşiyiniz üçün işlədiyinə əmin olmalısınız. Hərəkət etsəniz, bu parametrləri yenidən tənzimləməyiniz lazım ola bilər.

Parametrləri tənzimləyərkən işləyərək komanda xəttindən istədiyiniz halda cribsense işlədə bilərsiniz

cribsense --config /etc/cribsense/config.ini

Siz razı qaldıqdan sonra işləyərək autorun -u aktiv edə bilərsiniz

sudo systemctl cribsense imkan verir

Qaçaraq cribsense -in avtomatik işləməsini dayandıra bilərsiniz

sudo systemctl cribsense -i deaktiv edin

Proqrama Baxış

CribSense proqramı bu layihənin ürəyi və ruhudur. MIT -dən video böyütmənin bəzi möhtəşəm demolarını gördük və Raspberry Pi -də oxşar bir alqoritmi sınamaq istədik. Bu, Pi-də real vaxt rejimində çalışmaq üçün C ++ video böyütmə tətbiqində tbl3rd işindən 10 qat çox sürət tələb etdi. Tələb olunan optimallaşdırmalar proqramın dizaynına rəhbərlik etdi.

Yüksək səviyyədə, CribSense bir proqram vəziyyəti maşını vasitəsilə dəfələrlə dövr edir. Birincisi, hər 640x480, boz rəngli video çərçivəni daha yaxşı önbellek yeri üçün 3 üfüqi hissəyə (640x160) bölür. Daha sonra ayrı bir iplikdə hər bir bandı böyüdür və çərçivədə görünən hərəkəti izləyir. Hərəkəti bir neçə saniyə izlədikdən sonra, əsas hərəkət sahəsini təyin edir və çərçivəni ona uzadır. Bu, alqoritmin işlənməsi üçün lazım olan piksellərin ümumi sayını azaldır. Sonra, CribSense kəsilmiş axındakı hərəkət miqdarını izləyir və konfiqurasiya edilə bilən müddət ərzində heç bir hərəkət qəbul edilmədiyi təqdirdə həyəcan siqnalı verir. Periyodik olaraq, CribSense, körpənin hərəkət etməsi halında tam çərçivəni izləmək üçün yenidən görünüşünü açacaq və yeni əsas hərəkət sahəsi ətrafında yenidən əkiləcək.

Video böyütmə, körpənin nəfəs alması kimi incə hərəkətlərin səs -küy nisbətini artırmaq üçün istifadə olunur. Daha böyük hərəkətlər üçün lazım olmayacaq, ancaq çox incə hərəkətlərə kömək edə bilər. Diqqət yetirin ki, tətbiqimiz MIT sənədlərində təsvir olunan alqoritmə əsaslanır və öz mülkiyyət kodunu yaxşı yerinə yetirmir.

Çox işləmə, adaptiv əkin və tərtibçi optimallaşdırması kimi optimallaşdırmalar bizə sırasıyla təxminən 3x, 3x və 1.2x sürət verdi. Bu, Pi üzərində real vaxtda çalışmaq üçün lazım olan 10 qat sürətləndirməyə nail olmağımıza imkan verdi.

Tam məlumatı CribSense deposunun Proqram Memarlığı səhifəsində tapa bilərsiniz.

Video böyütmə ilə maraqlanırsınızsa, MIT -in səhifəsinə daxil olun.

Addım 3: Avadanlığınızı Hazırlayın: Kameranızı qoşun

Avadanlığınızı Hazırlayın: Kameranızı qoşun
Avadanlığınızı Hazırlayın: Kameranızı qoşun

Birincisi, kamera ilə birlikdə gələn 6 "kabeli 12" kabel ilə dəyişdirməlisiniz. Bunu etmək üçün kamera kabelinin dəyişdirilməsi ilə bağlı bu təlimatı izləyə bilərsiniz.

Xülasə olaraq, kameranın arxasında fleks kabelini çıxarmaq üçün çıxara biləcəyiniz bir itmə/çəkmə nişanı görəcəksiniz. Qısa kabeli daha uzun olanı ilə əvəz edin və tıxanı geri itələyin.

Şəkillərimizdə 24 "kabelin olduğunu görürsünüz. Çox uzun idi. Materiallar siyahısındakı 12" kabel daha ağlabatan uzunluqdadır.

Addım 4: Avadanlığınızı Hazırlayın: IR LED

Avadanlığınızı Hazırlayın: IR LED
Avadanlığınızı Hazırlayın: IR LED
Avadanlığınızı Hazırlayın: IR LED
Avadanlığınızı Hazırlayın: IR LED
Avadanlığınızı Hazırlayın: IR LED
Avadanlığınızı Hazırlayın: IR LED

CribSense qurmaq nisbətən asandır və əsasən satışda olan hissələrdən ibarətdir. Yuxarıdakı şəkildə göründüyü kimi, yalnız 2 -si xüsusi olaraq hazırlanan 5 əsas hardware komponenti var. Bu səhifə IR LED sxeminin necə qurulacağını və növbəti səhifədə şassinin necə qurulacağını araşdıracaq.

Bu hissədə, lehimləmə dəmirinizi, tellərinizi, diodlarınızı, IR LED və rezistorunuzu almalısınız. 2 -ci şəkildə göstərilən dövrəni quracağıq. Lehimləmə təcrübəniz varsa, sizi yaxalayacaq gözəl bir bələdçidir. Bu təlimat delikli lehimdən bəhs edərkən, 3-cü şəkildə göstərildiyi kimi bu komponentləri birləşdirmək üçün eyni əsas üsullardan istifadə edə bilərsiniz.

Gecələr kifayət qədər işıqlandırma təmin etmək üçün insan gözünə görünməyən, lakin NoIR kamerasına görünən bir IR LED istifadə edirik. IR LED, Raspberry Pi ilə müqayisədə çox enerji sərf etmir, buna görə də sadəlik naminə İQ LEDini açıq buraxırıq.

Pi -nin əvvəlki versiyalarında bu pinlərin maksimum cərəyanı 50mA idi. Raspberry Pi B+ bunu 500mA -ya qaldırdı. Bununla birlikdə, sadəlik üçün 5A güc pinlərindən istifadə edirik ki, bu da 1.5A -ya qədər güc təmin edə bilər. IR LED -in irəli gərginliyi ölçülərimizə görə təxminən 1.7 ~ 1.9V -dir. IR LED özünə zərər vermədən 500mA çəkə bilsə də, istiliyi və ümumi enerji istehlakını azaltmaq üçün cərəyanı təxminən 200mA -ya endiririk. Təcrübə nəticələri də göstərir ki, IR LED 200mA giriş cərəyanı ilə kifayət qədər parlaqdır. 5V ilə 1.9V arasındakı boşluğu aradan qaldırmaq üçün IR LED ilə birlikdə 3 ədəd 1N4001 diod və 1 Ohm rezistordan istifadə edirik. Telin, diodların və rezistorun üzərindəki gərginliyin düşməsi sırasıyla təxminən 0.2V, 0.9V (hər biri üçün) və 0.2V -dir. Beləliklə, IR LED üzərindəki gərginlik 5V - 0.2V - (3 * 0.9V) - 0.2V = 1.9V -dir. LED üzərindəki istilik dağılımı müqavimət üzərində 0.18W və 0.2W -dir, hamısı maksimum dəyərlər daxilindədir.

Ancaq hələ bitirməmişik! 3D çaplı şassiyə daha yaxşı uyğunlaşmaq üçün İK LED lensinin şassimizdən çıxmasını və PCB lövhəsinin çuxurla bərabər olmasını istəyirik. Sağ altdakı kiçik fotodiod mane olacaq. Bunu düzəltmək üçün, son iki fotoşəkildə göstərildiyi kimi sökürük və lövhənin əks tərəfinə çeviririk. LED -in daim yanmasını istədiyimiz üçün fotodiod lazım deyil. Sadəcə əks tərəfə keçməklə orijinal LED dövrə dəyişməz qalır.

Tellərə lehim edərkən, tellərin ən az 12 düym uzunluğunda olduğundan və Pi -nin GPIO -larının üzərinə sürüşə biləcək pin başlıqlarına malik olduğundan əmin olun.

Addım 5: Avadanlığınızı Hazırlayın: Şassi

Avadanlığınızı Hazırlayın: Şassi
Avadanlığınızı Hazırlayın: Şassi
Avadanlığınızı Hazırlayın: Şassi
Avadanlığınızı Hazırlayın: Şassi
Avadanlığınızı Hazırlayın: Şassi
Avadanlığınızı Hazırlayın: Şassi

Mənbə Faylları:

  • Case STL
  • Case Makerbot
  • STL örtüyü
  • Makerbot qapağı

Pi, kamera və LED -i yerləşdirmək üçün sadə 3D çaplı şassi istifadə etdik. Şassimizi istifadə etmək isteğe bağlıdır, baxmayaraq ki, gənc uşaqların açıq elektron sxemlərə toxunmaması üçün tövsiyə olunur. Hər beşik fərqlidir, buna görə şassimizə montaj mötərizəsi daxil deyil. Bir neçə montaj variantı ola bilər:

  • Kabel bağları
  • 3M ikili kilid
  • Velcro
  • Tape

Bir MakerBot Replikatoruna (5 -ci Nəsil) daxil olsanız, iş üçün.makerbot fayllarını yükləyə və MakerBot Replikatorunuza yazdıra bilərsiniz. Kılıfı çap etmək üçün təxminən 6 saat, qapağı çap etmək üçün isə 3 saat çəkir. Fərqli bir 3D printerdən istifadə edirsinizsə, oxumağa davam edin.

CribSense -i çap etmək üçün minimum 9.9 "(L) x 7.8" (W) x 5.9 "(H) həcmində tikinti həcmi tələb olunur. Bu quruluş həcminə malik 3D printerə çıxışınız yoxdursa, onlayn 3D çapdan istifadə edə bilərsiniz. xidmət (məsələn, Shapeways və ya Sculpteo) çap etmək üçün CribSense. Minimum çap qətnaməsi 0.015 "dir. Bir qaynaqlanmış filament istehsal tipli 3D printerdən istifadə edirsinizsə, bu, burun diametrinizin 0,015 "və ya daha kiçik olması deməkdir. Daha aşağı çap qətnamələrinə (daha böyük nozzle diametrləri) malik olan printerlər işləyə bilər, lakin Raspberry Pi şassiyə uyğun olmaya bilər. Tercih olunan çap materialı olaraq PLA (polilaktik turşu) tövsiyə edirik. Digər plastiklər işləyə bilər, ancaq seçilmiş plastikin istilik genişləndirilməsi əmsalı PLA -dan daha böyükdürsə, Raspberry Pi uyğun gələ bilməz. qızdırılan tikinti plitəsi, davam etməzdən əvvəl qızdırıcını söndürün.

Modelin printerinizin quruluş lövhəsinə yönəldilməsi uğurlu çap üçün çox vacibdir. Bu modellər diqqətlə hazırlanmışdır ki, dəstək materialı ilə çap edilməsinə ehtiyac yoxdur, beləliklə plastik qənaət edilir və çap keyfiyyəti artırılır. Davam etmədən əvvəl, çanta və örtük üçün 3D faylları yükləyin. Bu modelləri çap edərkən CribSense -in boynu tikinti lövhəsi üzərində düz yatmalıdır. Bu, modellərdəki bütün açı açılarının 45 dərəcəni keçməməsini təmin edir və bununla da dəstək materialı tələbini aradan qaldırır. Yazıcınızın quruluş həcmində 3D modelləri istiqamətləndirməklə bağlı təlimatlar üçün 3D printerinizlə birlikdə gələn təlimat kitabçasına baxın. Kassanın və örtüyün quruluş istiqaməti üçün nümunələr yuxarıda göstərilmişdir.

CribSense -in boynunu tikinti lövhəsinə düz qoymağa əlavə olaraq, modellərin şaquli ox ətrafında döndüyünü görə bilərsiniz. Modeli 3D printerinizin quruluş həcminə uyğunlaşdırmaq üçün lazım ola bilər. Quruluş həcminizin uzunluğu CribSense -ə uyğun olaraq kifayət qədər uzun olarsa, bu fırlanma isteğe bağlıdır.

Addım 6: Avadanlığınızı Hazırlayın: Montaj

Avadanlığınızı Hazırlayın: Quraşdırma
Avadanlığınızı Hazırlayın: Quraşdırma
Avadanlığınızı Hazırlayın: Montaj
Avadanlığınızı Hazırlayın: Montaj
Avadanlığınızı Hazırlayın: Montaj
Avadanlığınızı Hazırlayın: Montaj
Avadanlığınızı Hazırlayın: Quraşdırma
Avadanlığınızı Hazırlayın: Quraşdırma

Bütün avadanlıqları hazırladıqdan sonra montaja başlaya bilərsiniz. Bu prosesdə hər hansı bir yapışqan istifadə edilə bilər, ancaq iki əsas səbəbə görə isti yapışqan tövsiyə edirik. İsti yapışqan tez quruyur, buna görə də yapışqanın quruması üçün uzun müddət gözləmək lazım deyil. Bir səhv etsəniz, isti yapışqan da çıxarıla bilər. Qurudulmuş isti yapışqanı çıxarmaq üçün isti yapışqanı sürtmə (izopropil) spirtinə batırın. 90% və ya daha yüksək konsentrasiyanı tövsiyə edirik, amma 70% konsentrasiyası hələ də işləyəcək. Qurudulmuş isti yapışqanı izopropil spirtdə islatmaq, yapışqanla altdakı səth arasındakı bağı zəiflədərək yapışqanı təmiz bir şəkildə soymağa imkan verəcəkdir. Yapışqan izopropil spirtdə isladılarkən, Raspberry Pi elektrik enerjisindən ayrılmalı və elektrikdən ayrılmalıdır. İsti yapışqan tətbiq etməzdən və Raspberry Pi -ni yükləməzdən əvvəl hər şeyi qurudun.

Bu addımlar üçün bütün şəkillər öz qaydasındadır və mətn addımlarını izləyin.

  1. Raspberry Pi -ni şassiyə daxil edin. Səs portunu daxil etmək üçün bir az əyilməli olacaqsınız, ancaq daxil olduqdan sonra audio jak onu yerində saxlayacaq. Yerdə olduqdan sonra bütün limanlara hələ də daxil ola biləcəyinizə əmin olun (məsələn, elektrik kabelini bağlaya bilərsiniz).
  2. Sonra, Pi -ni yerinə yerləşdirmək və kameranı Pi -yə bağlamaq üçün isti yapışqan istifadə edin. İstifadə etmək istəsəniz vida delikləri də var.
  3. İndi LED və kameranı ön qapağa yapışdırın (şəkildə). NoIR kamerasını kamera deliyinə isti yapışdıraraq başlayın. Kameranın rahat və şassi ilə düzülmüş olduğundan əmin olun. Çox yapışqan istifadə etməyin; əks halda kameranı əsas korpusa sığdıra bilməyəcəksiniz. Pi -ni işə saldığınızdan və kameranın yaxşı göründüyündən əmin olmaq üçün (məsələn, raspistill -v`) əmin olun. Əks təqdirdə, isti yapışqanı çıxarın və yenidən yerləşdirin.
  4. Sonra, IR LEDini qapağın boynundakı çuxura yapışdırın. Boyun beşiyi yan işıqlandırmaq üçün 45 dərəcə bir açıdadır, bu da az işıqlı vəziyyətlərdə daha çox kölgə ilə nəticələnir. Bu, görüntüyə daha çox kontrast əlavə edərək hərəkəti aşkarlamağı asanlaşdırır.
  5. IR LED tellərini sxematik şəkildə göstərildiyi kimi Raspberry Pi -nin baş pinlərinə bağlayın.
  6. Kabelləri şassiyə bükməyin və sıxmayın. Kameramızın fleks kabeli çox uzun olduğu üçün kabel akkordeon üslubunu qatlayaraq bitirdik.
  7. İçərisinə hər şeyi yapışdıraraq, iki parçanın qovuşduğu kənarlara isti yapışqan qoyun və yerində möhürləyin.

Addım 7: Kalibrləmə

Image
Image
Kalibrləmə
Kalibrləmə

Konfiqurasiya parametrləri haqqında ətraflı məlumatı CribSense depo sənədlərində tapa bilərsiniz. Hər şeyi qurduqdan sonra CribSense -i necə kalibr edə biləcəyinizə dair bir nümunə görmək üçün videoya da baxın.

Budur konfiqurasiya faylının nümunəsi:

[io]; I/O konfiqurasiyası

; giriş = path_to_file; İnput_fps = 15 istifadə etmək üçün giriş faylı; fps giriş (40 max, kamera istifadə edilərsə 15 tövsiyə olunur) full_fps = 4.5; tam çərçivələrin işlənə biləcəyi fps məhsul_fps = 15; kəsilmiş çərçivələrin işlənə biləcəyi fps kamera = 0; Genişliyi istifadə etmək üçün kamera = 640; Giriş video hündürlüyünün eni = 480; Giriş videosunun hündürlüyü time_to_alarm = 10; Siqnaldan əvvəl heç bir hərəkət etmədən neçə saniyə gözləmək lazımdır. [kəsmə]; Adaptiv Kəsmə Ayarları məhsulu = doğru; Frames_to_settle = 10 kəsmək və ya etməmək; sıfırlandıqdan sonra gözləmək üçün # çərçivə roi_update_interval = 800; ROI yenidən hesablanması arasında # çərçivə roi_window = 50; ROI [hərəkət] seçməzdən əvvəl izləniləcək # çərçivə; Hərəkət Algılama Ayarları erode_dim = 4; erode nüvəsinin ölçüsü dilate_dim = 60; dilate kernelin ölçüsü diff_threshold = 8; dəyişiklik müddəti tanınmadan əvvəl lazım olan abs fərqi = 1; Həqiqi pixel_threshold = 5 işarələnmədən əvvəl hərəkəti davam etdirmək üçün # çərçivə; Motion show_diff = false kimi işarələnmək üçün fərqli olmalı olan # piksel; 3 çərçivə arasındakı fərqi göstərin [böyütmə]; Video Büyütmə Ayarları amplify = 25; İstənilən % amplification aşağı kəsilmə = 0.5; Bant keçidinin aşağı tezliyi. yüksək kəsilmə = 1.0; Bant keçidinin yüksək tezliyi. eşik = 50; Faza eşiği % pi olaraq. show_magnification = yalan; Hər bir böyütmənin çıxış çərçivələrini göstərin [debug] print_times = false; Çap təhlili vaxtları

Alqoritmin kalibrlənməsi dəqiq həlli olmayan iterativ bir cəhddir. Ətrafınıza ən uyğun olan parametrlərin birləşməsini tapmaq üçün onları ayıklama xüsusiyyətləri ilə birləşdirərək müxtəlif dəyərləri sınamağı məsləhət görürük. Kalibrləməyə başlamazdan əvvəl show_diff və show_magnification -ın doğru olaraq ayarlandığından əmin olun.

Bir təlimat olaraq, amplifikasiyanın və faza həddi dəyərlərinin artması, giriş videosuna tətbiq olunan böyütmə miqdarını artırır. Video çərçivədə izləmək istədiyiniz hərəkəti aydın görənə qədər bu dəyərləri dəyişdirməlisiniz. Artefaktlar görürsünüzsə, eyni amplifikasiyanı saxlayarkən faza həddini azaltmaq kömək edə bilər.

Hərəkət aşkarlama parametrləri səs -küyü kompensasiya etməyə kömək edir. Hərəkət bölgələrini aşkar edərkən, erode_dim və dilate_dim, hərəkəti aşındırmaq və genişləndirmək üçün istifadə edilən OpenCV ləpələrinin ölçülərini ölçmək üçün istifadə olunur, beləliklə səs -küy əvvəlcə aşındırılır, sonra qalan hərəkət siqnalı hərəkət bölgələrini aydın etmək üçün əhəmiyyətli dərəcədə genişlənir. Yatağınız çox yüksək kontrastlı bir vəziyyətdədirsə, bu parametrlərin də tənzimlənməsi lazım ola bilər. Ümumiyyətlə, yüksək kontrast parametrləri üçün daha yüksək erode_dim, aşağı kontrast üçün isə daha aşağı erode_dimə ehtiyacınız olacaq.

CribSense -i show_diff = true ilə işə salırsınızsa və akkumulyator çıxışının çox hissəsinin ağ rəngdə olduğunu və ya videonun tamamilə əlaqəsi olmayan bir hissəsinin hərəkət (məsələn, yanıb -sönən lampa) kimi aşkarlandığını görürsünüzsə, erode_dim -i videonun yalnız bir hissəsinə qədər artırın. ağınızın ən böyük hissəsi körpənizə uyğun gəlir. Birinci rəqəm, eroziya ölçüsünün çərçivədəki hərəkət miqdarı üçün çox aşağı olduğu bir nümunəni, sonrakı şəkil isə yaxşı kalibrli bir çərçivəni göstərir.

Bu kalibrləndikdən sonra, pixel_thresholdun "Pixel Movement" hamısının deyil, yalnız piksel hərəkətinin ən yüksək dəyərlərini bildirəcəyi bir dəyərə qoyulduğundan əmin olun (bu, səs -küyü kəsmək lazımdır deməkdir). İdeal olaraq, hərəkətə uyğun olaraq aydın bir dövri nümunənin olduğu terminalda belə bir çıxış görəcəksiniz:

[məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 1.219812 Hz

[info] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 1.219812 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 1.219812 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 1.219812 Hz [məlumat] Piksel Hərəkəti: 44 [məlumat] Hərəkət Təxmini: 1.219812 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 1.219812 Hz [məlumat] Piksel Hərəkəti: 161 [məlumat] Hərəkət Tahmini: 1.219812 Hz [məlumat] Piksel Hərəkəti: 121 [məlumat] Hərəkət Tahmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 86 [məlumat] Hərəkət Tahmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.841416 Hz [info] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 0.841416 Hz [məlumat] Piksel Hərəkəti ent: 0 [məlumat] Hərəkət Təxmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 97 [məlumat] Hərəkət Təxmini: 0.841416 Hz [məlumat] Piksel Hərəkəti: 74 [məlumat] Hərəkət Tahmini: 0.839298 Hz [məlumat] Piksel Hərəkət: 0 [məlumat] Hərəkət Təxmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 60 [məlumat] Hərəkət Tahmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 48 [məlumat] Hərəkəti Təxmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 38 [məlumat] Hərəkət Təxmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 29 [məlumat] Hərəkət Tahmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 28 [məlumat] Hərəkət Tahmini: 0.839298 Hz [info] Piksel Hərəkəti: 22 [məlumat] Hərəkət Təxmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Təxmini: 0.839298 Hz [məlumat] Piksel Hərəkəti: 0 [məlumat] Hərəkət Tahmini: 0.839298 Hz

Çıxışınız daha çox belə görünürsə:

[məlumat] Piksel Hərəkəti: 921 [məlumat] Hərəkət Tahmini: 1.352046 Hz

[məlumat] Piksel Hərəkəti: 736 [məlumat] Hərəkət Təxmini: 1.352046 Hz [məlumat] Piksel Hərəkəti: 666 [məlumat] Hərəkət Təxmini: 1.352046 Hz [məlumat] Piksel Hərəkəti: 663 [məlumat] Hərəkət Tahmini: 1.352046 Hz [məlumat] Piksel Hərəkəti: 1196 [məlumat] Hərəkət Tahmini: 1.352046 Hz [məlumat] Piksel Hərəkəti: 1235 [məlumat] Hərəkət Təxmini: 1.352046 Hz [məlumat] Piksel Hərəkəti: 1187 [məlumat] Hərəkət Tahmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 1115 [məlumat] Hərəkət Təxmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 959 [məlumat] Hərəkət Təxmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 744 [məlumat] Hərəkət Tahmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 611 [məlumat] Hərəkət Tahmini: 1.456389 Hz [info] Piksel Hərəkəti: 468 [məlumat] Hərəkət Təxmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 371 [məlumat] Hərəkət Təxmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 307 [məlumat] Hərəkət Tahmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 270 [məlumat] Hərəkət Tahmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 234 [məlumat] Hərəkət Tahmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 197 [məlumat] Hərəkət Tahmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 179 [məlumat] Hərəkət Tahmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 164 [məlumat] Hərəkət Tahmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 239 [məlumat] Hərəkət Tahmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 733 [məlumat] Hərəkət Təxmini: 1.456389 Hz [məlumat] Piksel Hərəkəti: 686 [məlumat] Hərəkət Tahmini: 1.229389 Hz [məlumat] Piksel Hərəkəti: 667 [məlumat] Hərəkət Tahmini: 1.229389 Hz [məlumat] Piksel Hərəkəti: 607 [info] Hərəkət Tahmini: 1.229389 Hz [məlumat] Piksel Hərəkəti: 544 [məlumat] Hərəkət Təxmini: 1.229389 Hz [məlumat] Piksel Hərəkəti: 499 [məlumat] Hərəkət Tahmini: 1.229389 Hz [məlumat] Piksel Hərəkəti: 434 [məlumat] Hərəkət Tahmini: 1.229389 Hz [məlumat] Piksel Hərəkəti: 396 [məlumat] Hərəkət Tahmini: 1.229389 Hz [məlumat] Piksel Hərəkəti: 375 [məlumat] Hərəkət Tahmini: 1.229389 Hz [məlumat] Piksel Hərəkəti: 389 [məlumat] Hərəkət Tahmini: 1.229389 Hz [məlumat] Piksel Hərəkəti: 305 [məlumat] Hərəkət Tahmini: 1.312346 Hz [məlumat] Piksel Hərəkəti: 269 [məlumat] Hərəkət Tahmini: 1.312346 Hz [məlumat] Piksel Hərəkəti: 1382 [məlumat] Motion E stimullaşdırmaq: 1.312346 Hz [məlumat] Piksel Hərəkəti: 1086 [məlumat] Hərəkət Tahmini: 1.312346 Hz [məlumat] Piksel Hərəkəti: 1049 [məlumat] Hərəkət Tahmini: 1.312346 Hz [məlumat] Piksel Hərəkəti: 811 [məlumat] Hərəkət Tahmini: 1.312346 Hz [info] Piksel Hərəkəti: 601 [məlumat] Hərəkət Tahmini: 1.312346 Hz [məlumat] Piksel Hərəkəti: 456 [məlumat] Hərəkət Tahmini: 1.312346 Hz

Yalnız zirvələr görünənə qədər pixel_threshold və diff_thresholdu tənzimləyin, əks halda piksel hərəkəti 0 olar.

Addım 8: Nümayiş

Image
Image

Burada CribSense -in necə işlədiyinə dair kiçik bir demo var. Bunun beşik tərəfinə yapışdırıldığını təsəvvür etməli olacaqsınız.

CribSense'i beşiyinizin üstünə qoyduğunuzda, körpə ilə kamera arasındakı məsafəni optimallaşdırmalısınız. İdeal olaraq, körpənizin sinəsi çərçivənin 1/3 hissəsini dolduracaq. Uşaq çox uzaq olmamalıdır, əks halda aşağı qətnaməli video böyütmək üçün kifayət qədər detal tapmaq üçün mübarizə aparacaq. Kamera çox yaxındırsa, yuvarlananda və ya çərçivədən çıxanda kamera uşağınızı görə bilməyəcək. Eynilə, əgər uşaq "çadır" yorğanın altındadırsa, yorğanla uşağın sinəsi arasında təmas məhduddursa, hərəkəti aşkar etmək çətin ola bilər. Onları yaxşı bağlayın!

Yatağınızın ətrafındakı işıqlandırma vəziyyətini də düşünmək istəyəcəksiniz. Yatağınız bir pəncərənin yanındadırsa, günəş buludlar tərəfindən maneə törədildikdə və ya pəncərədən kənarda hərəkət edərkən kölgələr hərəkət edə bilər və ya işıq dəyərləri dəyişə bilər. Ardıcıl işıqlandırma ilə ən yaxşı yerdir.

Bir az daha çox işlə, kiminsə proqramımızı yaxşılaşdıra biləcəyini düşünürük ki, kalibrləmə daha hamar bir proses olsun. Gələcəkdə push bildirişləri kimi əlavə xüsusiyyətlər də əlavə edilə bilər.

Addım 9: Problemlərin aradan qaldırılması

CribSense qurarkən bir neçə ümumi problemlə qarşılaşa bilərsiniz. Məsələn, proqramı qurmaqda/işlətməkdə çətinlik çəkmək və ya heç bir səs eşitməmək. Unutmayın, CribSense mükəmməl etibarlı bir körpə monitoru deyil. Təkmilləşdirmələr edərkən GitHub depomuzdakı töhfələri məmnuniyyətlə qarşılayacağıq!

CribSense hazırlayarkən topladığımız bəzi problemlərin aradan qaldırılması məsləhətləri.

Siqnal çalmır

  • Dinamikləriniz işləyirmi?
  • CribSense siqnalizasiyasının xaricində Pi -dən digər səsləri çalmaq olarmı?
  • Pi'iniz səs portundan çox HDMI vasitəsilə səs çalmağa çalışırsa? Doğru çıxışı seçdiyinizə əmin olmaq üçün Raspberry Pi Audio Konfiqurasiya səhifəsinə baxın.
  • CribSense proqramı hərəkəti aşkar edirmi? CribSense arxa planda işləyirsə, terminalda journalctl -f ilə yoxlaya bilərsiniz.
  • CribSense çox hərəkət hiss edirsə, CribSense -i kalibr etməyiniz lazım ola bilər.

IR LED işləmir

  • IR LED -ə baxanda solğun qırmızı rəng görürsünüzmü? LED yanarkən solğun qırmızı üzük görünməlidir.
  • Bağlantıların polaritesini yoxlayın. +5V və GND tərsinə çevrilsə, işləməyəcək.
  • LED -i 5V/0.5A gərginlik/cərəyan limiti olan bir enerji təchizatına qoşun. Normalda 5V -də 0,2A istehlak etməlidir. Əks təqdirdə, LEDiniz arızalı ola bilər.

CribSense körpə olmasa da hərəkəti aşkar edir

  • CribSense -i düzgün kalibr etmisinizmi?
  • Unutmayın, CribSense yalnız piksel dəyərlərində dəyişiklik axtarır

    • Çərçivə daxilində hərəkət edən kölgələr varmı?
    • Yanan və ya dəyişən işıqlandırma varmı?
    • CribSense sabit bir səthə quraşdırılıbmı (yəni insanlar oradan keçəndə sarsılmayacaq bir şey)?
    • Çərçivədə başqa hərəkət mənbələri varmı (əks etdirən güzgülər və s.)?

CribSense, hərəkət olmasına baxmayaraq hərəkəti aşkar etmir

  • CribSense -i düzgün kalibr etmisinizmi?
  • Kameranın yolunda bir şey varmı?
  • Ümumiyyətlə Raspberry Pi -dən kameraya qoşula bilirsinizmi? Kameranı bir neçə saniyə açmaq üçün terminalda raspistill -v işlədərək yoxlayın.
  • Sudo systemctl status cribsense -ə baxırsınızsa, CribSense həqiqətən işləyirmi?
  • Uşağınız uşaqla təmas etməməsi üçün "çadırlanmış" bir yorğanın altındadırmı? Örtüklə uşaq arasında əhəmiyyətli hava boşluqları varsa, yorğan hərəkəti maskalaya bilər.
  • Videonu daha da gücləndirsəniz, hərəkəti görə bilərsinizmi?
  • Aşağı və yüksək tezlikli kəsikləri tənzimləsəniz, hərəkəti görə bilərsinizmi?
  • Bu yalnız az işıqda baş verərsə, kalibrinizin aşağı işıqda işlədiyinə əmin oldunuzmu?

CribSense qurmur

Bütün asılılıqları quraşdırmısınız?

Komanda xəttindən cribsense işlədə bilmirəm

  • Qaçarkən heç bir şeyi təsadüfən səhv yazmısınız.
  • Cribsense /usr /bin -də mövcuddurmu?
  • "Hansı cribsense" işləsəniz hansı yol verilir?

Tövsiyə: