Taula de continguts:

CribSense: un monitor de nadó sense contacte basat en vídeo: 9 passos (amb imatges)
CribSense: un monitor de nadó sense contacte basat en vídeo: 9 passos (amb imatges)

Vídeo: CribSense: un monitor de nadó sense contacte basat en vídeo: 9 passos (amb imatges)

Vídeo: CribSense: un monitor de nadó sense contacte basat en vídeo: 9 passos (amb imatges)
Vídeo: Я есть. Ты есть. Он есть_Рассказ_Слушать 2024, Desembre
Anonim
CribSense: un monitor de nadó sense contacte basat en vídeo
CribSense: un monitor de nadó sense contacte basat en vídeo
CribSense: un monitor de nadó sense contacte basat en vídeo
CribSense: un monitor de nadó sense contacte basat en vídeo

CribSense és un monitor per a nadons sense contacte basat en vídeo que podeu fer sense perdre el banc

CribSense és una implementació de C ++ de Video Magnification sintonitzada per funcionar en un Raspberry Pi 3 Model B. Durant un cap de setmana, podeu configurar el vostre propi monitor de bressol per a nadons que desperti una alarma si el vostre nadó deixa de moure’s. Com a bonificació, tot el programari es pot utilitzar gratuïtament amb finalitats no comercials i és fàcilment extensible.

El repositori complet que conté fitxers font i documentació es pot trobar a

Tot i que creiem que CribSense és força divertit, és important recordar que en realitat no es tracta d’un dispositiu de seguretat certificat i infal·lible. És a dir, ha de configurar-se correctament i tenir un entorn ben controlat per funcionar. Per exemple, si no està ben calibrat i / o l'entorn del vídeo no és propici per a l'ampliació del vídeo, és possible que no el pugueu utilitzar. Vam fer-ho com un projecte divertit per veure fins a quin punt podríem fer funcionar un programari molt pesat, com l’augment de vídeo, amb maquinari limitat per computació, com ara un Raspberry Pi. Qualsevol producte real requeriria molt més proves de les que hem fet. Per tant, si utilitzeu aquest projecte, preneu-lo pel que és: una petita exploració de l’augment de vídeo en un Pi.

Què necessiteu:

Raspberry Pi + Càmera + Eines de configuració:

  • Raspberry Pi 3 Model B.
  • Alimentació micro USB de 5V 2.5A
  • Raspberry Pi NoIR Camera Module V2
  • Targeta MicroSD (hem utilitzat una targeta Classe 10 de 16 GB)
  • Cable flexible per a càmera Raspberry Pi (12 ")
  • Altaveus amb entrada de 3,5 mm
  • Monitor HDMI
  • Teclat USB
  • Ratolí USB
  • [opcional] Dissipador de calor Raspberry Pi (si us preocupa la calor, podeu enganxar-ne un al Pi)

Circuit LED IR per a un funcionament amb poca llum:

  • [3x] 1N4001 díodes
  • 1 ohm, 1W resistència
  • LED IR de 1W
  • 2 cables per enganxar el LED al Pi
  • Soldador

Xassís:

  • Accés a una impressora 3D (volum mínim de construcció = 9,9 "L x 7,8" W x 5,9 "H) per imprimir el nostre xassís. Tot i això, no dubteu a construir-ne el vostre.
  • Cola (qualsevol tipus de cola funcionarà, però es recomana cola calenta per prototipar).

Pas 1: requisits previs

Abans d’iniciar la nostra guia pas a pas, ja hauríeu d’haver instal·lat l’última versió de Raspbian a la targeta SD i assegurar-vos que el vostre Pi sigui funcional. També haureu d’habilitar el mòdul de càmera abans d’accedir a la càmera.

Pas 2: Instal·lació del programari CribSense

CribSense depèn de l'autoconf, libtool, OpenCV i libcanberra, així com de les eines de programari habituals.

  • autoconf i libtool s’utilitzen per configurar automàticament fitxers makefile i construir scripts per a CribSense en moltes plataformes (com Linux, OSX i Raspberry Pi).
  • OpenCV és un potent paquet de visió per ordinador que s’utilitza per fer processament d’imatges i és la base del codi d’ampliació i detecció de moviment del vídeo. Té un gran suport, és fàcil d’utilitzar i té un bon rendiment.
  • libcanberra és una biblioteca senzilla per reproduir sons d'esdeveniments. S'utilitza per reproduir el so d'alarma de CribSense.

Visiteu les seves pàgines individuals per obtenir detalls complets.

Instal·leu-los obrint un terminal al vostre Pi i executant:

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

A continuació, heu de configurar el controlador de la càmera perquè es carregui automàticament afegint bcm2835-v4l2 a `/ etc / modules-load.d / modules.conf`. El vostre module.conf hauria de tenir aquest aspecte:

# / etc / modules: mòduls del nucli que es carreguen en arrencar.

# # El fitxer conté els noms dels mòduls del nucli que s'haurien de carregar # a l'inici, un per línia. Les línies que comencen per "#" s'ignoren. i2c-dev bcm2835-v4l2

Un cop editat el fitxer, heu de reiniciar el Pi. CribSense utilitza aquest controlador per treure directament els marcs de la càmera NoIR.

A continuació, podeu clonar el dipòsit executant:

git clone

A continuació, aneu al dipòsit i creeu el programari executant

cd CribSense

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

Enhorabona, heu instal·lat tot el programari necessari.

Configuració

CribSense es pot personalitzar mitjançant un senzill fitxer de configuració INI. Després d'executar `make install`, el fitxer de configuració es troba a /etc/cribsense/config.ini. Podeu veure i editar aquests paràmetres executant

sudo nano /etc/cribsense/config.ini

Es proporciona una breu explicació de cada paràmetre a la configuració predeterminada, però hi ha més detalls disponibles a https://lukehsiao.github.io/CribSense/setup/config/. També discutirem el calibratge i la configuració al final d’aquesta guia.

Executant CribSense

CribSense va ser dissenyat per executar-se a l'inici mitjançant un servei systemd. Mentre esteu connectat al vostre Raspberry Pi amb el teclat i el ratolí, assegureu-vos que els paràmetres de configuració funcionin al vostre bressol. És possible que hàgiu de tornar a sintonitzar aquests paràmetres si el moveu.

Mentre ajusteu els paràmetres, podeu executar cribsense a voluntat des de la línia d’ordres executant

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

Un cop estigueu satisfet, podeu habilitar l'execució automàtica executant

sudo systemctl habilita cribsense

Podeu evitar que el cribsense s’executi automàticament executant-lo

sudo systemctl desactiva el cribsense

Descripció general del programari

El programari CribSense és el cor i l’ànima d’aquest projecte. Vam veure algunes de les grans demostracions d’ampliació de vídeo del MIT i volíem provar d’executar un algoritme similar en un Raspberry Pi. Això requeria una velocitat de més de 10 vegades del treball de tbl3rd en la seva implementació en C ++ de l'ampliació de vídeo per poder executar-se en temps real al Pi. Les optimitzacions necessàries van guiar el nostre disseny del programari.

A un nivell elevat, CribSense repeteix repetidament una màquina d’estats de programari. En primer lloc, divideix cada marc de vídeo en escala de grisos de 640x480 en 3 seccions horitzontals (640x160) per obtenir una millor localització de la memòria cau. A continuació, augmenta cada banda en un fil separat i supervisa el moviment que es veu al quadre. Després de supervisar el moviment durant uns quants segons, determina l'àrea principal de moviment i hi retalla el marc. Això redueix el nombre total de píxels que l'algorisme necessita per processar. A continuació, CribSense controla la quantitat de moviment del flux retallat i fa sonar una alarma si no es percep cap moviment durant un temps configurable. Periòdicament, CribSense obrirà la seva vista de nou per controlar el quadre complet en cas que el nadó s'hagi mogut i torni a retallar al voltant de la nova àrea de moviment principal.

L’ampliació de vídeo s’utilitza per augmentar la relació senyal-soroll de moviments subtils com la respiració infantil. No seria necessari per a moviments més grans, però pot ajudar a moviments molt subtils. Tingueu en compte que la nostra implementació es basa lliurement en l'algorisme descrit als articles del MIT i no funciona tan bé com el seu codi propietari.

Optimitzacions com ara multi-threading, retall adaptatiu i optimitzacions del compilador ens van donar aproximadament 3x, 3x i 1,2x, respectivament. Això ens va permetre aconseguir l’acceleració de 10 vegades necessària per funcionar en temps real al Pi.

Podeu trobar la informació completa a la pàgina Arquitectura de programari del dipòsit CribSense.

Si us interessa ampliar el vídeo, visiteu la pàgina del MIT.

Pas 3: Preparació del maquinari: connecteu la càmera

Preparació del maquinari: connecteu la càmera
Preparació del maquinari: connecteu la càmera

En primer lloc, canvieu el cable de 6 "que venia amb la càmera amb el cable de 12". Per fer-ho, només cal que seguiu aquest tutorial sobre com substituir el cable de la càmera.

En resum, veureu una pestanya push / pull a la part posterior de la càmera que podeu treure per deixar anar el cable flexible. Substituïu el cable curt pel de més llarg i torneu a introduir la pestanya.

Notareu que tenim un cable de 24 "a les nostres imatges. Era massa llarg. El cable de 12" a la llista de materials té una longitud molt més raonable.

Pas 4: Preparació del maquinari: LED IR

Preparació del maquinari: LED IR
Preparació del maquinari: LED IR
Preparació del maquinari: LED IR
Preparació del maquinari: LED IR
Preparació del maquinari: LED d’IR
Preparació del maquinari: LED d’IR

CribSense és relativament fàcil de construir i es compon en gran part de peces disponibles al comerç. Com es veu a la figura anterior, hi ha 5 components principals de maquinari, només 2 dels quals estan fets a mida. Aquesta pàgina explicarà com es construeix el circuit LED IR i, a la pàgina següent, es descriu com es construeix el xassís.

Per a aquesta part, necessiteu obtenir el vostre soldador, cables, díodes, LED IR i resistència. Construirem el circuit que es mostra a la 2a figura. Si no coneixeu la soldadura, aquí teniu una guia que us atraparà. Tot i que aquesta guia tracta de la soldadura per forats, podeu utilitzar les mateixes tècniques bàsiques per connectar aquests components entre si com es mostra a la tercera figura.

Per proporcionar una il·luminació adequada a la nit, fem servir un LED IR, que no és visible a l’ull humà però sí a la càmera NoIR. El LED IR no consumeix molta energia en comparació amb el Raspberry Pi, de manera que deixem el LED IR encès per simplicitat.

En versions anteriors del Pi, la sortida de corrent màxima d’aquests pins era de 50 mA. El Raspberry Pi B + va augmentar-lo fins a 500 mA. Tot i això, només fem servir els pins d’alimentació de 5 V per simplificar-los, que poden subministrar fins a 1,5 A. Segons les nostres mesures, el voltatge frontal del LED IR és d’uns 1,7 ~ 1,9 V. Tot i que el LED IR pot generar 500 mA sense fer-se malbé, reduïm el corrent a uns 200 mA per reduir la calor i el consum d'energia general. Els resultats experimentals també mostren que el LED IR és prou brillant amb 200 mA de corrent d’entrada. Per reduir la distància entre 5V i 1,9V, fem servir tres díodes 1N4001 i una resistència d’1 Ohm en sèrie amb el LED IR. La caiguda de tensió sobre el cable, els díodes i la resistència és d’uns 0,2 V, 0,9 V (per a cadascun) i 0,2 V, respectivament. Per tant, la tensió sobre el LED IR és de 5V - 0,2V - (3 * 0,9V) - 0,2V = 1,9V. La dissipació de calor sobre el LED és de 0,18 W i 0,2 W sobre la resistència, tot dins dels seus índexs màxims.

Però encara no hem acabat! Per tal d’adaptar-se millor al xassís imprès en 3D, volem que la lent LED IR sobresurti del nostre xassís i que la placa PCB estigui a l’alçada del forat. El petit fotodiode de la part inferior dreta s’interposarà. Per solucionar-ho, el dessoldem i el tirem cap al costat oposat del tauler, tal com es mostra a les dues fotos finals. El fotodiode no és necessari, ja que volem que el LED estigui sempre encès. Simplement canviar-lo al costat oposat deixa el circuit LED original sense canvis.

Quan soldeu els cables, assegureu-vos que els cables tinguin una longitud mínima de 12 polzades i que tinguin capçaleres de pins que es puguin lliscar sobre els GPIO del Pi.

Pas 5: Preparació del maquinari: xassís

Preparació del maquinari: xassís
Preparació del maquinari: xassís
Preparació del maquinari: xassís
Preparació del maquinari: xassís
Preparació del maquinari: xassís
Preparació del maquinari: xassís

Fitxers font:

  • Cas STL
  • Case Makerbot
  • Coberta STL
  • Cover Makerbot

Hem utilitzat un senzill xassís imprès en 3D per allotjar el Pi, la càmera i el LED. L’ús del nostre xassís és opcional, tot i que es recomana per evitar que els nens petits toquin els circuits electrònics exposats. Tots els bressols són diferents, de manera que el nostre xassís no inclou cap suport de muntatge. Hi ha diverses opcions de muntatge que poden incloure:

  • Lligams de cables
  • 3M Dual Lock
  • Velcro
  • Cinta

Si teniu accés a un MakerBot Replicator (de 5a generació), només podeu descarregar els fitxers.makerbot de la funda i cobrir-los al vostre MakerBot Replicator i imprimir-los. Es triga aproximadament 6 hores a imprimir la funda i 3 hores a imprimir la coberta. Si feu servir un tipus diferent d’impressora 3D, continueu llegint.

Es necessita un volum mínim de construcció de 9,9 "(L) x 7,8" (W) x 5,9 "(H) per imprimir CribSense. Si no teniu accés a una impressora 3D amb aquest volum de compilació, podeu utilitzar una impressió 3D en línia servei (com Shapeways o Sculpteo) per imprimir CribSense. La resolució mínima d’impressió és de 0,015 ". Si utilitzeu una impressora 3D de fabricació de filaments fusionats, això vol dir que el diàmetre del vostre broquet ha de ser 0,015 "o inferior. Les impressores amb resolucions d'impressió més baixes (diàmetres de broquet més grans) poden funcionar, però és possible que el Raspberry Pi no s'adapti al xassís. Recomanem PLA (àcid polilàctic) com a material d'impressió preferit. Pot ser que funcionin altres plàstics, però és possible que el Raspberry Pi no s'adapti si el coeficient d'expansió tèrmica del plàstic escollit és superior al del PLA. Si la vostra impressora 3D té placa de construcció escalfada, apagueu l’escalfador abans de continuar.

És fonamental orientar el model a la placa de construcció de la impressora per aconseguir una impressió amb èxit. Aquests models han estat dissenyats acuradament, de manera que no cal imprimir-los amb material de suport, estalviant així plàstic i millorant la qualitat de la impressió. Abans de continuar, descarregueu els fitxers 3D de la funda i la coberta. En imprimir aquests models, el coll de CribSense ha de quedar pla a la placa de construcció. Això garanteix que tots els angles de volada dels models no superin els 45 graus, eliminant així el requisit de material de suport. Per obtenir instruccions sobre com orientar els models 3D al volum de construcció de la impressora, consulteu el manual d'instruccions que s'inclou amb la impressora 3D. A continuació es mostren exemples d’orientació de construcció de la caixa i la coberta.

A més de posar el coll de CribSense pla contra la placa de construcció, és possible que noteu que els models giren al voltant de l'eix vertical. Pot ser que sigui necessari per ajustar el model al volum de compilació de la impressora 3D. Aquesta rotació és opcional si la longitud del volum de compilació és prou llarg per adaptar-se a CribSense.

Pas 6: Preparació del maquinari: muntatge

Preparació del maquinari: muntatge
Preparació del maquinari: muntatge
Preparació del maquinari: muntatge
Preparació del maquinari: muntatge
Preparació del maquinari: muntatge
Preparació del maquinari: muntatge
Preparació del maquinari: muntatge
Preparació del maquinari: muntatge

Un cop tingueu a punt tot el maquinari, podeu començar el muntatge. Es pot utilitzar qualsevol cola en aquest procés, però recomanem cola calenta per dos motius principals. La cola calenta s’asseca ràpidament, de manera que no cal esperar molt de temps perquè s’assequi la cola. A més, la cola calenta és extraïble si cometeu un error. Per eliminar la cola calenta seca, submergiu-la amb alcohol fregant (isopropílic). Es recomana una concentració del 90% o superior, però el 70% continuarà funcionant. Remullar la cola calenta seca amb alcohol isopropílic debilitarà l’enllaç entre la cola i la superfície subjacent, cosa que us permetrà desprendre la cola netament. En remullar la cola amb alcohol isopropílic, el Raspberry Pi s’ha d’apagar i desconnectar. Assegureu-vos de deixar-ho assecar tot abans de tornar a aplicar cola calenta i arrencar el Raspberry Pi.

Totes les imatges d'aquests passos estan en ordre i segueixen juntament amb els passos de text.

  1. Inseriu el Raspberry Pi al xassís. Haureu de flexionar-lo una mica per obtenir el port d’àudio, però un cop estigui dins, el connector d’àudio el mantindrà al seu lloc. Un cop estigui al seu lloc, assegureu-vos que es pugui accedir a tots els ports (p. Ex., Podeu connectar el cable d’alimentació).
  2. A continuació, utilitzeu cola calenta per fixar el Pi al seu lloc i connecteu la càmera al Pi. També hi ha forats de cargol si preferiu utilitzar-los.
  3. Ara, enganxeu el LED i la càmera a la portada frontal (a la imatge). Comenceu enganxant en calent la càmera NoIR al forat de la càmera. Assegureu-vos que la càmera estigui ajustada i alineada amb el xassís. No utilitzeu massa cola; en cas contrari, no podreu inserir la càmera al cas principal. Assegureu-vos que enceneu el Pi i mireu la càmera (per exemple, "raspistill -v") per assegurar-vos que estigui ben inclinat i que tingui un bon camp de visió. Si no és així, traieu la cola calenta i torneu a col·locar-la.
  4. A continuació, enganxeu el LED IR al forat del coll de la coberta. El coll té un angle de 45 graus cap a la llum lateral del bressol, cosa que provoca més ombres en situacions de poca llum. Això afegeix més contrast a la imatge, cosa que facilita la detecció del moviment.
  5. Connecteu els cables LED IR als pins de capçalera del Raspberry Pi tal com es mostra a la imatge esquemàtica.
  6. Empaqueu els cables al xassís de manera que no els arrufiïn ni els colin. Vam acabar plegant l'estil d'acordió de cable perquè el cable flexible de la càmera era massa llarg.
  7. Amb tot ficat, cola calenta al voltant de les vores on es troben les dues peces, segellant-les al seu lloc.

Pas 7: calibració

Image
Image
Calibratge
Calibratge

Podeu trobar detalls sobre els paràmetres de configuració a la documentació del dipòsit CribSense. Vegeu també el vídeo per veure un exemple de com podeu calibrar CribSense després de tenir-ho tot configurat.

Aquí teniu una mostra del fitxer de configuració:

[io]; Configuració d'E / S

; entrada = camí_filar; Fitxer d'entrada per utilitzar input_fps = 15; fps d’entrada (40 màx., 15 recomanats si s’utilitza la càmera) full_fps = 4,5; fps en què es poden processar fotogrames complets crop_fps = 15; fps en què es poden processar els fotogrames retallats càmera = 0; Càmera per utilitzar amplada = 640; Amplada de l'alçada del vídeo d'entrada = 480; Alçada del vídeo d'entrada time_to_alarm = 10; Quants segons cal esperar sense moviment abans de l'alarma. [retallar]; Configuració de retall adaptatiu crop = true; Si retallar o no frames_to_settle = 10; # fotogrames a esperar després del restabliment abans de processar roi_update_interval = 800; # fotogrames entre el ROI recalculant roi_window = 50; # fotogrames a controlar abans de seleccionar ROI [moviment]; Configuració de detecció de moviment erode_dim = 4; dimensió del nucli erosionat dilate_dim = 60; dimensió del nucli dilatat diff_threshold = 8; cal diferència abdominal abans de reconèixer la durada del canvi = 1; # fotogrames per mantenir el moviment abans de marcar el veritable pixel_threshold = 5; # píxels que han de ser diferents per marcar-los com a moviment show_diff = false; mostra la diferència entre 3 fotogrames [augment]; La configuració de l'ampliació de vídeo amplifica = 25; El percentatge d'amplificació desitjat per baix = 0,5; La freqüència baixa del pas de banda. tall elevat = 1,0; L’alta freqüència del pas de banda. llindar = 50; El llindar de fase com% de pi. show_magnification = false; Mostra els marcs de sortida de cada augment [depuració] print_times = false; Impressió dels temps d’anàlisi

La calibració de l'algorisme és un esforç iteratiu, sense cap solució exacta. Us animem a experimentar amb diversos valors, combinant-los amb les funcions de depuració, per trobar la combinació de paràmetres més adequada al vostre entorn. Abans de començar el calibratge, assegureu-vos que show_diff i show_magnification estiguin establerts a true.

Com a directriu, augmentar l'amplificació i els valors phase_threshold augmenten la quantitat d'ampliació aplicada al vídeo d'entrada. Heu de canviar aquests valors fins que vegeu clarament el moviment del qual voleu fer un seguiment al marc del vídeo. Si veieu artefactes, és possible reduir el llindar de fase i mantenir la mateixa amplificació.

Els paràmetres de detecció de moviment ajuden a compensar el soroll. Quan es detecten regions de moviment, erode_dim i dilate_dim s’utilitzen per dimensionar les dimensions dels nuclis OpenCV que s’utilitzen per erosionar i dilatar el moviment, de manera que primer s’erosiona el soroll, i després el senyal de moviment restant es dilata significativament per fer evidents les regions de moviment. Aquests paràmetres també poden haver de ser ajustats si el bressol es troba en un entorn de contrast molt alt. En general, necessitareu un erode_dim més alt per a configuracions d’alt contrast i un erode_dim més baix per a un contrast baix.

Si executeu CribSense amb show_diff = true i observeu que massa de la sortida de l’acumulador és blanca o que alguna part del vídeo completament no relacionada es detecta com a moviment (per exemple, un llum parpellejant), augmenteu erode_dim fins que només la part del vídeo corresponent al vostre bebè és la secció més gran de blanc. La primera figura mostra un exemple en què la dimensió d’erosió és massa baixa per a la quantitat de moviment del marc, mentre que la següent mostra un marc ben calibrat.

Un cop calibrat, assegureu-vos que el paràmetre pixel_threshold estigui establert en un valor tal que "Pixel Movement" només reporti els valors màxims del moviment de píxels i no tots (el que significa que haureu de reduir el soroll). Idealment, veureu una sortida així al vostre terminal, on hi ha un patró periòdic clar que correspon al moviment:

[info] Moviment de píxels: 0 [info] Estimació del moviment: 1.219812 Hz

[informació] Moviment de píxels: 0 [informació] Estimació de moviment: 1,219812 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 1,219812 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 1,219812 Hz [informació] Moviment de píxels: 44 [informació] Estimació de moviment: 1,219812 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 1,219812 Hz [informació] Moviment de píxels: 161 [informació] Estimació de moviment: 1,219812 Hz [informació] Moviment de píxels: 121 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 86 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Pixel Movem ent: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 97 [informació] Estimació de moviment: 0,841416 Hz [informació] Moviment de píxels: 74 [informació] Estimació de moviment: 0,839298 Hz [informació] Píxel Moviment: 0 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 60 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 48 [informació] Moviment Estimació: 0,839298 Hz [informació] Moviment de píxels: 38 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 29 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 28 [informació] Estimació de moviment: 0,839298 Hz [info] Moviment de píxels: 22 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,839298 Hz [informació] Moviment de píxels: 0 [informació] Estimació de moviment: 0,839298 Hz

Si la vostra sortida té un aspecte més semblant a aquest:

[info] Moviment de píxels: 921 [info] Estimació de moviment: 1,352046 Hz

[informació] Moviment de píxels: 736 [informació] Estimació de moviment: 1,352046 Hz [informació] Moviment de píxels: 666 [informació] Estimació de moviment: 1,352046 Hz [informació] Moviment de píxels: 663 [informació] Estimació de moviment: 1,352046 Hz [informació] Moviment de píxels: 1196 [informació] Estimació de moviment: 1,352046 Hz [informació] Moviment de píxels: 1235 [informació] Estimació de moviment: 1,352046 Hz [informació] Moviment de píxels: 1187 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 1115 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 959 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 744 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 611 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 468 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 371 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 307 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 270 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 234 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 197 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 179 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 164 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 239 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 733 [informació] Estimació de moviment: 1,456389 Hz [informació] Moviment de píxels: 686 [informació] Estimació de moviment: 1,229389 Hz [informació] Moviment de píxels: 667 [informació] Estimació de moviment: 1,229389 Hz [informació] Moviment de píxels: 607 [info] Estimació de moviment: 1,229389 Hz [info] Moviment de píxels: 544 [info] Estimació de moviment: 1,229389 Hz [informació] Moviment de píxels: 499 [info] Estimació de moviment: 1,229389 Hz [informació] Moviment de píxels: 434 [info] Estimació de moviment: 1,229389 Hz [informació] Moviment de píxels: 396 [informació] Estimació de moviment: 1,229389 Hz [informació] Moviment de píxels: 375 [informació] Estimació de moviment: 1,229389 Hz [informació] Moviment de píxels: 389 [informació] Estimació de moviment: 1,229389 Hz [informació] Moviment de píxels: 305 [informació] Estimació de moviment: 1,312346 Hz [informació] Moviment de píxels: 269 [informació] Estimació de moviment: 1,312346 Hz [informació] Moviment de píxels: 1382 [informació] Moviment E estimular: 1,312346 Hz [informació] Moviment de píxels: 1086 [informació] Estimació de moviment: 1,312346 Hz [informació] Moviment de píxels: 1049 [informació] Estimació de moviment: 1,312346 Hz [informació] Moviment de píxels: 811 [informació] Estimació de moviment: 1,312346 Hz [info] Moviment de píxels: 601 [info] Estimació de moviment: 1,312346 Hz [informació] Moviment de píxels: 456 [info] Estimació de moviment: 1,312346 Hz

Ajusteu pixel_threshold i diff_threshold fins que només es vegin els pics i el moviment del píxel sigui 0 en cas contrari.

Pas 8: demostració

Image
Image

Aquí teniu una petita demostració de com funciona CribSense. Haureu d’imaginar-vos que aquest està unit al costat d’un bressol.

Quan col·loqueu CribSense sobre el bressol, haureu d’optimitzar la distància entre el nadó i la càmera. L’ideal seria que el pit del vostre nadó omplís menys d’un 1/3 del marc. El nen no hauria d’estar massa lluny o, en cas contrari, el vídeo de baixa resolució lluitarà per trobar prou detalls com per augmentar-los. Si la càmera està massa a prop, és possible que la càmera no pugui veure el vostre fill si roda o surt del marc. De la mateixa manera, si el nen es troba sota una manta "tendada", on hi ha un contacte limitat entre la manta i el pit del nen, pot ser difícil detectar el moviment. Introduïu-los bé!

També voldreu tenir en compte la situació d’il·luminació al voltant del vostre bressol. Si el bressol està just al costat d'una finestra, és possible que obtingueu ombres mòbils o que canvieu els valors de la llum a mesura que el sol estigui bloquejat pels núvols o que es produeixi moviment fora de la finestra. En algun lloc amb una il·luminació consistent és millor.

Amb una mica més de treball, creiem que algú podria millorar el nostre programari de manera que el calibratge sigui un procés molt més suau. En el futur, també es podrien afegir funcions addicionals com les notificacions push.

Pas 9: resolució de problemes

És possible que tingueu alguns problemes comuns mentre configureu CribSense. Per exemple, tenir problemes per construir / executar el programa o no sentir cap àudio. Recordeu que CribSense no és un monitor per a nadons perfectament fiable. Agrairíem les contribucions al nostre dipòsit de GitHub a mesura que feu millores.

Aquests són alguns consells de resolució de problemes que hem recopilat durant la creació de CribSense.

No sona cap alarma

  • Els vostres altaveus funcionen?
  • Podeu reproduir altres sons del Pi fora de l'alarma CribSense?
  • Si el vostre Pi intenta reproduir àudio mitjançant HDMI en lloc del port d'àudio? Consulteu la pàgina de configuració d’àudio Raspberry Pi per assegurar-vos que heu seleccionat la sortida correcta.
  • El programari CribSense detecta moviments? Si CribSense s’executa en segon pla, podeu consultar amb journalctl -f en un terminal.
  • Si CribSense detecta molts moviments, potser haureu de calibrar CribSense.

El LED IR no funciona

  • Podeu veure un tènue color vermell quan mireu el LED IR? Un anell vermell feble hauria de ser visible quan el LED estigui encès.
  • Comproveu la polaritat de les connexions. Si s'inverteixen + 5V i GND, no funcionarà.
  • Connecteu el LED a una font d'alimentació amb un límit de tensió / corrent de 5V / 0,5A. Normalment, hauria de consumir 0,2A a 5V. Si no ho fa, és possible que el LED no funcioni correctament.

CribSense detecta moviments encara que no hi hagi un nadó

  • Heu calibrat correctament CribSense?
  • Recordeu que CribSense només busca canvis en els valors dels píxels

    • Hi ha ombres que es mouen dins del marc?
    • Hi ha parpelleig o canvi d’il·luminació?
    • CribSense està muntat en una superfície estable (és a dir, alguna cosa que no tremolarà si la gent hi camina)?
    • Hi ha alguna altra font de moviment al marc (miralls que captin reflexos, etc.)?

CribSense NO detecta moviments encara que hi hagi moviment

  • Heu calibrat correctament CribSense?
  • Hi ha alguna cosa en el camí de la càmera?
  • Ets capaç de connectar-te a la càmera des de Raspberry Pi? Comproveu-ho executant raspistill -v en un terminal per obrir la càmera al Pi durant uns segons.
  • Si mireu l’estat sudo systemctl cribsense, CribSense s’està executant realment?
  • El vostre nadó està sota una manta que està "tendada" perquè no estigui en contacte amb el nen? Si hi ha buits d'aire significatius entre la manta i el nen, la manta pot emmascarar el moviment.
  • Podeu veure el moviment si amplifiqueu més el vídeo?
  • Podeu veure el moviment si ajusteu els talls de baixa i alta freqüència?
  • Si això passa només amb poca llum, us heu assegurat que el calibratge funcioni amb poca llum?

CribSense no es crea

Heu instal·lat totes les dependències?

No puc executar cribsense des de la línia d'ordres

  • Heu erròniament escrivit alguna cosa quan vau executar./autogen.sh --prefix = / usr --sysconfdir = / etc --disable-debug durant la compilació del programari?
  • El cribsense és present a / usr / bin?
  • Quin camí es proporciona si executeu "quin contingut de bressol"?

Recomanat: