Innholdsfortegnelse:

CribSense: en kontaktløs, videobasert babymonitor: 9 trinn (med bilder)
CribSense: en kontaktløs, videobasert babymonitor: 9 trinn (med bilder)

Video: CribSense: en kontaktløs, videobasert babymonitor: 9 trinn (med bilder)

Video: CribSense: en kontaktløs, videobasert babymonitor: 9 trinn (med bilder)
Video: 2 Days Camping in India | ठंडे से हालात खराब | indian jungle camping video #raincamping 2024, November
Anonim
CribSense: en kontaktløs, videobasert babymonitor
CribSense: en kontaktløs, videobasert babymonitor
CribSense: en kontaktløs, videobasert babymonitor
CribSense: en kontaktløs, videobasert babymonitor

CribSense er en videobasert, kontaktløs babymonitor som du kan lage selv uten å bryte banken

CribSense er en C ++-implementering av videoforstørrelse som er innstilt på å kjøre på en Raspberry Pi 3 modell B. I løpet av en helg kan du sette opp din egen barnesengstoppmonitor som vekker alarm hvis barnet ditt slutter å bevege seg. Som en bonus er all programvaren gratis å bruke for ikke-kommersielle formål og kan lett utvides.

Hele lageret som inneholder kildefiler og dokumentasjon, finnes på

Selv om vi synes CribSense er ganske morsomt, er det viktig å huske at dette faktisk ikke er en sertifisert, idiotsikker sikkerhetsenhet. Det vil si at den må være riktig konfigurert og ha et godt kontrollert miljø for å fungere. For eksempel, hvis den ikke er kalibrert godt og/eller miljøet i videoen ikke bidrar til videoforstørrelse, kan det hende du ikke kan bruke den. Vi gjorde dette som et morsomt prosjekt for å se hvor godt vi kunne ha beregningstung programvare som videoforstørrelse kjørt på datamaskinbegrenset maskinvare som en Raspberry Pi. Ethvert ekte produkt vil kreve mye mer testing enn vi har gjort. Så hvis du bruker dette prosjektet, ta det for det det er: en kort utforskning av videoforstørrelse på en Pi.

Dette trenger du:

Raspberry Pi + kamera + konfigurasjonsverktøy:

  • Raspberry Pi 3 Model B
  • 5V 2,5A mikro -USB -strømforsyning
  • Raspberry Pi NoIR kameramodul V2
  • MicroSD -kort (vi brukte et 16 GB klasse 10 -kort)
  • Flex -kabel for Raspberry Pi -kamera (12 ")
  • Høyttalere med 3,5 mm inngang
  • HDMI -skjerm
  • USB -tastatur
  • USB -mus
  • [valgfritt] Raspberry Pi kjøleribbe (hvis du er bekymret for varme, kan du feste en av disse på din Pi)

IR LED-krets for svakt lys:

  • [3x] 1N4001 Dioder
  • 1 Ohm, 1W motstand
  • 1W IR LED
  • 2 ledninger for å koble LED -en til Pi
  • Loddejern

Chassis:

  • Tilgang til en 3D -skriver (minimum byggevolum = 9,9 "L x 7,8" B x 5,9 "H) for å skrive ut chassiset vårt. Du må imidlertid gjerne bygge ditt eget.
  • Lim (alle typer lim vil fungere, men varmt lim anbefales for prototyping).

Trinn 1: Forutsetninger

Før du starter vår trinnvise guide, burde du allerede ha installert den nyeste versjonen av Raspbian på SD-kortet ditt og sørget for at Pi er funksjonell. Du må også aktivere kameramodulen før du får tilgang til kameraet.

Trinn 2: Installere CribSense -programvaren

CribSense er avhengig av autoconf, libtool, OpenCV og libcanberra, samt vanlige programvareverktøy.

  • autoconf og libtool brukes til å automatisk konfigurere makefiler og bygge skript for CribSense på mange plattformer (som Linux, OSX og Raspberry Pi).
  • OpenCV er en kraftig datasynspakke som brukes til å behandle bilder og er grunnlaget for videoforstørrelses- og bevegelsesdeteksjonskoden. Den har god støtte, er enkel å bruke og har god ytelse.
  • libcanberra er et enkelt bibliotek for å spille hendelseslyder. Den brukes til å spille av alarmlyden for CribSense.

Besøk deres individuelle sider for å få full informasjon.

Installer disse ved å åpne en terminal på Pi og kjøre:

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

Deretter må du sette kameradriveren til automatisk innlasting ved å legge til bcm2835-v4l2 til `/etc/modules-load.d/modules.conf`. Modulene.conf skal se slik ut:

# /etc /modules: kjernemoduler som skal lastes inn ved oppstart.

# # Filen inneholder navnene på kjernemoduler som skal lastes inn # ved oppstart, én per linje. Linjer som begynner med "#" ignoreres. i2c-dev bcm2835-v4l2

Når filen er redigert, må du starte Pi -en på nytt. Denne driveren brukes av CribSense til å trekke rammer direkte fra NoIR -kameraet.

Deretter kan du klone depotet ved å kjøre:

git -klon

Deretter går du inn i depotet og bygger programvaren ved å kjøre

cd CribSense

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

Gratulerer, du har installert all nødvendig programvare!

Konfigurasjon

CribSense kan tilpasses gjennom en enkel INI -konfigurasjonsfil. Etter at du har kjørt installer, finner du konfigurasjonsfilen på /etc/cribsense/config.ini. Du kan se og redigere disse parameterne ved å kjøre

sudo nano /etc/cribsense/config.ini

En kort forklaring av hver parameter er gitt i standardkonfigurasjonen, men flere detaljer er tilgjengelige på https://lukehsiao.github.io/CribSense/setup/config/. Vi vil også diskutere kalibrering og konfigurasjon på slutten av denne veiledningen.

Kjører CribSense

CribSense ble designet for å kjøre ved oppstart ved å bruke en systemd -tjeneste. Mens du er koblet til din Raspberry Pi med tastaturet og musen, bør du sørge for at konfigurasjonsparametrene fungerer for krybben din. Du må kanskje justere disse parameterne på nytt hvis du flytter dem.

Mens du justerer parametrene, kan du kjøre cribsense etter ønske fra kommandolinjen ved å kjøre

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

Når du er fornøyd, kan du aktivere autorun ved å kjøre

sudo systemctl aktiver cribsense

Du kan stoppe cribsense fra å kjøre automatisk ved å kjøre

sudo systemctl deaktiver cribsense

Oversikt over programvare

CribSense -programvaren er hjertet og sjelen i dette prosjektet. Vi så noen av de store demonstrasjonene av videoforstørrelse fra MIT, og ønsket å prøve å kjøre en lignende algoritme på en Raspberry Pi. Dette krevde mer enn en 10x speedup fra arbeidet med tbl3rd på hans C ++-implementering av videoforstørrelse for å kjøre i sanntid på Pi. De nødvendige optimaliseringene styrte utformingen av programvaren.

På et høyt nivå sykler CribSense gjentatte ganger gjennom en programvarestatusmaskin. Først deler den hver 640x480, gråtonevideoramme i 3 horisontale seksjoner (640x160) for bedre hurtigbuffer. Det forstørrer deretter hvert bånd i en egen tråd, og overvåker bevegelsen sett i rammen. Etter å ha overvåket bevegelse i flere sekunder, bestemmer den det primære bevegelsesområdet og beskjærer rammen til den. Dette reduserer det totale antallet piksler algoritmen må behandle. Deretter overvåker CribSense bevegelsesmengden i den beskårne strømmen og utløser en alarm hvis ingen bevegelse oppfattes på en konfigurerbar tid. Med jevne mellomrom vil CribSense åpne visningen igjen for å overvåke hele rammen hvis barnet har flyttet seg og beskjært rundt det nye primære bevegelsesområdet.

Videoforstørrelse brukes til å øke signal / støy -forholdet mellom subtile bevegelser som pusten fra spedbarn. Det ville ikke være nødvendig for større bevegelser, men kan hjelpe for veldig subtile bevegelser. Vær oppmerksom på at implementeringen vår er løst basert på algoritmen beskrevet i MITs artikler, og ikke fungerer like godt som den proprietære koden.

Optimaliseringer som multithreading, adaptiv beskjæring og kompilatoroptimaliseringer ga oss henholdsvis 3x, 3x og 1.2x speedup. Dette tillot oss å oppnå 10x hastigheten som kreves for å kjøre sanntid på Pi.

Fullstendige detaljer finnes på siden Software Architecture i CribSense -depotet.

Hvis du er interessert i videoforstørrelse, kan du gå til MITs side.

Trinn 3: Gjør maskinvaren klar: Koble til kameraet

Gjør maskinvaren klar: Koble til kameraet
Gjør maskinvaren klar: Koble til kameraet

Først må du bytte 6 -tommers kabel som fulgte med kameraet med 12 -tommers kabel. For å gjøre dette kan du bare følge denne opplæringen om hvordan du bytter kamerakabel.

Oppsummert vil du se en skyve-/trekk -tapp på baksiden av kameraet som du kan trekke ut for å løsne fleksikabelen. Bytt ut den korte kabelen med den lengre og skyv tappen inn igjen.

Du vil legge merke til at vi har en 24 "kabel på bildene våre. Den var for lang. 12" kabelen på materiallisten er en mye mer rimelig lengde.

Trinn 4: Gjør maskinvaren klar: IR LED

Gjør maskinvaren klar: IR LED
Gjør maskinvaren klar: IR LED
Gjør maskinvaren klar: IR LED
Gjør maskinvaren klar: IR LED
Gjør maskinvaren klar: IR LED
Gjør maskinvaren klar: IR LED

CribSense er relativt lett å konstruere, og består i stor grad av kommersielt tilgjengelige deler. Som vist i figuren ovenfor, er det 5 hovedkomponenter i maskinvaren, hvorav bare 2 er skreddersydde. Denne siden vil gå gjennom hvordan du konstruerer IR LED -kretsen, og neste side vil gå over hvordan du konstruerer chassiset.

For denne delen må du skaffe deg loddejern, ledninger, dioder, IR LED og motstand. Vi skal konstruere kretsen vist i den andre figuren. Hvis du er ny i lodding, her er en fin guide som vil fange deg. Mens denne guiden diskuterer lodding gjennom hull, kan du bruke de samme grunnleggende teknikkene for å koble disse komponentene sammen som vist i den tredje figuren.

For å gi tilstrekkelig belysning om natten bruker vi en IR -LED, som ikke er synlig for det menneskelige øyet, men synlig for NoIR -kameraet. IR -LED -en bruker ikke mye strøm sammenlignet med Raspberry Pi, så vi lar IR -LED -en slått på for enkelhets skyld.

I tidligere versjoner av Pi var maksimal strømutgang for disse pinnene 50mA. Raspberry Pi B+ økte dette til 500mA. Imidlertid bruker vi bare 5V strømnålene for enkelhet, som kan levere opptil 1,5A. Fremspenningen til IR LED er omtrent 1,7 ~ 1,9V i henhold til våre målinger. Selv om IR -LED kan trekke 500mA uten å skade seg selv, reduserer vi strømmen til rundt 200mA for å redusere varme og totalt strømforbruk. Eksperimentelle resultater viser også at IR -LED -en er lys nok med 200mA inngangsstrøm. For å bygge bro mellom 5V og 1.9V bruker vi tre 1N4001 -dioder og en 1 Ohm -motstand i serie med IR -LED. Spenningsfallet over ledningen, dioder og motstand er henholdsvis 0,2V, 0,9V (for hver) og 0,2V. Dermed er spenningen over IR LED 5V - 0.2V - (3 * 0.9V) - 0.2V = 1.9V. Varmeavgivelsen over LED -en er 0,18 W og 0,2 W over motstanden, alt godt innenfor maksimalverdiene.

Men vi er ikke ferdige ennå! For å få en bedre passform i det 3D -trykte kabinettet, ønsker vi å få IR LED -linsen til å stikke ut fra chassiset vårt og ha PCB -kortet i flukt med hullet. Den lille fotodioden nederst til høyre kommer i veien. For å bøte på dette, avolder vi det og vender det til motsatt side av brettet som vist på de to siste bildene. Fotodioden er ikke nødvendig siden vi vil at lysdioden alltid skal være på. Bare å bytte den til motsatt side lar den originale LED -kretsen forbli uendret.

Når du lodder til ledningene, må du sørge for at ledningene er minst 12 tommer lange og ha pinhoder som kan glide over Pi's GPIO -er.

Trinn 5: Gjør maskinvaren klar: Chassis

Gjør maskinvaren klar: Chassis
Gjør maskinvaren klar: Chassis
Gjør maskinvaren klar: Chassis
Gjør maskinvaren klar: Chassis
Gjør maskinvaren klar: Chassis
Gjør maskinvaren klar: Chassis

Kildefiler:

  • Sak STL
  • Case Makerbot
  • Deksel STL
  • Dekk Makerbot

Vi brukte et enkelt 3D -trykt chassis for å huse Pi, kamera og LED. Det er valgfritt å bruke chassiset, men det anbefales for å forhindre at små barn berører eksponerte elektroniske kretser. Hver barneseng er forskjellig, så chassiset vårt inkluderer ikke en monteringsbrakett. Flere monteringsalternativer kan omfatte:

  • Kabelbindere
  • 3M dobbel lås
  • Borrelås
  • Teip

Hvis du har tilgang til en MakerBot Replicator (5. generasjon), kan du ganske enkelt laste ned.makerbot -filene for saken og dekke til MakerBot Replicator og skrive ut. Det tar omtrent 6 timer å skrive ut saken og 3 timer å skrive ut omslaget. Hvis du bruker en annen type 3D -skriver, må du fortsette å lese.

Et minimumsbyggvolum på 9,9 "(L) x 7,8" (W) x 5,9 "(H) er nødvendig for å skrive ut CribSense. Hvis du ikke har tilgang til en 3D -skriver med dette byggevolumet, kan du bruke en online 3D -utskrift service (for eksempel Shapeways eller Sculpteo) for å skrive ut CribSense. Minste utskriftsoppløsning er 0,015 ". Hvis du bruker en 3D -skriver av en smeltet filamentproduksjonstype, betyr dette at dysediameteren må være 0,015 "eller mindre. Skrivere med lavere utskriftsoppløsning (større dysediametere) kan fungere, men Raspberry Pi passer kanskje ikke inn i kabinettet. Vi anbefaler PLA (polymelkesyre) som det foretrukne utskriftsmaterialet. Annen plast kan fungere, men Raspberry Pi passer kanskje ikke i etui hvis den termiske ekspansjonskoeffisienten for den valgte plasten er større enn PLA. Hvis 3D -skriveren din har en oppvarmet byggeplate, slå av varmeren før du fortsetter.

Å orientere modellen på skriverens byggeplate er avgjørende for en vellykket utskrift. Disse modellene er nøye designet slik at de ikke trenger å skrives ut med støttemateriale, og dermed spare plast og forbedre utskriftskvaliteten. Last ned 3D -filene for saken og omslaget før du fortsetter. Når du skriver ut disse modellene, må halsen på CribSense ligge flatt på byggeplaten. Dette sikrer at alle overhengsvinkler på modellene ikke overstiger 45 grader, og eliminerer dermed kravet til støttemateriale. For instruksjoner om orientering av 3D -modeller i skriverens byggevolum, se bruksanvisningen som fulgte med 3D -skriveren. Eksempler på konstruksjonsorienteringen av saken og dekselet er vist ovenfor.

I tillegg til å sette CribSense -halsen flatt mot byggeplaten, kan du legge merke til at modellene roteres rundt den vertikale aksen. Dette kan være nødvendig for å passe modellen inne i byggevolumet til 3D -skriveren. Denne rotasjonen er valgfri hvis byggevolumets lengde er lang nok til å ta imot CribSense.

Trinn 6: Gjør maskinvaren klar: Montering

Gjør maskinvaren klar: Montering
Gjør maskinvaren klar: Montering
Gjør maskinvaren klar: Montering
Gjør maskinvaren klar: Montering
Gjør maskinvaren klar: Montering
Gjør maskinvaren klar: Montering
Gjør maskinvaren klar: Montering
Gjør maskinvaren klar: Montering

Når du har alt maskinvaren klar, kan du begynne å montere. Eventuelt lim kan brukes i denne prosessen, men vi anbefaler varmt lim av to hovedårsaker. Varmt lim tørker raskt, så du trenger ikke vente lenge før limet tørker. I tillegg kan varmt lim fjernes hvis du gjør en feil. For å fjerne tørket, varmt lim, suge det varme limet inn i isopropylalkohol. Vi anbefaler 90% konsentrasjon eller høyere, men 70% konsentrasjon vil fortsatt fungere. Bløtlegging av det tørkede varme limet i isopropylalkohol vil svekke bindingen mellom limet og underliggende overflate, slik at du kan fjerne limet rent. Når du suger limet i isopropylalkohol, bør Raspberry Pi slås av og kobles fra. Sørg for å la alt tørke før du påfører varmt lim igjen og starter Raspberry Pi.

Alle bildene for disse trinnene er i orden og følger med teksttrinnene.

  1. Sett Raspberry Pi inn i kabinettet. Du må bøye den litt for å få lydporten inn, men når den er inne, vil lydkontakten holde den på plass. Når den er på plass, må du sørge for at du fortsatt har tilgang til alle portene (f.eks. Kan du koble til strømkabelen).
  2. Bruk deretter varmt lim for å feste Pi på plass og fest kameraet til Pi. Det er også skruehull hvis du foretrekker å bruke dem.
  3. Lim nå LED -en og kameraet på forsiden (bildet). Start med å lime NoIR -kameraet fast på kamerahullet. Sørg for at kameraet er tett og på linje med kabinettet. Ikke bruk for mye lim; Ellers kan du ikke passe kameraet i hovedetuiet. Sørg for å slå på Pi og ta en titt på kameraet (for eksempel raspistill -v) for å sikre at den er vinklet godt og har et godt synsfelt. Hvis det ikke er det, fjern det varme limet og plasser det på nytt.
  4. Lim deretter IR -LED -en til hullet på halsen på dekselet. Nakken er i en 45 graders vinkel mot sidelyset til barnesengen, noe som resulterer i flere skygger i situasjoner med lite lys. Dette gir mer kontrast til bildet, noe som gjør det lettere å oppdage bevegelse.
  5. Fest IR LED -ledningene til Raspberry Pi's toppnål som vist på det skjematiske bildet.
  6. Pak kablene inn i kabinettet på en måte som ikke bøyes eller belastes. Vi endte med å brette trekkspillstilen fordi kameraets flexkabel var for lang.
  7. Med alt gjemt, varmt lim rundt kantene der de to delene møtes, og forsegler dem på plass.

Trinn 7: Kalibrering

Image
Image
Kalibrering
Kalibrering

Du finner detaljer om konfigurasjonsparametere i dokumentasjonen for CribSense -depotet. Se også videoen for å se et eksempel på hvordan du kan kalibrere CribSense etter at alt er konfigurert.

Her er et eksempel på konfigurasjonsfilen:

[io]; I/O -konfigurasjon

; input = path_to_file; Inndatafil for å bruke input_fps = 15; fps input (40 maks, 15 anbefalt ved bruk av kamera) full_fps = 4,5; fps der hele rammer kan behandles crop_fps = 15; fps der beskårte rammer kan behandles kamera = 0; Kamera for å bruke bredde = 640; Bredden på inndatavideohøyden = 480; Høyden på inndatavideoen time_to_alarm = 10; Hvor mange sekunder å vente uten bevegelse før alarm. [beskjæring]; Adaptive beskjæringsinnstillinger beskjære = true; Om du vil beskjære frames_to_settle = 10; # rammer å vente etter tilbakestilling før behandling av roi_update_interval = 800; # rammer mellom omberegning av avkastning ROI_window = 50; # rammer å overvåke før du velger ROI [bevegelse]; Innstillinger for bevegelsesdeteksjon erode_dim = 4; dimensjonen til eroderingskjernen dilate_dim = 60; dimensjon av den utvidede kjernen diff_threshold = 8; abs differanse nødvendig før gjenkjenning endringsvarighet = 1; # rammer for å opprettholde bevegelse før du flagger ekte pixel_threshold = 5; # piksler som må være forskjellige for å flagge som motion show_diff = false; vise forskjellen mellom 3 bilder [forstørrelse]; Video forstørrelsesinnstillinger amplify = 25; % Amplifikasjon ønsket lav-cutoff = 0,5; Den lave frekvensen av båndpasset. høy cutoff = 1,0; Båndpassens høye frekvens. terskel = 50; Faseterskelen som % av pi. show_magnification = false; Vis utgangsrammer for hver forstørrelse [debug] print_times = false; Skriv ut analysetider

Kalibrering av algoritmen er en iterativ innsats, uten noen eksakt løsning. Vi oppfordrer deg til å eksperimentere med forskjellige verdier, kombinere dem med feilsøkingsfunksjonene, for å finne kombinasjonen av parametere som er best egnet for ditt miljø. Før du starter kalibreringen, må du kontrollere at show_diff og show_magnification er satt til true.

Som en retningslinje øker forsterkningen og faseterskelverdiene mengden forstørrelse som brukes på inndatavideoen. Du bør endre disse verdiene til du tydelig ser bevegelsen du vil spore i videorammen. Hvis du ser artefakter, kan det hjelpe å redusere faseterskelen mens du beholder den samme forsterkningen.

Bevegelsesdeteksjonsparametrene bidrar til å kompensere for støy. Når du oppdager bevegelsesområder, brukes erode_dim og dilate_dim til å dimensjonere dimensjonene til OpenCV -kjernene som brukes til å erodere og utvide bevegelse slik at støy først eroderes bort, deretter utvides det gjenværende bevegelsessignalet betydelig for å gjøre bevegelsesområdene åpenbare. Disse parametrene må kanskje også justeres hvis krybben din er i en veldig høy kontrast. Generelt trenger du en høyere erode_dim for høy kontrastinnstillinger og en lavere erode_dim for lav kontrast.

Hvis du kjører CribSense med show_diff = true og du merker at for mye av akkumulatorutgangen er hvit, eller at en helt ikke -relatert del av videoen oppdages som bevegelse (f.eks. En flimrende lampe), øker du erode_dim til bare delen av videoen som tilsvarer babyen din, er den største delen av hvitt. Den første figuren viser et eksempel der erodedimensjonen er for lav for bevegelsesmengden i rammen, mens den neste viser en godt kalibrert ramme.

Når dette er kalibrert, må du kontrollere at pixel_threshold er satt til en verdi slik at "Pixel Movement" bare rapporterer toppverdiene for pixelbevegelser, og ikke alle (som betyr at du må kutte støyen). Ideelt sett vil du se utgang som dette i terminalen din, hvor det er et klart periodisk mønster som tilsvarer bevegelsen:

[info] Pixel Movement: 0 [info] Bevegelsesestimat: 1.219812 Hz

[info] Pixel Movement: 0 [info] Motion Estimate: 1.219812 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 1.219812 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 1.219812 Hz [info] Pixel Movement: 44 [info] Motion Estimate: 1.219812 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 1.219812 Hz [info] Pixel Movement: 161 [info] Motion Estimate: 1.219812 Hz [info] Pixel Movement: 121 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 86 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movem ent: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 97 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 74 [info] Motion Estimate: 0.839298 Hz [info] Pixel Bevegelse: 0 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 60 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 48 [info] Motion Estimat: 0.839298 Hz [info] Pixel Movement: 38 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 29 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 28 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 22 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.839298 Hz

Hvis utgangen din ser mer slik ut:

[info] Pixel Movement: 921 [info] Motion Estimate: 1.352046 Hz

[info] Pixel Movement: 736 [info] Motion Estimate: 1.352046 Hz [info] Pixel Movement: 666 [info] Motion Estimate: 1.352046 Hz [info] Pixel Movement: 663 [info] Motion Estimate: 1.352046 Hz [info] Pixel Movement: 1196 [info] Motion Estimate: 1.352046 Hz [info] Pixel Movement: 1235 [info] Motion Estimate: 1.352046 Hz [info] Pixel Movement: 1187 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 1115 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 959 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 744 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 611 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 468 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 371 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 307 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 270 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 234 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 197 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 179 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 164 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 239 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 733 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 686 [info] Motion Estimate: 1.229389 Hz [info] Pixel Movement: 667 [info] Motion Estimate: 1.229389 Hz [info] Pixel Movement: 607 [info] Motion Estimate: 1.229389 Hz [info] Pixel Movement: 544 [info] Motion Estimate: 1.229389 Hz [info] Pixel Movement: 499 [info] Motion Estimate: 1.229389 Hz [info] Pixel Movement: 434 [info] Motion Estimate: 1.229389 Hz [info] Pixel Movement: 396 [info] Motion Estimate: 1.229389 Hz [info] Pixel Movement: 375 [info] Motion Estimate: 1.229389 Hz [info] Pixel Movement: 389 [info] Motion Estimate: 1.229389 Hz [info] Pixel Movement: 305 [info] Motion Estimate: 1.312346 Hz [info] Pixel Movement: 269 [info] Motion Estimate: 1.312346 Hz [info] Pixel Movement: 1382 [info] Motion E stimate: 1.312346 Hz [info] Pixel Movement: 1086 [info] Motion Estimate: 1.312346 Hz [info] Pixel Movement: 1049 [info] Motion Estimate: 1.312346 Hz [info] Pixel Movement: 811 [info] Motion Estimate: 1.312346 Hz [info] Pixel Movement: 601 [info] Motion Estimate: 1.312346 Hz [info] Pixel Movement: 456 [info] Motion Estimate: 1.312346 Hz

Juster pixel_threshold og diff_threshold til bare topper er sett, og pikselbevegelsen er 0 ellers.

Trinn 8: Demonstrasjon

Image
Image

Her er en liten demonstrasjon av hvordan CribSense fungerer. Du må forestille deg at dette er festet til siden av en barneseng.

Når du plasserer CribSense over barnesengen, må du optimalisere avstanden mellom barnet og kameraet. Ideelt sett vil spedbarnets bryst fylle mindre enn 1/3 av rammen. Barnet skal ikke være for langt unna, ellers vil videoen med lav oppløsning slite med å finne nok detaljer til å forstørre. Hvis kameraet er for nært, kan det hende at kameraet ikke kan se barnet ditt hvis det ruller eller beveger seg ut av rammen. Tilsvarende, hvis barnet er under et "telt" teppe, der det er begrenset kontakt mellom teppet og barnets bryst, kan det være vanskelig å oppdage bevegelse. Ta dem godt inn!

Du vil også vurdere lyssituasjonen rundt barnesengen din. Hvis krybben din ligger rett ved siden av et vindu, kan du få bevegelige skygger eller endre lysverdier ettersom solen er blokkert av skyer, eller bevegelse skjer utenfor vinduet. Et sted med konsekvent belysning er best.

Med litt mer arbeid tror vi at noen kan forbedre programvaren vår slik at kalibrering er en mye jevnere prosess. I fremtiden kan flere funksjoner som push -varsler også legges til.

Trinn 9: Feilsøking

Du kan støte på noen vanlige problemer mens du konfigurerer CribSense. For eksempel har du problemer med å bygge/kjøre programmet, eller ikke høre noen lyd. Husk at CribSense ikke er en helt pålitelig babymonitor. Vi tar gjerne imot bidrag på vårt GitHub -depot når du gjør forbedringer!

Her er noen feilsøkingstips vi har samlet mens vi lagde CribSense.

Ingen alarm spilles

  • Fungerer høyttalerne dine?
  • Kan du spille andre lyder fra Pi utenfor CribSense -alarmen?
  • Hvis Pi prøver å spille av lyd via HDMI i stedet for lydporten? Sjekk Raspberry Pi Audio Configuration -siden for å kontrollere at du har valgt riktig utgang.
  • Oppdager CribSense -programvare bevegelse? Hvis CribSense kjører i bakgrunnen, kan du sjekke med journalctl -f i en terminal.
  • Hvis CribSense føler mye bevegelse, må du kanskje kalibrere CribSense.

IR -lysdioden fungerer ikke

  • Kan du se en svak rød farge når du ser på IR -LED -en? En svak rød ring skal være synlig når lysdioden er på.
  • Kontroller polariteten til tilkoblingene. Hvis +5V og GND er reversert, vil det ikke fungere.
  • Koble lysdioden til en strømforsyning med en spenning/strømgrense på 5V/0,5A. Normalt bør den forbruke 0,2A ved 5V. Hvis den ikke gjør det, kan det hende at lysdioden din ikke fungerer.

CribSense oppdager bevegelse selv om det ikke er et spedbarn

  • Har du riktig kalibrert CribSense?
  • Husk at CribSense bare ser etter endringer i pikselverdier

    • Er det noen skygger som beveger seg innenfor rammen?
    • Er det flimring eller endring av belysning?
    • Er CribSense montert på en stabil overflate (dvs. noe som ikke rister hvis folk går forbi)?
    • Er det andre bevegelseskilder i rammen (speil som fanger opp refleksjoner osv.)?

CribSense oppdager IKKE bevegelse selv om det er bevegelse

  • Har du riktig kalibrert CribSense?
  • Er det noe i veien for kameraet?
  • Kan du i det hele tatt koble til kameraet fra Raspberry Pi? Kontroller ved å kjøre raspistill -v i en terminal for å åpne kameraet på Pi i noen sekunder.
  • Hvis du ser på sudo systemctl status cribsense, kjører CribSense egentlig?
  • Er barnet ditt under et teppe som er "telt" opp slik at det ikke kommer i kontakt med barnet? Hvis det er betydelige luftgap mellom teppet og barnet, kan teppet maskere bevegelsen.
  • Kan du se bevegelsen hvis du forsterker videoen mer?
  • Kan du se bevegelsen hvis du stiller inn lav- og høyfrekvente cutoffs?
  • Hvis dette bare skjer i svakt lys, har du sørget for at kalibreringen din fungerer i svakt lys?

CribSense bygger ikke

Har du installert alle avhengighetene?

Jeg kan ikke kjøre cribsense fra kommandolinjen

  • Har du ved et uhell skrevet feil da du kjørte./autogen.sh --prefix =/usr --sysconfdir =/etc --disable-debug under programvareoppbyggingen?
  • Er cribsense tilstede i /usr /bin?
  • Hvilken bane tilbys hvis du kjører "hvilken cribsense"?

Anbefalt: