Cuprins:
- Pasul 1: premise
- Pasul 2: Instalarea software-ului CribSense
- Pasul 3: Pregătirea hardware-ului dvs.: conectați camera foto
- Pasul 4: Pregătirea hardware-ului dvs.: LED IR
- Pasul 5: Pregătirea hardware-ului dvs.: Șasiu
- Pasul 6: Pregătirea hardware-ului dvs.: Asamblare
- Pasul 7: Calibrare
- Pasul 8: demonstrație
- Pasul 9: Depanare
Video: CribSense: un monitor pentru copii fără contact, bazat pe video: 9 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
CribSense este un monitor pentru bebeluși fără contact, pe bază de video, pe care îl poți face singur fără a rupe banca
CribSense este o implementare C ++ a Video Magnification reglată pentru a rula pe un Raspberry Pi 3 Model B. Într-un week-end, vă puteți configura propriul monitor pentru bebeluși, care va declanșa alarma dacă bebelușul dvs. încetează să se miște. Ca bonus, tot software-ul este gratuit de utilizat în scopuri necomerciale și este ușor extensibil.
Depozitul complet care conține fișiere sursă și documentație poate fi găsit la
Deși credem că CribSense este destul de distractiv, este important să ne amintim că acesta nu este de fapt un dispozitiv de siguranță certificat, infailibil. Adică, trebuie să fie configurat corespunzător și să aibă un mediu bine controlat pentru a funcționa. De exemplu, dacă nu este calibrat bine și / sau mediul din videoclip nu este favorabil măririi videoclipului, este posibil să nu îl puteți folosi. Am făcut acest lucru ca un proiect distractiv pentru a vedea cât de bine am putea avea software-ul greu de calculat, cum ar fi mărirea video, rulat pe hardware limitat de calcul, cum ar fi un Raspberry Pi. Orice produs real ar necesita mult mai multe teste decât am făcut noi. Deci, dacă utilizați acest proiect, luați-l pentru ceea ce este: o scurtă explorare a măririi video pe un Pi.
Ce vei avea nevoie:
Raspberry Pi + Camera + Instrumente de configurare:
- Raspberry Pi 3 Model B.
- Sursă de alimentare micro USB de 5V 2.5A
- Raspberry Pi NoIR Camera Module V2
- Card MicroSD (am folosit un card de 16 GB clasa 10)
- Cablu flexibil pentru camera Raspberry Pi (12 ")
- Boxe cu intrare de 3,5 mm
- Monitor HDMI
- Tastatură USB
- Mouse USB
- [opțional] Raspberry Pi Heatsink (dacă sunteți îngrijorat de căldură, puteți lipi unul dintre acestea pe Pi)
Circuit cu LED IR pentru funcționare cu lumină slabă:
- [3x] 1N4001 Diode
- 1 Ohm, rezistor 1W
- LED IR 1W
- 2 fire pentru conectarea LED-ului la Pi
- Ciocan de lipit
Şasiu:
- Acces la o imprimantă 3D (volum minim de construcție = 9,9 "L x 7,8" W x 5,9 "H) pentru a imprima șasiul nostru. Cu toate acestea, nu ezitați să vă construiți propriul dvs.
- Lipici (orice tip de lipici va funcționa, dar lipiciul fierbinte este recomandat pentru prototipare).
Pasul 1: premise
Înainte de a începe ghidul nostru pas cu pas, ar fi trebuit să fiți instalat ultima versiune de Raspbian pe cardul SD și să vă asigurați că Pi-ul dvs. este funcțional. De asemenea, va trebui să activați modulul camerei înainte de a putea accesa camera.
Pasul 2: Instalarea software-ului CribSense
CribSense depinde de autoconf, libtool, OpenCV și libcanberra, precum și de instrumentele software obișnuite.
- autoconf și libtool sunt utilizate pentru a configura automat makefiles și a construi scripturi pentru CribSense pe multe platforme (cum ar fi Linux, OSX și Raspberry Pi).
- OpenCV este un pachet puternic de viziune pe computer folosit pentru a face procesarea imaginilor și stă la baza măririi video și a codului de detectare a mișcării. Are un suport excelent, este ușor de utilizat și are performanțe bune.
- libcanberra este o bibliotecă simplă pentru redarea sunetelor evenimentelor. Este folosit pentru a reda sunetul de alarmă pentru CribSense.
Vizitați paginile lor individuale pentru a obține detalii complete.
Instalați-le deschizând un terminal pe Pi și executând:
sudo apt-get install git build-essential autoconf libtool libopencv-dev libcanberra-dev
Apoi, trebuie să setați driverul camerei să se încarce automat adăugând bcm2835-v4l2 la `/ etc / modules-load.d / modules.conf`. Modules.conf ar trebui să arate astfel:
# / etc / modules: module kernel pentru încărcare la momentul pornirii.
# # Fișierul conține numele modulelor kernel care ar trebui încărcate # la momentul pornirii, câte unul pe linie. Liniile care încep cu „#” sunt ignorate. i2c-dev bcm2835-v4l2
Odată ce fișierul a fost editat, trebuie să reporniți Pi. Acest driver este utilizat de CribSense pentru a extrage direct cadre de pe camera NoIR.
Apoi, puteți clona depozitul executând:
git clone
Apoi, mutați în depozit și construiți software-ul rulând
cd CribSense
./autogen.sh --prefix = / usr --sysconfdir = / etc --disable-debug make sudo make install sudo systemctl daemon-reload
Felicitări, ați instalat toate software-urile necesare!
Configurare
CribSense este personalizabil printr-un fișier de configurare INI simplu. După rularea `make install`, fișierul de configurare se află la /etc/cribsense/config.ini. Puteți vizualiza și edita acești parametri executând
sudo nano /etc/cribsense/config.ini
O scurtă explicație a fiecărui parametru este dată în configurația implicită, dar mai multe detalii sunt disponibile la https://lukehsiao.github.io/CribSense/setup/config/. De asemenea, vom discuta despre calibrare și configurare la sfârșitul acestui ghid.
Rularea CribSense
CribSense a fost conceput pentru a rula la pornire utilizând un serviciu systemd. În timp ce sunteți conectat la Raspberry Pi cu tastatura și mouse-ul, trebuie să vă asigurați că parametrii de configurare funcționează pentru pătuțul dvs. Este posibil să trebuiască să reglați acești parametri dacă îl mutați.
În timp ce reglați parametrii, puteți rula cribsense după bunul plac din linia de comandă executând
cribsense --config /etc/cribsense/config.ini
Odată ce sunteți mulțumit, puteți activa rularea automată executând
sudo systemctl activa cribsense
Puteți opri cribsense să ruleze automat rulând
sudo systemctl dezactiva cribsense
Prezentare generală a software-ului
Software-ul CribSense este inima și sufletul acestui proiect. Am văzut câteva dintre marile demonstrații de mărire video de la MIT și am vrut să încercăm să rulăm un algoritm similar pe un Raspberry Pi. Acest lucru a necesitat mai mult de o accelerare de 10x din activitatea tbl3rd la implementarea sa C ++ a măririi video pentru a rula în timp real pe Pi. Optimizările necesare au ghidat proiectarea software-ului nostru.
La un nivel ridicat, CribSense trece în mod repetat printr-o mașină de stare software. În primul rând, împarte fiecare cadru video de 640x480, în tonuri de gri, în 3 secțiuni orizontale (640x160) pentru o localitate mai bună a cache-ului. Apoi mărește fiecare bandă într-un fir separat și monitorizează mișcarea văzută în cadru. După monitorizarea mișcării timp de câteva secunde, aceasta determină aria primară de mișcare și decupează cadrul. Acest lucru reduce numărul total de pixeli de care algoritmul trebuie procesat. Apoi, CribSense monitorizează cantitatea de mișcare din fluxul decupat și sună o alarmă dacă nu se percepe nicio mișcare pentru o perioadă de timp configurabilă. Periodic, CribSense își va deschide din nou vizualizarea pentru a monitoriza întregul cadru în cazul în care sugarul s-a mutat și a recolta în jurul noii zone primare de mișcare.
Mărirea video este utilizată pentru a crește raportul semnal / zgomot al mișcărilor subtile, cum ar fi respirația sugarului. Nu ar fi necesar pentru mișcări mai mari, dar poate ajuta pentru mișcări foarte subtile. Rețineți că implementarea noastră se bazează pe algoritmul descris în lucrările MIT și nu funcționează la fel de bine ca și codul lor proprietar.
Optimizări precum multithreading, decupare adaptivă și optimizări ale compilatorului ne-au dat aproximativ 3x, 3x și, respectiv, 1,2x. Acest lucru ne-a permis să atingem viteza de 10x necesară pentru a rula în timp real pe Pi.
Detalii complete pot fi găsite pe pagina Arhitectură software a depozitului CribSense.
Dacă sunteți interesat de mărirea videoclipurilor, vă rugăm să vizitați pagina MIT.
Pasul 3: Pregătirea hardware-ului dvs.: conectați camera foto
Mai întâi, trebuie să schimbați cablul de 6 "furnizat împreună cu camera cu cablul de 12". Pentru a face acest lucru, puteți urma pur și simplu acest tutorial despre cum să înlocuiți cablul camerei.
În rezumat, veți vedea o filă push / pull pe partea din spate a camerei pe care o puteți scoate pentru a elibera cablul flexibil. Înlocuiți cablul scurt cu cel mai lung și împingeți clapeta înapoi înăuntru.
Veți observa că avem un cablu de 24 "în imaginile noastre. Era prea lung. Cablul de 12" de pe lista materialelor are o lungime mult mai rezonabilă.
Pasul 4: Pregătirea hardware-ului dvs.: LED IR
CribSense este relativ ușor de construit și este alcătuit în mare parte din piese disponibile în comerț. După cum se vede în figura de mai sus, există 5 componente hardware principale, dintre care doar 2 sunt personalizate. Această pagină va prezenta modul de construire a circuitului cu LED-uri IR, iar pagina următoare va descrie modul de construire a șasiului.
Pentru această parte, trebuie să obțineți fierul de lipit, fire, diode, LED-uri IR și rezistență. Vom construi circuitul prezentat în a doua figură. Dacă sunteți nou în materie de lipire, iată un ghid frumos care vă va prinde din urmă. În timp ce acest ghid discută lipirea prin găuri, puteți utiliza aceleași tehnici de bază pentru a conecta aceste componente împreună, așa cum se arată în figura a 3-a.
Pentru a asigura o iluminare adecvată pe timp de noapte, folosim un LED IR, care nu este vizibil pentru ochiul uman, dar vizibil pentru camera NoIR. LED-ul IR nu consumă multă energie în comparație cu Raspberry Pi, așa că lăsăm LED-ul IR pornit pentru simplitate.
În versiunile anterioare ale lui Pi, puterea maximă de curent a acestor pini era de 50mA. Raspberry Pi B + a crescut acest lucru la 500mA. Cu toate acestea, folosim pur și simplu pinii de alimentare de 5V pentru simplitate, care pot furniza până la 1,5A. Tensiunea directă a LED-ului IR este de aproximativ 1,7 ~ 1,9V conform măsurătorilor noastre. Deși LED-ul IR poate atrage 500mA fără a se deteriora, reducem curentul la aproximativ 200mA pentru a reduce căldura și consumul total de energie. Rezultatele experimentale arată, de asemenea, că LED-ul IR este suficient de luminos cu 200mA de curent de intrare. Pentru a acoperi decalajul dintre 5V și 1.9V, folosim trei diode 1N4001 și un rezistor de 1 Ohm în serie cu LED-ul IR. Căderea de tensiune peste fir, diode și rezistor este de aproximativ 0,2V, 0,9V (pentru fiecare) și respectiv 0,2V. Astfel, tensiunea peste LED-ul IR este de 5V - 0,2V - (3 * 0,9V) - 0,2V = 1,9V. Disiparea căldurii prin LED este de 0,18 W și 0,2 W peste rezistor, toate în limita valorilor maxime ale acestora.
Dar încă nu am terminat! Pentru a obține o potrivire mai bună în șasiul imprimat 3D, dorim ca obiectivul cu LED IR să iasă din șasiu și să avem placa PCB la același nivel cu orificiul. Mică fotodiodă din dreapta jos va intra în cale. Pentru a remedia acest lucru, îl desoldăm și îl răsucim în partea opusă a plăcii, așa cum se arată în ultimele două fotografii. Fotodioda nu este necesară deoarece vrem ca LED-ul să fie întotdeauna aprins. Pur și simplu comutând-o pe partea opusă, rămâne neschimbat circuitul original LED.
Când lipiți firele, asigurați-vă că firele au o lungime de cel puțin 12 inci și au anteturi de pin care pot aluneca peste GPIO-urile Pi.
Pasul 5: Pregătirea hardware-ului dvs.: Șasiu
Fișiere sursă:
- Caz STL
- Case Makerbot
- Acoperiți STL
- Cover Makerbot
Am folosit un șasiu simplu tipărit 3D pentru a găzdui Pi, camera și LED-ul. Utilizarea șasiului nostru este opțională, deși este recomandată pentru a împiedica copiii mici să atingă circuitele electronice expuse. Fiecare pătuț este diferit, deci șasiul nostru nu include un suport de montare. Mai multe opțiuni de montare ar putea include:
- Legaturi de cablu
- 3M Dual Lock
- Velcro
- Bandă
Dacă aveți acces la un MakerBot Replicator (a 5-a generație), puteți descărca pur și simplu fișierele.makerbot pentru carcasă și acoperiți-le pe MakerBot Replicator și imprima. Durează aproximativ 6 ore pentru a tipări carcasa și 3 ore pentru a imprima capacul. Dacă utilizați un alt tip de imprimantă 3D, vă rugăm să continuați să citiți.
Pentru a imprima CribSense este necesar un volum minim de construcție de 9,9 "(L) x 7,8" (L) x 5,9 "(H). Dacă nu aveți acces la o imprimantă 3D cu acest volum de construcție, puteți utiliza o imprimare 3D online serviciu (cum ar fi Shapeways sau Sculpteo) pentru a imprima CribSense. Rezoluția minimă de imprimare este de 0,015 ". Dacă utilizați o imprimantă 3D de tip fabricare a filamentului topit, aceasta înseamnă că diametrul duzei dvs. trebuie să fie de 0,015 "sau mai mic. Este posibil să funcționeze imprimante cu rezoluții de imprimare mai mici (diametre mai mari ale duzelor), dar este posibil ca Raspberry Pi să nu se potrivească în șasiu. Vă recomandăm PLA (acid polilactic) ca material de imprimare preferat. Este posibil ca alte materiale plastice să funcționeze, dar este posibil ca Raspberry Pi să nu se potrivească în cazul în care coeficientul de expansiune termică al plasticului ales este mai mare decât cel al PLA. Dacă imprimanta dvs. 3D are un placa de construcție încălzită, opriți încălzitorul înainte de a continua.
Orientarea modelului pe placa de construcție a imprimantei dvs. este esențială pentru o imprimare reușită. Aceste modele au fost proiectate cu atenție, astfel încât să nu fie nevoie să fie imprimate cu material suport, economisind astfel plasticul și îmbunătățind calitatea imprimării. Înainte de a continua, descărcați fișierele 3D pentru carcasă și capac. La tipărirea acestor modele, gâtul CribSense trebuie să se așeze plat pe placa de construcție. Acest lucru asigură că toate unghiurile de depășire ale modelelor nu depășesc 45 de grade, eliminând astfel cerința de material de susținere. Pentru instrucțiuni despre orientarea modelelor 3D în volumul de construcție al imprimantei dvs., consultați manualul de instrucțiuni furnizat împreună cu imprimanta 3D. Exemple de orientare a carcasei și a husei sunt prezentate mai sus.
În plus față de a pune gâtul CribSense plat pe placa de construcție, puteți observa că modelele sunt rotite în jurul axei verticale. Acest lucru poate fi necesar pentru a se potrivi modelului în volumul de construcție al imprimantei dvs. 3D. Această rotație este opțională dacă lungimea volumului de construcție este suficient de lungă pentru a se potrivi CribSense.
Pasul 6: Pregătirea hardware-ului dvs.: Asamblare
Odată ce ați pregătit tot hardware-ul, puteți începe asamblarea. Orice lipici poate fi utilizat în acest proces, dar vă recomandăm lipici fierbinți din două motive principale. Adezivul fierbinte se usucă repede, deci nu trebuie să așteptați mult timp pentru ca adezivul să se usuce. În plus, lipiciul fierbinte este detașabil dacă faceți o greșeală. Pentru a îndepărta adezivul fierbinte uscat, înmuiați adezivul fierbinte în alcool de frecare (izopropil). Vă recomandăm o concentrație de 90% sau mai mare, dar concentrația de 70% va funcționa în continuare. Înmuierea adezivului fierbinte uscat în alcool izopropilic va slăbi legătura dintre adeziv și suprafața subiacentă, permițându-vă să îndepărtați adezivul curat. Când înmuiați adezivul în alcool izopropilic, Raspberry Pi trebuie oprit și deconectat. Asigurați-vă că lăsați totul să se usuce înainte de a aplica din nou adeziv fierbinte și de a porni Raspberry Pi.
Toate imaginile pentru acești pași sunt în ordine și urmează împreună cu pașii de text.
- Introduceți Raspberry Pi în șasiu. Va trebui să-l flexați puțin pentru a obține portul audio, dar odată ce acesta este introdus, mufa audio îl va menține în poziție. Odată ce este în poziție, asigurați-vă că toate porturile pot fi accesate în continuare (de exemplu, puteți conecta cablul de alimentare).
- Apoi, utilizați lipici fierbinte pentru a fixa Pi în poziție și atașați camera la Pi. Există și găuri pentru șuruburi, dacă preferați să le utilizați.
- Acum, lipiți LED-ul și camera de pe capacul frontal (în imagine). Începeți prin lipirea la cald a camerei NoIR de gaura camerei. Asigurați-vă că camera este strânsă și aliniată cu șasiul. Nu folosiți prea mult adeziv; în caz contrar, nu veți putea încadra camera în carcasa principală. Asigurați-vă că porniți Pi-ul și aruncați o privire la cameră („raspistill -v”, de exemplu) pentru a vă asigura că este înclinat bine și că are un câmp vizual bun. Dacă nu este, îndepărtați lipiciul fierbinte și repoziționați-l.
- Apoi, lipiți LED-ul IR de gaura de pe gâtul capacului. Gâtul este la un unghi de 45 de grade față de lumina laterală a pătuțului, ceea ce duce la mai multe umbre în situații de lumină slabă. Acest lucru adaugă mai mult contrast imaginii, facilitând detectarea mișcării.
- Atașați firele LED IR la pinii antetului Raspberry Pi așa cum se arată în imaginea schematică.
- Împachetați cablurile în șasiu astfel încât să nu le încrețească sau să le strângă. Am ajuns să împăturim stilul acordeonului de cablu, deoarece cablul flex al camerei noastre era prea lung.
- Cu totul ascuns, lipici fierbinte în jurul marginilor unde se întâlnesc cele două piese, sigilându-le la locul lor.
Pasul 7: Calibrare
Detalii despre parametrii de configurare pot fi găsite în documentația depozitului CribSense. De asemenea, vizionați videoclipul pentru a vedea un exemplu despre modul în care ați putea calibra CribSense după ce ați configurat totul.
Iată un exemplu de fișier de configurare:
[io]; Configurare I / O
; input = path_to_file; Fișier de intrare pentru a utiliza input_fps = 15; fps de intrare (40 max, 15 recomandat dacă utilizați camera) full_fps = 4,5; fps la care pot fi procesate cadre complete crop_fps = 15; fps la care cadrele decupate pot fi procesate camera = 0; Camera de utilizat lățime = 640; Lățimea înălțimii video de intrare = 480; Înălțimea intrării video time_to_alarm = 10; Câte secunde să aștepți fără mișcare înainte de alarmă. [decupare]; Setări de decupare adaptive crop = true; Dacă se decupează sau nu frames_to_settle = 10; # cadre de așteptat după resetare înainte de procesare roi_update_interval = 800; # cadre între ROI recalculare roi_window = 50; # cadre de monitorizat înainte de a selecta ROI [mișcare]; Setări de detectare a mișcării erode_dim = 4; dimensiunea nucleului erodat dilate_dim = 60; dimensiunea kernelului dilatat dif_threshold = 8; abs diferență necesară înainte de a recunoaște durata schimbării = 1; # cadre pentru a menține mișcarea înainte de semnalizarea pixel_threshold adevărat = 5; # pixeli care trebuie să fie diferiți pentru a fi marcați ca mișcare show_diff = false; afișează diferența dintre 3 cadre [mărire]; Setările de mărire video amplifică = 25; Amplificarea procentuală de reducere dorită = 0,5; Frecvența joasă a bandpass-ului. high-cut = 1,0; Frecvența ridicată a bandpass-ului. prag = 50; Pragul de fază ca% din pi. show_magnification = false; Afișați cadrele de ieșire ale fiecărei măriri [depanare] print_times = false; Imprimarea timpilor de analiză
Calibrarea algoritmului este un efort iterativ, fără o soluție exactă. Vă încurajăm să experimentați diferite valori, combinându-le cu caracteristicile de depanare, pentru a găsi combinația de parametri cea mai potrivită mediului dvs. Înainte de a începe calibrarea, asigurați-vă că show_diff și show_magnification sunt setate la true.
Ca orientare, creșterea amplificării și a valorilor phase_threshold crește cantitatea de mărire aplicată videoclipului de intrare. Ar trebui să modificați aceste valori până când vedeți clar mișcarea pe care doriți să o urmăriți în cadrul video. Dacă vedeți artefacte, reducerea fazei_prag în timp ce păstrați aceeași amplificare ar putea ajuta.
Parametrii de detectare a mișcării ajută la compensarea zgomotului. La detectarea regiunilor de mișcare, erode_dim și dilate_dim sunt utilizate pentru a dimensiona dimensiunile nucleelor OpenCV utilizate pentru a eroda și dilata mișcarea, astfel încât zgomotul să fie erodat mai întâi, apoi semnalul de mișcare rămas este dilatat semnificativ pentru a face regiunile de mișcare evidente. Este posibil ca acești parametri să fie necesari să fie reglați dacă pătuțul dvs. se află într-un cadru de contrast foarte ridicat. În general, veți avea nevoie de un erode_dim mai mare pentru setări de contrast ridicat și de un erode_dim mai mic pentru un contrast scăzut.
Dacă rulați CribSense cu show_diff = true și observați că o cantitate prea mare de ieșire a acumulatorului este albă sau că o parte complet legată a videoclipului este detectată ca mișcare (de exemplu, o lampă care pâlpâie), creșteți erode_dim până la doar partea videoclipului corespunzător copilului dvs. este cea mai mare secțiune de alb. Prima figură arată un exemplu în care dimensiunea de erodare este prea mică pentru cantitatea de mișcare din cadru, în timp ce următoarea arată un cadru bine calibrat.
Odată ce acest lucru a fost calibrat, asigurați-vă că pixel_threshold este setat la o valoare astfel încât „Pixel Movement” să raporteze doar valorile de vârf ale mișcării pixelilor și nu pe toate (ceea ce înseamnă că trebuie să eliminați zgomotul). În mod ideal, veți vedea astfel de ieșiri în terminalul dvs., unde există un model periodic clar care corespunde mișcării:
[info] Mișcarea pixelilor: 0 [info] Estimarea mișcării: 1,219812 Hz
[informații] Mișcarea pixelilor: 0 [informații] Estimarea mișcării: 1,219812 Hz [informații] Mișcarea pixelilor: 0 [informații] Estimarea mișcării: 1,219812 Hz [informații] Mișcarea pixelilor: 0 [informații] Estimarea mișcării: 1,219812 Hz [informații] Mișcarea pixelilor: 44 [informații] Estimare mișcare: 1,219812 Hz [informații] Mișcare pixel: 0 [informații] Estimare mișcare: 1,219812 Hz [informații] Mișcare pixel: 161 [informații] Estimare mișcare: 1,219812 Hz [informații] Mișcare pixel: 121 [informații] Estimarea mișcării: 0,841416 Hz [informații] Mișcarea pixelilor: 0 [informații] Estimarea mișcării: 0,841416 Hz [informații] Mișcarea pixelilor: 86 [informații] Estimarea mișcării: 0,841416 Hz [informații] Mișcarea pixelilor: 0 [informații] Estimarea mișcării: 0,841416 Hz [informații] Mișcarea pixelilor: 0 [informații] Estimarea mișcării: 0,841416 Hz [informații] Mișcarea pixelilor: 0 [informații] Estimarea mișcării: 0,841416 Hz [informații] Mișcarea pixelilor: 0 [informații] Estimarea mișcării: 0,841416 Hz [informații] Mișcarea pixelilor 0 ent: 0 [informații] Estimare mișcare: 0,841416 Hz [informații] Mișcare pixel: 0 [informații] Estimare mișcare: 0,841416 Hz [informații] Mișcare pixel: 0 [informații] Estimare mișcare: 0,841416 Hz [informații] Mișcare pixel: 0 [informații] Estimare mișcare: 0,841416 Hz [informații] Mișcare pixel: 0 [informații] Estimare mișcare: 0,841416 Hz [informații] Mișcare pixel: 0 [informații] Estimare mișcare: 0,841416 Hz [informații] Mișcare pixel: 0 [informații] Estimare mișcare: 0,841416 Hz [informații] Mișcarea pixelilor: 0 [informații] Estimarea mișcării: 0,841416 Hz [informații] Mișcarea pixelilor: 97 [informații] Estimarea mișcării: 0,841416 Hz [informații] Mișcarea pixelilor: 74 [informații] Estimarea mișcării: 0,839298 Hz [informații] Pixel Mișcare: 0 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixel: 60 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixel: 0 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixel: 0 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixeli: 0 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixeli: 0 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixeli: 48 [informații] Mișcare Estimare: 0,839298 Hz [informații] Mișcare pixel: 38 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixel: 29 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixel: 28 [informații] Estimare mișcare: 0,839298 Hz [info] Mișcare pixeli: 22 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixeli: 0 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixeli: 0 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixeli: 0 [informații] Estimare mișcare: 0,839298 Hz [informații] Mișcare pixel: 0 [informații] Estimare mișcare: 0,839298 Hz
Dacă rezultatul dvs. arată mai mult așa:
[informații] Mișcarea pixelilor: 921 [informații] Estimarea mișcării: 1,352046 Hz
[informații] Mișcarea pixelilor: 736 [informații] Estimarea mișcării: 1,352046 Hz [informații] Mișcarea pixelilor: 666 [informații] Estimarea mișcării: 1,352046 Hz [informații] Mișcarea pixelilor: 663 [informații] Estimarea mișcării: 1,352046 Hz [informații] Mișcarea pixelilor: 1196 [informații] Estimare mișcare: 1,352046 Hz [informații] Mișcare pixel: 1235 [informații] Estimare mișcare: 1,352046 Hz [informații] Mișcare pixel: 1187 [informații] Estimare mișcare: 1,456389 Hz [informații] Mișcare pixel: 1115 [informații] Estimare mișcare: 1,456389 Hz [informații] Mișcare pixel: 959 [informații] Estimare mișcare: 1,456389 Hz [informații] Mișcare pixel: 744 [informații] Estimare mișcare: 1,456389 Hz [informații] Mișcare pixel: 611 [informații] Estimare mișcare: 1,456389 Hz [informații] Mișcarea pixelilor: 468 [informații] Estimarea mișcării: 1,456389 Hz [informații] Mișcarea pixelilor: 371 [informații] Estimarea mișcării: 1,456389 Hz [informații] Mișcarea pixelilor: 307 [informații] Estimarea mișcării: 1,456389 Hz [informații] Mișcarea pixelilor: 270 [informații] Estimare mișcare: 1,456389 Hz [informații] Mișcare pixel: 234 [informații] Estimare mișcare: 1,456389 Hz [informații] Mișcare pixel: 197 [informații] Estimare mișcare: 1,456389 Hz [informații] Mișcarea pixelilor: 179 [informații] Estimarea mișcării: 1,456389 Hz [informații] Mișcarea pixelilor: 164 [informații] Estimarea mișcării: 1,456389 Hz [informații] Mișcarea pixelilor: 239 [informații] Estimarea mișcării: 1,456389 Hz [informații] Mișcarea pixelilor: 733 [informații] Estimarea mișcării: 1,456389 Hz [informații] Mișcarea pixelilor: 686 [informații] Estimarea mișcării: 1,229389 Hz [informații] Mișcarea pixelilor: 667 [informații] Estimarea mișcării: 1,229389 Hz [informații] Mișcarea pixelilor: 607 [info] Estimare mișcare: 1,229389 Hz [informații] Mișcare pixel: 544 [informații] Estimare mișcare: 1,229389 Hz [informații] Mișcare pixel: 499 [informații] Estimare mișcare: 1,229389 Hz [informații] Mișcare pixel: 434 [informații] Estimare mișcare: 1,229389 Hz [informații] Mișcarea pixelilor: 396 [informații] Estimarea mișcării: 1,229389 Hz [informații] Mișcarea pixelilor: 375 [informații] Estimarea mișcării: 1,229389 Hz [informații] Mișcarea pixelilor: 389 [informații] Estimarea mișcării: 1,229389 Hz [informații] Mișcarea pixelilor: 305 [informații] Estimarea mișcării: 1,312346 Hz [informații] Mișcarea pixelilor: 269 [informații] Estimarea mișcării: 1,312346 Hz [informații] Mișcarea pixelilor: 1382 [informații] Mișcarea E stimulați: 1,312346 Hz [informații] Mișcarea pixelilor: 1086 [informații] Estimarea mișcării: 1,312346 Hz [informații] Mișcarea pixelilor: 1049 [informații] Estimarea mișcării: 1,312346 Hz [informații] Mișcarea pixelilor: 811 [informații] Estimarea mișcării: 1,312346 Hz [informații] Mișcarea pixelilor: 601 [informații] Estimarea mișcării: 1,312346 Hz [informații] Mișcarea pixelilor: 456 [informații] Estimarea mișcării: 1,312346 Hz
Reglați pixel_threshold și diff_threshold până când se văd doar vârfurile, iar mișcarea pixelilor este 0 altfel.
Pasul 8: demonstrație
Iată o mică demonstrație despre cum funcționează CribSense. Va trebui să vă imaginați că acest lucru este atașat de partea unui pătuț.
Când poziționați CribSense peste pătuțul dvs., va trebui să optimizați distanța dintre copil și cameră. În mod ideal, pieptul bebelușului dvs. va umple mai puțin de 1/3 din cadru. Copilul nu trebuie să fie prea departe, altfel videoclipul cu rezoluție redusă se va chinui să găsească suficiente detalii pentru a le mări. Dacă camera este prea aproape, este posibil ca camera să nu vă poată vedea copilul dacă se rostogolește sau se mișcă din cadru. În mod similar, dacă copilul se află sub o pătură „cortată”, unde există un contact limitat între pătură și pieptul copilului, poate fi dificil să detectezi mișcarea. Pune-le bine!
De asemenea, veți dori să luați în considerare situația de iluminare din jurul pătuțului dvs. Dacă pătuțul dvs. este chiar lângă o fereastră, este posibil să obțineți umbre în mișcare sau să schimbați valorile luminii, deoarece soarele este blocat de nori sau mișcarea se întâmplă în afara ferestrei. Undeva cu iluminare consistentă este cel mai bine.
Cu ceva mai multă muncă, credem că cineva ar putea îmbunătăți software-ul nostru, astfel încât calibrarea să fie un proces mult mai lin. În viitor, ar putea fi adăugate și funcții suplimentare, cum ar fi notificările push.
Pasul 9: Depanare
Este posibil să întâlniți câteva probleme comune în timpul configurării CribSense. De exemplu, dacă aveți probleme la construirea / rularea programului sau nu auziți sunet. Nu uitați, CribSense nu este un monitor pentru copii perfect fiabil. Am saluta contribuțiile la depozitul nostru GitHub pe măsură ce aduceți îmbunătățiri!
Iată câteva sfaturi de depanare pe care le-am adunat în timpul realizării CribSense.
Nu se aleargă nicio alarmă
- Difuzoarele dvs. funcționează?
- Puteți reda alte sunete din Pi în afara alarmei CribSense?
- Dacă Pi încearcă să redea audio prin HDMI, mai degrabă decât prin portul audio? Verificați pagina de configurare audio Raspberry Pi pentru a vă asigura că ați selectat ieșirea corectă.
- Software-ul CribSense detectează mișcarea? Dacă CribSense rulează în fundal, puteți verifica cu journalctl -f într-un terminal.
- Dacă CribSense detectează o mulțime de mișcare, poate fi necesar să calibrați CribSense.
LED-ul IR nu funcționează
- Puteți vedea o culoare roșie slabă atunci când vă uitați la LED-ul IR? Un inel roșu slab ar trebui să fie vizibil când LED-ul este aprins.
- Verificați polaritatea conexiunilor. Dacă + 5V și GND sunt inversate, nu va funcționa.
- Conectați LED-ul la o sursă de alimentare cu o limită de tensiune / curent de 5V / 0,5A. În mod normal, ar trebui să consume 0,2A la 5V. În caz contrar, LED-ul dvs. poate să nu funcționeze corect.
CribSense detectează mișcarea chiar dacă nu există un copil
- Ați calibrat corect CribSense?
-
Amintiți-vă, CribSense caută doar modificări ale valorilor pixelilor
- Există umbre care se mișcă în cadrul?
- Există pâlpâire sau schimbare de iluminat?
- CribSense este montat pe o suprafață stabilă (adică ceva care nu va tremura dacă oamenii merg pe lângă el)?
- Există alte surse de mișcare în cadru (oglinzile care prind reflexe etc.)?
CribSense NU detectează mișcare, chiar dacă există mișcare
- Ați calibrat corect CribSense?
- Există ceva în calea camerei?
- Ești deloc capabil să te conectezi la camera de la Raspberry Pi? Verificați rulând raspistill -v într-un terminal pentru a deschide camera de pe Pi timp de câteva secunde.
- Dacă te uiți la starea sudo systemctl cribsense, CribSense rulează de fapt?
- Copilul tău se află sub o pătură „cortată”, astfel încât să nu intre în contact cu copilul? Dacă există goluri de aer semnificative între pătură și copil, pătura poate masca mișcarea.
- Puteți vedea mișcarea dacă amplificați mai mult videoclipul?
- Puteți vedea mișcarea dacă reglați limitele de frecvență joasă și înaltă?
- Dacă acest lucru se întâmplă numai în condiții de lumină slabă, v-ați asigurat că calibrarea funcționează în condiții de lumină slabă?
CribSense nu construiește
Ați instalat toate dependențele?
Nu pot rula cribsense din linia de comandă
- Ați greșit greșit să scrieți ceva când ați rulat./autogen.sh --prefix = / usr --sysconfdir = / etc --disable-debug în timpul compilării software-ului?
- Cribsense este prezent în / usr / bin?
- Ce cale este oferită dacă rulați „care cribsense”?
Recomandat:
Mișcarea fără RGB a luminii RGB fără contact: 4 pași
Mișcarea RGB cu lumină RGB fără contact: lumină RGB de noapte, cu capacitatea de a controla culoarea luminii de noapte folosind mișcările mâinilor. Folosind trei senzori de distanță, vom schimba luminozitatea fiecăreia dintre cele trei componente ale culorii RGB atunci când ne apropiem sau scoatem mâna. Un Ar
Dispenser de dezinfectare a mâinilor fără contact DIY fără Arduino sau microcontroler: 17 pași (cu imagini)
Dispozitiv de dezinfectare a mâinilor fără contact DIY fără un Arduino sau un microcontroler: După cum știm cu toții, focarul COVID-19 a lovit lumea și ne-a schimbat stilul de viață. În această stare, alcoolul și dezinfectantele pentru mâini sunt fluide vitale, cu toate acestea, acestea trebuie utilizate corect. Atingerea recipientelor cu alcool sau a produselor dezinfectante pentru mâini cu mâinile infectate c
Ceas de antrenament pentru somn pentru copii: 6 pași (cu imagini)
Ceas de formare a somnului pentru copii: aveam nevoie de un ceas pentru a-mi ajuta gemenii de 4 ani să învețe să doarmă puțin mai mult (am ajuns să mă trezesc sâmbăta la 5:30 dimineața), dar nu pot timp de citire încă. După ce răsfoiți câteva articole dintr-un magazin foarte popular
Telecomandă pentru copii mici pentru video player pentru PC: 6 pași
Telecomandă video pentru copii mici pentru player video PC: Construiesc o telecomandă care se conectează la un computer cu USB. Telecomanda mare permite copilului meu să aleagă și să redea videoclipuri pe un computer vechi. Acesta este un proiect relativ simplu. Componenta de bază este fie o tastatură USB, fie o tastatură USB fără fir. Apoi
Răcitor / suport pentru laptop cu cost zero (fără lipici, fără găurire, fără piulițe și șuruburi, fără șuruburi): 3 pași
Zero Cost Laptop Cooler / Stand (Fără lipici, fără găurire, fără piulițe și șuruburi, fără șuruburi): ACTUALIZARE: VĂ RUGĂM VOTĂ PENTRU MEA MEA MEA INTRAREA PE www.instructables.com/id/Zero-Cost-Aluminum-Furnace-No-Propane-No-Glue-/ SAU POATE VOTA PENTRU CEL MAI BUN PRIETEN AL MEU