Indholdsfortegnelse:
- Trin 1: Forudsætninger
- Trin 2: Installation af CribSense -softwaren
- Trin 3: Gør din hardware klar: Tilslut dit kamera
- Trin 4: Gør din hardware klar: IR LED
- Trin 5: Gør din hardware klar: Chassis
- Trin 6: Gør din hardware klar: Montering
- Trin 7: Kalibrering
- Trin 8: Demonstration
- Trin 9: Fejlfinding
Video: CribSense: en kontaktløs, videobaseret babyalarm: 9 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
CribSense er en videobaseret, kontaktløs babyalarm, som du kan lave selv uden at bryde penge
CribSense er en C ++ -implementering af videoforstørrelse, der er indstillet til at køre på en Raspberry Pi 3 Model B. I løbet af en weekend kan du opsætte din egen babymonitor, der giver alarm, hvis dit spædbarn holder op med at bevæge sig. Som en bonus er al softwaren gratis at bruge til ikke-kommercielle formål og kan let udvides.
Det fulde lager med kildefiler og dokumentation findes på
Selvom vi synes, at CribSense er ret sjovt, er det vigtigt at huske, at dette faktisk ikke er en certificeret, idiotsikker sikkerhedsenhed. Det vil sige, at den skal konfigureres korrekt og have et velkontrolleret miljø for at fungere. Hvis den f.eks. Ikke er godt kalibreret, og/eller miljøet i videoen ikke bidrager til videoforstørrelse, kan du muligvis ikke bruge den. Vi lavede dette som et sjovt projekt for at se, hvor godt vi kunne have computertung software som videoforstørrelse kørt på computerbegrænset hardware som en Raspberry Pi. Ethvert ægte produkt ville kræve meget mere test, end vi har gjort. Så hvis du bruger dette projekt, så tag det som det er: en kort udforskning af videoforstørrelse på en Pi.
Det skal du bruge:
Raspberry Pi + kamera + konfigurationsværktøjer:
- Raspberry Pi 3 Model B
- 5V 2.5A Micro USB strømforsyning
- Raspberry Pi NoIR kameramodul V2
- MicroSD -kort (vi brugte et 16 GB klasse 10 -kort)
- Flex -kabel til Raspberry Pi -kamera (12 ")
- Højttalere med 3,5 mm indgang
- HDMI -skærm
- USB -tastatur
- USB mus
- [valgfrit] Raspberry Pi Heatsink (hvis du er bekymret for varme, kan du sætte en af disse på din Pi)
IR LED-kredsløb til svagt lys:
- [3x] 1N4001 Dioder
- 1 Ohm, 1W modstand
- 1W IR LED
- 2 ledninger til tilslutning af LED'en til Pi
- Loddekolbe
Chassis:
- Adgang til en 3D -printer (minimum byggevolumen = 9,9 "L x 7,8" B x 5,9 "H) for at udskrive vores chassis. Du er dog velkommen til at konstruere dit eget.
- Lim (enhver form for lim virker, men varm lim anbefales til prototyper).
Trin 1: Forudsætninger
Inden du starter vores trin-for-trin guide, skulle du allerede have installeret den nyeste version af Raspbian på dit SD-kort og sikret, at din Pi fungerer. Du skal også aktivere kameramodulet, før du kan få adgang til kameraet.
Trin 2: Installation af CribSense -softwaren
CribSense afhænger af autoconf, libtool, OpenCV og libcanberra samt almindelige softwareværktøjer.
- autoconf og libtool bruges til automatisk at konfigurere makefiler og bygge scripts til CribSense på mange platforme (som Linux, OSX og Raspberry Pi).
- OpenCV er en kraftfuld computer vision -pakke, der bruges til billedbehandling og er grundlaget for videoforstørrelses- og bevægelsesdetekteringskoden. Det har stor støtte, er let at bruge og har god ydeevne.
- libcanberra er et simpelt bibliotek til afspilning af eventlyde. Det bruges til at afspille alarmlyden til CribSense.
Besøg deres individuelle sider for at få alle detaljer.
Installer disse ved at åbne en terminal på din Pi og køre:
sudo apt-get install git build-essential autoconf libtool libopencv-dev libcanberra-dev
Dernæst skal du indstille kameradriveren til automatisk indlæsning ved at tilføje bcm2835-v4l2 til `/etc/modules-load.d/modules.conf`. Dine modules.conf skal se sådan ud:
# /etc /modules: kernemoduler til indlæsning ved opstart.
# # Filen indeholder navnene på kernemoduler, der skal indlæses # ved opstart, en pr. Linje. Linjer, der begynder med "#" ignoreres. i2c-dev bcm2835-v4l2
Når filen er blevet redigeret, skal du genstarte din Pi. Denne driver bruges af CribSense til direkte at trække rammer fra NoIR -kameraet.
Derefter kan du klone depotet ved at køre:
git -klon
Gå derefter ind i depotet og opbyg softwaren ved at køre
cd CribSense
./autogen.sh --prefix =/usr --sysconfdir =/etc --disable-debug make sudo make install sudo systemctl daemon-reload
Tillykke, du har installeret al den nødvendige software!
Konfiguration
CribSense kan tilpasses via en simpel INI -konfigurationsfil. Efter at have kørt 'foretag installation', findes konfigurationsfilen på /etc/cribsense/config.ini. Du kan se og redigere disse parametre ved at køre
sudo nano /etc/cribsense/config.ini
En kort forklaring af hver parameter er givet i standardkonfigurationen, men flere detaljer er tilgængelige på https://lukehsiao.github.io/CribSense/setup/config/. Vi vil også diskutere kalibrering og konfiguration i slutningen af denne vejledning.
Kører CribSense
CribSense blev designet til at køre ved opstart ved hjælp af en systemd -service. Mens du er forbundet til din Raspberry Pi med dit tastatur og mus, skal du sørge for, at konfigurationsparametrene fungerer for din krybbe. Du skal muligvis omstille disse parametre, hvis du flytter den.
Mens du justerer parametrene, kan du køre cribsense efter behag fra kommandolinjen ved at køre
cribsense --config /etc/cribsense/config.ini
Når du er tilfreds, kan du aktivere autorun ved at køre
sudo systemctl aktiver cribsense
Du kan stoppe cribsense fra at køre automatisk ved at køre
sudo systemctl deaktiver cribsense
Softwareoversigt
CribSense -softwaren er hjertet og sjælen i dette projekt. Vi så nogle af de store demonstrationer af videoforstørrelse fra MIT, og ville prøve at køre en lignende algoritme på en Raspberry Pi. Dette krævede mere end en 10x hastighed fra tbl3rds arbejde med hans C ++-implementering af videoforstørrelse for at køre i realtid på Pi. De nødvendige optimeringer styrede vores design af softwaren.
På et højt niveau cykler CribSense gentagne gange gennem en software -tilstandsmaskine. For det første deler den hver 640x480, gråtonevideoramme i 3 vandrette sektioner (640x160) for bedre cache -lokalitet. Det forstørrer derefter hvert bånd i en separat tråd og overvåger den bevægelse, der ses i rammen. Efter at have overvåget bevægelse i flere sekunder, bestemmer den det primære bevægelsesområde og beskærer rammen til den. Dette reducerer det samlede antal pixels, algoritmen skal behandle. Derefter overvåger CribSense bevægelsesmængden i den beskårne strøm og slår en alarm, hvis ingen bevægelse opfattes i en konfigurerbar tid. Med jævne mellemrum åbner CribSense visningen igen for at overvåge hele billedet, hvis barnet har flyttet sig og genbeskåret rundt i det nye primære bevægelsesområde.
Videoforstørrelse bruges til at øge signal / støjforholdet mellem subtile bevægelser som spædbarns vejrtrækning. Det ville ikke være nødvendigt for større bevægelser, men kan hjælpe til meget subtile bevægelser. Bemærk, at vores implementering er løst baseret på algoritmen beskrevet i MITs papirer og ikke fungerer så godt som deres proprietære kode.
Optimeringer som multithreading, adaptiv beskæring og kompileroptimeringer gav os henholdsvis ca. 3x, 3x og 1.2x speedup. Dette tillod os at opnå den 10x hurtigere hastighed, der kræves for at køre realtid på Pi.
Alle detaljer kan findes på siden Software Architecture i CribSense -depotet.
Hvis du er interesseret i videoforstørrelse, kan du besøge MITs side.
Trin 3: Gør din hardware klar: Tilslut dit kamera
Først skal du bytte det 6 "kabel, der fulgte med kameraet, med 12" kablet. For at gøre dette kan du blot følge denne vejledning om, hvordan du udskifter kamerakablet.
Sammenfattende vil du se en push/pull -fane på bagsiden af kameraet, som du kan trække ud for at frigøre flexkablet. Udskift det korte kabel med det længere, og skub tappen ind igen.
Du vil bemærke, at vi har et 24 "kabel i vores billeder. Det var for langt. 12" kablet på materialelisten er en meget mere rimelig længde.
Trin 4: Gør din hardware klar: IR LED
CribSense er relativt let at konstruere og består stort set af kommercielt tilgængelige dele. Som det ses i figuren ovenfor, er der 5 hovedhardwarekomponenter, hvoraf kun 2 er specialfremstillede. Denne side vil gennemgå, hvordan man konstruerer IR LED -kredsløbet, og den næste side vil gå over, hvordan man konstruerer chassiset.
Til denne del skal du få dit loddejern, ledninger, dioder, IR LED og modstand. Vi konstruerer kredsløbet vist i 2. figur. Hvis du er ny inden for lodning, er her en god guide, der vil fange dig. Mens denne vejledning diskuterer lodning gennem hullet, kan du bruge de samme grundlæggende teknikker til at forbinde disse komponenter som vist i 3. figur.
For at give tilstrækkelig belysning om natten bruger vi en IR -LED, som ikke er synlig for det menneskelige øje, men synlig for NoIR -kameraet. IR -LED'en bruger ikke meget strøm i forhold til Raspberry Pi, så vi lader IR -LED'en være tændt for enkelthedens skyld.
I tidligere versioner af Pi var den maksimale strømudgang for disse ben 50mA. Raspberry Pi B+ øgede dette til 500mA. Vi bruger dog bare 5V power pins til enkelhed, som kan levere op til 1,5A. Fremspændingen af IR LED er omkring 1,7 ~ 1,9V ifølge vores målinger. Selvom IR -LED'en kan trække 500mA uden at skade sig selv, reducerer vi strømmen til omkring 200mA for at reducere varme og det samlede strømforbrug. Eksperimentelle resultater viser også, at IR -LED'en er lys nok med 200mA indgangsstrøm. For at bygge bro mellem 5V og 1.9V bruger vi tre 1N4001 dioder og en 1 Ohm modstand i serie med IR LED. Spændingsfaldet over ledningen, dioderne og modstanden er henholdsvis ca. 0,2V, 0,9V (for hver enkelt) og 0,2V. Således er spændingen over IR LED 5V - 0.2V - (3 * 0.9V) - 0.2V = 1.9V. Varmeafgivelsen over LED'en er 0,18W og 0,2W over modstanden, alt sammen inden for deres maksimale nominelle værdier.
Men vi er ikke færdige endnu! For at få en bedre pasform i det 3D -printede chassis, ønsker vi at få IR LED -objektivet til at stikke ud af vores chassis og få printkortet til at flugte med hullet. Den lille fotodiode nederst til højre kommer i vejen. For at afhjælpe dette aftolder vi det og vender det til den modsatte side af brættet som vist på de sidste to fotos. Fotodioden er ikke nødvendig, da vi ønsker, at LED'en altid skal være tændt. Bare skift det til den modsatte side efterlader det originale LED -kredsløb uændret.
Når du lodder til ledningerne, skal du sørge for, at ledningerne er mindst 12 tommer lange og have pinhoveder, der kan glide over Pi's GPIO'er.
Trin 5: Gør din hardware klar: Chassis
Kildefiler:
- Sag STL
- Case Makerbot
- Cover STL
- Cover Makerbot
Vi brugte et simpelt 3D -printet chassis til at huse Pi, kameraet og LED'en. Brug af vores chassis er valgfrit, men anbefales for at forhindre små børn i at røre ved udsatte elektroniske kredsløb. Hver krybbe er forskellig, så vores chassis inkluderer ikke en monteringsbeslag. Flere monteringsmuligheder kan omfatte:
- Kabelbindere
- 3M dobbelt lås
- velcro
- Tape
Hvis du har adgang til en MakerBot Replicator (5. generation), kan du ganske enkelt downloade.makerbot -filerne til sagen og dække den over på din MakerBot Replicator og udskrive. Det tager cirka 6 timer at udskrive sagen og 3 timer at udskrive omslaget. Hvis du bruger en anden type 3D -printer, skal du fortsætte med at læse.
Der kræves en minimumsopbygningsvolumen på 9,9 "(L) x 7,8" (W) x 5,9 "(H) for at udskrive CribSense. Hvis du ikke har adgang til en 3D -printer med denne build -volumen, kan du bruge en online 3D -udskrivning service (f.eks. Shapeways eller Sculpteo) til udskrivning af CribSense. Den mindste udskriftsopløsning er 0,015 ". Hvis du bruger en 3D -printer af en fusioneret filamentfabrikationstype, betyder det, at din dysediameter skal være 0,015 "eller mindre. Printere med lavere udskriftsopløsninger (større dysediametre) fungerer muligvis, men Raspberry Pi passer muligvis ikke ind i kabinettet. Vi anbefaler PLA (polymælkesyre) som det foretrukne udskrivningsmateriale. Anden plast kan virke, men Raspberry Pi passer muligvis ikke i kassen, hvis den valgte plastiks termiske ekspansionskoefficient er større end PLA. Hvis din 3D -printer har en opvarmet byggeplade, sluk for varmeren, inden du fortsætter.
Orientering af modellen på printerens byggeplade er afgørende for et vellykket udskrivning. Disse modeller er omhyggeligt designet, så de ikke behøver at blive trykt med understøttende materiale, hvilket sparer plastik og forbedrer udskriftskvaliteten. Inden du fortsætter, skal du downloade 3D -filerne til sagen og omslaget. Når disse modeller udskrives, skal CribSenses hals ligge fladt på byggepladen. Dette sikrer, at alle overhængsvinkler på modellerne ikke overstiger 45 grader, hvilket eliminerer kravet til støttemateriale. For instruktioner om orientering af 3D -modeller i printerens buildvolumen, henvises til instruktionsbogen, der fulgte med din 3D -printer. Eksempler på opbygningsorienteringen af sagen og dækslet er vist ovenfor.
Udover at lægge halsen på CribSense fladt mod byggepladen, kan du bemærke, at modellerne drejes rundt om den lodrette akse. Dette kan være nødvendigt for at passe modellen inde i build -volumenet på din 3D -printer. Denne rotation er valgfri, hvis længden af din build -volumen er lang nok til at rumme CribSense.
Trin 6: Gør din hardware klar: Montering
Når du har alt hardware klar, kan du begynde at montere. Enhver lim kan bruges i denne proces, men vi anbefaler varm lim af to hovedårsager. Varm lim tørrer hurtigt, så du behøver ikke vente længe, før limen tørrer. Derudover kan varm lim fjernes, hvis du laver en fejl. For at fjerne tørret varm lim skal den varme lim lægges i blød i isopropylalkohol. Vi anbefaler 90% koncentration eller højere, men 70% koncentration vil stadig fungere. Iblødsætning af den tørrede varme lim i isopropylalkohol vil svække bindingen mellem limen og den underliggende overflade, så du kan fjerne limen rent. Når du lægger lim i isopropylalkohol, skal Raspberry Pi slukkes og tages ud af stikkontakten. Sørg for at lade alt tørre, før du påfører varm lim igen og starter Raspberry Pi.
Alle billederne til disse trin er i orden og følger sammen med teksttrinnene.
- Sæt Raspberry Pi i kabinettet. Du bliver nødt til at bøje det lidt for at få lydporten ind, men når den er i, vil lydstikket holde det på plads. Når det er på plads, skal du sørge for, at der stadig er adgang til alle portene (f.eks. Kan du tilslutte strømkablet).
- Brug derefter varm lim til at klistre Pi'en på plads og fastgør kameraet til Pi. Der er også skruehuller, hvis du foretrækker at bruge dem.
- Lim nu LED'en og kameraet på forsiden (billedet). Start med at lime NoIR -kameraet fast på kamerahullet. Sørg for, at kameraet sidder tæt og stillet op med kabinettet. Brug ikke for meget lim; ellers kan du ikke passe kameraet ind i hovedetuiet. Sørg for at tænde for Pi'en og kig på kameraet (f.eks. 'Raspistill -v') for at sikre, at den er vinklet godt og har et godt synsfelt. Hvis det ikke er tilfældet, skal du fjerne den varme lim og placere den igen.
- Lim derefter IR -LED'en til hullet på dækslets hals. Nakken er i en 45 graders vinkel i forhold til sidelyset i krybben, hvilket resulterer i flere skygger i situationer med svagt lys. Dette tilføjer mere kontrast til billedet, hvilket gør det lettere at registrere bevægelse.
- Fastgør IR LED -ledningerne til Raspberry Pi's header pins som vist på det skematiske billede.
- Pak kablerne ind i kabinettet på en måde, der ikke folder eller belaster dem. Vi endte med at folde kablet harmonika stil, fordi vores kamera flex kabel var for langt.
- Med alt gemt i, varm lim rundt om kanterne, hvor de to stykker mødes, og forsegler dem på plads.
Trin 7: Kalibrering
Detaljer om konfigurationsparametre findes i CribSense -arkivdokumentationen. Se også videoen for at se et eksempel på, hvordan du kan kalibrere CribSense, når alt er konfigureret.
Her er et eksempel på konfigurationsfilen:
[io]; I/O -konfiguration
; input = sti_til_fil; Inputfil til brug af input_fps = 15; fps input (40 maks., 15 anbefales ved brug af kamera) full_fps = 4,5; fps, hvor hele rammer kan behandles crop_fps = 15; fps, hvor beskårne rammer kan behandles kamera = 0; Kamera til brug af bredde = 640; Bredden af inputvideohøjden = 480; Højde på input video time_to_alarm = 10; Hvor mange sekunder at vente uden bevægelse før alarm. [beskæring]; Adaptive beskæringsindstillinger crop = true; Om at beskære frames_to_settle = 10; # rammer til at vente efter nulstilling før behandling af roi_update_interval = 800; # rammer mellem genberegning af ROI roi_window = 50; # rammer til overvågning, før du vælger ROI [bevægelse]; Indstillinger for bevægelsesdetektion erode_dim = 4; dimension af eroderingskernen dilate_dim = 60; dimensionen af den udvidede kerne diff_threshold = 8; abs forskel nødvendig før genkendelse af ændringsvarighed = 1; # rammer til at opretholde bevægelse, før der markeres true pixel_threshold = 5; # pixels, der skal være forskellige til at markere som motion show_diff = false; vise forskellen mellem 3 billeder [forstørrelse]; Videoforstørrelsesindstillinger amplify = 25; Den ønskede % amplifikation lav-cutoff = 0,5; Båndpasens lave frekvens. høj cut-off = 1,0; Båndpasens høje frekvens. tærskel = 50; Fasetærsklen som % af pi. show_magnification = false; Vis outputrammerne for hver forstørrelse [debug] print_times = false; Udskriv analysetider
Kalibrering af algoritmen er en iterativ indsats uden nogen præcis løsning. Vi opfordrer dig til at eksperimentere med forskellige værdier og kombinere dem med fejlfindingsfunktionerne for at finde den kombination af parametre, der er bedst egnet til dit miljø. Inden du starter kalibrering, skal du sørge for, at show_diff og show_magnification er indstillet til true.
Som en retningslinje øger forstærkning og fase_grænseværdier mængden af forstørrelse, der påføres inputvideoen. Du bør ændre disse værdier, indtil du tydeligt ser den bevægelse, du vil spore i videorammen. Hvis du ser artefakter, kan det være en fordel at reducere fasetærsklen, mens den samme forstærkning bevares.
Bevægelsesdetekteringsparametrene hjælper med at kompensere for støj. Ved registrering af bevægelsesområder bruges erode_dim og dilate_dim til at dimensionere dimensionerne af OpenCV -kernerne, der bruges til at erodere og udvide bevægelse, så støj først eroderes væk, derefter udvides det resterende bevægelsessignal betydeligt for at gøre bevægelsesområderne tydelige. Disse parametre skal muligvis også indstilles, hvis din krybbe er i en meget høj kontrastindstilling. Generelt skal du bruge en højere erode_dim for indstillinger med høj kontrast og en lavere erode_dim for lav kontrast.
Hvis du kører CribSense med show_diff = true, og du bemærker, at for meget af akkumulatorens output er hvidt, eller en helt uafhængig del af videoen registreres som bevægelse (f.eks. En flimrende lampe), skal du øge erode_dim indtil kun den del af videoen svarende til din baby er den største del af hvid. Den første figur viser et eksempel, hvor eroderingsdimensionen er for lav til bevægelsesmængden i rammen, mens den næste viser en velkalibreret ramme.
Når dette er blevet kalibreret, skal du sørge for, at pixel_threshold er indstillet til en værdi, så "Pixel Movement" kun rapporterer topværdierne for pixelbevægelse, og ikke dem alle (hvilket betyder, at du skal afbryde støjen). Ideelt set vil du se output som dette i din terminal, hvor der er et klart periodisk mønster, der svarer til bevægelsen:
[info] Pixel Movement: 0 [info] Bevægelsesestimat: 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 Bevægelse: 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] Bevægelsesestimat: 0,839298 Hz [info] Pixelbevægelse: 0 [info] Bevægelsesestimat: 0,839298 Hz
Hvis dit output ser mere sådan ud:
[info] Pixel Movement: 921 [info] Bevægelsesestimat: 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, indtil bare toppe ses, og pixelbevægelse er 0 ellers.
Trin 8: Demonstration
Her er en lille demo af, hvordan CribSense fungerer. Du bliver nødt til at forestille dig, at dette er fastgjort til siden af en krybbe.
Når du placerer CribSense over din krybbe, skal du optimere afstanden mellem spædbarnet og kameraet. Ideelt set vil dit spædbarns bryst fylde mindre end 1/3 af rammen. Barnet bør ikke være for langt væk, ellers kæmper lavopløsningsvideoen med at finde nok detaljer til at forstørre. Hvis kameraet er for tæt på, kan kameraet muligvis ikke se dit barn, hvis det ruller eller bevæger sig ud af rammen. Tilsvarende, hvis barnet er under et "teltet" tæppe, hvor der er begrænset kontakt mellem tæppet og barnets bryst, kan det være svært at registrere bevægelse. Tag dem godt ind!
Du vil også overveje belysningssituationen omkring din krybbe. Hvis din krybbe ligger lige ved siden af et vindue, kan du få bevægelige skygger eller ændre lysværdier, da solen er blokeret af skyer, eller der sker bevægelse uden for vinduet. Et sted med konsekvent belysning er bedst.
Med noget mere arbejde tror vi, at nogen kunne forbedre vores software, så kalibrering er en meget glattere proces. I fremtiden kan der også tilføjes yderligere funktioner som push -meddelelser.
Trin 9: Fejlfinding
Du kan støde på et par almindelige problemer, når du konfigurerer CribSense. For eksempel at have problemer med at bygge/køre programmet eller ikke høre nogen lyd. Husk, CribSense er ikke en helt pålidelig babyalarm. Vi modtager gerne bidrag på vores GitHub -lager, når du foretager forbedringer!
Her er nogle fejlfindingstip, vi har samlet, mens vi lavede CribSense.
Ingen alarm afspilles
- Virker dine højttalere?
- Kan du afspille andre lyde fra Pi uden for CribSense -alarmen?
- Hvis din Pi prøver at afspille lyd via HDMI frem for lydporten? Kontroller Raspberry Pi Audio Configuration -siden for at sikre, at du har valgt det korrekte output.
- Opdager CribSense -software bevægelse? Hvis CribSense kører i baggrunden, kan du tjekke med journalctl -f i en terminal.
- Hvis CribSense mærker meget bevægelse, skal du muligvis kalibrere CribSense.
IR -lysdioden virker ikke
- Kan du se en svag rød farve, når du ser på IR -LED'en? En svag rød ring skal være synlig, når LED'en er tændt.
- Kontroller tilslutningernes polaritet. Hvis +5V og GND vendes, fungerer det ikke.
- Tilslut LED'en til en strømforsyning med en 5V/0,5A spændings-/strømgrænse. Normalt bør den forbruge 0,2A ved 5V. Hvis det ikke gør det, kan din LED muligvis ikke fungere korrekt.
CribSense registrerer bevægelse, selvom der ikke er et spædbarn
- Har du korrekt kalibreret CribSense?
-
Husk, at CribSense bare leder efter ændringer i pixelværdier
- Er der nogen skygger, der bevæger sig inden for rammen?
- Blinker eller ændrer belysningen?
- Er CribSense monteret på en stabil overflade (dvs. noget der ikke ryster, hvis folk går forbi det)?
- Er der andre bevægelseskilder i rammen (spejle, der fanger reflekser osv.)?
CribSense registrerer IKKE bevægelse, selvom der er bevægelse
- Har du korrekt kalibreret CribSense?
- Er der noget i vejen for kameraet?
- Kan du overhovedet oprette forbindelse til kameraet fra Raspberry Pi? Kontroller ved at køre raspistill -v i en terminal for at åbne kameraet på Pi i et par sekunder.
- Hvis du ser på sudo systemctl status cribsense, kører CribSense egentlig?
- Ligger dit spædbarn under et tæppe, der er "teltet" op, så det ikke får kontakt med barnet? Hvis der er betydelige luftgab mellem tæppet og barnet, kan tæppet maskere bevægelsen.
- Kan du se bevægelsen, hvis du forstærker videoen mere?
- Kan du se bevægelsen, hvis du justerer lav- og højfrekvente cutoffs?
- Hvis dette kun sker i svagt lys, har du sørget for, at din kalibrering fungerer i svagt lys?
CribSense bygger ikke
Installerede du alle afhængighederne?
Jeg kan ikke køre cribsense fra kommandolinjen
- Har du ved et uheld skrevet noget, da du kørte./autogen.sh --prefix =/usr --sysconfdir =/etc --disable-debug under din softwareopbygning?
- Er cribsense til stede i /usr /bin?
- Hvilken sti er angivet, hvis du kører "hvilken cribsense"?
Anbefalede:
Kontaktløs Halloween Candy Dispenser: 6 trin
Kontaktløs Halloween Candy Dispenser: Det er den tid på året igen, hvor vi fejrer Halloween, men i år på grund af COVID-19 er alle væddemål slået fra. Men i Halloween -ånden må vi ikke glemme det sjove ved trick or treating. Derfor er dette indlæg oprettet for at give familien mulighed for at
RGB-lysdreven bevægelse af håndfladerne kontaktløs: 4 trin
RGB-lysdreven bevægelse af håndfladerne kontaktløs: RGB-natlys, med mulighed for at styre farven på natlyset ved hjælp af håndbevægelser. Ved hjælp af tre afstandssensorer ændrer vi lysstyrken på hver af de tre komponenter i RGB -farven, når vi nærmer os eller fjerner hånden. En Ar
Arduino-bluetooth-betjent mobiltelefon kontaktløs hjemmeautomatisering: 5 trin
Arduino-bluetooth Operated Cell Phone Contactless Home Automation: hilsener i tider med pandemien af covid-19it er en nødvendighed for at undgå kontakt og opretholde social distancering, men for at tænde og slukke for apparaterne skal du røre tavlerne, men vent ikke mere indføre kontakt mindre system til kontrol
Arduino -grænseflade med ultralydssensor og kontaktløs temperatursensor: 8 trin
Arduino -grænseflade med ultralydssensor og kontaktløs temperatursensor: I dag foretrækker producenter, udviklere Arduino til hurtig udvikling af prototyping af projekter. Arduino er en open-source elektronikplatform baseret på brugervenlig hardware og software. Arduino har et meget godt brugerfællesskab. I dette projekt
Kontaktløs spændingsdetektor: 15 trin (med billeder)
Kontaktløs spændingsdetektor: 3 måder at bygge din egen kontaktløse spændingsdetektor på for mindre end en dollarIntroduktion ------------ Når elektricitet ikke håndteres korrekt, resulterer det i elektriske stød med en grim oplevelse; derfor skal sikkerheden komme først, når man arbejder