Inhoudsopgave:

CribSense: een contactloze, op video gebaseerde babyfoon - Ajarnpa
CribSense: een contactloze, op video gebaseerde babyfoon - Ajarnpa

Video: CribSense: een contactloze, op video gebaseerde babyfoon - Ajarnpa

Video: CribSense: een contactloze, op video gebaseerde babyfoon - Ajarnpa
Video: Worldline Tap on Mobile - Verander uw smartphone in een betaalterminal 2024, November
Anonim
CribSense: een contactloze, op video gebaseerde babyfoon
CribSense: een contactloze, op video gebaseerde babyfoon
CribSense: een contactloze, op video gebaseerde babyfoon
CribSense: een contactloze, op video gebaseerde babyfoon

CribSense is een op video gebaseerde, contactloze babyfoon die u zelf kunt maken zonder de bank te verslaan

CribSense is een C++-implementatie van Video Magnification die is afgestemd op een Raspberry Pi 3 Model B. In een weekend kun je je eigen babyfoon voor in de wieg instellen die alarm slaat als je baby stopt met bewegen. Als bonus is alle software gratis te gebruiken voor niet-commerciële doeleinden en gemakkelijk uit te breiden.

De volledige repository met bronbestanden en documentatie is te vinden op

Hoewel we denken dat CribSense best leuk is, is het belangrijk om te onthouden dat dit niet echt een gecertificeerd, onfeilbaar veiligheidsapparaat is. Dat wil zeggen, het moet correct zijn geconfigureerd en een goed gecontroleerde omgeving hebben om te kunnen werken. Als het bijvoorbeeld niet goed is gekalibreerd en/of de omgeving in de video niet bevorderlijk is voor videovergroting, kunt u het mogelijk niet gebruiken. We hebben dit gemaakt als een leuk project om te zien hoe goed we computerzware software zoals videovergroting konden laten draaien op computerbeperkte hardware zoals een Raspberry Pi. Elk echt product zou veel meer testen vereisen dan we hebben gedaan. Dus, als je dit project gebruikt, neem het dan voor wat het is: een korte verkenning van videovergroting op een Pi.

Wat je nodig zult hebben:

Raspberry Pi + Camera + Configuratietools:

  • Raspberry Pi 3 Model B
  • 5V 2.5A micro-USB-voeding
  • Raspberry Pi NoIR-cameramodule V2
  • MicroSD-kaart (we gebruikten een 16GB Class 10-kaart)
  • Flexkabel voor Raspberry Pi-camera (12")
  • Luidsprekers met 3,5 mm ingang
  • HDMI-monitor
  • USB-toetsenbord
  • USB-muis
  • [optioneel] Raspberry Pi Heatsink (als je je zorgen maakt over hitte, kun je een van deze op je Pi plakken)

IR LED Circuit voor gebruik bij weinig licht:

  • [3x] 1N4001 Diodes
  • 1 Ohm, 1W Weerstand
  • 1W IR-LED
  • 2 draden om de LED aan de Pi. te haken
  • Soldeerbout

Chassis:

  • Toegang tot een 3D-printer (minimaal bouwvolume = 9,9" L x 7,8" B x 5,9" H) om ons chassis te printen. Voel je echter vrij om je eigen chassis te bouwen.
  • Lijm (elk type lijm zal werken, maar hete lijm wordt aanbevolen voor prototyping).

Stap 1: Vereisten

Voordat u aan onze stapsgewijze handleiding begint, moet u de nieuwste versie van Raspbian al op uw SD-kaart hebben geïnstalleerd en ervoor hebben gezorgd dat uw Pi functioneel is. U moet ook de cameramodule inschakelen voordat u toegang kunt krijgen tot de camera.

Stap 2: De CribSense-software installeren

CribSense is afhankelijk van autoconf, libtool, OpenCV en libcanberra, evenals algemene softwaretools.

  • autoconf en libtool worden gebruikt om automatisch makefiles te configureren en scripts te bouwen voor CribSense op veel platforms (zoals Linux, OSX en de Raspberry Pi).
  • OpenCV is een krachtig computervisiepakket dat wordt gebruikt voor beeldverwerking en vormt de basis van de videovergrotings- en bewegingsdetectiecode. Het heeft geweldige ondersteuning, is gemakkelijk te gebruiken en heeft goede prestaties.
  • libcanberra is een eenvoudige bibliotheek voor het afspelen van gebeurtenisgeluiden. Het wordt gebruikt om het alarmgeluid voor CribSense af te spelen.

Bezoek hun individuele pagina's voor volledige details.

Installeer deze door een terminal op je Pi te openen en uit te voeren:

sudo apt-get install git build-essentiële autoconf libtool libopencv-dev libcanberra-dev

Vervolgens moet je het camerastuurprogramma instellen om automatisch te laden door bcm2835-v4l2 toe te voegen aan `/etc/modules-load.d/modules.conf`. Uw modules.conf zou er als volgt uit moeten zien:

# /etc/modules: kernelmodules om te laden tijdens het opstarten.

# # Het bestand bevat de namen van kernelmodules die # tijdens het opstarten moeten worden geladen, één per regel. Regels die beginnen met "#" worden genegeerd. i2c-dev bcm2835-v4l2

Nadat het bestand is bewerkt, moet u uw Pi opnieuw opstarten. Deze driver wordt door CribSense gebruikt om frames rechtstreeks van de NoIR-camera te halen.

Vervolgens kunt u de repository klonen door het volgende uit te voeren:

git kloon

Ga vervolgens naar de repository en bouw de software door uit te voeren

cd CribSense

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

Gefeliciteerd, je hebt alle benodigde software geïnstalleerd!

Configuratie

CribSense is aanpasbaar via een eenvoudig INI-configuratiebestand. Na het uitvoeren van `make install` bevindt het configuratiebestand zich in /etc/cribsense/config.ini. U kunt deze parameters bekijken en bewerken door het uitvoeren van

sudo nano /etc/cribsense/config.ini

Een korte uitleg van elke parameter wordt gegeven in de standaardconfiguratie, maar meer details zijn beschikbaar op https://lukehsiao.github.io/CribSense/setup/config/. We zullen ook kalibratie en configuratie bespreken aan het einde van deze handleiding.

Running CribSense

CribSense is ontworpen om bij het opstarten te worden uitgevoerd met behulp van een systemd-service. Terwijl u met uw toetsenbord en muis bent verbonden met uw Raspberry Pi, moet u ervoor zorgen dat de configuratieparameters voor uw wieg werken. Mogelijk moet u deze parameters opnieuw afstemmen als u deze verplaatst.

Terwijl u de parameters afstemt, kunt u cribsense naar believen uitvoeren vanaf de opdrachtregel door het uitvoeren van

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

Als u tevreden bent, kunt u autorun inschakelen door te rennen

sudo systemctl cribsense inschakelen

Je kunt ervoor zorgen dat cribsense niet automatisch wordt uitgevoerd door te rennen

sudo systemctl cribsense uitschakelen

Software-overzicht

De CribSense-software is het hart en de ziel van dit project. We zagen enkele van de geweldige demo's van videovergroting van MIT en wilden proberen een soortgelijk algoritme op een Raspberry Pi uit te voeren. Dit vereiste meer dan 10x sneller dan het werk van tbl3rd aan zijn C++ implementatie van videovergroting om in realtime op de Pi te kunnen draaien. De benodigde optimalisaties hebben geleid tot ons ontwerp van de software.

Op een hoog niveau doorloopt CribSense herhaaldelijk een softwarestatusmachine. Ten eerste verdeelt het elk 640x480 grijswaardenvideoframe in 3 horizontale secties (640x160) voor een betere cachelocatie. Het vergroot vervolgens elke band in een afzonderlijke draad en bewaakt de beweging die in het frame wordt gezien. Na enkele seconden beweging te hebben gevolgd, bepaalt het het primaire bewegingsgebied en wordt het beeld daarop bijgesneden. Dit vermindert het totale aantal pixels dat het algoritme moet verwerken. Vervolgens bewaakt CribSense de hoeveelheid beweging in de bijgesneden stream en klinkt er een alarm als er gedurende een instelbare tijd geen beweging wordt waargenomen. Van tijd tot tijd opent CribSense het beeld weer om het volledige beeld te controleren voor het geval de baby is bewogen en om het nieuwe primaire bewegingsgebied opnieuw bij te snijden.

Videovergroting wordt gebruikt om de signaal-ruisverhouding van subtiele bewegingen, zoals de ademhaling van een baby, te versterken. Het zou niet nodig zijn voor grotere bewegingen, maar kan helpen voor zeer subtiele bewegingen. Merk op dat onze implementatie losjes gebaseerd is op het algoritme dat wordt beschreven in de artikelen van MIT, en niet zo goed presteert als hun eigen code.

Optimalisaties zoals multithreading, adaptief bijsnijden en compileroptimalisaties gaven ons respectievelijk ongeveer 3x, 3x en 1,2x versnelling. Hierdoor konden we de 10x snellere snelheid bereiken die nodig is om realtime op de Pi te draaien.

Volledige details zijn te vinden op de Software Architecture-pagina van de CribSense-repository.

Als je geïnteresseerd bent in videovergroting, bezoek dan de pagina van MIT.

Stap 3: Uw hardware gereedmaken: sluit uw camera aan

Uw hardware voorbereiden: sluit uw camera aan
Uw hardware voorbereiden: sluit uw camera aan

Eerst moet je de 6-inch kabel die bij de camera is geleverd, verwisselen met de 12-inch kabel. Om dit te doen, kunt u eenvoudig deze tutorial volgen over het vervangen van de camerakabel.

Samengevat ziet u een push/pull-lipje aan de achterkant van de camera die u kunt uittrekken om de flexkabel los te maken. Vervang de korte kabel door de langere en duw het lipje er weer in.

U zult zien dat we op onze foto's een 24" kabel hebben. Die was te lang. De 12" kabel op de materialenlijst is een veel redelijkere lengte.

Stap 4: Uw hardware gereed maken: IR LED

Uw hardware voorbereiden: IR-LED
Uw hardware voorbereiden: IR-LED
Uw hardware voorbereiden: IR-LED
Uw hardware voorbereiden: IR-LED
Uw hardware voorbereiden: IR-LED
Uw hardware voorbereiden: IR-LED

CribSense is relatief eenvoudig te bouwen en bestaat grotendeels uit in de handel verkrijgbare onderdelen. Zoals te zien is in de bovenstaande afbeelding, zijn er 5 hoofdhardwarecomponenten, waarvan er slechts 2 op maat zijn gemaakt. Op deze pagina wordt uitgelegd hoe u het IR LED-circuit moet bouwen en op de volgende pagina wordt beschreven hoe u het chassis moet bouwen.

Voor dit onderdeel moet u uw soldeerbout, draden, diodes, IR-LED en weerstand kopen. We zullen het circuit construeren dat wordt getoond in de 2e afbeelding. Als je nieuw bent met solderen, is hier een leuke gids die je zal inhalen. Hoewel deze gids het solderen met doorlopende gaten bespreekt, kunt u dezelfde basistechnieken gebruiken om deze componenten met elkaar te verbinden, zoals weergegeven in de 3e afbeelding.

Om 's nachts voor voldoende verlichting te zorgen, gebruiken we een IR-led, die niet zichtbaar is voor het menselijk oog maar wel zichtbaar voor de NoIR-camera. De IR-led verbruikt niet veel stroom in vergelijking met de Raspberry Pi, dus laten we de IR-led voor de eenvoud aan.

In eerdere versies van de Pi was de maximale stroomuitgang van deze pinnen 50mA. De Raspberry Pi B+ verhoogde dit naar 500mA. We gebruiken echter voor de eenvoud gewoon de 5V-voedingspinnen, die tot 1,5 A kunnen leveren. De voorwaartse spanning van de IR-LED is volgens onze metingen ongeveer 1,7 ~ 1,9 V. Hoewel de IR-LED 500 mA kan trekken zonder zichzelf te beschadigen, verminderen we de stroom tot ongeveer 200 mA om het warmte- en het algehele stroomverbruik te verminderen. Experimentele resultaten tonen ook aan dat de IR-LED helder genoeg is met 200 mA ingangsstroom. Om de kloof tussen 5V en 1,9V te overbruggen, gebruiken we drie 1N4001-diodes en een weerstand van 1 Ohm in serie met de IR-LED. De spanningsval over de draad, diodes en weerstand is respectievelijk ongeveer 0,2 V, 0,9 V (voor elk) en 0,2 V. De spanning over de IR-LED is dus 5V - 0,2V - (3 * 0,9V) - 0,2V = 1,9V. De warmteafvoer over de LED is 0,18W en 0,2W over de weerstand, allemaal ruim binnen hun maximale waarden.

Maar we zijn nog niet klaar! Om een betere pasvorm in het 3D-geprinte chassis te krijgen, willen we dat de IR LED-lens uit ons chassis steekt en dat de printplaat gelijk ligt met het gat. De kleine fotodiode rechtsonder zit in de weg. Om dit te verhelpen, desolderen we het en draaien het naar de andere kant van het bord, zoals weergegeven in de laatste twee foto's. De fotodiode is niet nodig omdat we willen dat de LED altijd aan is. Door het eenvoudig naar de andere kant te schakelen, blijft het originele LED-circuit ongewijzigd.

Zorg er bij het solderen aan de draden voor dat de draden minstens 12 inch lang zijn en pin-headers hebben die over de GPIO's van de Pi kunnen glijden.

Stap 5: Uw hardware gereed maken: chassis

Uw hardware gereed maken: chassis
Uw hardware gereed maken: chassis
Uw hardware gereed maken: chassis
Uw hardware gereed maken: chassis
Uw hardware gereed maken: chassis
Uw hardware gereed maken: chassis

Bronbestanden:

  • Case STL
  • Case Makerbot
  • Cover STL
  • Cover Makerbot

We gebruikten een eenvoudig 3D-geprint chassis om de Pi, de camera en de LED te huisvesten. Het gebruik van ons chassis is optioneel, maar wordt aanbevolen om te voorkomen dat jonge kinderen blootgestelde elektronische circuits aanraken. Elke wieg is anders, dus ons chassis wordt niet geleverd met een montagebeugel. Verschillende montage-opties kunnen zijn:

  • Kabelbinders
  • 3M dubbele vergrendeling
  • klittenband
  • Plakband

Als u toegang hebt tot een MakerBot Replicator (5e generatie), kunt u eenvoudig de.makerbot-bestanden voor de case en hoes op uw MakerBot Replicator downloaden en afdrukken. Het duurt ongeveer 6 uur om de hoes te bedrukken en 3 uur om de omslag te bedrukken. Als u een ander type 3D-printer gebruikt, lees dan verder.

Een minimaal bouwvolume van 9,9" (L) x 7,8" (B) x 5,9" (H) is vereist om CribSense af te drukken. Als u geen toegang heeft tot een 3D-printer met dit bouwvolume, kunt u een online 3D-print service (zoals Shapeways of Sculpteo) om CribSense af te drukken. De minimale afdrukresolutie is 0,015". Als u een 3D-printer van het type fused filament fabricage gebruikt, betekent dit dat uw spuitmonddiameter 0,015" of kleiner moet zijn. Printers met lagere afdrukresoluties (grotere spuitmonddiameters) werken mogelijk, maar de Raspberry Pi past mogelijk niet in het chassis. We raden PLA (polymelkzuur) aan als het voorkeursprintmateriaal. Andere kunststoffen kunnen werken, maar de Raspberry Pi past mogelijk niet in het geval als de thermische uitzettingscoëfficiënt van de gekozen kunststof groter is dan die van PLA. Als uw 3D-printer een verwarmde bouwplaat, zet u de verwarming uit voordat u verder gaat.

Het is van cruciaal belang om het model op de bouwplaat van uw printer te oriënteren voor een succesvolle afdruk. Deze modellen zijn zorgvuldig ontworpen, zodat ze niet hoeven te worden bedrukt met ondersteunend materiaal, waardoor plastic wordt bespaard en de afdrukkwaliteit wordt verbeterd. Download voordat u verder gaat de 3D-bestanden voor de hoes en hoes. Bij het printen van deze modellen moet de nek van CribSense plat op de bouwplaat liggen. Dit zorgt ervoor dat alle overhanghoeken op de modellen niet groter zijn dan 45 graden, waardoor er geen ondersteuningsmateriaal nodig is. Voor instructies over het oriënteren van 3D-modellen in het bouwvolume van uw printer, raadpleegt u de instructiehandleiding die bij uw 3D-printer wordt geleverd. Voorbeelden voor de bouworiëntatie van de behuizing en het deksel zijn hierboven weergegeven.

Naast het plat tegen de bouwplaat leggen van de nek van CribSense, valt het je misschien op dat de modellen om de verticale as zijn gedraaid. Dit kan nodig zijn om het model in het bouwvolume van uw 3D-printer te laten passen. Deze rotatie is optioneel als de lengte van uw build-volume lang genoeg is voor CribSense.

Stap 6: Uw hardware gereed maken: montage

Uw hardware gereed maken: montage
Uw hardware gereed maken: montage
Uw hardware gereedmaken: montage
Uw hardware gereedmaken: montage
Uw hardware gereedmaken: montage
Uw hardware gereedmaken: montage
Uw hardware gereedmaken: montage
Uw hardware gereedmaken: montage

Zodra u alle hardware gereed hebt, kunt u beginnen met de montage. Elke lijm kan in dit proces worden gebruikt, maar we raden hete lijm aan om twee belangrijke redenen. Hete lijm droogt snel, dus je hoeft niet lang te wachten tot de lijm droog is. Bovendien is hete lijm verwijderbaar als je een fout maakt. Om opgedroogde hete lijm te verwijderen, laat u de hete lijm weken in ontsmettingsalcohol (isopropyl). We raden een concentratie van 90% of hoger aan, maar een concentratie van 70% zal nog steeds werken. Door de gedroogde hete lijm in isopropylalcohol te weken, wordt de hechting tussen de lijm en het onderliggende oppervlak verzwakt, waardoor u de lijm er netjes af kunt pellen. Wanneer de lijm in isopropylalcohol wordt geweekt, moet de Raspberry Pi worden uitgeschakeld en losgekoppeld. Zorg ervoor dat je alles laat drogen voordat je hete lijm opnieuw aanbrengt en de Raspberry Pi opstart.

Alle afbeeldingen voor deze stappen zijn in volgorde en volgen samen met de tekststappen.

  1. Plaats de Raspberry Pi in het chassis. Je moet het een beetje buigen om de audiopoort erin te krijgen, maar als het eenmaal is geplaatst, houdt de audio-aansluiting het op zijn plaats. Als het eenmaal op zijn plaats zit, zorg er dan voor dat alle poorten nog steeds toegankelijk zijn (u kunt bijvoorbeeld de stroomkabel aansluiten).
  2. Gebruik vervolgens hete lijm om de Pi op zijn plaats te hechten en bevestig de camera aan de Pi. Er zijn ook schroefgaten als u die liever gebruikt.
  3. Lijm nu de LED en camera op de voorklep (afgebeeld). Begin met het heet lijmen van de NoIR-camera aan het cameragat. Zorg ervoor dat de camera goed aansluit en uitgelijnd is met het chassis. Gebruik niet te veel lijm; anders kunt u de camera niet in de hoofdbehuizing plaatsen. Zet de Pi aan en kijk naar de camera (bijvoorbeeld `raspistill -v`) om er zeker van te zijn dat deze goed gehoekt is en een goed gezichtsveld heeft. Als dit niet het geval is, verwijdert u de hete lijm en plaatst u deze opnieuw.
  4. Lijm vervolgens de IR-LED op het gat in de hals van de kap. De nek staat in een hoek van 45 graden om de wieg zijdelings te verlichten, wat resulteert in meer schaduwen in situaties met weinig licht. Dit voegt meer contrast toe aan het beeld, waardoor het gemakkelijker wordt om beweging te detecteren.
  5. Bevestig de IR LED-draden aan de header-pinnen van de Raspberry Pi zoals weergegeven in de schematische afbeelding.
  6. Verpak de kabels zodanig in het chassis dat ze niet kreuken of belasten. Uiteindelijk hebben we de kabel-accordeonstijl gevouwen omdat onze cameraflexkabel te lang was.
  7. Met alles erin gestopt, hete lijm rond de randen waar de twee stukken samenkomen, waardoor ze op hun plaats worden verzegeld.

Stap 7: Kalibratie

Image
Image
Kalibratie
Kalibratie

Details over configuratieparameters zijn te vinden in de documentatie van de CribSense-repository. Bekijk ook de video om een voorbeeld te zien van hoe je CribSense kunt kalibreren nadat je alles hebt ingesteld.

Hier is een voorbeeld van het configuratiebestand:

; I/O-configuratie

; invoer = pad_naar_bestand; Invoerbestand om input_fps = 15 te gebruiken; fps van invoer (40 max, 15 aanbevolen bij gebruik van camera) full_fps = 4,5; fps waarbij volledige frames verwerkt kunnen worden crop_fps = 15; fps waarbij bijgesneden frames kunnen worden verwerkt camera = 0; Camera om te gebruiken breedte = 640; Breedte van de ingang video hoogte = 480; Hoogte van de ingangsvideo time_to_alarm = 10; Hoeveel seconden wachten zonder beweging voor het alarm. [bijsnijden]; Instellingen voor adaptief bijsnijden crop = true; Of frames_to_settle = 10 moet worden bijgesneden of niet; # frames om te wachten na reset voordat ze worden verwerkt roi_update_interval = 800; # frames tussen herberekenen van ROI roi_window = 50; # frames om te controleren voordat ROI [beweging] wordt geselecteerd; Bewegingsdetectie-instellingen erode_dim = 4; dimensie van de erodeerkern dilate_dim = 60; dimensie van de verwijde kernel diff_threshold = 8; abs verschil nodig voor het herkennen van de veranderingsduur = 1; # frames om beweging te behouden voordat true wordt gemarkeerd pixel_threshold = 5; # pixels die verschillend moeten zijn om te markeren als motion show_diff = false; toon het verschil tussen 3 frames [vergroting]; Instellingen voor videovergroting versterken = 25; Het % versterking gewenste lage cutoff = 0,5; De lage frequentie van de bandpass. hoge cutoff = 1,0; De hoge frequentie van de bandpass. drempel = 50; De fasedrempel als % van pi. show_magnification = onwaar; Toon de uitvoerframes van elke vergroting [debug] print_times = false; Analysetijden afdrukken

Kalibratie van het algoritme is een iteratieve inspanning, zonder exacte oplossing. We moedigen u aan om met verschillende waarden te experimenteren en deze te combineren met de foutopsporingsfuncties om de combinatie van parameters te vinden die het meest geschikt is voor uw omgeving. Zorg ervoor dat show_diff en show_magnification zijn ingesteld op true voordat u begint met kalibreren.

Als richtlijn geldt dat het verhogen van de versterking en de phase_threshold-waarden de hoeveelheid vergroting verhogen die op de invoervideo wordt toegepast. U moet deze waarden wijzigen totdat u duidelijk de beweging ziet die u wilt volgen in het videoframe. Als u artefacten ziet, kan het helpen om de phase_threshold te verlagen terwijl u dezelfde versterking behoudt.

De bewegingsdetectieparameters helpen bij het compenseren van ruis. Bij het detecteren van bewegingsgebieden worden erode_dim en dilate_dim gebruikt om de afmetingen van de OpenCV-kernels te bepalen die worden gebruikt om beweging te eroderen en uit te breiden, zodat ruis eerst wordt weggeërodeerd, waarna het resterende bewegingssignaal aanzienlijk wordt verwijd om de bewegingsgebieden duidelijk te maken. Deze parameters moeten mogelijk ook worden afgesteld als uw wieg zich in een zeer contrastrijke omgeving bevindt. Over het algemeen hebt u een hogere erode_dim nodig voor instellingen met een hoog contrast en een lagere erode_dim voor een laag contrast.

Als je CribSense uitvoert met show_diff = true en je merkt dat te veel van de output van de accu wit is, of een volledig niet-gerelateerd deel van de video wordt gedetecteerd als beweging (bijv. een flikkerende lamp), verhoog dan de erode_dim tot alleen het deel van de video overeenkomt met uw baby is het grootste deel van het wit. De eerste afbeelding toont een voorbeeld waarbij de erosie-afmeting te laag is voor de hoeveelheid beweging in het frame, terwijl de volgende een goed gekalibreerd frame toont.

Zodra dit is gekalibreerd, moet u ervoor zorgen dat de pixel_threshold is ingesteld op een waarde die zodanig is dat "Pixel Movement" alleen de piekwaarden van pixelbeweging rapporteert, en niet allemaal (wat betekent dat u de ruis moet verwijderen). In het ideale geval ziet u de uitvoer zoals deze in uw terminal, waar er een duidelijk periodiek patroon is dat overeenkomt met de beweging:

[info] Pixelbeweging: 0 [info] Bewegingsschatting: 1,219812 Hz

[info] Pixelbeweging: 0 [info] Bewegingsschatting: 1,219812 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 1,219812 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 1,219812 Hz [info] Pixelbeweging: 44 [info] Bewegingsschatting: 1,219812 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 1,219812 Hz [info] Pixelbeweging: 161 [info] Bewegingsschatting: 1,219812 Hz [info] Pixelbeweging: 121 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 86 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging ent: 0 [info] Bewegingsschatting: 0.841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0.841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0.841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 97 [info] Bewegingsschatting: 0,841416 Hz [info] Pixelbeweging: 74 [info] Bewegingsschatting: 0,839298 Hz [info] Pixel Beweging: 0 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 60 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 48 [info] Beweging Schatting: 0,839298 Hz [info] Pixelbeweging: 38 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 29 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 28 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 22 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,839298 Hz [info] Pixelbeweging: 0 [info] Bewegingsschatting: 0,839298 Hz

Als je uitvoer er meer zo uitziet:

[info] Pixelbeweging: 921 [info] Bewegingsschatting: 1.352046 Hz

[info] Pixelbeweging: 736 [info] Bewegingsschatting: 1.352046 Hz [info] Pixelbeweging: 666 [info] Bewegingsschatting: 1.352046 Hz [info] Pixelbeweging: 663 [info] Bewegingsschatting: 1.352046 Hz [info] Pixelbeweging: 1196 [info] Bewegingsschatting: 1.352046 Hz [info] Pixelbeweging: 1235 [info] Bewegingsschatting: 1.352046 Hz [info] Pixelbeweging: 1187 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 1115 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 959 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 744 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 611 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 468 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 371 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 307 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 270 [info] Bewegingsschatting: 1.456389 Hz [info] Pixelbeweging: 234 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 197 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 179 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 164 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 239 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 733 [info] Bewegingsschatting: 1,456389 Hz [info] Pixelbeweging: 686 [info] Bewegingsschatting: 1,229389 Hz [info] Pixelbeweging: 667 [info] Bewegingsschatting: 1,229389 Hz [info] Pixelbeweging: 607 [info] Bewegingsschatting: 1,229389 Hz [info] Pixelbeweging: 544 [info] Bewegingsschatting: 1,229389 Hz [info] Pixelbeweging: 499 [info] Bewegingsschatting: 1,229389 Hz [info] Pixelbeweging: 434 [info] Bewegingsschatting: 1,229389 Hz [info] Pixelbeweging: 396 [info] Bewegingsschatting: 1,229389 Hz [info] Pixelbeweging: 375 [info] Bewegingsschatting: 1,229389 Hz [info] Pixelbeweging: 389 [info] Bewegingsschatting: 1,229389 Hz [info] Pixelbeweging: 305 [info] Bewegingsschatting: 1,312346 Hz [info] Pixelbeweging: 269 [info] Bewegingsschatting: 1,312346 Hz [info] Pixelbeweging: 1382 [info] Beweging E schatting: 1.312346 Hz [info] Pixelbeweging: 1086 [info] Bewegingsschatting: 1,312346 Hz [info] Pixelbeweging: 1049 [info] Bewegingsschatting: 1,312346 Hz [info] Pixelbeweging: 811 [info] Bewegingsschatting: 1,312346 Hz [info] Pixelbeweging: 601 [info] Bewegingsschatting: 1,312346 Hz [info] Pixelbeweging: 456 [info] Bewegingsschatting: 1,312346 Hz

Pas pixel_threshold en diff_threshold aan totdat er alleen pieken worden gezien en anders is de pixelbeweging 0.

Stap 8: Demonstratie

Image
Image

Hier is een kleine demo van hoe CribSense werkt. U zult zich moeten voorstellen dat deze aan de zijkant van een ledikant wordt bevestigd.

Wanneer u CribSense boven uw wieg plaatst, moet u de afstand tussen de baby en de camera optimaliseren. In het ideale geval vult de borst van uw baby minder dan 1/3 van het frame. Het kind mag niet te ver weg zijn, anders zal de video met lage resolutie moeite hebben om genoeg details te vinden om te vergroten. Als de camera te dichtbij is, kan de camera uw kind mogelijk niet zien als het rolt of uit het beeld beweegt. Evenzo, als het kind zich onder een "tentdeken" bevindt, waar er beperkt contact is tussen de deken en de borst van het kind, kan het moeilijk zijn om beweging te detecteren. Steek ze goed in!

U zult ook rekening willen houden met de lichtsituatie rondom uw ledikant. Als uw ledikant vlak naast een raam staat, kunt u bewegende schaduwen krijgen of veranderende lichtwaarden als de zon wordt geblokkeerd door wolken of als er beweging buiten het raam plaatsvindt. Ergens met consistente verlichting is het beste.

Met wat meer werk denken we dat iemand onze software zou kunnen verbeteren, zodat kalibratie een veel soepeler proces is. In de toekomst kunnen er ook extra functies zoals pushmeldingen worden toegevoegd.

Stap 9: Problemen oplossen

U kunt enkele veelvoorkomende problemen tegenkomen tijdens het instellen van CribSense. Bijvoorbeeld problemen hebben met het bouwen/uitvoeren van het programma, of geen geluid horen. Onthoud dat CribSense geen perfect betrouwbare babyfoon is. We verwelkomen bijdragen op onze GitHub-repository als u verbeteringen aanbrengt!

Hier zijn enkele tips voor het oplossen van problemen die we hebben verzameld tijdens het maken van CribSense.

Er wordt geen alarm afgespeeld

  • Werken uw luidsprekers?
  • Kun je andere geluiden van de Pi afspelen buiten het CribSense-alarm?
  • Als je Pi audio probeert af te spelen via HDMI in plaats van de audiopoort? Controleer de Raspberry Pi Audio Configuration-pagina om er zeker van te zijn dat je de juiste output hebt geselecteerd.
  • Detecteert de CribSense-software beweging? Als CribSense op de achtergrond draait, kunt u dit controleren met journalctl -f in een terminal.
  • Als CribSense veel beweging waarneemt, moet u CribSense mogelijk kalibreren.

De IR-LED werkt niet

  • Zie je een vage rode kleur als je naar de IR-led kijkt? Er moet een vage rode ring zichtbaar zijn wanneer de LED brandt.
  • Controleer de polariteit van de aansluitingen. Als +5V en GND zijn omgekeerd, werkt het niet.
  • Sluit de LED aan op een voeding met een 5V/0,5A spannings-/stroomlimiet. Normaal gesproken zou het 0.2A moeten verbruiken bij 5V. Als dit niet het geval is, is uw LED mogelijk defect.

CribSense detecteert beweging, ook al is er geen baby

  • Heb je CribSense goed gekalibreerd?
  • Onthoud dat CribSense alleen op zoek is naar veranderingen in pixelwaarden

    • Bewegen er schaduwen binnen het frame?
    • Is er flikkerend of wisselend licht?
    • Is CribSense op een stabiel oppervlak gemonteerd (d.w.z. iets dat niet zal trillen als er mensen langs lopen)?
    • Zijn er andere bronnen van beweging in het frame (spiegels die reflecties opvangen, enz.)?

CribSense detecteert GEEN beweging, ook al is er beweging

  • Heb je CribSense goed gekalibreerd?
  • Staat er iets in de weg van de camera?
  • Kun je überhaupt verbinding maken met de camera van Raspberry Pi? Controleer door raspistill -v in een terminal uit te voeren om de camera op de Pi een paar seconden te openen.
  • Als je naar sudo systemctl status cribsense kijkt, draait CribSense dan echt?
  • Ligt uw baby onder een deken dat in een "tent" is geplaatst, zodat het geen contact maakt met het kind? Als er grote luchtspleten zijn tussen de deken en het kind, kan de deken de beweging maskeren.
  • Kun je de beweging zien als je de video meer versterkt?
  • Kun je de beweging zien als je de lage en hoge frequenties afstemt?
  • Als dit alleen bij weinig licht gebeurt, heeft u er dan voor gezorgd dat uw kalibratie werkt bij weinig licht?

CribSense bouwt niet

Heb je alle afhankelijkheden geïnstalleerd?

Ik kan cribsense niet uitvoeren vanaf de opdrachtregel

  • Heb je per ongeluk iets verkeerd getypt toen je./autogen.sh --prefix=/usr --sysconfdir=/etc --disable-debug uitvoerde tijdens het bouwen van je software?
  • Is cribsense aanwezig in /usr/bin ?
  • Welk pad wordt verstrekt als u "welke cribsense" uitvoert?

Aanbevolen: