İçindekiler:
- Adım 1: Önkoşullar
- 2. Adım: CribSense Yazılımını Yükleme
- 3. Adım: Donanımınızı Hazırlama: Kameranızı Bağlayın
- Adım 4: Donanımınızı Hazırlama: IR LED
- Adım 5: Donanımınızı Hazırlama: Kasa
- 6. Adım: Donanımınızı Hazırlama: Montaj
- Adım 7: Kalibrasyon
- Adım 8: Gösteri
- 9. Adım: Sorun Giderme
Video: CribSense: Temassız, Video Tabanlı Bebek Monitörü: 9 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
CribSense, paranızı boşa harcamadan kendiniz yapabileceğiniz, video tabanlı, temassız bir bebek telsizidir
CribSense, Raspberry Pi 3 Model B'de çalışacak şekilde ayarlanmış bir Video Büyütme C++ uygulamasıdır. Bir hafta sonu boyunca, bebeğiniz hareket etmeyi bıraktığında alarm veren kendi beşik üstü bebek monitörünüzü kurabilirsiniz. Bir bonus olarak, tüm yazılımlar ticari olmayan amaçlar için ücretsizdir ve kolayca genişletilebilir.
Kaynak dosyaları ve belgeleri içeren tam depo https://github.com/lukehsiao/CribSense adresinde bulunabilir.
CribSense'in oldukça eğlenceli olduğunu düşünmemize rağmen, bunun aslında sertifikalı, kusursuz bir güvenlik cihazı olmadığını unutmamak önemlidir. Yani, çalışması için uygun şekilde yapılandırılması ve iyi kontrol edilen bir ortama sahip olması gerekir. Örneğin, iyi kalibre edilmemişse ve/veya videodaki ortam video büyütmeye elverişli değilse, onu kullanamayabilirsiniz. Bunu, Raspberry Pi gibi işlemle sınırlı donanımda çalışan video büyütme gibi hesaplama ağırlıklı yazılımlara ne kadar iyi sahip olabileceğimizi görmek için eğlenceli bir proje olarak yaptık. Herhangi bir gerçek ürün, yaptığımızdan çok daha fazla test gerektirir. Dolayısıyla, bu projeyi kullanırsanız, olduğu gibi kabul edin: Pi üzerinde video büyütmenin kısa bir keşfi.
Neye ihtiyacınız olacak:
Raspberry Pi + Kamera + Yapılandırma Araçları:
- Raspberry Pi 3 Model B
- 5V 2.5A Mikro USB Güç Kaynağı
- Raspberry Pi NoIR Kamera Modülü V2
- MicroSD Kart (16GB Sınıf 10 Kart kullandık)
- Raspberry Pi Kamera için Flex Kablo (12")
- 3.5mm girişli hoparlörler
- HDMI monitör
- USB Klavye
- USB Fare
- [isteğe bağlı] Raspberry Pi Soğutucu (ısı konusunda endişeleriniz varsa, bunlardan birini Pi'nize yapıştırabilirsiniz)
Düşük ışıkta çalışma için IR LED Devresi:
- [3x] 1N4001 Diyotlar
- 1 Ohm, 1W Direnç
- 1W IR LED'i
- LED'i Pi'ye bağlamak için 2 kablo
- Havya
Şasi:
- Kasamızı yazdırmak için bir 3D yazıcıya erişim (minimum yapı hacmi = 9,9" U x 7,8" G x 5,9" Y). Ancak, kendinizinkini oluşturmaktan çekinmeyin.
- Tutkal (herhangi bir yapıştırıcı türü işe yarayacaktır, ancak prototipleme için sıcak yapıştırıcı önerilir).
Adım 1: Önkoşullar
Adım adım kılavuzumuza başlamadan önce, SD kartınıza Raspbian'ın en son sürümünü yüklemiş ve Pi'nizin çalışır durumda olduğundan emin olmalısınız. Ayrıca kameraya erişmeden önce kamera modülünü etkinleştirmeniz gerekecektir.
2. Adım: CribSense Yazılımını Yükleme
CribSense, yaygın yazılım araçlarının yanı sıra autoconf, libtool, OpenCV ve libcanberra'ya bağlıdır.
- autoconf ve libtool, birçok platformda (Linux, OSX ve Raspberry Pi gibi) makefile'leri otomatik olarak yapılandırmak ve CribSense için komut dosyaları oluşturmak için kullanılır.
- OpenCV, görüntü işleme yapmak için kullanılan güçlü bir bilgisayarlı görü paketidir ve video büyütme ve hareket algılama kodunun temelidir. Harika bir desteği var, kullanımı kolay ve iyi bir performansı var.
- libcanberra, olay seslerini çalmak için basit bir kütüphanedir. CribSense için alarm sesini çalmak için kullanılır.
Tüm ayrıntıları almak için kendi sayfalarını ziyaret edin.
Bunları Pi'nizde bir terminal açıp çalıştırarak kurun:
sudo apt-get install git build-essential autoconf libtool libopencv-dev libcanberra-dev
Ardından, `/etc/modules-load.d/modules.conf` dosyasına bcm2835-v4l2 ekleyerek kamera sürücüsünü otomatik yüklenecek şekilde ayarlamanız gerekir. Modules.conf dosyanız şöyle görünmelidir:
# /etc/modules: önyükleme sırasında yüklenecek çekirdek modülleri.
# # Dosya, her satırda bir tane olacak şekilde, önyükleme sırasında yüklenmesi gereken çekirdek modüllerinin adlarını içerir. "#" ile başlayan satırlar dikkate alınmaz. i2c-dev bcm2835-v4l2
Dosya düzenlendikten sonra Pi'nizi yeniden başlatmanız gerekir. Bu sürücü, CribSense tarafından NoIR Kameradan doğrudan çerçeve çekmek için kullanılır.
Ardından, aşağıdakileri çalıştırarak depoyu klonlayabilirsiniz:
git klonu
Ardından, depoya gidin ve çalıştırarak yazılımı oluşturun
cd CribSense
./autogen.sh --prefix=/usr --sysconfdir=/etc --disable-debug yapmak sudo make install sudo systemctl arka plan programı-reload
Tebrikler, gerekli tüm yazılımları yüklediniz!
Yapılandırma
CribSense, basit bir INI yapılandırma dosyası aracılığıyla özelleştirilebilir. `make install` çalıştırıldıktan sonra, yapılandırma dosyası /etc/cribsense/config.ini konumunda bulunur. çalıştırarak bu parametreleri görüntüleyebilir ve düzenleyebilirsiniz.
sudo nano /etc/cribsense/config.ini
Varsayılan yapılandırmada her parametrenin kısa bir açıklaması verilmiştir, ancak daha fazla ayrıntı https://lukehsiao.github.io/CribSense/setup/config/ adresinde mevcuttur. Kalibrasyon ve konfigürasyonu da bu kılavuzun sonunda tartışacağız.
CribSense'i Çalıştırmak
CribSense, bir systemd hizmeti kullanılarak başlangıçta çalışacak şekilde tasarlanmıştır. Raspberry Pi'nize klavye ve mouse ile bağlanırken konfigürasyon parametrelerinin beşiğinize uygun olduğundan emin olmalısınız. Hareket ettirirseniz bu parametreleri yeniden ayarlamanız gerekebilir.
Parametreleri ayarlarken, çalıştırarak komut satırından cribsense'yi istediğiniz zaman çalıştırabilirsiniz.
cribsense --config /etc/cribsense/config.ini
Memnun kaldığınızda, çalıştırarak otomatik çalıştırmayı etkinleştirebilirsiniz.
sudo systemctl cribsense'i etkinleştir
Çalıştırarak cribsense'in otomatik olarak çalışmasını durdurabilirsiniz.
sudo systemctl cribsense'i devre dışı bırak
Yazılıma Genel Bakış
CribSense yazılımı bu projenin kalbi ve ruhudur. MIT'den video büyütmenin bazı harika demolarını gördük ve benzer bir algoritmayı Raspberry Pi üzerinde denemek ve çalıştırmak istedik. Bu, Pi üzerinde gerçek zamanlı olarak çalışabilmesi için C++ video büyütme uygulaması üzerinde tbl3rd'ün çalışmasından 10 kattan fazla hızlanma gerektiriyordu. Gerekli optimizasyonlar, yazılım tasarımımıza rehberlik etti.
Yüksek düzeyde, CribSense bir yazılım durumu makinesinde tekrar tekrar döngü yapar. İlk olarak, daha iyi önbellek konumu için her 640x480, gri tonlamalı video karesini 3 yatay bölüme (640x160) böler. Ardından, her bandı ayrı bir dizide büyütür ve çerçevede görülen hareketi izler. Hareketi birkaç saniye izledikten sonra, birincil hareket alanını belirler ve çerçeveyi buna göre kırpar. Bu, algoritmanın işlemesi gereken toplam piksel sayısını azaltır. Ardından, CribSense, kırpılan akıştaki hareket miktarını izler ve yapılandırılabilir bir süre boyunca herhangi bir hareket algılanmazsa alarm verir. CribSense, bebeğin hareket etmesi ve yeni birincil hareket alanı etrafında yeniden kırpması durumunda tam kareyi izlemek için periyodik olarak görüşünü tekrar açar.
Video büyütme, bebek solunumu gibi ince hareketlerin sinyal/gürültü oranını artırmak için kullanılır. Daha büyük hareketler için gerekli değildir, ancak çok ince hareketler için yardımcı olabilir. Uygulamamızın gevşek bir şekilde MIT'nin makalelerinde açıklanan algoritmaya dayandığını ve tescilli kodları kadar iyi performans göstermediğini unutmayın.
Çoklu kullanım, uyarlamalı kırpma ve derleyici optimizasyonları gibi optimizasyonlar bize sırasıyla yaklaşık 3x, 3x ve 1,2x hızlanma sağladı. Bu, Pi'de gerçek zamanlı olarak çalışmak için gereken 10 kat hızlanma elde etmemizi sağladı.
Tüm ayrıntılar, CribSense deposunun Yazılım Mimarisi sayfasında bulunabilir.
Video büyütme ile ilgileniyorsanız, lütfen MIT sayfasını ziyaret edin.
3. Adım: Donanımınızı Hazırlama: Kameranızı Bağlayın
İlk olarak, kamerayla birlikte gelen 6" kabloyu 12" kabloyla değiştirmelisiniz. Bunu yapmak için, kamera kablosunun nasıl değiştirileceğine ilişkin bu öğreticiyi izlemeniz yeterlidir.
Özetle, esnek kabloyu serbest bırakmak için dışarı çekebileceğiniz kameranın arkasında bir itme/çekme tırnağı göreceksiniz. Kısa kabloyu daha uzun olanla değiştirin ve tırnağı tekrar içeri itin.
Fotoğraflarımızda 24" kablo olduğunu fark edeceksiniz. Çok uzundu. Malzeme listesindeki 12" kablo çok daha makul bir uzunluk.
Adım 4: Donanımınızı Hazırlama: IR LED
CribSense'in inşası nispeten kolaydır ve büyük ölçüde ticari olarak temin edilebilen parçalardan oluşur. Yukarıdaki şekilde görüldüğü gibi sadece 2 tanesi özel yapım olmak üzere 5 ana donanım bileşeni bulunmaktadır. Bu sayfada IR LED devresinin nasıl oluşturulacağı anlatılacak ve sonraki sayfada kasanın nasıl oluşturulacağı anlatılacaktır.
Bu kısım için havya, teller, diyotlar, IR LED ve rezistörünüzü almanız gerekiyor. 2. şekildeki devreyi kuruyoruz. Lehimleme konusunda yeniyseniz, sizi yakalayacak güzel bir rehber burada. Bu kılavuz delikten lehimlemeyi tartışırken, bu bileşenleri 3. şekilde gösterildiği gibi birbirine bağlamak için aynı temel teknikleri kullanabilirsiniz.
Geceleri yeterli aydınlatmayı sağlamak için insan gözüyle görülemeyen ancak NoIR kamera tarafından görülebilen bir IR LED kullanıyoruz. IR LED, Raspberry Pi'ye kıyasla çok fazla güç tüketmez, bu nedenle basitlik adına IR LED'i açık bırakıyoruz.
Pi'nin önceki sürümlerinde, bu pinlerin maksimum akım çıkışı 50mA idi. Raspberry Pi B+ bunu 500mA'ya yükseltti. Ancak, basitlik için sadece 5V güç pimlerini kullanıyoruz, bu da 1,5A'ya kadar güç sağlayabiliyor. IR LED'in ileri voltajı, ölçümlerimize göre yaklaşık 1,7~1,9V'dir. IR LED kendine zarar vermeden 500mA çekebilse de, ısıyı ve genel güç tüketimini azaltmak için akımı 200mA civarına düşürüyoruz. Deneysel sonuçlar ayrıca IR LED'in 200mA giriş akımı ile yeterince parlak olduğunu göstermektedir. 5V ve 1.9V arasındaki boşluğu kapatmak için IR LED ile seri olarak üç 1N4001 diyot ve 1 Ohm direnç kullanıyoruz. Tel, diyotlar ve direnç üzerindeki voltaj düşüşü sırasıyla yaklaşık 0,2V, 0,9V (her biri için) ve 0,2V'dir. Böylece IR LED üzerindeki voltaj 5V - 0.2V - (3*0.9V) - 0.2V = 1.9V olur. LED üzerindeki ısı dağılımı, direnç üzerinden 0,18W ve 0,2W olup, tümü maksimum değerleri dahilindedir.
Ama daha işimiz bitmedi! 3D baskılı kasaya daha iyi oturması için IR LED lensin kasamızdan çıkmasını ve PCB kartının delikle aynı hizada olmasını istiyoruz. Sağ alttaki küçük fotodiyot engel olacak. Bunu düzeltmek için, son iki fotoğrafta gösterildiği gibi, onu söküp tahtanın karşı tarafına çeviriyoruz. LED'in her zaman açık olmasını istediğimiz için fotodiyota ihtiyaç yoktur. Basitçe karşı tarafa çevirmek orijinal LED devresini değiştirmeden bırakır.
Telleri lehimlerken, tellerin en az 12 inç uzunluğunda olduğundan ve Pi'nin GPIO'larının üzerinden kayabilecek pin başlıklarına sahip olduğundan emin olun.
Adım 5: Donanımınızı Hazırlama: Kasa
Kaynak dosyaları:
- Kasa STL'si
- Case Makerbot
- Kapak STL'si
- Kapak Yapıcı Botu
Pi'yi, kamerayı ve LED'i barındırmak için basit bir 3D baskılı kasa kullandık. Şasimizi kullanmak isteğe bağlıdır, ancak küçük çocukların açıkta kalan elektronik devrelere dokunmasını önlemek için önerilir. Her beşik farklıdır, bu nedenle şasemizde montaj braketi bulunmamaktadır. Birkaç montaj seçeneği şunları içerebilir:
- Kablo bağları
- 3M Çift Kilit
- cırt cırt
- Kaset
Bir MakerBot Replicator'a (5. Nesil) erişiminiz varsa, kasa ve kapak için.makerbot dosyalarını indirebilir ve MakerBot Replicator'ınıza yazdırabilirsiniz. Kasayı basmak yaklaşık 6 saat ve kapağı basmak 3 saat sürer. Farklı türde bir 3D yazıcı kullanıyorsanız, lütfen okumaya devam edin.
CribSense'i yazdırmak için minimum 9,9" (U) x 7,8" (G) x 5,9" (Y) boyutunda bir yapı hacmi gereklidir. Bu yapı hacmine sahip bir 3B yazıcıya erişiminiz yoksa, çevrimiçi bir 3B baskı kullanabilirsiniz. hizmeti (Shapeways veya Sculpteo gibi) CribSense yazdırmak için. Minimum baskı çözünürlüğü 0,015" dir. Kaynaşmış filament fabrikasyon tipi bir 3D yazıcı kullanıyorsanız, bu, meme çapınızın 0,015" veya daha küçük olması gerektiği anlamına gelir. Daha düşük baskı çözünürlüğüne sahip yazıcılar (daha büyük meme çapları) çalışabilir, ancak Raspberry Pi kasaya sığmayabilir. Tercih edilen baskı malzemesi olarak PLA (polilaktik asit) öneriyoruz. Diğer plastikler işe yarayabilir ancak seçilen plastiğin termal genleşme katsayısı PLA'nınkinden büyükse Raspberry Pi bu duruma uymayabilir. ısıtmalı yapı plakası, devam etmeden önce ısıtıcıyı kapatın.
Modeli yazıcınızın baskı plakasına yönlendirmek, başarılı bir baskı için çok önemlidir. Bu modeller, destek malzemesiyle basılmaları gerekmeyecek şekilde özenle tasarlanmıştır, böylece plastikten tasarruf edilir ve baskı kalitesi iyileştirilir. Devam etmeden önce, kasa ve kapak için 3D dosyaları indirin. Bu modelleri yazdırırken, CribSense'in boynu baskı tablası üzerinde düz durmalıdır. Bu, modellerdeki tüm çıkıntı açılarının 45 dereceyi aşmamasını sağlayarak destek malzemesi gereksinimini ortadan kaldırır. Yazıcınızın yapı hacmindeki 3B modelleri yönlendirmeye ilişkin talimatlar için lütfen 3B yazıcınızla birlikte gelen kullanım kılavuzuna bakın. Kasanın ve kapağın yapı oryantasyonu için örnekler yukarıda gösterilmiştir.
CribSense'in boynunu baskı plakasına düz bir şekilde koymanın yanı sıra, modellerin dikey eksen etrafında döndüğünü fark edebilirsiniz. Bu, modeli 3D yazıcınızın yapı hacmine sığdırmak için gerekli olabilir. Yapı hacminizin uzunluğu CribSense'i barındıracak kadar uzunsa, bu döndürme isteğe bağlıdır.
6. Adım: Donanımınızı Hazırlama: Montaj
Tüm donanımları hazır hale getirdikten sonra montaja başlayabilirsiniz. Bu işlemde herhangi bir tutkal kullanılabilir, ancak iki ana nedenden dolayı sıcak tutkal öneririz. Sıcak tutkal çabuk kurur, bu nedenle tutkalın kuruması için uzun süre beklemeniz gerekmez. Ayrıca, bir hata yaparsanız sıcak tutkal çıkarılabilir. Kurutulmuş sıcak tutkalı çıkarmak için sıcak tutkalı ovma (izopropil) alkolüne batırın. %90 veya daha yüksek konsantrasyon öneririz, ancak %70 konsantrasyon yine de işe yarayacaktır. Kurutulmuş sıcak tutkalı izopropil alkole batırmak, tutkal ile alttaki yüzey arasındaki bağı zayıflatarak tutkalı temiz bir şekilde soymanıza olanak tanır. Yapıştırıcıyı izopropil alkole batırırken, Raspberry Pi kapatılmalı ve fişi çekilmelidir. Sıcak tutkalı tekrar uygulamadan ve Raspberry Pi'yi başlatmadan önce her şeyin kurumasını bekleyin.
Bu adımlar için tüm resimler sırayla ve metin adımlarıyla birlikte takip edilir.
- Raspberry Pi'yi kasaya yerleştirin. Ses bağlantı noktasını içeri almak için biraz esnetmeniz gerekecek, ancak bir kez girdiğinde, ses jakı onu yerinde tutacaktır. Yerleştirildikten sonra, tüm bağlantı noktalarına hala erişilebildiğinden emin olun (örneğin, güç kablosunu takabilirsiniz).
- Ardından, Pi'yi yerine tutturmak için sıcak tutkal kullanın ve kamerayı Pi'ye takın. Bunları kullanmayı tercih ederseniz vida delikleri de vardır.
- Şimdi LED'i ve kamerayı ön kapağa yapıştırın (resimde). NoIR kamerayı kamera deliğine sıcak yapıştırarak başlayın. Kameranın sıkıca oturduğundan ve kasayla aynı hizada olduğundan emin olun. Çok fazla yapıştırıcı kullanmayın; aksi takdirde kamerayı ana kasaya sığdıramazsınız. İyi açılı olduğundan ve iyi bir görüş alanına sahip olduğundan emin olmak için Pi'yi açtığınızdan ve kameraya (örneğin 'raspistill -v') baktığınızdan emin olun. Değilse, sıcak tutkalı çıkarın ve yeniden konumlandırın.
- Ardından, IR LED'i kapağın boynundaki deliğe yapıştırın. Boyun, beşiği yandan aydınlatmak için 45 derecelik bir açıdadır, bu da düşük ışık koşullarında daha fazla gölgeye neden olur. Bu, görüntüye daha fazla kontrast ekleyerek hareketi algılamayı kolaylaştırır.
- IR LED kablolarını Raspberry Pi'nin başlık pinlerine şematik resimde gösterildiği gibi takın.
- Kabloları, kırışmayacak veya gerilmeyecek şekilde kasaya yerleştirin. Kamera esnek kablomuz çok uzun olduğu için kablo akordeon stilini katladık.
- Her şey sıkışmış durumdayken, iki parçanın birleştiği kenarların etrafına sıcak tutkal yapıştırın ve onları yerlerine yapıştırın.
Adım 7: Kalibrasyon
Yapılandırma parametreleriyle ilgili ayrıntılar, CribSense veri havuzu belgelerinde bulunabilir. Ayrıca, her şeyi ayarladıktan sonra CribSense'i nasıl kalibre edebileceğinizin bir örneğini görmek için videoyu izleyin.
İşte yapılandırma dosyasının bir örneği:
[io]; G/Ç yapılandırması
; girdi = path_to_file; input_fps = 15 kullanmak için girdi dosyası; fps giriş (40 maks, kamera kullanılıyorsa 15 önerilir) full_fps = 4,5; tam karelerin işlenebildiği fps crop_fps = 15; kırpılan karelerin işlenebildiği fps kamera = 0; Kullanılacak kamera genişliği = 640; Giriş video yüksekliğinin genişliği = 480; Giriş videosunun yüksekliği time_to_alarm = 10; Alarmdan önce hareketsiz kaç saniye beklenebilir. [kırpma]; Uyarlanabilir Kırpma Ayarları kırpma = true; frame_to_settle = 10; # kareler sıfırlandıktan sonra işlenmeden önce beklenecek roi_update_interval = 800; # ROI'nin yeniden hesaplanması arasındaki kareler roi_window = 50; # ROI [hareket] seçmeden önce izlenecek kare; Hareket Algılama Ayarları erode_dim = 4; aşındırılan çekirdeğin boyutu dilate_dim = 60; dilate çekirdeğin boyutu diff_threshold = 8; değişiklik süresini tanımadan önce gerekli abs farkı = 1; # gerçek pixel_threshold işaretlenmeden önce hareketi korumak için kareler = 5; hareket olarak işaretlemek için farklı olması gereken # piksel show_diff = false; 3 kare arasındaki farkı göster [büyütme]; Video Büyütme Ayarları amplify = 25; Arzu edilen amplifikasyon %'si düşük kesim = 0,5; Bant geçişinin düşük frekansı. yüksek kesme = 1.0; Bant geçişinin yüksek frekansı. eşik = 50; Pi'nin %'si olarak faz eşiği. show_magnification = yanlış; Her büyütmenin çıktı karelerini göster [debug] print_times = false; Analiz sürelerini yazdır
Algoritmanın kalibrasyonu, kesin bir çözümü olmayan yinelemeli bir çabadır. Ortamınıza en uygun parametre kombinasyonunu bulmak için hata ayıklama özellikleriyle birleştirerek çeşitli değerlerle denemeler yapmanızı öneririz. Kalibrasyona başlamadan önce show_diff ve show_magnification'ın true olarak ayarlandığından emin olun.
Bir kılavuz olarak, amplifikasyonu ve faz_eşiği değerlerini artırmak, giriş videosuna uygulanan büyütme miktarını artırır. Video karesinde izlemek istediğiniz hareketi net bir şekilde görene kadar bu değerleri değiştirmelisiniz. Artefaktlar görürseniz, aynı amplifikasyonu korurken Phase_threshold'u azaltmak yardımcı olabilir.
Hareket algılama parametreleri gürültüyü telafi etmeye yardımcı olur. Hareket bölgelerini tespit ederken, hareketi aşındırmak ve genişletmek için kullanılan OpenCV çekirdeklerinin boyutlarını boyutlandırmak için erode_dim ve dilate_dim kullanılır, böylece önce gürültü aşınır, ardından kalan hareket sinyali, hareket bölgelerini belirgin hale getirmek için önemli ölçüde genişletilir. Beşiğiniz çok yüksek kontrastlı bir ayardaysa bu parametrelerin de ayarlanması gerekebilir. Genel olarak, yüksek kontrast ayarları için daha yüksek bir erode_dim değerine ve düşük kontrast için daha düşük bir erode_dim değerine ihtiyacınız olacaktır.
CribSense'i show_diff = true ile çalıştırırsanız ve akümülatör çıkışının çok fazla beyaz olduğunu veya videonun tamamen alakasız bir kısmının hareket olarak algılandığını fark ederseniz (örneğin, titreyen bir lamba), videonun yalnızca bir kısmına kadar erode_dim değerini artırın. bebeğinize karşılık gelen beyazın en büyük bölümüdür. İlk şekil, çerçevedeki hareket miktarı için aşınma boyutunun çok düşük olduğu bir örneği gösterirken, sonraki resim iyi kalibre edilmiş bir çerçeveyi göstermektedir.
Bu kalibre edildikten sonra, pixel_threshold'un "Piksel Hareketi" yalnızca piksel hareketinin tepe değerlerini rapor edecek ve hepsini değil (bu, paraziti kesmeniz gerektiği anlamına gelir) bir değere ayarlandığından emin olun. İdeal olarak, harekete karşılık gelen net bir periyodik modelin olduğu terminalinizde şöyle bir çıktı göreceksiniz:
[bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 1.219812 Hz
[bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 1.219812 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 1.219812 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 1.219812 Hz [bilgi] Piksel Hareketi: 44 [bilgi] Hareket Tahmini: 1.219812 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 1.219812 Hz [bilgi] Piksel Hareketi: 161 [bilgi] Hareket Tahmini: 1.219812 Hz [bilgi] Piksel Hareketi: 121 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 86 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi ent: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 97 [bilgi] Hareket Tahmini: 0.841416 Hz [bilgi] Piksel Hareketi: 74 [bilgi] Hareket Tahmini: 0.839298 Hz [bilgi] Piksel Hareket: 0 [bilgi] Hareket Tahmini: 0,839298 Hz [bilgi] Piksel Hareketi: 60 [bilgi] Hareket Tahmini: 0,839298 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0,839298 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.839298 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.839298 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.839298 Hz [bilgi] Piksel Hareketi: 48 [bilgi] Hareket Tahmin: 0.839298 Hz [bilgi] Piksel Hareketi: 38 [bilgi] Hareket Tahmini: 0.839298 Hz [bilgi] Piksel Hareketi: 29 [bilgi] Hareket Tahmini: 0.839298 Hz [bilgi] Piksel Hareketi: 28 [bilgi] Hareket Tahmini: 0.839298 Hz [info] Piksel Hareketi: 22 [bilgi] Hareket Tahmini: 0,839298 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0,839298 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0,839298 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.839298 Hz [bilgi] Piksel Hareketi: 0 [bilgi] Hareket Tahmini: 0.839298 Hz
Çıktınız daha çok şuna benziyorsa:
[bilgi] Piksel Hareketi: 921 [bilgi] Hareket Tahmini: 1.352046 Hz
[bilgi] Piksel Hareketi: 736 [bilgi] Hareket Tahmini: 1.352046 Hz [bilgi] Piksel Hareketi: 666 [bilgi] Hareket Tahmini: 1.352046 Hz [bilgi] Piksel Hareketi: 663 [bilgi] Hareket Tahmini: 1.352046 Hz [bilgi] Piksel Hareketi: 1196 [bilgi] Hareket Tahmini: 1.352046 Hz [bilgi] Piksel Hareketi: 1235 [bilgi] Hareket Tahmini: 1.352046 Hz [bilgi] Piksel Hareketi: 1187 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 1115 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 959 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 744 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 611 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 468 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 371 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 307 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 270 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 234 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 197 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 179 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 164 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 239 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 733 [bilgi] Hareket Tahmini: 1.456389 Hz [bilgi] Piksel Hareketi: 686 [bilgi] Hareket Tahmini: 1.229389 Hz [bilgi] Piksel Hareketi: 667 [bilgi] Hareket Tahmini: 1.229389 Hz [bilgi] Piksel Hareketi: 607 [info] Hareket Tahmini: 1.229389 Hz [bilgi] Piksel Hareketi: 544 [bilgi] Hareket Tahmini: 1.229389 Hz [bilgi] Piksel Hareketi: 499 [bilgi] Hareket Tahmini: 1.229389 Hz [bilgi] Piksel Hareketi: 434 [bilgi] Hareket Tahmini: 1.229389 Hz [bilgi] Piksel Hareketi: 396 [bilgi] Hareket Tahmini: 1.229389 Hz [bilgi] Piksel Hareketi: 375 [bilgi] Hareket Tahmini: 1.229389 Hz [bilgi] Piksel Hareketi: 389 [bilgi] Hareket Tahmini: 1.229389 Hz [bilgi] Piksel Hareketi: 305 [bilgi] Hareket Tahmini: 1.312346 Hz [bilgi] Piksel Hareketi: 269 [bilgi] Hareket Tahmini: 1.312346 Hz [bilgi] Piksel Hareketi: 1382 [bilgi] Hareket E tahmin: 1.312346 Hz [bilgi] Piksel Hareketi: 1086 [bilgi] Hareket Tahmini: 1.312346 Hz [bilgi] Piksel Hareketi: 1049 [bilgi] Hareket Tahmini: 1.312346 Hz [bilgi] Piksel Hareketi: 811 [bilgi] Hareket Tahmini: 1.312346 Hz [info] Piksel Hareketi: 601 [bilgi] Hareket Tahmini: 1.312346 Hz [bilgi] Piksel Hareketi: 456 [bilgi] Hareket Tahmini: 1.312346 Hz
Yalnızca tepe noktaları görülene ve aksi takdirde piksel hareketi 0 olana kadar pixel_threshold ve diff_threshold'u ayarlayın.
Adım 8: Gösteri
İşte CribSense'in nasıl çalıştığına dair küçük bir demo. Bunun bir beşik kenarına bağlı olduğunu hayal etmeniz gerekecek.
CribSense'i beşiğinizin üzerine yerleştirdiğinizde, bebek ile kamera arasındaki mesafeyi optimize etmeniz gerekecektir. İdeal olarak, bebeğinizin göğsü çerçevenin 1/3'ünden daha azını dolduracaktır. Çocuk çok uzakta olmamalıdır, yoksa düşük çözünürlüklü video büyütmek için yeterli ayrıntıyı bulmakta zorlanacaktır. Kamera çok yakınsa, yuvarlanması veya çerçevenin dışına çıkması durumunda kamera çocuğunuzu göremeyebilir. Benzer şekilde, çocuk "çadırlı" bir battaniyenin altındaysa ve battaniye ile çocuğun göğsü arasında sınırlı bir temas varsa, hareketi algılamak zor olabilir. Onları iyi sıkıştırın!
Beşiğinizin etrafındaki aydınlatma durumunu da dikkate almak isteyeceksiniz. Beşiğiniz bir pencerenin hemen yanındaysa, güneş bulutlar tarafından engellendiğinden veya pencerenin dışında hareket olduğundan hareketli gölgeler veya değişen ışık değerleri alabilirsiniz. Tutarlı aydınlatmaya sahip bir yer en iyisidir.
Biraz daha çalışmayla, kalibrasyonun çok daha sorunsuz bir süreç olması için birinin yazılımımızı geliştirebileceğini düşünüyoruz. Gelecekte, push bildirimleri gibi ek özellikler de eklenebilir.
9. Adım: Sorun Giderme
CribSense'i kurarken birkaç yaygın sorunla karşılaşabilirsiniz. Örneğin, programı oluşturmada/çalıştırmada sorun yaşama veya herhangi bir ses duymama. Unutmayın, CribSense tamamen güvenilir bir bebek monitörü değildir. Siz iyileştirmeler yaparken GitHub depomuzdaki katkıları memnuniyetle karşılarız!
İşte CribSense yaparken topladığımız bazı sorun giderme ipuçları.
Alarm çalmıyor
- Hoparlörleriniz çalışıyor mu?
- Pi'den CribSense alarmının dışında başka sesler çalabilir misiniz?
- Pi'niz ses bağlantı noktası yerine HDMI üzerinden ses çalmaya çalışıyorsa? Doğru çıkışı seçtiğinizden emin olmak için Raspberry Pi Ses Yapılandırma sayfasını kontrol edin.
- CribSense yazılımı hareketi algılıyor mu? CribSense arka planda çalışıyorsa, bir terminalde Journalctl -f ile kontrol edebilirsiniz.
- CribSense çok fazla hareket algılıyorsa, CribSense'i kalibre etmeniz gerekebilir.
IR LED'i çalışmıyor
- IR LED'e baktığınızda soluk kırmızı bir renk görebiliyor musunuz? LED açıkken soluk kırmızı bir halka görünmelidir.
- Bağlantıların polaritesini kontrol edin. +5V ve GND ters çevrilirse çalışmaz.
- LED'i 5V/0.5A voltaj/akım limitli bir güç kaynağına bağlayın. Normalde 5V'da 0.2A tüketmelidir. Aksi takdirde, LED'iniz arızalı olabilir.
CribSense, bebek olmamasına rağmen hareket algılıyor
- CribSense'i doğru şekilde kalibre ettiniz mi?
-
Unutmayın, CribSense yalnızca piksel değerlerindeki değişiklikleri arıyor
- Çerçeve içinde hareket eden gölgeler var mı?
- Titreme veya değişen aydınlatma var mı?
- CribSense sabit bir yüzeye mi monte edilmiş (yani insanlar yanından geçerken sallanmayacak bir şey)?
- Çerçevede başka hareket kaynakları var mı (yansımaları yakalayan aynalar vb.)?
CribSense hareket olmasına rağmen hareketi ALGILAMIYOR
- CribSense'i doğru şekilde kalibre ettiniz mi?
- Kamera yolunda bir şey var mı?
- Raspberry Pi'den kameraya bağlanabiliyor musunuz? Pi'deki kamerayı birkaç saniyeliğine açmak için bir terminalde raspistill -v çalıştırarak kontrol edin.
- Sudo systemctl cribsense durumuna bakarsanız, CribSense gerçekten çalışıyor mu?
- Bebeğiniz, çocukla temas etmeyecek şekilde "çadırlanmış" bir battaniyenin altında mı? Battaniye ile çocuk arasında önemli hava boşlukları varsa battaniye hareketi maskeleyebilir.
- Videoyu biraz daha yükseltirseniz hareketi görebiliyor musunuz?
- Alçak ve yüksek frekans kesimlerini ayarlarsanız hareketi görebiliyor musunuz?
- Bu yalnızca düşük ışıkta oluyorsa, kalibrasyonunuzun düşük ışıkta çalıştığından emin oldunuz mu?
CribSense oluşturmuyor
Tüm bağımlılıkları yükledin mi?
Komut satırından cribsense çalıştıramıyorum
- Yazılım derlemeniz sırasında./autogen.sh --prefix=/usr --sysconfdir=/etc --disable-debug komutunu çalıştırdığınızda yanlışlıkla herhangi bir şeyi yanlış yazdınız mı?
- /usr/bin içinde cribsense var mı?
- "Hangi cribsense" komutunu çalıştırırsanız hangi yol sağlanır?
Önerilen:
LittleUnicorn: Raspberry Pi Bebek Monitörü: 5 Adım
LittleUnicorn: Raspberry Pi Bebek Monitörü: Genç ikizlerim var ve sesli bebek monitörü beni strese sokuyor. Her çaldığında, uykusuz bir gece daha olur diye gergin terliyorum. Bu yüzden Little Unicorn'u yaptım. 2 x ahududu pisi, Pimoroni Unicorn H'den yapılmış görsel bir bebek telsizi
Arduino Tabanlı Temassız Kızılötesi Termometre - Arduino Kullanan IR Tabanlı Termometre: 4 Adım
Arduino Tabanlı Temassız Kızılötesi Termometre | Arduino Kullanan IR Tabanlı Termometre: Merhaba arkadaşlar, bu talimatta arduino kullanarak temassız bir Termometre yapacağız. Bazen sıvının/katının sıcaklığı çok yüksek veya çok düşük olduğundan, onunla temas kurmak ve okumak zordur. o sahnede sıcaklık
SilverLight: Sunucu Odaları için Arduino Tabanlı Çevre Monitörü: 3 Adım (Resimlerle)
SilverLight: Sunucu Odaları için Arduino Tabanlı Çevre Monitörü: Bir keresinde şirketimin sunucu odasındaki sıcaklığı izlemek için bir çevre probu arama görevi verildi. İlk fikrim şuydu: neden sadece bir Raspberry PI ve bir DHT sensörü kullanmıyorsunuz, işletim sistemi dahil bir saatten daha kısa sürede kurulabilir
Arduino Tabanlı Diş Fırçası Veri Monitörü: 4 Adım (Resimlerle)
Arduino Tabanlı Diş Fırçası Veri Monitörü: Bu Arduino tabanlı diş fırçası, 3 eksenli hızlanma verilerini kullanarak kalıpları izlemenizi sağlar
Java Görüntüleyicili Arduino Bebek Monitörü: 8 Adım (Resimli)
Java Görüntüleyicili Arduino Bebek Monitörü: Bir odadaki koşulları gözlemlemek için Arduino tabanlı bir çoklu sensör ünitesi oluşturun. Bu ünite nemi, sıcaklığı, hareketi ve sesi algılayabilir. Ekli, arduino'dan seri veri alan java tabanlı bir görüntüleyicidir