Talaan ng mga Nilalaman:

CribSense: isang contactless, Baby-based na Baby Monitor: 9 Mga Hakbang (na may Mga Larawan)
CribSense: isang contactless, Baby-based na Baby Monitor: 9 Mga Hakbang (na may Mga Larawan)

Video: CribSense: isang contactless, Baby-based na Baby Monitor: 9 Mga Hakbang (na may Mga Larawan)

Video: CribSense: isang contactless, Baby-based na Baby Monitor: 9 Mga Hakbang (na may Mga Larawan)
Video: CribSenseSetup 2024, Nobyembre
Anonim
CribSense: isang contactless, Baby-based na Baby Monitor
CribSense: isang contactless, Baby-based na Baby Monitor
CribSense: isang contactless, Baby-based na Baby Monitor
CribSense: isang contactless, Baby-based na Baby Monitor

Ang CribSense ay isang video-based, contactless na monitor ng sanggol na maaari mong gawin ang iyong sarili nang hindi sinisira ang bangko

Ang CribSense ay isang pagpapatupad ng C ++ ng Video Magnification na naka-tune upang tumakbo sa isang Model ng Raspberry Pi 3. Sa isang katapusan ng linggo, maaari mong i-set up ang iyong sariling crib-top baby monitor na nagpapataas ng isang alarma kung ang iyong sanggol ay tumigil sa paggalaw. Bilang isang bonus, ang lahat ng software ay malayang gamitin para sa mga layuning hindi pangkalakalan at madaling mapalawak.

Ang buong repository na naglalaman ng mga file ng mapagkukunan at dokumentasyon ay matatagpuan sa

Habang sa palagay namin ang CribSense ay medyo masaya, mahalagang tandaan na ito ay hindi talaga isang sertipikadong, walang palya na kaligtasan na aparato. Iyon ay, kailangang maayos itong mai-configure at magkaroon ng isang mahusay na kontroladong kapaligiran upang gumana. Halimbawa, kung hindi ito na-calibrate ng maayos at / o ang kapaligiran sa video ay hindi nakakatulong sa paglaki ng video, maaaring hindi mo ito magamit. Ginawa namin ito bilang isang nakakatuwang na proyekto upang makita kung gaano kahusay ang pagkakaroon namin ng mabigat na compute na software tulad ng pagpapatakbo ng video na tumatakbo sa compute-limit na hardware tulad ng isang Raspberry Pi. Anumang totoong produkto ay mangangailangan ng higit pang pagsubok kaysa sa nagawa namin. Kaya, kung gagamitin mo ang proyektong ito, kunin ito para sa kung ano ito: isang maikling paggalugad ng paglaki ng video sa isang Pi.

Ano ang kakailanganin mo:

Mga Tool sa Pag-configure ng Raspberry Pi + Camera +:

  • Raspberry Pi 3 Model B
  • 5V 2.5A Micro USB Power Supply
  • Raspberry Pi NoIR Camera Module V2
  • MicroSD Card (gumamit kami ng 16GB Class 10 Card)
  • Flex Cable para sa Raspberry Pi Camera (12 ")
  • Mga nagsasalita na may 3.5mm na input
  • Monitor ng HDMI
  • USB Keyboard
  • USB Mouse
  • [opsyonal] Raspberry Pi Heatsink (kung nag-aalala ka tungkol sa init, maaari mong idikit ang isa sa mga ito sa iyong Pi)

IR LED Circuit para sa operasyon na mababa ang ilaw:

  • [3x] 1N4001 Diodes
  • 1 Ohm, 1W Resistor
  • 1W IR LED
  • 2 wires para sa pag-hook ng LED sa Pi
  • Panghinang

Chassis:

  • Pag-access sa isang 3D printer (minimum na dami ng build = 9.9 "L x 7.8" W x 5.9 "H) upang mai-print ang aming chassis. Gayunpaman, huwag mag-atubiling bumuo ng iyong sarili.
  • Pandikit (gagana ang anumang uri ng pandikit, ngunit inirerekumenda ang mainit na pandikit para sa prototyping).

Hakbang 1: Mga Kinakailangan

Bago mo simulan ang aming sunud-sunod na gabay, dapat ay na-install mo na ang pinakabagong bersyon ng Raspbian sa iyong SD card at natiyak na ang iyong Pi ay gumagana. Kakailanganin mo ring paganahin ang module ng camera bago mo ma-access ang camera.

Hakbang 2: Pag-install ng CribSense Software

Ang CribSense ay nakasalalay sa autoconf, libtool, OpenCV, at libcanberra, pati na rin mga karaniwang tool ng software.

  • Ginagamit ang autoconf at libtool upang awtomatikong i-configure ang mga makefile at bumuo ng mga script para sa CribSense sa maraming mga platform (tulad ng Linux, OSX, at ang Raspberry Pi).
  • Ang OpenCV ay isang malakas na pakete ng paningin ng computer na ginamit upang gawin ang pagproseso ng imahe at ang batayan ng video na nagpapalaki at code ng pagkakita ng paggalaw. Mayroon itong mahusay na suporta, madaling gamitin, at may mahusay na pagganap.
  • Ang libcanberra ay isang simpleng silid-aklatan para sa pagtugtog ng mga tunog ng kaganapan. Ginagamit ito upang i-play ang tunog ng alarma para sa CribSense.

Bisitahin ang kanilang mga indibidwal na pahina upang makakuha ng buong detalye.

I-install ang mga ito sa pamamagitan ng pagbubukas ng isang terminal sa iyong Pi at pagpapatakbo:

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

Susunod na kailangan mong itakda ang driver ng camera sa autoload sa pamamagitan ng pagdaragdag ng bcm2835-v4l2 sa `/ etc / modules-load.d / modules.conf`. Ang iyong modules.conf ay dapat magmukhang ganito:

# / etc / modules: mga module ng kernel upang mai-load sa oras ng pag-boot.

# # Naglalaman ang file ng mga pangalan ng mga module ng kernel na dapat na mai-load # sa oras ng pag-boot, isa bawat linya. Ang mga linya na nagsisimula sa "#" ay hindi pinapansin. i2c-dev bcm2835-v4l2

Kapag na-edit na ang file, dapat mong i-reboot ang iyong Pi. Ang drayber na ito ay ginagamit ng CribSense upang direktang kumuha ng mga frame mula sa NoIR Camera.

Pagkatapos, maaari mong i-clone ang repository sa pamamagitan ng pagpapatakbo:

git clone

Susunod, lumipat sa lalagyan at buuin ang software sa pamamagitan ng pagpapatakbo

cd CribSense

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

Binabati kita, na-install mo ang lahat ng kinakailangang software!

Pag-configure

Ang CribSense ay napapasadyang sa pamamagitan ng isang simpleng file ng pagsasaayos ng INI. Matapos patakbuhin ang `make install`, ang file ng pagsasaayos ay matatagpuan sa /etc/cribsense/config.ini. Maaari mong tingnan at mai-edit ang mga parameter na ito sa pamamagitan ng pagpapatakbo

sudo nano /etc/cribsense/config.ini

Ang isang maikling paliwanag ng bawat parameter ay ibinibigay sa default na pagsasaayos, ngunit maraming mga detalye ang magagamit sa https://lukehsiao.github.io/CribSense/setup/config/. Tatalakayin din namin ang pagkakalibrate at pagsasaayos sa dulo ng gabay na ito.

Pagpapatakbo ng CribSense

Ang CribSense ay idinisenyo upang tumakbo sa pagsisimula sa pamamagitan ng paggamit ng isang serbisyo na systemd. Habang nakakonekta ka sa iyong Raspberry Pi gamit ang iyong keyboard at mouse, dapat mong tiyakin na gagana ang mga parameter ng pagsasaayos para sa iyong kuna. Maaaring kailanganin mong i-tune muli ang mga parameter na ito kung ilipat mo ito.

Habang inaayos mo ang mga parameter, maaari kang magpatakbo ng cribsense sa kalooban mula sa linya ng utos sa pamamagitan ng pagtakbo

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

Kapag nasiyahan ka, maaari mong paganahin ang autorun sa pamamagitan ng pagtakbo

sudo systemctl paganahin ang cribsense

Maaari mong ihinto ang cribsense mula sa awtomatikong pagtakbo sa pamamagitan ng pagtakbo

sudo systemctl huwag paganahin ang cribsense

Pangkalahatang-ideya ng Software

Ang CribSense software ay ang puso at kaluluwa ng proyektong ito. Nakita namin ang ilan sa mahusay na mga demo ng pagpapalaki ng video mula sa MIT, at nais na subukan at magpatakbo ng isang katulad na algorithm sa isang Raspberry Pi. Nangangailangan ito ng higit sa isang 10x speedup mula sa gawain ng tbl3rd sa kanyang C ++ pagpapatupad ng video magnification upang tumakbo sa real-time sa Pi. Ang kinakailangang mga pag-optimize ay gumabay sa aming disenyo ng software.

Sa isang mataas na antas, paulit-ulit na umiikot ang CribSense sa pamamagitan ng isang makina ng estado ng software. Una, hinahati nito ang bawat 640x480, grayscale video frame sa 3 mga pahalang na seksyon (640x160) para sa mas mahusay na lokalidad ng cache. Pagkatapos ay pinalalaki nito ang bawat banda sa isang hiwalay na thread, at sinusubaybayan ang paggalaw na nakikita sa frame. Matapos subaybayan ang paggalaw ng maraming segundo, tinutukoy nito ang pangunahing lugar ng paggalaw at pananim ang frame dito. Binabawasan nito ang kabuuang bilang ng mga pixel na kailangang iproseso ng algorithm. Pagkatapos, sinusubaybayan ng CribSense ang dami ng paggalaw sa na-crop na stream at tunog ng isang alarma kung walang paggalaw na nakita para sa isang maisasaayos na dami ng oras. Pana-panahon, bubuksan muli ng CribSense ang view nito upang subaybayan ang buong frame kung sakaling lumipat ang sanggol at muling i-crop sa paligid ng bagong pangunahing lugar ng paggalaw.

Ginagamit ang pagpapalaki ng video upang mapalakas ang signal sa ratio ng ingay ng banayad na paggalaw tulad ng paghinga ng sanggol. Hindi ito kinakailangan para sa mas malalaking paggalaw, ngunit makakatulong para sa napaka banayad na paggalaw. Tandaan na ang aming pagpapatupad ay maluwag batay sa algorithm na inilarawan sa mga papel ng MIT, at hindi gumaganap pati na rin ang kanilang pagmamay-ari na code.

Ang mga pag-optimize tulad ng multithreading, adaptive cropping, at pag-optimize ng compiler ay nagbigay sa amin ng humigit-kumulang na 3x, 3x, at 1.2x speedup, ayon sa pagkakabanggit. Pinapayagan kaming makamit ang 10x speedup na kinakailangan upang magpatakbo ng real-time sa Pi.

Ang mga buong detalye ay matatagpuan sa pahina ng Arkitektura ng Software ng Repository ng CribSense.

Kung interesado ka sa pagpapalaki ng video, mangyaring bisitahin ang pahina ng MIT.

Hakbang 3: Paghanda ng Iyong Hardware: Ikonekta ang Iyong Camera

Paghahanda ng Iyong Hardware: Ikonekta ang Iyong Camera
Paghahanda ng Iyong Hardware: Ikonekta ang Iyong Camera

Una, magpapalit ka ng 6 "cable na kasama ng camera gamit ang 12" cable. Upang magawa ito, maaari mo lamang sundin ang tutorial na ito sa kung paano palitan ang camera cable.

Bilang buod, makakakita ka ng isang tab na push / pull sa likod ng camera na maaari mong hilahin upang palabasin ang flex cable. Palitan ang maikling cable ng mas mahaba at itulak pabalik ang tab.

Mapapansin mo na mayroon kaming isang 24 "cable sa aming mga larawan. Ito ay masyadong mahaba. Ang 12" cable sa listahan ng mga materyales ay isang mas makatwirang haba.

Hakbang 4: Paghanda ng Iyong Hardware: IR LED

Paghahanda ng Iyong Hardware: IR LED
Paghahanda ng Iyong Hardware: IR LED
Paghahanda ng Iyong Hardware: IR LED
Paghahanda ng Iyong Hardware: IR LED
Paghahanda ng Iyong Hardware: IR LED
Paghahanda ng Iyong Hardware: IR LED

Ang CribSense ay medyo madaling buuin, at higit sa lahat ay binubuo ng mga bahagi na magagamit sa komersyo. Tulad ng nakikita sa figure sa itaas, mayroong 5 pangunahing mga bahagi ng hardware, 2 lamang sa mga ito ay pasadyang ginawa. Maglalakad ang pahinang ito sa kung paano bumuo ng IR LED circuit, at ang susunod na pahina ay pupunta sa kung paano bumuo ng chassis.

Para sa bahaging ito, kailangan mong makuha ang iyong panghinang, mga wire, diode, IR LED, at risistor. Kami ay magtatayo ng circuit na ipinapakita sa ika-2 na pigura. Kung bago ka sa paghihinang, narito ang isang magandang gabay na maaabutan ka. Habang tinatalakay ng patnubay na ito ang through-hole paghihinang, maaari mong gamitin ang parehong pangunahing mga diskarte upang ikonekta ang mga sangkap na ito nang magkasama tulad ng ipinakita sa ika-3 na pigura.

Upang makapagbigay ng sapat na pag-iilaw sa gabi, gumagamit kami ng isang IR LED, na hindi nakikita ng mata ng tao ngunit nakikita ng NoIR camera. Ang IR LED ay hindi kumakain ng maraming kapangyarihan kumpara sa Raspberry Pi, kaya't iniiwan namin ang IR LED na pinapatakbo para sa kapakanan ng pagiging simple.

Sa mga naunang bersyon ng Pi, ang maximum na kasalukuyang output ng mga pin na ito ay 50mA. Ang Raspberry Pi B + ay nadagdagan ito sa 500mA. Gayunpaman, ginagamit lamang namin ang 5V power pin para sa pagiging simple, na maaaring magbigay ng hanggang sa 1.5A. Ang boltahe sa unahan ng IR LED ay tungkol sa 1.7 ~ 1.9V ayon sa aming mga sukat. Kahit na ang IR LED ay maaaring gumuhit ng 500mA nang hindi pinapinsala ang sarili, binawasan namin ang kasalukuyang sa paligid ng 200mA upang mabawasan ang init at pangkalahatang pagkonsumo ng kuryente. Ipinapakita rin ng mga pang-eksperimentong resulta na ang IR LED ay sapat na maliwanag na may 200mA ng kasalukuyang pag-input. Upang tulay ang puwang sa pagitan ng 5V at 1.9V, gumagamit kami ng tatlong 1N4001 diode at isang resistor na 1 Ohm sa serye kasama ang IR LED. Ang pagbagsak ng boltahe sa wire, diode, at risistor ay tungkol sa 0.2V, 0.9V (para sa bawat isa) at 0.2V, ayon sa pagkakabanggit. Kaya, ang boltahe sa IR LED ay 5V - 0.2V - (3 * 0.9V) - 0.2V = 1.9V. Ang pagwawaldas ng init sa LED ay 0.18W at 0.2W sa ibabaw ng risistor, lahat ay nasa loob ng kanilang maximum na mga rating.

Ngunit hindi pa tayo tapos! Upang makakuha ng isang mas mahusay na akma sa 3D na naka-print na chassis, nais naming magkaroon ng IR LED lens na protrude mula sa aming chassis at i-flush ng PCB board ang butas. Ang maliit na photodiode sa kanang ibaba ay makagagambala. Upang malunasan ito, sinira namin ito at i-flip ito sa kabaligtaran ng board tulad ng ipinakita sa huling dalawang larawan. Ang photodiode ay hindi kinakailangan dahil nais naming laging naka-on ang LED. Ang paglipat lamang nito sa kabaligtaran ay nag-iiwan ng orihinal na LED circuit na hindi nagbabago.

Kapag naghihinang sa mga wire, tiyakin na ang mga wire ay hindi bababa sa 12 pulgada ang haba at may mga pin header na maaaring madulas sa mga GPIO ng Pi.

Hakbang 5: Paghanda ng Iyong Hardware: Chassis

Paghahanda ng Iyong Hardware: Chassis
Paghahanda ng Iyong Hardware: Chassis
Paghahanda ng Iyong Hardware: Chassis
Paghahanda ng Iyong Hardware: Chassis
Paghahanda ng Iyong Hardware: Chassis
Paghahanda ng Iyong Hardware: Chassis

Mga Source File:

  • Kaso STL
  • Kaso Makerbot
  • Takpan ang STL
  • Takpan ang Makerbot

Gumamit kami ng isang simpleng 3D na naka-print na chassis upang maitaguyod ang Pi, ang camera, at ang LED. Ang paggamit ng aming chassis ay opsyonal, kahit na inirerekumenda upang maiwasan ang mga maliliit na bata na hawakan ang nakalantad na electronic circuitry. Ang bawat kuna ay naiiba, kaya ang aming chassis ay hindi kasama ang isang mounting bracket. Maraming mga pagpipilian sa pag-mount ang maaaring isama:

  • Mga Tali ng Cable
  • 3M Dual Lock
  • Velcro
  • Tape

Kung mayroon kang access sa isang MakerBot Replicator (5th Generation), maaari mo lamang i-download ang.makerbot file para sa kaso at takpan sa iyong MakerBot Replicator at i-print. Tumatagal ng halos 6 na oras upang mai-print ang kaso at 3 oras upang mai-print ang takip. Kung gumagamit ka ng ibang uri ng 3D printer, mangyaring magpatuloy na basahin.

Ang isang minimum na dami ng pagbuo ng 9.9 "(L) x 7.8" (W) x 5.9 "(H) ay kinakailangan upang mai-print ang CribSense. Kung wala kang access sa isang 3D printer na may dami ng build na ito, maaari kang gumamit ng isang online 3D na pag-print serbisyo (tulad ng Shapeways o Sculpteo) upang mai-print ang CribSense. Ang minimum na resolusyon sa pag-print ay 0.015 ". Kung gumagamit ka ng isang naka-fuse na filament na uri ng katha na 3D printer, nangangahulugan ito na ang iyong lapad ng nguso ng gripo ay kailangang 0.015 "o mas maliit. Maaaring gumana ang mga printer na may mas mababang mga resolusyon sa pag-print (mas malaki ang mga diameter ng nguso ng gripo), ngunit ang Raspberry Pi ay maaaring hindi magkasya sa tsasis. Inirerekumenda namin ang PLA (polylactic acid) bilang ginustong materyal sa pag-print. Maaaring gumana ang iba pang mga plastik, ngunit ang Raspberry Pi ay maaaring hindi magkasya sa kaso kung ang thermal coefficient ng napiling plastik ay mas malaki kaysa sa PLA. Kung ang iyong 3D printer ay mayroong pinainit na build plate, patayin ang pampainit bago magpatuloy.

Ang pag-orient sa modelo sa build plate ng iyong printer ay kritikal para sa isang matagumpay na pag-print. Ang mga modelong ito ay maingat na dinisenyo kaya hindi nila kailangang mai-print na may suportang materyal, sa gayon makatipid ng plastik at mapabuti ang kalidad ng pag-print. Bago magpatuloy, i-download ang mga 3D file para sa kaso at takip. Kapag nagpi-print ng mga modelong ito, ang leeg ng CribSense ay dapat na mahiga sa build plate. Tinitiyak nito na ang lahat ng mga overhang anggulo sa mga modelo ay hindi lalampas sa 45 degree, sa gayon tinanggal ang kinakailangan para sa materyal na suporta. Para sa mga tagubilin sa pag-orient ng mga 3D na modelo sa dami ng pagbuo ng iyong printer, mangyaring sumangguni sa manwal ng tagubilin na kasama ng iyong 3D printer. Ang mga halimbawa para sa orientation ng pagbuo ng kaso at takip ay ipinapakita sa itaas.

Bilang karagdagan sa paglalagay ng leeg ng CribSense na patag laban sa build plate, maaari mong mapansin na ang mga modelo ay paikutin sa paligid ng patayong axis. Maaaring kailanganin ito upang magkasya ang modelo sa loob ng dami ng pagbuo ng iyong 3D printer. Ang pag-ikot na ito ay opsyonal kung ang haba ng dami ng iyong build ay sapat na haba upang mapaunlakan ang CribSense.

Hakbang 6: Paghanda ng Iyong Hardware: Assembly

Paghahanda ng Iyong Hardware: Assembly
Paghahanda ng Iyong Hardware: Assembly
Paghahanda ng Iyong Hardware: Assembly
Paghahanda ng Iyong Hardware: Assembly
Paghahanda ng Iyong Hardware: Assembly
Paghahanda ng Iyong Hardware: Assembly
Paghahanda ng Iyong Hardware: Assembly
Paghahanda ng Iyong Hardware: Assembly

Kapag handa mo na ang lahat ng hardware, maaari mong simulan ang pagpupulong. Ang anumang pandikit ay maaaring magamit sa prosesong ito, ngunit inirerekumenda namin ang mainit na pandikit para sa dalawang pangunahing kadahilanan. Mabilis na natuyo ang mainit na pandikit, kaya't hindi mo kailangang maghintay ng mahabang oras upang matuyo ang pandikit. Bilang karagdagan, ang maiinit na pandikit ay matatanggal kung nagkamali ka. Upang alisin ang pinatuyong mainit na pandikit, ibabad ang mainit na pandikit sa rubbing (isopropyl) na alkohol. Inirerekumenda namin ang 90% konsentrasyon o mas mataas, ngunit 70% na konsentrasyon ay gagana pa rin. Ang pagbabad sa pinatuyong mainit na pandikit sa isopropyl na alkohol ay magpapahina sa tali sa pagitan ng pandikit at pinagbabatayan na ibabaw, na magbibigay-daan sa iyo upang malinis nang malinis ang pandikit. Kapag binabad ang pandikit sa isopropyl na alak, ang Raspberry Pi ay dapat na pinapatay at hindi nakakabit. Tiyaking hayaang matuyo ang lahat bago muling mag-apply ng mainit na pandikit at i-boot ang Raspberry Pi.

Ang lahat ng mga larawan para sa mga hakbang na ito ay maayos at sundin kasama ang mga hakbang sa teksto.

  1. Ipasok ang Raspberry Pi sa tsasis. Kakailanganin mong ibaluktot ito nang kaunti upang makuha ang audio port, ngunit sa sandaling ito ay nasa, ang audio jack ay panatilihin ito sa lugar. Kapag ito ay nasa lugar na, siguraduhin na ang lahat ng mga port ay ma-access pa rin (hal. Maaari mong mai-plug in ang power cable).
  2. Susunod, gumamit ng mainit na pandikit upang maitama ang Pi sa lugar at ilakip ang camera sa Pi. May mga butas ng tornilyo din kung nais mong gamitin ang mga iyon.
  3. Ngayon, kola ang LED at camera sa harap na takip (nakalarawan). Magsimula sa pamamagitan ng mainit na pagdikit ng NoIR camera sa butas ng camera. Siguraduhin na ang camera ay snug at may linya kasama ang chassis. Huwag gumamit ng labis na pandikit; kung hindi man, hindi mo magagawang magkasya ang camera sa pangunahing kaso. Tiyaking i-power ang Pi at tingnan ang camera (halimbawa, "raspistill -v`) upang matiyak na maayos ang anggulo nito at may magandang larangan ng pagtingin. Kung hindi, alisin ang mainit na pandikit at muling iposisyon ito.
  4. Susunod, kola ang IR LED sa butas sa leeg ng takip. Ang leeg ay nasa anggulo ng 45 degree upang magaan ang ilaw ng kuna, na nagreresulta sa mas maraming mga anino sa mga mababang ilaw na sitwasyon. Nagdaragdag ito ng higit na kaibahan sa imahe, na ginagawang mas madaling makita ang paggalaw.
  5. Ikabit ang mga IR LED wire sa mga header pin ng Raspberry Pi tulad ng ipinakita sa eskematiko na larawan.
  6. I-pack ang mga kable sa chassis sa isang paraan na hindi pinipigilan o pinipigilan ang mga ito. Natapos naming natitiklop ang istilo ng pag-uugnay ng cable dahil masyadong mahaba ang aming camera flex cable.
  7. Sa lahat ng naka-ipit, mainit na pandikit sa paligid ng mga gilid kung saan nagtagpo ang dalawang piraso, tinatakan ito sa lugar.

Hakbang 7: Pagkakalibrate

Image
Image
Pagkakalibrate
Pagkakalibrate

Ang mga detalye tungkol sa mga parameter ng pagsasaayos ay matatagpuan sa dokumentasyon ng CribSense repository. Tingnan din ang video upang makita ang isang halimbawa ng kung paano mo mai-calibrate ang CribSense pagkatapos mong mai-set up ang lahat.

Narito ang isang sample ng file ng pagsasaayos:

[io]; I / O pagsasaayos

; input = path_to_file; Mag-input ng file upang magamit ang input_fps = 15; fps ng input (40 max, 15 inirekomenda kung gumagamit ng camera) full_fps = 4.5; fps kung saan ang buong mga frame ay maaaring maproseso ng crop_fps = 15; fps kung saan maaaring iproseso ang mga na-crop na frame = =; Camera na gagamit ng lapad = 640; Lapad ng taas ng input ng video = 480; Taas ng input video time_to_alarm = 10; Ilang segundo upang maghintay nang walang paggalaw bago mag-alarma. [cropping]; Adaptive Cropping Mga Setting ng crop = totoo; Kung upang i-crop ang mga frame_to_settle = 10; # mga frame upang maghintay pagkatapos i-reset bago iproseso ang roi_update_interval = 800; # mga frame sa pagitan ng muling pagkalkula ng ROI roi_window = 50; # mga frame upang subaybayan bago pumili ng ROI [paggalaw]; Mga Setting ng Pagtukoy ng Paggalaw erode_dim = 4; sukat ng nabura na kernel dilate_dim = 60; sukat ng dilate kernel diff_threshold = 8; kinakailangan ng pagkakaiba ng abs bago makilala ang tagal ng pagbabago = 1; # mga frame upang mapanatili ang paggalaw bago i-flag ang tunay na pixel_threshold = 5; # pixel na dapat na naiiba sa flag bilang paggalaw show_diff = false; ipakita ang pagkakaiba sa pagitan ng 3 mga frame [paglaki]; Ang Mga Setting ng Paglaki ng Video ay nagpapalakas = 25; Ang% amplification nais na mababang-cutoff = 0.5; Ang mababang dalas ng bandpass. high-cutoff = 1.0; Ang mataas na dalas ng bandpass. threshold = 50; Ang phase threshold bilang% ng pi. show_magnification = false; Ipakita ang mga frame ng output ng bawat pag-magnify [debug] print_times = false; Mga oras ng pagtatasa ng pag-print

Ang pagkakalibrate ng algorithm ay isang umuulit na pagsisikap, na walang eksaktong solusyon. Hinihikayat ka naming mag-eksperimento sa iba't ibang mga halaga, pinagsasama ang mga ito sa mga tampok sa pag-debug, upang makita ang kumbinasyon ng mga parameter na pinakaangkop sa iyong kapaligiran. Bago mo simulan ang pagkakalibrate, tiyaking ang show_diff at show_magnification ay nakatakda sa totoo.

Bilang isang patnubay, ang pagtaas ng amplification at ang mga halagang phase_threshold ay nagdaragdag ng dami ng paglaki na inilapat sa input video. Dapat mong baguhin ang mga halagang ito hanggang sa malinaw mong makita ang paggalaw na nais mong subaybayan sa frame ng video. Kung nakakita ka ng mga artifact, ang pagbawas ng phase_threshold habang pinapanatili ang parehong amplification ay maaaring makatulong.

Ang mga parameter ng paggalaw ng paggalaw ay makakatulong na mabayaran ang ingay. Kapag nakita ang mga rehiyon ng paggalaw, ang erode_dim at dilate_dim ay ginagamit upang sukatin ang mga sukat ng mga kernel ng OpenCV na ginamit upang mabura at mapalawak ang paggalaw upang ang ingay ay unang naalis na, pagkatapos ang natitirang signal ng paggalaw ay makabuluhang pinalawak upang gawing halata ang mga rehiyon ng paggalaw. Ang mga parameter na ito ay maaaring kailanganin ding i-tono kung ang iyong kuna ay nasa isang napakataas na setting na kaibahan. Sa pangkalahatan, kakailanganin mo ng mas mataas na erode_dim para sa mga setting ng mataas na kaibahan, at isang mas mababang erode_dim para sa mababang kaibahan.

Kung nagpatakbo ka ng CribSense na may show_diff = totoo at napansin mo na ang labis na output ng nagtitipon ay puti, o ang ilang ganap na hindi nauugnay na bahagi ng video ay napansin bilang paggalaw (hal. Isang kumikislap na lampara), dagdagan ang erode_dim hanggang sa bahagi lamang ng video naaayon sa iyong sanggol ay ang pinakamalaking seksyon ng puti. Ang unang pigura ay nagpapakita ng isang halimbawa kung saan ang sukat ng pagguho ay masyadong mababa para sa dami ng paggalaw sa frame, habang ang susunod ay nagpapakita ng isang mahusay na naka-calibrate na frame.

Kapag na-calibrate na ito, siguraduhin na ang pixel_threshold ay nakatakda sa isang halaga tulad ng "Pixel Movement" ay naiuulat lamang ang mga rurok na halaga ng paggalaw ng pixel, at hindi lahat sa kanila (na nangangahulugang kailangan mong putulin ang ingay). Sa isip, makikita mo ang output na tulad nito sa iyong terminal, kung saan mayroong isang malinaw na pana-panahong pattern na naaayon sa paggalaw:

[info] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 1.219812 Hz

[info] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 1.219812 Hz [info] Kilusan ng Pixel: 0 [impormasyon] Pagtataya ng Paggalaw: 1.219812 Hz [info] Kilusan ng Pixel: 0 [impormasyon] Pagtatantya ng Paggalaw: 1.219812 Hz [impormasyon] Kilusan ng Pixel: 44 [impormasyon] Pagtataya ng Paggalaw: 1.219812 Hz [impormasyon] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 1.219812 Hz [info] Kilusan ng Pixel: 161 [impormasyon] Pagtataya ng Paggalaw: 1.219812 Hz [impormasyon] Kilusan ng Pixel: 121 [impormasyon] Pagtatantiya ng Paggalaw: 0.841416 Hz [impormasyon] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 86 [impormasyon] Pagtataya ng Paggalaw: 0.841416 Hz [impormasyon] Kilusan ng Pixel: 0 [impormasyon] Pag-iilaw sa Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 0 [impormasyon] Pagtatantya ng Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 0 [impormasyon] Pagtatantya ng Paggalaw: 0.841416 Hz [impormasyon] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 0.841416 Hz [impormasyon] Kilusan ng Pixel: 0 [impormasyon] Pagtatantya ng Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 0 [impormasyon] Pagtataya ng Paggalaw: 0.841416 Hz [impormasyon] Pixel Movem ent: 0 [info] Estimento ng Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 0.841416 Hz [impormasyon] Kilusan ng Pixel: 0 [impormasyon] Pagtataya ng Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 0 [impormasyon] Pagtataya ng Paggalaw: 0.841416 Hz [impormasyon] Kilusan ng Pixel: 0 [impormasyon] Pag-iramdam ng Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 97 [info] Pagtataya ng Paggalaw: 0.841416 Hz [info] Kilusan ng Pixel: 74 [impormasyon] Pagtataya ng Paggalaw: 0.839298 Hz [impormasyon] Pixel Kilusan: 0 [impormasyon] Estima ng Paggalaw: 0.839298 Hz [info] Kilusan ng Pixel: 60 [impormasyon] Pagtataya ng Paggalaw: 0.839298 Hz [info] Kilusan ng Pixel: 0 [impormasyon] Pagtataya ng Paggalaw: 0.839298 Hz [impormasyon] Kilusan ng Pixel: 0 [impormasyon] Pagtatantiya ng Paggalaw: 0.839298 Hz [info] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 0.839298 Hz [info] Kilusan ng Pixel: 0 [impormasyon] Pagtataya ng Paggalaw: 0.839298 Hz [impormasyon] Kilusan ng Pixel: 48 [impormasyon] Paggalaw Tantiyahin: 0.839298 Hz [info] Kilusan ng Pixel: 38 [impormasyon] Pagtataya ng Paggalaw: 0.839298 Hz [info] Kilusan ng Pixel: 29 [impormasyon] Pagtataya ng Paggalaw: 0.839298 Hz [info] Kilusan ng Pixel: 28 [impormasyon] Pag-iramdam ng Paggalaw: 0.839298 Hz [impormasyon] Kilusan ng Pixel: 22 [info] Pagtataya ng Paggalaw: 0.839298 Hz [info] Kilusan ng Pixel: 0 [impormasyon] Pagtatantya ng Paggalaw: 0.839298 Hz [impormasyon] Kilusan ng Pixel: 0 [impormasyon] Pagtataya ng Paggalaw: 0.839298 Hz [impormasyon] Kilusan ng Pixel: 0 [info] Pagtataya ng Paggalaw: 0.839298 Hz [impormasyon] Kilusan ng Pixel: 0 [impormasyon] Pagtataya ng Paggalaw: 0.839298 Hz

Kung ang iyong output ay ganito ang hitsura:

[info] Kilusan ng Pixel: 921 [impormasyon] Pagtataya ng Paggalaw: 1.352046 Hz

[info] Kilusan ng Pixel: 736 [info] Pagtataya ng Paggalaw: 1.352046 Hz [info] Kilusan ng Pixel: 666 [impormasyon] Pagtatantya ng Paggalaw: 1.352046 Hz [info] Kilusan ng Pixel: 663 [impormasyon] Pag-iramento ng Paggalaw: 1.352046 Hz [info] Kilusan ng Pixel: 1196 [info] Estimento ng Paggalaw: 1.352046 Hz [impormasyon] Kilusan ng Pixel: 1235 [impormasyon] Pagtataya ng Paggalaw: 1.352046 Hz [info] Kilusan ng Pixel: 1187 [impormasyon] Pagtataya ng Paggalaw: 1.456389 Hz [impormasyon] Kilusan ng Pixel: 1115 [impormasyon] Pagtatantiya ng Paggalaw: 1.456389 Hz [info] Kilusan ng Pixel: 959 [info] Pagtataya ng Paggalaw: 1.456389 Hz [info] Kilusan ng Pixel: 744 [impormasyon] Pagtataya ng Paggalaw: 1.456389 Hz [impormasyon] Kilusan ng Pixel: 611 [impormasyon] Pagtataya ng Paggalaw: 1.456389 Hz [info] Kilusan ng Pixel: 468 [info] Pagtataya ng Paggalaw: 1.456389 Hz [info] Kilusan ng Pixel: 371 [info] Pagtataya ng Paggalaw: 1.456389 Hz [info] Kilusan ng Pixel: 307 [impormasyon] Pagtatantya ng Paggalaw: 1.456389 Hz [info] Kilusan ng Pixel: 270 [info] Estimento ng Paggalaw: 1.456389 Hz [info] Kilusan ng Pixel: 234 [impormasyon] Pagtataya ng Paggalaw: 1.456389 Hz [info] Kilusan ng Pixel: 197 [impormasyon] Estima ng Paggalaw: 1.456389 Hz [info] Kilusan ng Pixel: 179 [impormasyon] Pagtataya ng Paggalaw: 1.456389 Hz [impormasyon] Kilusan ng Pixel: 164 [impormasyon] Pagtataya ng Paggalaw: 1.456389 Hz [info] Kilusan ng Pixel: 239 [impormasyon] Pag-unawa sa Paggalaw: 1.456389 Hz [impormasyon] Kilusan ng Pixel: 733 [impormasyon] Pagtataya ng Paggalaw: 1.456389 Hz [info] Kilusan ng Pixel: 686 [impormasyon] Pagtataya ng Paggalaw: 1.229389 Hz [impormasyon] Kilusan ng Pixel: 667 [impormasyon] Pagtataya ng Paggalaw: 1.229389 Hz [impormasyon] Kilusan ng Pixel: 607 [impormasyon] Pagtataya ng Paggalaw: 1.229389 Hz [info] Kilusan ng Pixel: 544 [impormasyon] Pagtataya ng Paggalaw: 1.229389 Hz [info] Kilusan ng Pixel: 499 [impormasyon] Pagtataya ng Paggalaw: 1.229389 Hz [impormasyon] Kilusan ng Pixel: 434 [impormasyon] Pagtataya ng Paggalaw: 1.229389 Hz [info] Kilusan ng Pixel: 396 [impormasyon] Pagtataya ng Paggalaw: 1.229389 Hz [info] Kilusan ng Pixel: 375 [info] Pagtataya ng Paggalaw: 1.229389 Hz [info] Kilusan ng Pixel: 389 [impormasyon] Pagtataya ng Paggalaw: 1.229389 Hz [impormasyon] Kilusan ng Pixel: 305 [impormasyon] Pagtataya ng Paggalaw: 1.312346 Hz [info] Kilusan ng Pixel: 269 [impormasyon] Pagtataya ng Paggalaw: 1.312346 Hz [info] Kilusan ng Pixel: 1382 [impormasyon] Paggalaw E stimate: 1.312346 Hz [info] Kilusan ng Pixel: 1086 [info] Pagtataya ng Paggalaw: 1.312346 Hz [info] Kilusan ng Pixel: 1049 [impormasyon] Pagtataya ng Paggalaw: 1.312346 Hz [info] Kilusan ng Pixel: 811 [impormasyon] Pag-unawa sa Paggalaw: 1.312346 Hz [impormasyon] Kilusan ng Pixel: 601 [impormasyon] Pagtataya ng Paggalaw: 1.312346 Hz [info] Kilusan ng Pixel: 456 [impormasyon] Pagtataya ng Paggalaw: 1.312346 Hz

Ayusin ang pixel_threshold at diff_threshold hanggang sa mga taluktok lamang ang makikita, at ang paggalaw ng pixel ay 0 kung hindi man.

Hakbang 8: Pagpapakita

Image
Image

Narito ang isang maliit na demo kung paano gumagana ang CribSense. Maaari mong isipin na ito ay nakakabit sa gilid ng kuna.

Kapag inilagay mo ang CribSense sa iyong kuna, kakailanganin mong i-optimize ang distansya sa pagitan ng sanggol at camera. Sa isip, ang dibdib ng iyong sanggol ay punan mas mababa sa 1/3 ng frame. Ang bata ay hindi dapat maging napakalayo, kung hindi man ang video na may mababang resolusyon ay pipilitin upang makahanap ng sapat na mga detalye upang mapalaki. Kung ang camera ay masyadong malapit, maaaring hindi makita ng camera ang iyong anak kung gumulong o lumipat sa labas ng frame. Katulad nito, kung ang bata ay nasa ilalim ng isang "tented" na kumot, kung saan may limitadong pakikipag-ugnay sa pagitan ng kumot at dibdib ng bata, maaaring mahirap makita ang paggalaw. I-ipasok ang mga ito nang maayos!

Gusto mo ring isaalang-alang ang sitwasyon ng pag-iilaw sa paligid ng iyong kuna. Kung ang iyong kuna ay nasa tabi mismo ng isang window, maaari kang makakuha ng mga gumagalaw na anino o binabago ang mga halaga ng ilaw habang ang araw ay hinarangan ng mga ulap, o nangyayari ang paggalaw sa labas ng window. Sa isang lugar na may pare-parehong pag-iilaw ay pinakamahusay.

Sa ilang trabaho pa, naiisip namin na maaaring mapabuti ng isang tao ang aming software upang ang pagkakalibrate ay isang mas makinis na proseso. Sa hinaharap, ang mga karagdagang tampok tulad ng mga push notification ay maaari ring maidagdag.

Hakbang 9: Pag-troubleshoot

Maaari kang makatagpo ng ilang mga karaniwang isyu habang nagse-set up ng CribSense. Halimbawa, nagkakaproblema sa pagbuo / pagpapatakbo ng programa, o hindi pagdinig ng anumang audio. Tandaan, ang CribSense ay hindi isang perpektong maaasahang monitor ng sanggol. Malugod naming tinatanggap ang mga kontribusyon sa aming Repository ng GitHub habang nagpapabuti ka!

Narito ang ilang mga tip sa pagto-troubleshoot na nakalap namin habang gumagawa ng CribSense.

Walang alarmang tumutugtog

  • Gumagana ba ang iyong mga speaker?
  • Maaari mo bang i-play ang iba pang mga tunog mula sa Pi sa labas ng alarma ng CribSense?
  • Kung sinusubukan ng iyong Pi na maglaro ng audio sa pamamagitan ng HDMI kaysa sa audio port? Suriin ang pahina ng Pag-configure ng Raspberry Pi Audio upang matiyak na napili mo ang tamang output.
  • Ang CribSense software ay nakakakita ng paggalaw? Kung ang CribSense ay tumatakbo sa background, maaari mong suriin sa journalctl -f sa isang terminal.
  • Kung ang CribSense ay nakakaramdam ng maraming paggalaw, maaaring kailanganin mong i-calibrate ang CribSense.

Ang IR LED ay hindi gumagana

  • Maaari mo bang makita ang isang malabong pulang kulay kapag tiningnan mo ang IR LED? Ang isang mahina na pulang singsing ay dapat na makita kapag nakabukas ang LED.
  • Suriin ang polarity ng mga koneksyon. Kung baligtarin ang + 5V at GND, hindi ito gagana.
  • Ikonekta ang LED sa isang supply ng kuryente na may 5V / 0.5A boltahe / kasalukuyang limitasyon. Karaniwan, dapat itong ubusin 0.2A sa 5V. Kung hindi, maaaring hindi gumana ang iyong LED.

Ang CribSense ay nakakakita ng paggalaw kahit na walang sanggol

  • Naayos mo ba nang maayos ang CribSense?
  • Tandaan, ang CribSense ay naghahanap lamang ng mga pagbabago sa mga halaga ng pixel

    • Mayroon bang mga anino na gumagalaw sa loob ng frame?
    • Mayroon bang pagkutitap o pagbabago ng ilaw?
    • Naka-mount ba ang CribSense sa isang matatag na ibabaw (ibig sabihin, isang bagay na hindi lulugin kung ang mga tao ay naglalakad sa tabi nito)?
    • Mayroon bang ibang mga mapagkukunan ng paggalaw sa frame (mga salamin na nakakakuha ng mga pagmuni-muni, atbp)?

Ang CribSense ay HINDI nakakakita ng paggalaw kahit na mayroong paggalaw

  • Naayos mo ba nang maayos ang CribSense?
  • Mayroon bang anumang bagay sa paraan ng camera?
  • Nakakonekta ka ba sa camera mula sa Raspberry Pi talaga? Suriin sa pamamagitan ng pagpapatakbo ng raspistill -v sa isang terminal upang buksan ang camera sa Pi ng ilang segundo.
  • Kung titingnan mo ang sudo systemctl status cribsense, tumatakbo ba talaga ang CribSense?
  • Ang iyong sanggol ba ay nasa ilalim ng isang kumot na "tented" hanggang sa hindi ito nakikipag-ugnay sa bata? Kung may mga makabuluhang puwang ng hangin sa pagitan ng kumot at ng bata, maaaring takpan ng kumot ang paggalaw.
  • Maaari mo bang makita ang paggalaw kung higit mong pinalalaki ang video?
  • Maaari mo bang makita ang paggalaw kung tune mo ang mababa at mataas na frequency cutoffs?
  • Kung nangyayari ito sa mababang ilaw lamang, nakatiyak ka bang gumagana ang iyong pagkakalibrate sa mababang ilaw?

Ang CribSense ay hindi nagtatayo

Na-install mo ba ang lahat ng mga dependency?

Hindi ako maaaring magpatakbo ng cribsense mula sa commandline

  • Hindi mo sinasadya na nagkamali ng anumang pag-type kapag tumakbo ka./autogen.sh --prefix = / usr --sysconfdir = / etc --disable-debug sa panahon ng iyong pagbuo ng software?
  • Ang cribsense ay naroroon sa / usr / bas?
  • Anong landas ang ibibigay kung nagpapatakbo ka ng "aling cribsense"?

Inirerekumendang: