فهرست مطالب:

CribSense: یک مانیتور کودک بدون تماس و مبتنی بر ویدئو: 9 مرحله (همراه با تصاویر)
CribSense: یک مانیتور کودک بدون تماس و مبتنی بر ویدئو: 9 مرحله (همراه با تصاویر)

تصویری: CribSense: یک مانیتور کودک بدون تماس و مبتنی بر ویدئو: 9 مرحله (همراه با تصاویر)

تصویری: CribSense: یک مانیتور کودک بدون تماس و مبتنی بر ویدئو: 9 مرحله (همراه با تصاویر)
تصویری: کاربردهای بسیار خوب سوییچ KVM (یک مانیتور و چند کامپیوتر) 2024, نوامبر
Anonim
CribSense: یک مانیتور کودک بدون تماس و مبتنی بر ویدئو
CribSense: یک مانیتور کودک بدون تماس و مبتنی بر ویدئو
CribSense: یک مانیتور کودک بدون تماس و مبتنی بر ویدئو
CribSense: یک مانیتور کودک بدون تماس و مبتنی بر ویدئو

CribSense یک مانیتور کودک بدون تماس با ویدئو است که می توانید خودتان را بدون شکستن بانک تهیه کنید

CribSense یک پیاده سازی C ++ از ویدئو بزرگنمایی است که برای اجرا روی Raspberry Pi 3 Model B تنظیم شده است. در آخر هفته ، می توانید مانیتور کودک مخصوص تخت کودک خود را تنظیم کنید که در صورت توقف حرکت نوزاد ، زنگ خطر را به صدا در می آورد. به عنوان یک امتیاز ، استفاده از همه نرم افزارها برای مقاصد غیر تجاری رایگان است و به راحتی قابل توسعه است.

مخزن کامل حاوی فایلهای منبع و اسناد را می توانید در https://github.com/lukehsiao/CribSense پیدا کنید.

در حالی که ما فکر می کنیم CribSense بسیار سرگرم کننده است ، مهم است که به یاد داشته باشید که این در واقع یک دستگاه ایمنی معتبر و بی عیب و نقص نیست. یعنی برای کار باید تنظیمات مناسبی داشته باشد و محیطی با کنترل خوب داشته باشد. به عنوان مثال ، اگر به خوبی کالیبره نشده و/یا محیط موجود در ویدیو برای بزرگنمایی ویدئو مناسب نباشد ، ممکن است نتوانید از آن استفاده کنید. ما این را به عنوان یک پروژه سرگرم کننده انجام دادیم تا ببینیم چقدر می توانیم نرم افزارهای سنگین محاسباتی مانند بزرگنمایی ویدئو را بر روی سخت افزارهای محدود محاسبه مانند رزبری پای اجرا کنیم. هر محصول واقعی نیاز به آزمایش بیشتری نسبت به ما دارد. بنابراین ، اگر از این پروژه استفاده می کنید ، آن را همانطور که هست انتخاب کنید: یک کاوش کوتاه از بزرگنمایی ویدئو در Pi.

آنچه شما نیاز دارید:

رزبری پای + دوربین + ابزارهای پیکربندی:

  • رزبری پای 3 مدل B
  • منبع تغذیه میکرو USB 5V 2.5A
  • Raspberry Pi NoIR Camera Module V2
  • کارت MicroSD (ما از کارت 16 گیگابایت کلاس 10 استفاده کردیم)
  • کابل فلکس برای دوربین رزبری پای (12 اینچ)
  • بلندگوهای ورودی 3.5 میلی متری
  • مانیتور HDMI
  • صفحه کلید USB
  • موس USB
  • [اختیاری] Heatsink Raspberry Pi (اگر نگران گرما هستید ، می توانید یکی از این موارد را روی Pi خود بچسبانید)

مدار LED IR برای عملکرد در نور کم:

  • [3x] دیودهای 1N4001
  • 1 اهم ، مقاومت 1 وات
  • LED 1 وات IR
  • 2 سیم برای اتصال LED به Pi
  • آهن لحیم کاری

شاسی:

  • دسترسی به چاپگر سه بعدی (حداقل حجم ساخت = 9.9 اینچ L 7. 7.8 اینچ x 5.9 اینچ H) برای چاپ شاسی ما.
  • چسب (هر نوع چسبی کار می کند ، اما چسب داغ برای نمونه سازی توصیه می شود).

مرحله 1: پیش نیازها

قبل از شروع راهنمای گام به گام ما ، باید آخرین نسخه Raspbian را روی کارت SD خود نصب کرده باشید و از عملکرد Pi خود اطمینان حاصل کنید. همچنین قبل از دسترسی به دوربین باید ماژول دوربین را فعال کنید.

مرحله 2: نصب نرم افزار CribSense

CribSense به تنظیمات خودکار ، libtool ، OpenCV و libcanberra و همچنین ابزارهای رایج نرم افزاری بستگی دارد.

  • autoconf و libtool برای پیکربندی خودکار makefiles و ایجاد اسکریپت برای CribSense در بسیاری از سیستم عامل ها (مانند Linux ، OSX و Raspberry Pi) استفاده می شود.
  • OpenCV یک بسته قدرتمند بینایی رایانه ای است که برای پردازش تصویر استفاده می شود و اساس کد بزرگنمایی و تشخیص حرکت ویدئو است. دارای پشتیبانی عالی ، استفاده آسان و عملکرد خوب است.
  • libcanberra یک کتابخانه ساده برای پخش صداهای رویداد است. برای پخش صدای زنگ هشدار برای CribSense استفاده می شود.

برای دریافت جزئیات کامل به صفحات جداگانه آنها مراجعه کنید.

اینها را با باز کردن یک ترمینال روی Pi خود و اجرای آن نصب کنید:

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

در مرحله بعد باید راننده دوربین را با افزودن bcm2835-v4l2 به `/etc/modules-load.d/modules.conf` روی بارگذاری خودکار تنظیم کنید. modules.conf شما باید به این شکل باشد:

# /etc /modules: ماژول های هسته برای بارگذاری در زمان راه اندازی.

# # فایل شامل اسامی ماژول های هسته است که باید # در زمان راه اندازی بارگذاری شوند ، یکی در هر خط. خطوطی که با "#" شروع می شوند نادیده گرفته می شوند. i2c-dev bcm2835-v4l2

پس از ویرایش فایل ، باید Pi خود را مجدداً راه اندازی کنید. این درایور توسط CribSense برای بیرون کشیدن مستقیم فریم ها از دوربین NoIR استفاده می شود.

سپس ، می توانید مخزن را با اجرای زیر کلون کنید:

git clone

در مرحله بعد ، به مخزن بروید و با اجرا نرم افزار را ایجاد کنید

cd CribSense

./autogen.sh --prefix =/usr --sysconfdir =/etc-غیر فعال کردن اشکال زدایی sudo make install sudo systemctl daemon-reload

تبریک می گویم ، شما تمام نرم افزارهای لازم را نصب کرده اید!

پیکربندی

CribSense از طریق یک فایل پیکربندی ساده INI قابل تنظیم است. پس از اجرای `make install` ، فایل پیکربندی در /etc/cribsense/config.ini قرار دارد. با اجرا می توانید این پارامترها را مشاهده و ویرایش کنید

sudo nano /etc/cribsense/config.ini

توضیح مختصری از هر پارامتر در پیکربندی پیش فرض ارائه شده است ، اما جزئیات بیشتر در https://lukehsiao.github.io/CribSense/setup/config/ در دسترس است. ما همچنین در مورد کالیبراسیون و پیکربندی در پایان این راهنما بحث خواهیم کرد.

اجرای CribSense

CribSense به گونه ای طراحی شده است که هنگام راه اندازی با استفاده از سرویس systemd اجرا شود. در حالی که با کیبورد و موس خود به رزبری پای خود متصل هستید ، باید مطمئن شوید که پارامترهای پیکربندی برای تخت کودک شما کار می کند. اگر این پارامترها را جابجا کنید ، ممکن است نیاز به تنظیم مجدد داشته باشید.

در حالی که پارامترها را تنظیم می کنید ، می توانید cribsense را به صورت دلخواه از خط فرمان با اجرا اجرا کنید

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

پس از رضایت ، می توانید autorun را با اجرا فعال کنید

sudo systemctl cribsense را فعال کنید

با اجرای خود می توانید مانع از اجرای خودکار cribsense شوید

sudo systemctl cribsense را غیرفعال کنید

مروری بر نرم افزار

نرم افزار CribSense قلب و روح این پروژه است. ما برخی از دموی بزرگ بزرگنمایی ویدئو را از MIT مشاهده کردیم و می خواستیم الگوریتم مشابهی را روی رزبری پای اجرا کنیم. این کار بیش از 10 برابر سرعت کار tbl3rd را در زمینه بزرگنمایی ویدئو ++ C به منظور اجرا در زمان واقعی بر روی Pi نیاز داشت. بهینه سازی های مورد نیاز ، طراحی نرم افزار ما را هدایت کرد.

در سطح بالا ، CribSense بارها و بارها از طریق یک دستگاه حالت نرم افزاری دور می زند. ابتدا ، هر ویدئوی 640x480 را در مقیاس خاکستری به 3 بخش افقی (640x160) برای مکان بهتر حافظه پنهان تقسیم می کند. سپس هر باند را در یک رشته جداگانه بزرگ می کند و حرکت مشاهده شده در قاب را زیر نظر دارد. پس از نظارت بر حرکت برای چند ثانیه ، ناحیه اولیه حرکت را تعیین می کند و فریم را بر روی آن برش می دهد. این تعداد پیکسل های مورد نیاز الگوریتم را کاهش می دهد. سپس ، CribSense بر میزان حرکت در جریان بریده نظارت می کند و در صورت عدم مشاهده حرکتی برای مدت زمان قابل تنظیم ، زنگ خطر را به صدا در می آورد. به صورت دوره ای ، CribSense مجدداً نمای خود را برای نظارت بر فریم کامل باز می کند ، در صورتی که نوزاد حرکت کرده و مجدداً در اطراف منطقه اولیه جدید حرکت کند.

از بزرگنمایی ویدئو برای افزایش نسبت سیگنال به نویز حرکات ظریف مانند تنفس نوزاد استفاده می شود. برای حرکات بزرگتر ضروری نیست ، اما می تواند برای حرکات بسیار ظریف کمک کند. توجه داشته باشید که پیاده سازی ما بر اساس الگوریتم توصیف شده در مقالات MIT است و به خوبی کد اختصاصی آنها عمل نمی کند.

بهینه سازی هایی مانند چند رشته ای ، برداشت تطبیقی و بهینه سازی کامپایلر به ترتیب سرعت تقریبی 3x ، 3x و 1.2x را به ما می دهد. این به ما اجازه می دهد تا سرعت 10 برابر مورد نیاز برای اجرای زمان واقعی بر روی Pi را بدست آوریم.

جزئیات کامل را می توانید در صفحه معماری نرم افزار مخزن CribSense مشاهده کنید.

اگر به بزرگنمایی ویدئو علاقه دارید ، لطفاً از صفحه MIT دیدن کنید.

مرحله 3: آماده سازی سخت افزار: دوربین خود را وصل کنید

آماده سازی سخت افزار: دوربین خود را وصل کنید
آماده سازی سخت افزار: دوربین خود را وصل کنید

ابتدا باید کابل 6 اینچی همراه دوربین را با کابل 12 اینچی عوض کنید. برای انجام این کار ، می توانید به سادگی این آموزش نحوه تعویض کابل دوربین را دنبال کنید.

به طور خلاصه ، یک زبانه push/pull در پشت دوربین خواهید دید که می توانید آن را بیرون آورده و کابل فلکس را رها کنید. کابل کوتاه را با کابل بلندتر جایگزین کرده و زبانه را به داخل فشار دهید.

متوجه خواهید شد که ما در تصاویر خود یک کابل 24 اینچی داریم. خیلی طولانی بود. کابل 12 اینچی در فهرست مواد طول بسیار مناسب تری دارد.

مرحله 4: آماده سازی سخت افزار: IR LED

آماده سازی سخت افزار: IR LED
آماده سازی سخت افزار: IR LED
آماده سازی سخت افزار: IR LED
آماده سازی سخت افزار: IR LED
آماده سازی سخت افزار: IR LED
آماده سازی سخت افزار: IR LED

ساخت CribSense نسبتاً آسان است و تا حد زیادی از قطعات تجاری موجود تشکیل شده است. همانطور که در شکل بالا مشاهده می شود ، 5 جزء سخت افزاری اصلی وجود دارد که فقط 2 مورد از آنها به صورت سفارشی ساخته شده است. این صفحه نحوه ساخت مدار IR IR را توضیح می دهد و صفحه بعدی نحوه ساخت شاسی را توضیح می دهد.

برای این قسمت ، باید آهن لحیم کاری ، سیم ها ، دیودها ، LED IR و مقاومت خود را تهیه کنید. ما مدار را که در شکل 2 نشان داده شده است ، می سازیم. اگر تازه وارد لحیم کاری شده اید ، اینجا یک راهنمای خوب است که شما را جلب می کند. در حالی که این راهنما لحیم کاری از طریق سوراخ را مورد بحث قرار می دهد ، می توانید از همان تکنیک های اساسی برای اتصال این اجزا به یکدیگر استفاده کنید که در شکل 3 نشان داده شده است.

به منظور تأمین نور کافی در شب ، ما از LED LED استفاده می کنیم که برای چشم انسان قابل مشاهده نیست اما برای دوربین NoIR قابل مشاهده است. LED IR در مقایسه با رزبری پای قدرت زیادی مصرف نمی کند ، بنابراین ما به خاطر سادگی IR IR را روشن می گذاریم.

در نسخه های قبلی Pi ، حداکثر خروجی جریان این پین ها 50 میلی آمپر بود. رزبری پای B+ این مقدار را به 500 میلی آمپر افزایش داد. با این حال ، ما برای سادگی از پین های برق 5 ولت استفاده می کنیم که می تواند تا 1.5 آمپر را تأمین کند. طبق اندازه گیری های ما ولتاژ جلو LED IR حدود 1.7 ~ 1.9 ولت است. اگرچه IR IR می تواند 500mA را بدون آسیب رساندن به خود بکشد ، اما ما جریان را به حدود 200mA کاهش می دهیم تا گرما و مصرف کلی برق را کاهش دهیم. نتایج تجربی همچنین نشان می دهد که LED IR به اندازه کافی روشن با 200 میلی آمپر جریان ورودی است. برای پر کردن فاصله بین 5V و 1.9V ، ما از سه دیود 1N4001 و یک مقاومت 1 اهم به صورت سری با LED IR استفاده می کنیم. افت ولتاژ روی سیم ، دیودها و مقاومت به ترتیب حدود 0.2V ، 0.9V (برای هر یک) و 0.2V است. بنابراین ، ولتاژ روی LED IR 5V - 0.2V - (3 * 0.9V) - 0.2V = 1.9V است. اتلاف گرما بر روی LED 0.18 وات و 0.2 وات بر روی مقاومت است که همگی در حداکثر میزان خود قرار دارند.

اما ما هنوز کارمان تمام نشده است! به منظور تناسب بهتر در شاسی پرینت سه بعدی ، ما می خواهیم لنز IR IR از شاسی ما بیرون زده و برد PCB با سوراخ هم سطح شود. فوتوديود كوچك در سمت راست پايين مانع از كار مي شود. برای رفع این مشکل ، آن را از قالب جدا کرده و به طرف مقابل تخته برمی گردانیم ، همانطور که در دو عکس پایانی نشان داده شده است. دیود نوری مورد نیاز نیست زیرا ما می خواهیم LED همیشه روشن باشد. به سادگی با چرخاندن آن به طرف مقابل ، مدار LED اصلی بدون تغییر باقی می ماند.

هنگام لحیم کاری روی سیم ها ، مطمئن شوید که سیم ها حداقل 12 اینچ طول دارند و دارای سرآیند پین هستند که می توانند روی GPIO های Pi بچرخند.

مرحله 5: آماده سازی سخت افزار: شاسی

آماده سازی سخت افزار: شاسی
آماده سازی سخت افزار: شاسی
آماده سازی سخت افزار: شاسی
آماده سازی سخت افزار: شاسی
آماده سازی سخت افزار: شاسی
آماده سازی سخت افزار: شاسی

فایل های منبع:

  • مورد STL
  • مورد Makerbot
  • STL را بپوشانید
  • پوشش Makerbot

ما از یک شاسی چاپ سه بعدی ساده برای قرار دادن Pi ، دوربین و LED استفاده کردیم. استفاده از شاسی ما اختیاری است ، اگرچه برای جلوگیری از دست زدن به مدارهای الکترونیکی در معرض دید کودکان توصیه می شود. هر تخت کودک متفاوت است ، بنابراین شاسی ما شامل براکت نصب نمی شود. چندین گزینه نصب می تواند شامل موارد زیر باشد:

  • کابل کراوات
  • قفل دوگانه 3M
  • Velcro
  • نوار

اگر به MakerBot Replicator (نسل 5) دسترسی دارید ، می توانید فایل های.makerbot مورد را بارگیری کرده و روی MakerBot Replicator خود چاپ کرده و چاپ کنید. حدود 6 ساعت برای چاپ قاب و 3 ساعت برای چاپ جلد لازم است. اگر از چاپگر سه بعدی دیگری استفاده می کنید ، لطفاً به خواندن ادامه دهید.

برای چاپ CribSense حداقل حجم ساخت 9.9 "(L) x 7.8" (W) x 5.9 "(H) مورد نیاز است. اگر با این حجم ساخت به چاپگر سه بعدی دسترسی ندارید ، می توانید از چاپ سه بعدی آنلاین استفاده کنید سرویس (مانند Shapeways یا Sculpteo) برای چاپ CribSense. حداقل وضوح چاپ 0.015 اینچ است. اگر از چاپگر سه بعدی با نوع رشته ای ذوب شده استفاده می کنید ، این بدان معناست که قطر نازل شما باید 0.015 اینچ یا کوچکتر باشد. چاپگرهایی با وضوح چاپ پایین (قطر نازل بزرگتر) ممکن است کار کنند ، اما رزبری پای ممکن است در شاسی جا نیفتد. ما PLA (اسید پلی لاکتیک) را به عنوان ماده چاپی ترجیحی توصیه می کنیم. ممکن است پلاستیک های دیگر کار کنند ، اما اگر ضریب انبساط حرارتی پلاستیک انتخابی بیشتر از PLA باشد ، ممکن است Raspberry Pi مناسب نباشد. اگر چاپگر سه بعدی شما دارای صفحه ساخت گرم شده ، قبل از ادامه بخاری را خاموش کنید.

جهت گیری مدل روی صفحه چاپگر شما برای چاپ موفق بسیار مهم است. این مدلها با دقت طراحی شده اند بنابراین نیازی به چاپ با مواد پشتیبانی ندارند ، در نتیجه باعث صرفه جویی در پلاستیک و بهبود کیفیت چاپ می شوند. قبل از ادامه ، فایل های سه بعدی مورد و جلد را بارگیری کنید. هنگام چاپ این مدل ها ، گردن CribSense باید روی صفحه اصلی صاف باشد. این اطمینان می دهد که تمام زاویه های برآمدگی در مدلها از 45 درجه تجاوز نمی کند ، بنابراین نیاز به مواد پشتیبانی را حذف می کند. برای دستورالعمل جهت گیری مدل های سه بعدی در حجم ساخت چاپگر خود ، لطفاً به دفترچه راهنمای همراه چاپگر سه بعدی خود مراجعه کنید. مثالهایی برای جهت ساخت مورد و جلد در بالا نشان داده شده است.

علاوه بر قرار دادن گردن CribSense در برابر صفحه ساخت ، ممکن است متوجه شوید که مدل ها حول محور عمودی چرخانده شده اند. این ممکن است برای تناسب مدل داخل حجم ساخت چاپگر سه بعدی شما ضروری باشد. اگر طول حجم ساخت شما به اندازه کافی طولانی باشد که بتواند CribSense را در خود جای دهد ، این چرخش اختیاری است.

مرحله 6: آماده سازی سخت افزار: مونتاژ

آماده سازی سخت افزار: مونتاژ
آماده سازی سخت افزار: مونتاژ
آماده سازی سخت افزار: مونتاژ
آماده سازی سخت افزار: مونتاژ
آماده سازی سخت افزار: مونتاژ
آماده سازی سخت افزار: مونتاژ
آماده سازی سخت افزار: مونتاژ
آماده سازی سخت افزار: مونتاژ

هنگامی که تمام سخت افزار را آماده کردید ، می توانید مونتاژ را شروع کنید. در این فرآیند می توان از هر چسب استفاده کرد ، اما ما به دو دلیل چسب حرارتی را توصیه می کنیم. چسب داغ به سرعت خشک می شود ، بنابراین لازم نیست مدت زیادی منتظر بمانید تا چسب خشک شود. علاوه بر این ، اگر اشتباه کنید چسب حرارتی قابل جدا شدن است. برای برداشتن چسب داغ خشک شده ، چسب داغ را در الکل مالش (ایزوپروپیل) آغشته کنید. توصیه می کنیم غلظت 90 or یا بیشتر باشد ، اما تمرکز 70 still همچنان کار می کند. خیساندن چسب داغ خشک شده در الکل ایزوپروپیل ، پیوند بین چسب و سطح زیرین را تضعیف می کند و به شما این امکان را می دهد که چسب را به صورت تمیز جدا کنید. هنگام خیساندن چسب در الکل ایزوپروپیل ، رزبری پای باید خاموش و از برق جدا شود. قبل از استفاده مجدد از چسب داغ و راه اندازی رزبری پای ، مطمئن شوید که همه چیز خشک شده است.

همه تصاویر این مراحل به ترتیب هستند و به همراه مراحل متن دنبال می شوند.

  1. رزبری پای را داخل شاسی قرار دهید. برای وارد کردن پورت صوتی باید کمی آن را خم کنید ، اما پس از وارد شدن ، جک صوتی آن را در جای خود نگه می دارد. پس از نصب ، مطمئن شوید که هنوز هم می توان به همه پورت ها دسترسی داشت (به عنوان مثال می توانید کابل برق را وصل کنید).
  2. در مرحله بعد ، از چسب حرارتی برای اتصال Pi به محل خود و اتصال دوربین به Pi استفاده کنید. اگر ترجیح می دهید از آن استفاده کنید سوراخ های پیچ نیز وجود دارد.
  3. حالا LED و دوربین را به جلد جلویی بچسبانید (تصویر). با چسباندن داغ دوربین NoIR به سوراخ دوربین شروع کنید. اطمینان حاصل کنید که دوربین محکم است و در کنار شاسی قرار گرفته است. از چسب زیاد استفاده نکنید ؛ در غیر این صورت ، نمی توانید دوربین را در قاب اصلی قرار دهید. مطمئن شوید که Pi را روشن کرده و به دوربین (مثلاً `raspistill -v`) نگاه کنید تا مطمئن شوید که زاویه خوبی دارد و میدان دید خوبی دارد. اگر اینطور نیست ، چسب داغ را بردارید و آن را در جای خود قرار دهید.
  4. در مرحله بعد ، LED IR را به سوراخ گردن پوشش بچسبانید. گردن در جهت زاویه 45 درجه برای روشنایی جانبی تختخواب ، که باعث ایجاد سایه بیشتر در شرایط کم نور می شود. این باعث افزایش کنتراست بیشتر به تصویر می شود و تشخیص حرکت را آسان تر می کند.
  5. همانطور که در تصویر شماتیک نشان داده شده است سیم های IR IR را به پین های سربرگ رزبری پای وصل کنید.
  6. کابل ها را طوری در شاسی قرار دهید که باعث چین خوردگی یا فشار آنها نشود. در نهایت ما سبک آکاردئون کابل را تا کردیم زیرا کابل فلکس دوربین ما خیلی طولانی بود.
  7. با چسباندن همه چیز ، چسب داغ در لبه های محل اتصال این دو قطعه ، آنها را در جای خود محکم کنید.

مرحله 7: کالیبراسیون

Image
Image
تنظیم
تنظیم

جزئیات مربوط به پارامترهای پیکربندی را می توانید در اسناد مخزن CribSense مشاهده کنید. همچنین ویدیو را مشاهده کنید تا نمونه ای از نحوه کالیبراسیون CribSense را پس از انجام همه کارها مشاهده کنید.

در اینجا نمونه ای از فایل پیکربندی است:

[io] ؛ پیکربندی ورودی/خروجی

؛ input = path_to_file؛ فایل ورودی برای استفاده از input_fps = 15 ؛ فریم بر ثانیه ورودی (حداکثر 40 ، در صورت استفاده از دوربین 15 توصیه می شود) full_fps = 4.5 ؛ fps که در آن فریم های کامل را می توان پردازش کرد crop_fps = 15؛ fps که در آن فریم های برش خورده را می توان با دوربین پردازش کرد = 0؛ دوربین برای استفاده از عرض = 640 ؛ عرض ارتفاع ویدئوی ورودی = 480 ؛ ارتفاع زمان ورودی ویدئو_به_هارم = 10؛ چند ثانیه بدون حرکت قبل از زنگ منتظر بمانید. [برش] ؛ Adaptive Cropping Settings crop = true؛ برش یا عدم حذف frames_to_settle = 10 ؛ # فریم بعد از بازنشانی قبل از پردازش roi_update_interval = 800 منتظر بمانید؛ # فریم بین محاسبه مجدد ROI_window = 50؛ # فریم برای نظارت قبل از انتخاب ROI [حرکت] ؛ تنظیمات تشخیص حرکت erode_dim = 4؛ ابعاد هسته فرسایش dilate_dim = 60 ؛ ابعاد هسته گشاد شده diff_threshold = 8؛ تفاوت abs قبل از تشخیص مدت زمان تغییر = 1؛ # فریم برای حفظ حرکت قبل از علامت گذاری پیکسل_آستانه واقعی = 5 ؛ # پیکسل که باید با پرچم گذاری به عنوان حرکت متفاوت باشد نشان می دهد_diff = false؛ نمایش تفاوت بین 3 فریم [بزرگنمایی] ؛ تقویت تنظیمات بزرگنمایی ویدئو = 25؛ ٪ تقویت٪ قطع کم مطلوب = 0.5 ؛ فرکانس پایین گذر باند. برش بالا = 1.0 ؛ فرکانس بالای گذر باند. آستانه = 50 ؛ آستانه فاز به عنوان٪ pi. show_magnification = false؛ نمایش فریم های خروجی هر بزرگنمایی [اشکال زدایی] print_times = false؛ چاپ زمان تجزیه و تحلیل

کالیبراسیون الگوریتم یک تلاش تکراری است ، بدون راه حل دقیق. ما شما را تشویق می کنیم که با مقادیر مختلف ، آنها را با ویژگی های اشکال زدایی آزمایش کنید تا ترکیب پارامترهای مناسب با محیط خود را بیابید. قبل از شروع کالیبراسیون ، مطمئن شوید show_diff و show_magnification روی true تنظیم شده باشد.

به عنوان یک راهنما ، افزایش تقویت و مقادیر آستانه فاز ، میزان بزرگنمایی اعمال شده برای فیلم ورودی را افزایش می دهد. شما باید این مقادیر را تغییر دهید تا زمانی که به وضوح حرکتی را که می خواهید در قاب ویدیو دنبال کنید مشاهده کنید. اگر مصنوعاتی را می بینید ، کاهش آستانه فاز در حالی که همان تقویت را حفظ می کنید ، ممکن است کمک کند.

پارامترهای تشخیص حرکت به جبران نویز کمک می کند.هنگام تشخیص مناطق حرکت ، erode_dim و dilate_dim برای اندازه گیری ابعاد هسته OpenCV مورد استفاده برای فرسایش و گشاد شدن حرکت استفاده می شود به طوری که سر و صدا ابتدا از بین می رود ، سپس سیگنال حرکت باقی مانده به طور قابل توجهی متسع می شود تا مناطق حرکت آشکار شود. اگر تخت خواب کودک شما در یک کنتراست بسیار بالا قرار دارد ، ممکن است نیاز به تنظیم این پارامترها داشته باشد. به طور کلی ، برای تنظیمات با کنتراست بالا به erode_dim بالاتر و برای کنتراست کم به erode_dim پایین نیاز خواهید داشت.

اگر CribSense را با show_diff = true اجرا می کنید و متوجه می شوید که مقدار زیادی از خروجی باتری سفید است یا قسمت کاملاً غیرمرتبطی از ویدئو به عنوان حرکت تشخیص داده می شود (به عنوان مثال لامپ سوسو زدن) ، erode_dim را فقط تا قسمتی از ویدیو افزایش دهید. مربوط به نوزاد شما بزرگترین بخش سفید است. شکل اول نمونه ای را نشان می دهد که در آن ابعاد فرسایش برای میزان حرکت در قاب بسیار کم است ، در حالی که شکل بعدی یک قاب کالیبره شده را نشان می دهد.

پس از کالیبره شدن ، مطمئن شوید که pixel_thresh روی مقداری تنظیم شده باشد که "Pixel Movement" فقط مقادیر اوج حرکت پیکسل را گزارش کند ، و نه همه آنها (به این معنی که شما باید نویز را قطع کنید). در حالت ایده آل ، خروجی مانند این را در ترمینال خود مشاهده خواهید کرد ، جایی که یک الگوی دوره ای مشخص مربوط به حرکت وجود دارد:

[اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 1.219812 هرتز

[اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 1.219812 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 1.219812 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 1.219812 هرتز [اطلاعات] حرکت پیکسل: 44 [اطلاعات] برآورد حرکت: 1.219812 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 1.219812 هرتز [اطلاعات] حرکت پیکسل: 161 [اطلاعات] برآورد حرکت: 1.219812 هرتز [اطلاعات] حرکت پیکسل: 121 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 86 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] Pixel Movem ent: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 97 [اطلاعات] برآورد حرکت: 0.841416 هرتز [اطلاعات] حرکت پیکسل: 74 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] پیکسل حرکت: 0 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 60 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 48 [اطلاعات] حرکت برآورد: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 38 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 29 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 28 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 22 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.839298 هرتز [اطلاعات] حرکت پیکسل: 0 [اطلاعات] برآورد حرکت: 0.839298 هرتز

اگر خروجی شما بیشتر شبیه این است:

[اطلاعات] حرکت پیکسل: 921 [اطلاعات] برآورد حرکت: 1.352046 هرتز

[اطلاعات] حرکت پیکسل: 736 [اطلاعات] برآورد حرکت: 1.352046 هرتز [اطلاعات] حرکت پیکسل: 666 [اطلاعات] برآورد حرکت: 1.352046 هرتز [اطلاعات] حرکت پیکسل: 663 [اطلاعات] برآورد حرکت: 1.352046 هرتز [اطلاعات] حرکت پیکسل: 1196 [اطلاعات] برآورد حرکت: 1.352046 هرتز [اطلاعات] حرکت پیکسل: 1235 [اطلاعات] برآورد حرکت: 1.352046 هرتز [اطلاعات] حرکت پیکسل: 1187 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 1115 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 959 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 744 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 611 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 468 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 371 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 307 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 270 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 234 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 197 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 179 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 164 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 239 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 733 [اطلاعات] برآورد حرکت: 1.456389 هرتز [اطلاعات] حرکت پیکسل: 686 [اطلاعات] برآورد حرکت: 1.229389 هرتز [اطلاعات] حرکت پیکسل: 667 [اطلاعات] برآورد حرکت: 1.229389 هرتز [اطلاعات] حرکت پیکسل: 607 [اطلاعات] برآورد حرکت: 1.229389 هرتز [اطلاعات] حرکت پیکسل: 544 [اطلاعات] برآورد حرکت: 1.229389 هرتز [اطلاعات] حرکت پیکسل: 499 [اطلاعات] برآورد حرکت: 1.229389 هرتز [اطلاعات] حرکت پیکسل: 434 [اطلاعات] برآورد حرکت: 1.229389 هرتز [اطلاعات] حرکت پیکسل: 396 [اطلاعات] برآورد حرکت: 1.229389 هرتز [اطلاعات] حرکت پیکسل: 375 [اطلاعات] برآورد حرکت: 1.229389 هرتز [اطلاعات] حرکت پیکسل: 389 [اطلاعات] برآورد حرکت: 1.229389 هرتز [اطلاعات] حرکت پیکسل: 305 [اطلاعات] برآورد حرکت: 1.312346 هرتز [اطلاعات] حرکت پیکسل: 269 [اطلاعات] برآورد حرکت: 1.312346 هرتز [اطلاعات] حرکت پیکسل: 1382 [اطلاعات] حرکت E stimate: 1.312346 هرتز [اطلاعات] حرکت پیکسل: 1086 [اطلاعات] برآورد حرکت: 1.312346 هرتز [اطلاعات] حرکت پیکسل: 1049 [اطلاعات] برآورد حرکت: 1.312346 هرتز [اطلاعات] حرکت پیکسل: 811 [اطلاعات] برآورد حرکت: 1.312346 هرتز [اطلاعات] حرکت پیکسل: 601 [اطلاعات] برآورد حرکت: 1.312346 هرتز [اطلاعات] حرکت پیکسل: 456 [اطلاعات] برآورد حرکت: 1.312346 هرتز

پیکسل_آستانه و diff_threshold را تا زمانی که فقط قله ها مشاهده شوند تنظیم کنید ، و در غیر این صورت حرکت پیکسل 0 است.

مرحله هشتم: تظاهرات

Image
Image

در اینجا نمایشی کوچک از نحوه کار CribSense ارائه شده است. باید تصور کنید که این قسمت در کنار تخت کودک چسبانده شده است.

هنگامی که CribSense را بر روی تخت کودک خود قرار می دهید ، باید فاصله بین نوزاد و دوربین را بهینه کنید. در حالت ایده آل ، قفسه سینه نوزاد شما کمتر از 1/3 قاب را پر می کند. کودک نباید خیلی دور باشد ، در غیر این صورت فیلم با وضوح پایین برای یافتن جزئیات کافی برای بزرگنمایی تلاش می کند. اگر دوربین خیلی نزدیک باشد ، ممکن است در صورت چرخیدن یا خارج شدن از قاب کودک نتواند او را ببیند. به طور مشابه ، اگر کودک زیر یک پتو "چادری" باشد ، جایی که تماس محدودی بین پتو و سینه کودک وجود دارد ، ممکن است تشخیص حرکت دشوار باشد. خوب آنها را در خود نگه دارید!

شما همچنین می خواهید وضعیت روشنایی اطراف تخت کودک خود را در نظر بگیرید. اگر گهواره شما دقیقاً در کنار یک پنجره قرار دارد ، ممکن است سایه های متحرک یا تغییر میزان نور به دلیل مسدود شدن خورشید توسط ابرها یا حرکت خارج از پنجره ایجاد شود. مکانهایی با نور ثابت بهتر است.

با کارهای بیشتر ، ما فکر می کنیم که کسی می تواند نرم افزار ما را بهبود بخشد تا کالیبراسیون یک فرآیند بسیار روان تر باشد. در آینده ، ویژگی های اضافی مانند اعلان های فشار نیز می توانند اضافه شوند.

مرحله 9: عیب یابی

هنگام راه اندازی CribSense ممکن است با چند مشکل رایج روبرو شوید. به عنوان مثال ، مشکل در ساخت/اجرای برنامه یا عدم شنیدن صدا. به یاد داشته باشید ، CribSense یک مانیتور کودک کاملاً قابل اعتماد نیست. از پیشرفتهای شما در مخزن GitHub خود استقبال می کنیم!

در اینجا برخی از نکات عیب یابی که هنگام ساخت CribSense جمع آوری کرده ایم آورده شده است.

هشداري پخش نمي شود

  • آیا بلندگوهای شما کار می کنند؟
  • آیا می توانید صداهای دیگر Pi را در خارج از زنگ هشدار CribSense پخش کنید؟
  • اگر Pi شما سعی می کند صدا را از طریق HDMI به جای پورت صدا پخش کند؟ صفحه تنظیمات صوتی Raspberry Pi را بررسی کنید تا مطمئن شوید خروجی صحیح را انتخاب کرده اید.
  • آیا نرم افزار CribSense حرکت را تشخیص می دهد؟ اگر CribSense در پس زمینه اجرا می شود ، می توانید با journalctl -f در ترمینال بررسی کنید.
  • اگر CribSense حرکت زیادی را حس می کند ، ممکن است لازم باشد CribSense را کالیبره کنید.

LED IR کار نمی کند

  • آیا وقتی به LED IR نگاه می کنید می توانید یک رنگ قرمز کم رنگ مشاهده کنید؟ هنگامی که LED روشن است باید یک حلقه قرمز کم رنگ قابل مشاهده باشد.
  • قطبیت اتصالات را بررسی کنید. اگر +5V و GND معکوس شوند ، کار نمی کند.
  • LED را با محدوده ولتاژ/جریان 5V/0.5A به منبع تغذیه وصل کنید. به طور معمول ، باید 0.2A در 5V مصرف کند. در غیر این صورت ، ممکن است LED شما خراب باشد.

CribSense حرکتی را تشخیص می دهد حتی اگر نوزادی وجود نداشته باشد

  • آیا CribSense را به درستی کالیبره کرده اید؟
  • به یاد داشته باشید ، CribSense فقط به دنبال تغییر در مقادیر پیکسل است

    • آیا سایه هایی در قاب حرکت می کنند؟
    • آیا سوسو زدن یا تغییر نور وجود دارد؟
    • آیا CribSense روی سطحی پایدار نصب شده است (یعنی چیزی که اگر مردم از کنار آن عبور کنند تکان نمی خورد)؟
    • آیا منابع دیگری برای حرکت در قاب وجود دارد (آینه هایی که بازتاب را جذب می کنند و غیره)؟

CribSense حتی اگر حرکتی وجود داشته باشد ، حرکت را تشخیص نمی دهد

  • آیا CribSense را به درستی کالیبره کرده اید؟
  • آیا چیزی در راه دوربین وجود ندارد؟
  • آیا اصلاً می توانید از رزبری پای به دوربین متصل شوید؟ با استفاده از raspistill -v در ترمینال ، دوربین را روی Pi برای چند ثانیه باز کنید.
  • اگر به وضعیت sudo systemctl cribsense نگاه کنید ، آیا CribSense در واقع در حال اجرا است؟
  • آیا نوزاد شما زیر یک پتو است که "چادر" شده است تا با کودک تماس نگیرد؟ اگر بین پتو و کودک فاصله های هوایی قابل توجهی وجود داشته باشد ، پتو ممکن است حرکت را پنهان کند.
  • اگر ویدیو را بیشتر تقویت کنید می توانید حرکت را ببینید؟
  • آیا می توانید حرکت را با تنظیم فرکانس پایین و فرکانس بالا مشاهده کنید؟
  • اگر این فقط در نور کم اتفاق می افتد ، آیا مطمئن شدید که کالیبراسیون شما در نور کم کار می کند؟

CribSense ایجاد نمی کند

آیا همه وابستگی ها را نصب کرده اید؟

من نمی توانم از خط فرمان cribsense اجرا کنم

  • آیا هنگام اجرای نرم افزار./autogen.sh --prefix =/usr --sysconfdir =/etc-غیر فعال کردن اشکال را اشتباه تایپ کرده اید؟
  • آیا در /usr /bin بارجنی وجود دارد؟
  • اگر "کدام حرمت" را اجرا کنید ، چه راهی ارائه می شود؟

توصیه شده: