Përmbajtje:

CribSense: një Monitor i Foshnjës pa Kontakt, i bazuar në Video: 9 Hapa (me fotografi)
CribSense: një Monitor i Foshnjës pa Kontakt, i bazuar në Video: 9 Hapa (me fotografi)

Video: CribSense: një Monitor i Foshnjës pa Kontakt, i bazuar në Video: 9 Hapa (me fotografi)

Video: CribSense: një Monitor i Foshnjës pa Kontakt, i bazuar në Video: 9 Hapa (me fotografi)
Video: Что произойдет, если вы не едите 5 дней? 2024, Nëntor
Anonim
CribSense: një Monitor i Foshnjës pa Kontakt, i bazuar në Video
CribSense: një Monitor i Foshnjës pa Kontakt, i bazuar në Video
CribSense: një Monitor i Foshnjës pa Kontakte, i bazuar në Video
CribSense: një Monitor i Foshnjës pa Kontakte, i bazuar në Video

CribSense është një monitor i foshnjave i bazuar në video, pa kontakt, të cilin mund ta bëni vetë pa e thyer bankën

CribSense është një zbatim C ++ i Zmadhimit të videos i akorduar për t'u përdorur në një Raspberry Pi 3 Model B. Gjatë një fundjave, ju mund të vendosni monitorin tuaj të krevatit të krevatit që ngre një alarm nëse foshnja juaj ndalon së lëvizuri. Si bonus, i gjithë softueri është falas për t’u përdorur për qëllime jo-komerciale dhe është lehtësisht i zgjerueshëm.

Depoja e plotë që përmban skedarët burim dhe dokumentacionin mund të gjendet në

Ndërsa ne mendojmë se CribSense është mjaft argëtues, është e rëndësishme të mbani mend se kjo nuk është në fakt një pajisje sigurie e çertifikuar, e patëmetë. Kjo do të thotë, ajo duhet të konfigurohet siç duhet dhe të ketë një mjedis të kontrolluar mirë për të punuar. Për shembull, nëse nuk është i kalibruar mirë dhe/ose mjedisi në video nuk është i favorshëm për zmadhimin e videos, mund të mos jeni në gjendje ta përdorni atë. Ne e bëmë këtë si një projekt argëtues për të parë se sa mirë mund të kishim programe kompjuterike të rënda si zmadhimi i videove të ekzekutuar në pajisje të kufizuara në llogaritjet si një Raspberry Pi. Çdo produkt i vërtetë do të kërkonte shumë më tepër testime sesa kemi bërë. Pra, nëse përdorni këtë projekt, merrni atë për atë që është: një eksplorim i shkurtër i zmadhimit të videos në një Pi.

Çfarë do t'ju duhet:

Raspberry Pi + Kamera + Mjetet e Konfigurimit:

  • Raspberry Pi 3 Model B
  • Furnizimi me energji 5V 2.5A Mikro USB
  • Raspberry Pi NoIR Kamera Moduli V2
  • Kartë MicroSD (kemi përdorur një Kartë Klasë 10 GB 16 GB)
  • Kabllo Flex për Kamera Raspberry Pi (12 ")
  • Altoparlantë me hyrje 3.5 mm
  • Monitor HDMI
  • Tastiera USB
  • Miu USB
  • [opsional] Heatsink Raspberry Pi (nëse jeni të shqetësuar për nxehtësinë, mund të ngjisni një nga këto në Pi tuaj)

Qarku IR LED për funksionimin në dritë të ulët:

  • [3x] Diodat 1N4001
  • Rezistencë 1 Ohm, 1W
  • LED 1W IR
  • 2 tela për fiksimin e LED në Pi
  • Makine per ngjitjen e metalit

Shasia:

  • Qasja në një printer 3D (vëllimi minimal i ndërtimit = 9.9 "L x 7.8" W x 5.9 "H) për të printuar shasinë tonë. Megjithatë, mos ngurroni të krijoni tuajën.
  • Ngjitës (çdo lloj zam do të funksionojë, por zam i nxehtë rekomandohet për prototipizim).

Hapi 1: Parakushtet

Para se të filloni udhëzuesin tonë hap pas hapi, duhet të keni instaluar tashmë versionin më të fundit të Raspbian në kartën tuaj SD dhe të jeni siguruar që Pi juaj të jetë funksional. Ju gjithashtu do të duhet të aktivizoni modulin e kamerës para se të keni qasje në kamerë.

Hapi 2: Instalimi i Softuerit CribSense

CribSense varet nga autoconf, libtool, OpenCV dhe libcanberra, si dhe mjete të zakonshme softuerike.

  • autoconf dhe libtool përdoren për të konfiguruar automatikisht makefiles dhe për të ndërtuar skriptet për CribSense në shumë platforma (si Linux, OSX dhe Raspberry Pi).
  • OpenCV është një paketë e fuqishme e vizionit kompjuterik e përdorur për të bërë përpunimin e imazhit dhe është baza e kodit të zmadhimit të videos dhe zbulimit të lëvizjes. Ka mbështetje të madhe, është i lehtë për t’u përdorur dhe ka performancë të mirë.
  • libcanberra është një bibliotekë e thjeshtë për të luajtur tingujt e ngjarjeve. Përdoret për të luajtur tingullin e alarmit për CribSense.

Vizitoni faqet e tyre individuale për të marrë detaje të plota.

Instaloni këto duke hapur një terminal në Pi tuaj dhe duke ekzekutuar:

sudo apt-get install git build-thelbësor autoconf libtool libopencv-dev libcanberra-dev

Tjetra ju duhet të vendosni drejtuesin e kamerës në ngarkim automatik duke shtuar bcm2835-v4l2 në `/etc/modules-load.d/modules.conf`. Modules.conf juaj duhet të duket kështu:

# /etc /module: modulet e kernelit për tu ngarkuar në kohën e nisjes.

# # Skedari përmban emrat e moduleve të kernelit që duhet të ngarkohen # në kohën e nisjes, një për rresht. Linjat që fillojnë me "#" injorohen. i2c-dev bcm2835-v4l2

Pasi skedari të jetë redaktuar, duhet të rindizni Pi tuaj. Ky drejtues përdoret nga CribSense për të tërhequr direkt kornizat nga Kamera NoIR.

Pastaj, mund të klononi depon duke ekzekutuar:

git klon

Tjetra, kaloni në depo dhe ndërtoni softuerin duke e ekzekutuar

cd CribSense

./autogen.sh --prefix =/usr --sysconfdir =/etc --disable-debug bëni sudo make install sudo systemctl daemon-ringarkoni

Urime, ju keni instaluar të gjithë programin e nevojshëm!

Konfigurimi

CribSense mund të personalizohet përmes një skedari të thjeshtë konfigurimi INI. Pasi të keni ekzekutuar `make install`, skedari i konfigurimit gjendet në /etc/cribsense/config.ini. Ju mund t'i shihni dhe modifikoni këto parametra duke ekzekutuar

sudo nano /etc/cribsense/config.ini

Një shpjegim i shkurtër i secilit parametër jepet në konfigurimin e paracaktuar, por më shumë detaje janë në dispozicion në https://lukehsiao.github.io/CribSense/setup/config/. Ne gjithashtu do të diskutojmë kalibrimin dhe konfigurimin në fund të këtij udhëzuesi.

Drejtimi i CribSense

CribSense u krijua për të funksionuar gjatë fillimit duke përdorur një shërbim sistematik. Ndërsa jeni të lidhur me Raspberry Pi tuaj me tastierën dhe miun, duhet të siguroheni që parametrat e konfigurimit të funksionojnë për krevatin tuaj. Ju mund të keni nevojë të rregulloni përsëri këto parametra nëse i lëvizni.

Ndërsa jeni duke rregulluar parametrat, mund të përdorni cribsense sipas dëshirës nga rreshti i komandës duke ekzekutuar

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

Pasi të jeni të kënaqur, mund të aktivizoni autorun duke ekzekutuar

sudo systemctl mundësojnë grazhdë

Ju mund ta ndaloni djegien të funksionojë automatikisht duke vrapuar

sudo systemctl çaktivizoni shoshitjen

Pasqyrë e softuerit

Softueri CribSense është zemra dhe shpirti i këtij projekti. Ne pamë disa nga demonstrimet e shkëlqyera të zmadhimit të videos nga MIT, dhe donim të provonim dhe të ekzekutonim një algoritëm të ngjashëm në një Raspberry Pi. Kjo kërkoi më shumë se një shpejtim 10x nga puna e tbl3rd në zbatimin e zmadhimit të tij C ++ në mënyrë që të funksiononte në kohë reale në Pi. Optimizimet e kërkuara drejtuan modelin tonë të softuerit.

Në një nivel të lartë, CribSense ciklet në mënyrë të përsëritur përmes një makinerie të gjendjes së softuerit. Së pari, ajo ndan secilën kornizë video 640x480, në shkallë gri në 3 seksione horizontale (640x160) për një lokacion më të mirë të cache. Pastaj zmadhon çdo brez në një fije të veçantë dhe monitoron lëvizjen e parë në kornizë. Pas monitorimit të lëvizjes për disa sekonda, ajo përcakton zonën parësore të lëvizjes dhe shkurton kornizën në të. Kjo zvogëlon numrin e përgjithshëm të pikselave që algoritmi duhet të përpunojë. Pastaj, CribSense monitoron sasinë e lëvizjes në rrjedhën e prerë dhe jep një alarm nëse asnjë lëvizje nuk perceptohet për një kohë të konfigurueshme. Periodikisht, CribSense do të hapë përsëri pamjen e tij për të monitoruar kornizën e plotë në rast se foshnja ka lëvizur dhe ri-korrur rreth zonës së re kryesore të lëvizjes.

Zmadhimi i videos përdoret për të rritur raportin e sinjalit ndaj zhurmës të lëvizjeve delikate si frymëmarrja e foshnjave. Nuk do të ishte e nevojshme për lëvizje më të mëdha, por mund të ndihmojë për lëvizje shumë delikate. Vini re se zbatimi ynë bazohet lirshëm në algoritmin e përshkruar në dokumentet e MIT dhe nuk funksionon aq mirë sa kodi i tyre pronësor.

Optimizimet si multreadread, prerja adaptive dhe optimizimet e përpiluesit na dhanë afërsisht 3x, 3x dhe 1.2x shpejtësi, respektivisht. Kjo na lejoi të arrijmë shpejtësinë 10x të kërkuar për të funksionuar në kohë reale në Pi.

Detajet e plota mund të gjenden në faqen e Arkitekturës së Softuerit të depove të CribSense.

Nëse jeni të interesuar për zmadhimin e videos, ju lutemi vizitoni faqen e MIT.

Hapi 3: Përgatitja e pajisjes suaj: Lidhni kamerën tuaj

Përgatitja e harduerit tuaj: Lidhni kamerën tuaj
Përgatitja e harduerit tuaj: Lidhni kamerën tuaj

Së pari, ju duhet të ndërroni kabllon 6 "që erdhi me kamerën me kabllon 12". Për ta bërë këtë, thjesht mund të ndiqni këtë tutorial se si të zëvendësoni kabllon e kamerës.

Si përmbledhje, do të shihni një skedë shtytje/tërheqje në pjesën e pasme të kamerës që mund ta nxirrni për të lëshuar kabllon fleksibël. Zëvendësoni kabllon e shkurtër me atë më të gjatë dhe shtyjeni skedën përsëri brenda.

Ju do të vini re se ne kemi një kabllo 24 "në fotot tona. Ishte shumë e gjatë. Kablli 12" në listën e materialeve është një gjatësi shumë më e arsyeshme.

Hapi 4: Përgatitja e harduerit tuaj: IR LED

Përgatitja e harduerit tuaj: IR LED
Përgatitja e harduerit tuaj: IR LED
Përgatitja e harduerit tuaj: IR LED
Përgatitja e harduerit tuaj: IR LED
Përgatitja e harduerit tuaj: IR LED
Përgatitja e harduerit tuaj: IR LED

CribSense është relativisht i lehtë për t'u ndërtuar dhe përbëhet kryesisht nga pjesë të disponueshme komerciale. Siç shihet në figurën e mësipërme, ka 5 përbërës kryesorë të harduerit, vetëm 2 prej të cilëve janë bërë me porosi. Kjo faqe do të tregojë se si të ndërtoni qarkun IR IR, dhe faqja tjetër do të mësojë se si të ndërtoni shasinë.

Për këtë pjesë, ju duhet të merrni hekurin tuaj të saldimit, telat, diodat, IR LED dhe rezistencën. Ne do të ndërtojmë qarkun e treguar në figurën e dytë. Nëse jeni i ri në saldim, këtu është një udhëzues i bukur që do t'ju arrijë. Ndërsa ky udhëzues diskuton bashkimin me vrima, ju mund të përdorni të njëjtat teknika bazë për t'i lidhur këto përbërës së bashku siç tregohet në figurën e 3-të.

Për të siguruar ndriçim adekuat gjatë natës, ne përdorim një LED IR, i cili nuk është i dukshëm për syrin e njeriut, por i dukshëm për kamerën NoIR. LED LED nuk konsumon shumë energji në krahasim me Raspberry Pi, kështu që ne e lëmë LED LED të ndezur për hir të thjeshtësisë.

Në versionet e mëparshme të Pi, prodhimi maksimal aktual i këtyre kunjave ishte 50mA. Raspberry Pi B+ e rriti këtë në 500mA. Sidoqoftë, ne thjesht përdorim kunjat e energjisë 5V për thjeshtësi, të cilat mund të furnizojnë deri në 1.5A. Tensioni i përparmë i LED LED është rreth 1.7 ~ 1.9V sipas matjeve tona. Edhe pse LED IR mund të tërheq 500mA pa dëmtuar vetveten, ne e zvogëlojmë rrymën në rreth 200mA për të zvogëluar nxehtësinë dhe konsumin e përgjithshëm të energjisë. Rezultatet eksperimentale gjithashtu tregojnë se LED LED është mjaft i ndritshëm me 200mA rrymë hyrëse. Për të kapërcyer hendekun midis 5V dhe 1.9V, ne përdorim tre dioda 1N4001 dhe një rezistencë 1 Ohm në seri me LED LED. Rënia e tensionit mbi tela, dioda dhe rezistencë është rreth 0.2V, 0.9V (për secilën) dhe 0.2V, respektivisht. Kështu, tensioni mbi LED LED është 5V - 0.2V - (3 * 0.9V) - 0.2V = 1.9V. Shpërndarja e nxehtësisë mbi LED është 0.18W dhe 0.2W mbi rezistencën, të gjitha brenda vlerësimeve të tyre maksimale.

Por ne nuk kemi mbaruar akoma! Për të pasur një përshtatje më të mirë në shasinë e printuar 3D, ne duam që lentet IR LED të dalin nga shasia jonë dhe bordi i PCB të jetë i barabartë me vrimën. Fotodioda e vogël në pjesën e poshtme të djathtë do të pengojë. Për të korrigjuar këtë, ne e shkrijmë atë dhe e rrokullisim në anën e kundërt të tabelës siç tregohet në dy fotot e fundit. Fotodioda nuk është e nevojshme pasi ne duam që LED të jetë gjithmonë i ndezur. Thjesht kalimi i tij në anën e kundërt e lë qarkun LED origjinal të pandryshuar.

Kur bashkoni telat, sigurohuni që telat të jenë të paktën 12 inç të gjatë dhe të kenë tituj pin që mund të rrëshqasin mbi GPIO -të e Pi.

Hapi 5: Përgatitja e harduerit tuaj: Shasia

Përgatitja e pajisjeve tuaja: Shasia
Përgatitja e pajisjeve tuaja: Shasia
Përgatitja e pajisjeve tuaja: Shasia
Përgatitja e pajisjeve tuaja: Shasia
Përgatitja e pajisjeve tuaja: Shasia
Përgatitja e pajisjeve tuaja: Shasia

Skedarët burim:

  • Rasti STL
  • Rasti Makerbot
  • Kopertina STL
  • Kopertina Makerbot

Ne përdorëm një shasi të thjeshtë të printuar 3D për të vendosur Pi, kamerën dhe LED. Përdorimi i shasisë sonë është fakultativ, edhe pse rekomandohet për të parandaluar që fëmijët e vegjël të prekin qarqet elektronike të ekspozuara. Çdo krevat fëmijësh është i ndryshëm, kështu që shasia jonë nuk përfshin një kllapa montimi. Disa opsione montimi mund të përfshijnë:

  • Lidhjet e kabllove
  • Bllokim i dyfishtë 3M
  • Velcro
  • Kasetë

Nëse keni qasje në një MakerBot Replicator (Gjenerata e 5 -të), thjesht mund të shkarkoni skedarët.makerbot për kasën dhe të mbuloni në MakerBot Replicator tuaj dhe të printoni. Duhen rreth 6 orë për të printuar kutinë dhe 3 orë për të printuar kapakun. Nëse jeni duke përdorur një lloj tjetër të printerit 3D, ju lutemi vazhdoni të lexoni.

Kërkohet një vëllim minimal i ndërtimit prej 9.9 "(L) x 7.8" (W) x 5.9 "(H) për të printuar CribSense. Nëse nuk keni qasje në një printer 3D me këtë vëllim ndërtimi, mund të përdorni një printim 3D 3D në internet shërbim (si Shapeways ose Sculpteo) për të printuar CribSense. Rezolucioni minimal i printimit është 0.015 ". Nëse përdorni një printer 3D të tipit të fabrikimit të filamentit të shkrirë, kjo do të thotë që diametri i hundës tuaj duhet të jetë 0.015 "ose më i vogël. Printerët me rezolucione më të ulëta të printimit (diametra më të mëdhenj të hundës) mund të funksionojnë, por Raspberry Pi mund të mos përshtatet në shasi. Ne rekomandojmë PLA (acid poli laktik) si material printimi i preferuar. Plastika të tjera mund të funksionojnë, por Raspberry Pi mund të mos përshtatet në rast se koeficienti i zgjerimit termik të plastikës së zgjedhur është më i madh se ai i PLA. Nëse printeri juaj 3D ka një pllakë e ndërtuar e ndezur, fikni ngrohësin para se të vazhdoni.

Orientimi i modelit në pllakën e ndërtuar të printerit tuaj është kritik për një printim të suksesshëm. Këto modele janë projektuar me kujdes në mënyrë që të mos kenë nevojë të printohen me material mbështetës, duke kursyer kështu plastikën dhe duke përmirësuar cilësinë e printimit. Para se të vazhdoni, shkarkoni skedarët 3D për kutinë dhe kapakun. Kur printoni këto modele, qafa e CribSense duhet të qëndrojë e sheshtë në pllakën e ndërtimit. Kjo siguron që të gjitha këndet e daljes në modele të mos kalojnë 45 gradë, duke eleminuar kështu kërkesën për material mbështetës. Për udhëzime mbi orientimin e modeleve 3D në vëllimin e ndërtuar të printerit tuaj, ju lutemi referojuni manualit të udhëzimeve që vjen me printerin tuaj 3D. Shembuj për orientimin e ndërtimit të rastit dhe kapakut janë treguar më sipër.

Përveç vendosjes së qafës së CribSense të sheshtë kundër pllakës së ndërtimit, mund të vini re se modelet rrotullohen rreth boshtit vertikal. Kjo mund të jetë e nevojshme për të përshtatur modelin brenda vëllimit të ndërtuar të printerit tuaj 3D. Ky rrotullim është opsional nëse gjatësia e vëllimit tuaj të ndërtimit është mjaft e gjatë për të akomoduar CribSense.

Hapi 6: Përgatitja e pajisjes suaj: Asambleja

Përgatitja e pajisjes suaj: Asambleja
Përgatitja e pajisjes suaj: Asambleja
Përgatitja e pajisjes suaj: Asambleja
Përgatitja e pajisjes suaj: Asambleja
Përgatitja e pajisjes suaj: Asambleja
Përgatitja e pajisjes suaj: Asambleja
Përgatitja e pajisjes suaj: Asambleja
Përgatitja e pajisjes suaj: Asambleja

Pasi të keni gati të gjithë pajisjen, mund të filloni montimin. Çdo zam mund të përdoret në këtë proces, por ne rekomandojmë zam të nxehtë për dy arsye kryesore. Ngjitësja e nxehtë thahet shpejt, kështu që nuk keni nevojë të prisni një kohë të gjatë që zam të thahet. Përveç kësaj, zam i nxehtë është i lëvizshëm nëse bëni një gabim. Për të hequr ngjitësin e tharë të nxehtë, thithni ngjitësin e nxehtë në alkool fërkues (izopropil). Ne rekomandojmë përqendrim 90% ose më të lartë, por përqendrimi 70% do të funksionojë akoma. Thithja e zamit të nxehtë të tharë në alkool izopropil do të dobësojë lidhjen midis zamit dhe sipërfaqes themelore, duke ju lejuar të hiqni ngjitësin pastër. Kur njomni ngjitësin në alkool izopropil, Raspberry Pi duhet të fiket dhe të shkëputet nga priza. Sigurohuni që të lini gjithçka të thahet para se të riaplikoni zam të nxehtë dhe të filloni Raspberry Pi.

Të gjitha fotografitë për këto hapa janë në rregull dhe ndiqen së bashku me hapat e tekstit.

  1. Futni Raspberry Pi në shasi. Ju do të duhet ta përkulni pak për të futur portën audio, por sapo të futet, foleja audio do ta mbajë atë në vend. Pasi të jetë vendosur, sigurohuni që të gjitha portat të mund të aksesohen (p.sh. mund të lidhni kabllon e energjisë).
  2. Tjetra, përdorni zam të nxehtë për ta fiksuar Pi në vend dhe ngjiteni kamerën në Pi. Ekzistojnë gjithashtu vrima vidash nëse preferoni t'i përdorni ato.
  3. Tani, ngjitni LED dhe kamerën në kapakun e përparmë (në foto). Filloni duke ngjitur nxehtësisht kamerën NoIR në vrimën e kamerës. Sigurohuni që kamera të jetë e rehatshme dhe e rreshtuar me shasinë. Mos përdorni shumë zam; përndryshe, nuk do të jeni në gjendje ta vendosni kamerën në kutinë kryesore. Sigurohuni që të aktivizoni Pi dhe hidhini një sy kamerës (`raspistill -v`, për shembull) për t'u siguruar që është i kënduar mirë dhe ka një fushë të mirë shikimi. Nëse nuk është kështu, hiqeni ngjitësin e nxehtë dhe ripozicionojeni atë.
  4. Tjetra, ngjitni LED IR në vrimën në qafën e kapakut. Qafa është në një kënd prej 45 gradë për të ndriçuar anash krevatin, gjë që rezulton në më shumë hije në situata me dritë të ulët. Kjo i shton më shumë kontrast imazhit, duke e bërë më të lehtë zbulimin e lëvizjes.
  5. Bashkangjit telat IR IR në kunjat e kokës së Raspberry Pi siç tregohet në figurën skematike.
  6. Mblidhni kabllot në shasi në një mënyrë që nuk i rrudh ose tendos ato. Ne përfunduam duke palosur stilin e fizarmonikës së kabllit sepse kablloja fleksibël e kamerës sonë ishte shumë e gjatë.
  7. Me gjithçka të futur brenda, ngjitës të nxehtë rreth skajeve ku takohen dy pjesët, duke i mbyllur ato në vend.

Hapi 7: Kalibrimi

Image
Image
Kalibrimi
Kalibrimi

Detajet rreth parametrave të konfigurimit mund të gjenden në dokumentacionin e depove të CribSense. Shikoni gjithashtu videon për të parë një shembull se si mund të kalibroni CribSense pasi të keni konfiguruar gjithçka.

Këtu është një shembull i skedarit të konfigurimit:

[io]; Konfigurimi I/O

; input = path_to_file; Skedari hyrës për të përdorur input_fps = 15; fps të hyrjes (40 max, 15 rekomandohet nëse përdorni kamerën) full_fps = 4.5; fps në të cilat kornizat e plota mund të përpunohen crop_fps = 15; fps në të cilat kornizat e prera mund të përpunohen kamera = 0; Kamera për të përdorur gjerësinë = 640; Gjerësia e lartësisë së videos hyrëse = 480; Lartësia e kohës së hyrjes së videos_në_larm = 10; Sa sekonda për të pritur pa lëvizje para alarmit. [prerje]; Cilësimet Përshtatëse të Prerjes crop = true; Nëse do të pritet apo jo kornizat_to_settle = 10; # korniza për të pritur pas rivendosjes para se të përpunoni roi_update_interval = 800; # korniza midis rillogaritjes së ROI roi_window = 50; # korniza për t'u monitoruar para se të zgjidhni ROI [lëvizje]; Cilësimet e zbulimit të lëvizjes erode_dim = 4; dimensioni i kernelit të gërryerjes dilate_dim = 60; dimensioni i bërthamës së zgjeruar diff_threshold = 8; abs ndryshimi i nevojshëm para njohjes së kohëzgjatjes së ndryshimit = 1; # korniza për të ruajtur lëvizjen para se të shënoni piksel_thresh të vërtetë = 5; # pixel që duhet të jenë të ndryshëm nga flamuri si lëvizje show_diff = false; shfaq diferencën midis 3 kornizave [zmadhim]; Cilësimet e zmadhimit të videos amplifikohen = 25; % Amplifikimi i dëshiruar me ndërprerje të ulët = 0.5; Frekuenca e ulët e kalimit të brezit. ndërprerje e lartë = 1.0; Frekuenca e lartë e bandës. pragu = 50; Pragu i fazës si % i pi. show_magnification = false; Trego kornizat dalëse të secilit zmadhim [debug] print_times = false; Kohët e analizës së printimit

Kalibrimi i algoritmit është një përpjekje përsëritëse, pa zgjidhje të saktë. Ne ju inkurajojmë të eksperimentoni me vlera të ndryshme, duke i kombinuar ato me veçoritë e korrigjimit, për të gjetur kombinimin e parametrave më të përshtatshëm për mjedisin tuaj. Para se të filloni kalibrimin, sigurohuni që show_diff dhe show_magnification të jenë të vërteta.

Si udhëzues, rritja e amplifikimit dhe vlerat e pragut të fazës rrit sasinë e zmadhimit të aplikuar në videon hyrëse. Ju duhet t'i ndryshoni këto vlera derisa të shihni qartë lëvizjen që dëshironi të gjurmoni në kornizën e videos. Nëse shihni objekte, zvogëlimi i pragut të fazës duke ruajtur të njëjtin amplifikim mund të ndihmojë.

Parametrat e zbulimit të lëvizjes ndihmojnë në kompensimin e zhurmës. Kur zbulohen rajonet e lëvizjes, erode_dim dhe dilate_dim përdoren për të përmasuar dimensionet e kernelit OpenCV të përdorur për të gërryer dhe zgjeruar lëvizjen në mënyrë që zhurma të gërryhet së pari, pastaj sinjali i mbetur i lëvizjes të zgjerohet ndjeshëm për t'i bërë zonat e lëvizjes të dukshme. Këto parametra gjithashtu mund të kenë nevojë të akordohen nëse krevati juaj është në një mjedis me kontrast shumë të lartë. Në përgjithësi, do të keni nevojë për një erode_dim më të lartë për cilësimet e kontrastit të lartë dhe një erode_dim më të ulët për kontrast të ulët.

Nëse drejtoni CribSense me show_diff = true dhe vëreni se shumë nga prodhimi i akumulatorit është i bardhë, ose ndonjë pjesë krejtësisht e palidhur e videos zbulohet si lëvizje (p.sh. një llambë e ndezur), rrisni erode_dim derisa të jetë vetëm pjesa e videos që korrespondon me foshnjën tuaj është pjesa më e madhe e ngjyrës së bardhë. Figura e parë tregon një shembull ku dimensioni i gërryerjes është shumë i ulët për sasinë e lëvizjes në kornizë, ndërsa tjetra tregon një kornizë të kalibruar mirë.

Pasi të jetë kalibruar, sigurohuni që pragu pixel_ të jetë vendosur në një vlerë të tillë që "Pixel Movement" të raportojë vetëm vlerat maksimale të lëvizjes së pikselit, dhe jo të gjitha (që do të thotë që ju duhet të shkurtoni zhurmën). Në mënyrë ideale, do të shihni dalje si kjo në terminalin tuaj, ku ka një model të qartë periodik që korrespondon me lëvizjen:

[info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 1.219812 Hz

[info] Lëvizja Pixel: 0 [info] Vlerësimi i lëvizjes: 1.219812 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 1.219812 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 1.219812 Hz [info] Lëvizja pixel: 44 [info] Vlerësimi i lëvizjes: 1.219812 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 1.219812 Hz [info] Lëvizja e pikselëve: 161 [info] Vlerësimi i lëvizjes: 1.219812 Hz [info] Lëvizja e pikselëve: 121 [info] Vlerësimi i Lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 86 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja Pixel: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja pixel: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Pixel Movem ent: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [informacioni] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.841416 Hz [info] Lëvizja e pikselëve: 97 [info] Vlerësimi i lëvizjes: 0.841416 Hz [informacionet] Lëvizja e pikselëve: 74 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Pixel Lëvizja: 0 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Lëvizja pixel: 60 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i Lëvizjes: 0.839298 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Lëvizja e pikselëve: 48 [info] Lëvizja Vlerësimi: 0.839298 Hz [info] Lëvizja e pikselëve: 38 [info] Vlerësimi i lëvizjes: 0.839298 Hz [informacioni] Lëvizja e pikselëve: 29 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Lëvizja e pikselëve: 28 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Lëvizja Pixel: 22 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Lëvizja pixel: 0 [info] Vlerësimi i lëvizjes: 0.839298 Hz [info] Lëvizja e pikselëve: 0 [info] Vlerësimi i lëvizjes: 0.839298 Hz

Nëse dalja juaj duket më shumë si kjo:

[info] Lëvizja pixel: 921 [info] Vlerësimi i lëvizjes: 1.352046 Hz

[info] Lëvizja Pixel: 736 [info] Vlerësimi i lëvizjes: 1.352046 Hz [info] Lëvizja e pikselëve: 666 [info] Vlerësimi i lëvizjes: 1.352046 Hz [info] Lëvizja e pikselëve: 663 [info] Vlerësimi i lëvizjes: 1.352046 Hz [info] Lëvizja pixel: 1196 [info] Vlerësimi i lëvizjes: 1.352046 Hz [info] Lëvizja e pikselëve: 1235 [info] Vlerësimi i lëvizjes: 1.352046 Hz [info] Lëvizja e pikselëve: 1187 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja e pikselëve: 1115 [info] Vlerësimi i Lëvizjes: 1.456389 Hz [info] Lëvizja Pixel: 959 [info] Vlerësimi i Lëvizjes: 1.456389 Hz [info] Lëvizja e Pixel: 744 [info] Vlerësimi i Lëvizjes: 1.456389 Hz [info] Lëvizja e pixel: 611 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja Pixel: 468 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja e pikselëve: 371 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja e pikselëve: 307 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja pixel: 270 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja e pikselëve: 234 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja e pikselëve: 197 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja Pixel: 179 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja e pikselëve: 164 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja e pikselëve: 239 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja Pixel: 733 [info] Vlerësimi i lëvizjes: 1.456389 Hz [info] Lëvizja e pikselëve: 686 [info] Vlerësimi i lëvizjes: 1.229389 Hz [info] Lëvizja e pikselëve: 667 [info] Vlerësimi i lëvizjes: 1.229389 Hz [info] Lëvizja e pikselëve: 607 [info] Vlerësimi i lëvizjes: 1.229389 Hz [info] Lëvizja e pikselëve: 544 [info] Vlerësimi i lëvizjes: 1.229389 Hz [informacioni] Lëvizja e pikselëve: 499 [info] Vlerësimi i lëvizjes: 1.229389 Hz [info] Lëvizja e pikselëve: 434 [info] Vlerësimi i lëvizjes: 1.229389 Hz [info] Pixel Movement: 396 [info] Lëvizja Vlerësimi: 1.229389 Hz [info] Lëvizja Pixel: 375 [info] Vlerësimi i Lëvizjes: 1.229389 Hz [info] Lëvizja pixel: 389 [info] Vlerësimi i lëvizjes: 1.229389 Hz [info] Lëvizja Pixel: 305 [info] Vlerësimi i lëvizjes: 1.312346 Hz [info] Lëvizja e pikselëve: 269 [info] Vlerësimi i lëvizjes: 1.312346 Hz [info] Lëvizja e pikselëve: 1382 [info] Lëvizja E stimate: 1.312346 Hz [info] Lëvizja e pikselëve: 1086 [info] Vlerësimi i lëvizjes: 1.312346 Hz [info] Lëvizja e pikselëve: 1049 [info] Vlerësimi i lëvizjes: 1.312346 Hz [info] Lëvizja e pikselëve: 811 [info] Vlerësimi i lëvizjes: 1.312346 Hz [info] Lëvizja Pixel: 601 [info] Vlerësimi i lëvizjes: 1.312346 Hz [info] Lëvizja e pikselëve: 456 [info] Vlerësimi i lëvizjes: 1.312346 Hz

Rregulloni pragun e pikselit dhe pragun e ndryshimit derisa të shihen vetëm majat, dhe lëvizja e pikselit është 0 ndryshe.

Hapi 8: Demonstrim

Image
Image

Këtu është një demonstrim i vogël se si funksionon CribSense. Ju do të duhet të imagjinoni se kjo është ngjitur në anën e një krevat fëmijësh.

Kur vendosni CribSense mbi krevatin tuaj, do t'ju duhet të optimizoni distancën midis foshnjës dhe kamerës. Në mënyrë ideale, gjoksi i foshnjës tuaj do të mbushë më pak se 1/3 e kornizës. Fëmija nuk duhet të jetë shumë larg, përndryshe videoja me rezolucion të ulët do të përpiqet të gjejë detaje të mjaftueshme për tu zmadhuar. Nëse kamera është shumë afër, kamera mund të mos jetë në gjendje ta shohë fëmijën tuaj nëse rrotullohet ose lëviz jashtë kornizës. Në mënyrë të ngjashme, nëse fëmija është nën një batanije "të tendosur", ku ka kontakt të kufizuar midis batanijes dhe gjoksit të fëmijës, mund të jetë e vështirë të zbulohet lëvizja. Futini mirë!

Ju gjithashtu do të dëshironi të merrni parasysh situatën e ndriçimit rreth krevatit tuaj. Nëse krevati juaj ndodhet pranë dritares, mund të merrni hije lëvizëse ose të ndryshoni vlerat e dritës pasi dielli bllokohet nga retë, ose lëvizja ndodh jashtë dritares. Diku me ndriçim të qëndrueshëm është më i miri.

Me ca punë më shumë, ne mendojmë se dikush mund të përmirësojë programin tonë në mënyrë që kalibrimi të jetë një proces shumë më i qetë. Në të ardhmen, veçori shtesë si njoftimet shtytëse gjithashtu mund të shtohen.

Hapi 9: Zgjidhja e problemeve

Mund të hasni në disa çështje të zakonshme gjatë konfigurimit të CribSense. Për shembull, keni probleme me ndërtimin/drejtimin e programit, ose mos dëgjimin e ndonjë zëri. Mos harroni, CribSense nuk është një monitor i përkryer i besueshëm i foshnjave. Ne do të mirëpresim kontributet në depon tonë GitHub ndërsa bëni përmirësime!

Këtu janë disa këshilla për zgjidhjen e problemeve që kemi mbledhur gjatë bërjes së CribSense.

Asnjë alarm nuk luan

  • Po punojnë folësit tuaj?
  • A mund të luani tinguj të tjerë nga Pi jashtë alarmit CribSense?
  • Nëse Pi juaj po përpiqet të luajë audio përmes HDMI dhe jo përmes portës audio? Kontrolloni faqen e Konfigurimit të Raspberry Pi Audio për t'u siguruar që keni zgjedhur daljen e duhur.
  • A zbulon softueri CribSense lëvizjen? Nëse CribSense po funksionon në sfond, mund të kontrolloni me journalctl -f në një terminal.
  • Nëse CribSense po ndjen shumë lëvizje, mund t'ju duhet të kalibroni CribSense.

LED LED nuk punon

  • A mund të shihni një ngjyrë të kuqe të zbehtë kur shikoni LED LED? Një unazë e zbehtë e kuqe duhet të jetë e dukshme kur LED është ndezur.
  • Kontrolloni polaritetin e lidhjeve. Nëse +5V dhe GND përmbysen, nuk do të funksionojë.
  • Lidhni LED me një furnizim me energji elektrike me një kufi tensioni/rryme 5V/0.5A. Normalisht, duhet të konsumojë 0.2A në 5V. Nëse jo, LED juaj mund të mos funksionojë.

CribSense po zbulon lëvizjen edhe pse nuk ka foshnjë

  • A e keni kalibruar siç duhet CribSense?
  • Mos harroni, CribSense është vetëm në kërkim të ndryshimeve në vlerat e pikselëve

    • A ka ndonjë hije që lëviz brenda kornizës?
    • A ka ndezje të ndezur ose ndryshim?
    • A është montuar CribSense në një sipërfaqe të qëndrueshme (pra diçka që nuk do të dridhet nëse njerëzit ecin pranë saj)?
    • A ka ndonjë burim tjetër lëvizjeje në kornizë (pasqyra që kapin reflektime, etj)?

CribSense NUK po zbulon lëvizje edhe pse ka lëvizje

  • A e keni kalibruar siç duhet CribSense?
  • A ka ndonjë gjë në rrugën e kamerës?
  • A jeni në gjendje të lidheni fare me kamerën nga Raspberry Pi? Kontrolloni duke drejtuar raspistill -v në një terminal për të hapur kamerën në Pi për disa sekonda.
  • Nëse shikoni cribsense status sudo systemctl, a po funksionon CribSense në të vërtetë?
  • A është foshnja juaj nën një batanije që është "tendosur" në mënyrë që të mos ketë kontakt me fëmijën? Nëse ka boshllëqe të konsiderueshme ajri midis batanijes dhe fëmijës, batanije mund të maskojë lëvizjen.
  • A mund ta shihni lëvizjen nëse e përforconi videon më shumë?
  • A mund ta shihni lëvizjen nëse akordoni ndërprerjet me frekuencë të ulët dhe të lartë?
  • Nëse kjo po ndodh vetëm në dritë të ulët, a jeni siguruar që kalibrimi juaj të funksionojë në dritë të ulët?

CribSense nuk ndërton

I keni instaluar të gjitha varësitë?

Unë nuk mund të drejtoj sharje dore nga linja e komandës

  • A keni gabuar gabimisht ndonjë gjë kur vraponi.
  • A është djepja e pranishme në /usr /bin?
  • Çfarë rruge sigurohet nëse drejtoni "cilën djep"?

Recommended: