جدول المحتويات:
- الخطوة 1: المتطلبات الأساسية
- الخطوة 2: تثبيت برنامج CribSense
- الخطوة 3: تجهيز أجهزتك: قم بتوصيل الكاميرا
- الخطوة 4: تجهيز أجهزتك: IR LED
- الخطوة 5: تجهيز أجهزتك: الهيكل
- الخطوة 6: تجهيز أجهزتك: التجميع
- الخطوة 7: المعايرة
- الخطوة 8: العرض التوضيحي
- الخطوة 9: استكشاف الأخطاء وإصلاحها
فيديو: CribSense: جهاز مراقبة الطفل بدون تلامس قائم على الفيديو: 9 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
CribSense عبارة عن جهاز مراقبة أطفال بدون تلامس قائم على الفيديو يمكنك صنعه بنفسك دون كسر البنك
CribSense هو تطبيق C ++ لتكبير الفيديو تم ضبطه للتشغيل على Raspberry Pi 3 Model B. خلال عطلة نهاية الأسبوع ، يمكنك إعداد جهاز مراقبة الطفل العلوي الخاص بك والذي يطلق إنذارًا إذا توقف طفلك عن الحركة. على سبيل المكافأة ، كل البرامج مجانية للاستخدام لأغراض غير تجارية ويمكن توسيعها بسهولة.
يمكن العثور على المستودع الكامل الذي يحتوي على ملفات المصدر والوثائق على
بينما نعتقد أن CribSense ممتع للغاية ، من المهم أن نتذكر أن هذا ليس في الواقع جهاز أمان معتمدًا ومضمونًا. أي أنه يجب تكوينه بشكل صحيح وأن يكون لديه بيئة جيدة التحكم من أجل العمل. على سبيل المثال ، إذا لم تتم معايرته جيدًا و / أو لم تكن البيئة في الفيديو مواتية لتكبير الفيديو ، فقد لا تتمكن من استخدامه. لقد صنعنا هذا كمشروع ممتع لنرى إلى أي مدى يمكننا أن نحصل على برامج ثقيلة الحوسبة مثل تكبير الفيديو على أجهزة محدودة الحوسبة مثل Raspberry Pi. سيتطلب أي منتج حقيقي اختبارًا أكثر بكثير مما فعلناه. لذا ، إذا كنت تستخدم هذا المشروع ، فاعتبره كما هو: استكشاف قصير لتكبير الفيديو على Pi.
ما سوف تحتاجه:
Raspberry Pi + Camera + أدوات التكوين:
- Raspberry Pi 3 موديل بي
- 5V 2.5A مايكرو USB امدادات الطاقة
- وحدة كاميرا Raspberry Pi NoIR V2.0
- بطاقة MicroSD (استخدمنا بطاقة 16 جيجابايت من الفئة 10)
- كابل مرن لكاميرا Raspberry Pi (12 بوصة)
- مكبرات الصوت مع مدخل 3.5 ملم
- شاشة HDMI
- لوحة مفاتيح USB
- ماوس USB
- [اختياري] خافض حرارة Raspberry Pi (إذا كنت قلقًا بشأن الحرارة ، يمكنك لصق أحد هذه الأشياء على Pi الخاص بك)
دائرة IR LED للتشغيل في الإضاءة المنخفضة:
- [3x] 1N4001 الثنائيات
- 1 أوم ، 1 واط المقاوم
- 1W IR LED
- عدد 2 من الأسلاك لتوصيل مؤشر LED بـ Pi
- لحام حديد
الهيكل:
- الوصول إلى طابعة ثلاثية الأبعاد (الحد الأدنى لحجم التصميم = 9.9 "طول × 7.8" عرض × 5.9 "ارتفاع) لطباعة الهيكل الخاص بنا. ومع ذلك ، لا تتردد في إنشاء الهيكل الخاص بك.
- الغراء (سيعمل أي نوع من الغراء ، لكن يوصى بالغراء الساخن للنماذج الأولية).
الخطوة 1: المتطلبات الأساسية
قبل أن تبدأ دليلنا التفصيلي خطوة بخطوة ، يجب أن تكون قد قمت بالفعل بتثبيت أحدث إصدار من Raspbian على بطاقة SD الخاصة بك والتأكد من أن Pi الخاص بك يعمل. ستحتاج أيضًا إلى تمكين وحدة الكاميرا قبل أن تتمكن من الوصول إلى الكاميرا.
الخطوة 2: تثبيت برنامج CribSense
يعتمد CribSense على autoconf و libtool و OpenCV و libcanberra ، بالإضافة إلى أدوات البرامج الشائعة.
- يتم استخدام autoconf و libtool لتكوين ملفات makefiles تلقائيًا وإنشاء نصوص برمجية لـ CribSense على العديد من الأنظمة الأساسية (مثل Linux و OSX و Raspberry Pi).
- OpenCV عبارة عن حزمة رؤية حاسوبية قوية تستخدم في معالجة الصور وهي أساس تكبير الفيديو وكود اكتشاف الحركة. يتمتع بدعم رائع وسهل الاستخدام وأداء جيد.
- libcanberra هي مكتبة بسيطة لتشغيل أصوات الأحداث. يتم استخدامه لتشغيل صوت التنبيه لـ CribSense.
قم بزيارة صفحاتهم الفردية للحصول على التفاصيل الكاملة.
قم بتثبيت هذه عن طريق فتح Terminal على Pi الخاص بك وتشغيل:
sudo apt-get install git build-basic autoconf libtool libopencv-dev libcanberra-dev
بعد ذلك ، تحتاج إلى ضبط برنامج تشغيل الكاميرا على التحميل التلقائي عن طريق إضافة bcm2835-v4l2 إلى `/ etc / modules-load.d / modules.conf`. يجب أن تبدو modules.conf الخاصة بك كما يلي:
# / etc / modules: يتم تحميل وحدات kernel في وقت التمهيد.
# # يحتوي الملف على أسماء وحدات النواة التي يجب تحميلها # في وقت التمهيد ، واحدة لكل سطر. يتم تجاهل الأسطر التي تبدأ بـ "#". i2c-dev bcm2835-v4l2
بمجرد تحرير الملف ، يجب عليك إعادة تشغيل Pi الخاص بك. يتم استخدام برنامج التشغيل هذا بواسطة CribSense لسحب الإطارات مباشرة من كاميرا NoIR.
بعد ذلك ، يمكنك استنساخ المستودع عن طريق تشغيل:
استنساخ بوابة
بعد ذلك ، انتقل إلى المستودع وقم ببناء البرنامج عن طريق التشغيل
cd CribSense
./autogen.sh --prefix = / usr --sysconfdir = / etc --disable-debug اجعل 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. أثناء اتصالك بـ Raspberry Pi باستخدام لوحة المفاتيح والماوس ، يجب عليك التأكد من أن معلمات التكوين تعمل مع سرير طفلك. قد تحتاج إلى إعادة ضبط هذه المعلمات إذا قمت بنقلها.
أثناء ضبط المعلمات ، يمكنك تشغيل cribsense حسب الرغبة من سطر الأوامر عن طريق التشغيل
cribsense --config /etc/cribsense/config.ini
بمجرد أن تشعر بالرضا ، يمكنك تمكين التشغيل التلقائي عن طريق التشغيل
sudo systemctl تمكين cribsense
يمكنك إيقاف تشغيل cribsense تلقائيًا عن طريق الجري
sudo systemctl تعطيل cribsense
نظرة عامة على البرنامج
برنامج CribSense هو قلب وروح هذا المشروع. لقد رأينا بعض العروض التوضيحية الرائعة لتكبير الفيديو من معهد ماساتشوستس للتكنولوجيا ، وأردنا تجربة وتشغيل خوارزمية مماثلة على Raspberry Pi. تطلب هذا تسريعًا يزيد عن 10 أضعاف من عمل tbl3rd على تنفيذ C ++ الخاص به لتكبير الفيديو من أجل التشغيل في الوقت الفعلي على Pi. التحسينات المطلوبة وجهت تصميمنا للبرنامج.
على مستوى عالٍ ، يتنقل CribSense بشكل متكرر عبر جهاز حالة البرنامج. أولاً ، يقسم كل إطار فيديو بتدرج الرمادي 640 × 480 إلى 3 أقسام أفقية (640 × 160) للحصول على منطقة تخزين مؤقت أفضل. ثم يكبر كل شريط في خيط منفصل ، ويراقب الحركة المرئية في الإطار. بعد مراقبة الحركة لعدة ثوانٍ ، تحدد المنطقة الأساسية للحركة وتقطع الإطار إليها. هذا يقلل من العدد الإجمالي لوحدات البكسل التي تحتاج الخوارزمية لمعالجتها. بعد ذلك ، يراقب CribSense مقدار الحركة في الدفق الذي تم اقتصاصه ويطلق إنذارًا إذا لم يتم إدراك أي حركة لفترة زمنية قابلة للتكوين. بشكل دوري ، سيفتح CribSense منظره مرة أخرى لمراقبة الإطار الكامل في حالة تحرك الرضيع وإعادة اقتصاصه حول منطقة الحركة الأساسية الجديدة.
يستخدم تكبير الفيديو لتعزيز الإشارة إلى نسبة الضوضاء للحركات الدقيقة مثل تنفس الرضيع. لن يكون ضروريًا للحركات الكبيرة ، لكن يمكن أن يساعد في الحركات الدقيقة جدًا. لاحظ أن تطبيقنا يعتمد بشكل فضفاض على الخوارزمية الموصوفة في أوراق معهد ماساتشوستس للتكنولوجيا ، ولا يعمل بنفس جودة كود الملكية الخاص بها.
أعطتنا التحسينات مثل تعدد مؤشرات الترابط والقص المتكيف وتحسينات المترجم ما يقرب من 3x و 3 x و 1.2x على التوالي. سمح لنا ذلك بتحقيق سرعة 10x المطلوبة للتشغيل في الوقت الفعلي على Pi.
يمكن العثور على التفاصيل الكاملة في صفحة هندسة البرامج في مستودع CribSense.
إذا كنت مهتمًا بتكبير الفيديو ، فيرجى زيارة صفحة MIT.
الخطوة 3: تجهيز أجهزتك: قم بتوصيل الكاميرا
أولاً ، عليك تبديل الكابل مقاس 6 بوصات المصاحب للكاميرا بكابل 12 بوصة. للقيام بذلك ، يمكنك ببساطة اتباع هذا البرنامج التعليمي حول كيفية استبدال كابل الكاميرا.
باختصار ، سترى علامة تبويب دفع / سحب على الجزء الخلفي من الكاميرا يمكنك سحبها لتحرير الكابل المرن. استبدل الكبل القصير بالكابل الأطول وادفع اللسان للخلف.
ستلاحظ أن لدينا كبل 24 بوصة في صورنا ، لقد كان طويلًا جدًا ، والكابل 12 بوصة في قائمة المواد بطول معقول أكثر.
الخطوة 4: تجهيز أجهزتك: IR LED
CribSense سهل نسبيًا ، ويتكون إلى حد كبير من الأجزاء المتاحة تجاريًا. كما هو موضح في الشكل أعلاه ، هناك 5 مكونات رئيسية للأجهزة ، اثنان منها فقط مصنوعان حسب الطلب. ستتعرف هذه الصفحة على كيفية إنشاء دائرة IR LED ، وستتناول الصفحة التالية كيفية إنشاء الهيكل.
بالنسبة لهذا الجزء ، تحتاج إلى الحصول على مكواة اللحام والأسلاك والصمامات الثنائية و IR LED والمقاوم. سنقوم ببناء الدائرة الموضحة في الشكل الثاني. إذا كنت جديدًا في اللحام ، فإليك دليلًا لطيفًا سيلحق بك. بينما يناقش هذا الدليل اللحام عبر الفتحات ، يمكنك استخدام نفس الأساليب الأساسية لتوصيل هذه المكونات معًا كما هو موضح في الشكل الثالث.
من أجل توفير إضاءة مناسبة في الليل ، نستخدم IR LED ، وهو غير مرئي للعين البشرية ولكنه مرئي لكاميرا NoIR. لا يستهلك IR LED الكثير من الطاقة مقارنةً بـ Raspberry Pi ، لذلك نترك IR LED قيد التشغيل من أجل البساطة.
في الإصدارات السابقة من Pi ، كان الحد الأقصى للإخراج الحالي لهذه المسامير 50 مللي أمبير. زاد Raspberry Pi B + هذا إلى 500mA. ومع ذلك ، فإننا نستخدم فقط دبابيس الطاقة 5 فولت من أجل البساطة ، والتي يمكنها توفير ما يصل إلى 1.5 أمبير. يبلغ الجهد الأمامي لمصباح IR LED حوالي 1.7 ~ 1.9 فولت وفقًا لقياساتنا. على الرغم من أن IR LED يمكنه سحب 500 مللي أمبير دون الإضرار بنفسه ، فإننا نخفض التيار إلى حوالي 200 مللي أمبير لتقليل الحرارة واستهلاك الطاقة بشكل عام. تظهر النتائج التجريبية أيضًا أن IR LED ساطع بدرجة كافية مع 200mA من تيار الإدخال. لسد الفجوة بين 5V و 1.9V ، نستخدم ثلاثة صمامات ثنائية 1N4001 ومقاوم 1 أوم في سلسلة مع IR LED. يبلغ انخفاض الجهد على السلك والثنائيات والمقاوم حوالي 0.2 فولت و 0.9 فولت (لكل واحد) و 0.2 فولت على التوالي. وبالتالي ، فإن الجهد فوق IR LED هو 5V - 0.2V - (3 * 0.9V) - 0.2V = 1.9V. يبلغ معدل تبديد الحرارة فوق الصمام 0.18 وات و 0.2 وات فوق المقاوم ، وكل ذلك ضمن الحد الأقصى لتقديراتها.
لكننا لم ننتهي بعد! من أجل الحصول على ملاءمة أفضل للهيكل المطبوع ثلاثي الأبعاد ، نريد أن تكون عدسة IR LED تبرز من هيكلنا وأن تكون لوحة PCB متدفقة مع الفتحة. سوف يعيق الثنائي الضوئي الصغير الموجود في أسفل اليمين الطريق. لتصحيح هذا الأمر ، نقوم بإزالته ونقلبه إلى الجانب الآخر من اللوحة كما هو موضح في الصورتين الأخيرتين. ليست هناك حاجة إلى الثنائي الضوئي لأننا نريد أن يكون LED دائمًا في وضع التشغيل. ببساطة ، يؤدي تبديله إلى الجانب الآخر إلى ترك دائرة LED الأصلية دون تغيير.
عند اللحام بالأسلاك ، تأكد من أن الأسلاك بطول 12 بوصة على الأقل ولديها رؤوس دبوس يمكن أن تنزلق فوق GPIOs لـ Pi.
الخطوة 5: تجهيز أجهزتك: الهيكل
ملفات المصدر:
- حالة المحكمة الخاصة بلبنان
- حالة Makerbot
- تغطية STL
- غطاء Makerbot
استخدمنا هيكلًا بسيطًا مطبوعًا ثلاثي الأبعاد لإيواء Pi والكاميرا ومصباح LED. يعد استخدام الهيكل الخاص بنا اختياريًا ، على الرغم من أنه يوصى به لمنع الأطفال الصغار من لمس الدوائر الإلكترونية المكشوفة. يختلف كل سرير عن الآخر ، لذلك لا يتضمن الهيكل المعدني لدينا حامل تثبيت. يمكن أن تشمل العديد من خيارات التركيب:
- شريط رباط الاسلاك
- 3M قفل مزدوج
- الفيلكرو
- الشريط
إذا كان لديك وصول إلى MakerBot Replicator (الجيل الخامس) ، فيمكنك ببساطة تنزيل ملفات.makerbot للحالة والغطاء على MakerBot Replicator والطباعة. تستغرق طباعة العلبة حوالي 6 ساعات و 3 ساعات لطباعة الغلاف. إذا كنت تستخدم نوعًا مختلفًا من الطابعات ثلاثية الأبعاد ، فيرجى متابعة القراءة.
مطلوب حجم بناء بحد أدنى 9.9 بوصة (طول) × 7.8 بوصة (عرض) × 5.9 بوصة (ارتفاع) لطباعة CribSense. إذا لم يكن لديك وصول إلى طابعة ثلاثية الأبعاد مع حجم الإصدار هذا ، يمكنك استخدام الطباعة ثلاثية الأبعاد عبر الإنترنت خدمة (مثل Shapeways أو Sculpteo) لطباعة CribSense. الحد الأدنى لدقة الطباعة هو 0.015 بوصة. إذا كنت تستخدم طابعة ثلاثية الأبعاد من نوع تصنيع الفتيل المدمج ، فهذا يعني أن قطر الفوهة يجب أن يكون 0.015 بوصة أو أصغر. قد تعمل الطابعات ذات دقة الطباعة المنخفضة (أقطار الفوهة الأكبر) ، ولكن قد لا يتناسب Raspberry Pi مع الهيكل المعدني. نوصي باستخدام PLA (حمض polylactic) باعتباره مادة الطباعة المفضلة. قد تعمل أنواع البلاستيك الأخرى ، ولكن قد لا يتناسب Raspberry Pi مع الحالة إذا كان معامل التمدد الحراري للبلاستيك المختار أكبر من PLA. إذا كانت الطابعة ثلاثية الأبعاد بها لوحة بناء ساخنة ، قم بإيقاف تشغيل السخان قبل المتابعة.
يعد توجيه النموذج على لوحة تصميم الطابعة أمرًا بالغ الأهمية لإجراء طباعة ناجحة. تم تصميم هذه النماذج بعناية بحيث لا تحتاج إلى طباعتها بمواد داعمة ، وبالتالي توفير البلاستيك وتحسين جودة الطباعة. قبل المتابعة ، قم بتنزيل الملفات ثلاثية الأبعاد للحالة والغلاف. عند طباعة هذه النماذج ، يجب وضع عنق CribSense بشكل مسطح على لوحة التصميم. هذا يضمن أن جميع الزوايا المتدلية في النماذج لا تتجاوز 45 درجة ، وبالتالي يلغي الحاجة إلى مواد الدعم. للحصول على إرشادات حول توجيه النماذج ثلاثية الأبعاد في حجم بناء طابعتك ، يرجى الرجوع إلى دليل التعليمات الذي يأتي مع الطابعة ثلاثية الأبعاد. تم عرض أمثلة لاتجاه بناء العلبة والغطاء أعلاه.
بالإضافة إلى وضع عنق CribSense مسطحًا مقابل لوحة التصميم ، قد تلاحظ أن النماذج تدور حول المحور الرأسي. قد يكون هذا ضروريًا لملاءمة النموذج داخل حجم إنشاء الطابعة ثلاثية الأبعاد. يعد هذا التدوير اختياريًا إذا كان طول حجم الإنشاء طويلًا بما يكفي لاستيعاب CribSense.
الخطوة 6: تجهيز أجهزتك: التجميع
بمجرد أن تكون جميع الأجهزة جاهزة ، يمكنك البدء في التجميع. يمكن استخدام أي غراء في هذه العملية ، لكننا نوصي بالغراء الساخن لسببين رئيسيين. يجف الغراء الساخن بسرعة ، لذلك لا تحتاج إلى الانتظار لفترة طويلة حتى يجف الغراء. بالإضافة إلى ذلك ، يمكن إزالة الغراء الساخن إذا ارتكبت خطأ. لإزالة الصمغ الساخن الجاف ، انقع الصمغ الساخن في كحول (أيزوبروبيل). نوصي بتركيز 90٪ أو أعلى ، لكن تركيز 70٪ سيظل يعمل. يؤدي نقع الصمغ الساخن المجفف في كحول الأيزوبروبيل إلى إضعاف الرابطة بين الصمغ والسطح تحته ، مما يسمح لك بتقشير الصمغ بشكل نظيف. عند نقع الغراء في كحول الأيزوبروبيل ، يجب إيقاف تشغيل Raspberry Pi وفصله. تأكد من ترك كل شيء يجف قبل إعادة وضع الغراء الساخن وتشغيل Raspberry Pi.
جميع الصور الخاصة بهذه الخطوات مرتبة وتتبع الخطوات النصية.
- أدخل Raspberry Pi في الهيكل. ستحتاج إلى ثنيه قليلاً لإدخال منفذ الصوت ، ولكن بمجرد إدخاله ، سيبقيه مقبس الصوت في مكانه. بمجرد وضعها في مكانها ، تأكد من أنه لا يزال من الممكن الوصول إلى جميع المنافذ (على سبيل المثال ، يمكنك توصيل كابل الطاقة).
- بعد ذلك ، استخدم الغراء الساخن لتثبيت Pi في مكانه وإرفاق الكاميرا بـ Pi. توجد فتحات مسامير أيضًا إذا كنت تفضل استخدامها.
- الآن ، قم بلصق مصباح LED والكاميرا على الغطاء الأمامي (في الصورة). ابدأ بلصق كاميرا NoIR على فتحة الكاميرا. تأكد من أن الكاميرا محكمة ومحاذاة للهيكل. لا تستخدم الكثير من الغراء. خلاف ذلك ، لن تتمكن من وضع الكاميرا في العلبة الرئيسية. تأكد من تشغيل Pi وإلقاء نظرة على الكاميرا ("raspistill -v" ، على سبيل المثال) للتأكد من أنها بزاوية جيدة ولديها مجال رؤية جيد. إذا لم يكن كذلك ، قم بإزالة الصمغ الساخن وأعد وضعه.
- بعد ذلك ، قم بلصق IR LED بالفتحة الموجودة على رقبة الغطاء. الرقبة بزاوية 45 درجة لإضاءة سرير الأطفال ، مما ينتج عنه مزيد من الظلال في حالات الإضاءة المنخفضة. يضيف هذا مزيدًا من التباين للصورة ، مما يسهل اكتشاف الحركة.
- قم بتوصيل أسلاك IR LED بدبابيس رأس Raspberry Pi كما هو موضح في الصورة التخطيطية.
- ضع الكابلات في الهيكل المعدني بطريقة لا تؤدي إلى تجعدها أو إجهادها. انتهى بنا الأمر إلى طي نمط الأكورديون للكابل لأن كابل الكاميرا المرن كان طويلاً جدًا.
- مع كل شيء مطوي ، الغراء الساخن حول الحواف حيث تلتقي القطعتان ، وإغلاقهما في مكانهما.
الخطوة 7: المعايرة
يمكن العثور على تفاصيل حول معلمات التكوين في وثائق مستودع CribSense. شاهد الفيديو أيضًا لمشاهدة مثال على كيفية معايرة CribSense بعد إعداد كل شيء.
فيما يلي عينة من ملف التكوين:
[io] ؛ تكوين الإدخال / الإخراج
؛ المدخلات = path_to_file ؛ ملف الإدخال لاستخدام input_fps = 15 ؛ إطار في الثانية للإدخال (40 كحد أقصى ، 15 موصى به في حالة استخدام الكاميرا) full_fps = 4.5 ؛ إطارات في الثانية يمكن عندها معالجة إطارات كاملة المحاصيل في الثانية = 15 ؛ إطارات في الثانية يمكن عندها معالجة الإطارات المقصوصة بالكاميرا = 0 ؛ الكاميرا لاستخدام العرض = 640 ؛ عرض ارتفاع فيديو الإدخال = 480 ؛ ارتفاع وقت إدخال الفيديو time_to_alarm = 10 ؛ كم ثانية للانتظار بدون حركة قبل التنبيه. [اقتصاص] ؛ إعدادات الاقتصاص التكيفية اقتصاص = صحيح ؛ ما إذا كان سيتم اقتصاص الإطارات Fram_to_settle = 10 أم لا ؛ # إطارات للانتظار بعد إعادة التعيين قبل معالجة roi_update_interval = 800 ؛ # الإطارات بين إعادة حساب العائد على الاستثمار roi_window = 50 ؛ # إطارات يجب مراقبتها قبل تحديد ROI [الحركة] ؛ إعدادات كشف الحركة erode_dim = 4 ؛ أبعاد نواة التآكل dilate_dim = 60 ؛ أبعاد نواة التمدد diff_threshold = 8 ؛ فرق القيمة المطلقة المطلوبة قبل التعرف على مدة التغيير = 1 ؛ # إطارات للحفاظ على الحركة قبل وضع علامة pixel_threshold الحقيقية = 5 ؛ # بكسل يجب أن يكون مختلفًا لوضع علامة عليه كحركة show_diff = false ؛ عرض الفرق بين 3 إطارات [تكبير] ؛ تضخيم إعدادات تكبير الفيديو = 25 ؛ التضخيم٪ المطلوب قطع منخفض = 0.5 ؛ التردد المنخفض لممر النطاق. قطع عالٍ = 1.0 ؛ التردد العالي لممر النطاق. عتبة = 50 ؛ عتبة المرحلة كنسبة مئوية من pi. show_magnification = خطأ ؛ إظهار إطارات الإخراج لكل تكبير [debug] print_times = false ؛ أوقات تحليل الطباعة
تعد معايرة الخوارزمية جهدًا متكررًا ، بدون حل دقيق. نحن نشجعك على تجربة قيم مختلفة ، ودمجها مع ميزات تصحيح الأخطاء ، للعثور على مجموعة من المعلمات الأكثر ملاءمة لبيئتك. قبل أن تبدأ المعايرة ، تأكد من ضبط show_diff و show_magnification على true.
كدليل إرشادي ، تؤدي زيادة التضخيم وقيم حد_الطور إلى زيادة مقدار التكبير المطبق على فيديو الإدخال. يجب عليك تغيير هذه القيم حتى ترى بوضوح الحركة التي تريد تتبعها في إطار الفيديو. إذا رأيت عيوبًا ، فقد يساعدك تقليل حد_الطور مع الحفاظ على نفس التضخيم.
تساعد معلمات اكتشاف الحركة في تعويض الضوضاء.عند اكتشاف مناطق الحركة ، يتم استخدام erode_dim و dilate_dim لقياس أبعاد نواة OpenCV المستخدمة لتآكل وتوسيع الحركة بحيث تتآكل الضوضاء أولاً ، ثم يتم توسيع إشارة الحركة المتبقية بشكل كبير لجعل مناطق الحركة واضحة. قد تحتاج أيضًا إلى ضبط هذه المعلمات إذا كان سرير طفلك في وضع عالي التباين. بشكل عام ، ستحتاج إلى erode_dim أعلى لإعدادات التباين العالي ، و erode_dim أقل للتباين المنخفض.
إذا قمت بتشغيل CribSense مع show_diff = true ولاحظت أن الكثير من إخراج المجمّع أبيض ، أو تم اكتشاف جزء غير مرتبط تمامًا من الفيديو كحركة (مثل مصباح وامض) ، فقم بزيادة erode_dim حتى جزء الفيديو فقط المطابق لطفلك هو أكبر جزء من اللون الأبيض. يوضح الشكل الأول مثالًا حيث يكون بُعد التآكل منخفضًا جدًا بالنسبة لمقدار الحركة في الإطار ، بينما يُظهر الشكل التالي إطارًا تمت معايرته جيدًا.
بمجرد معايرة هذا ، تأكد من ضبط pixel_threshold على قيمة مثل "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 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movem ent: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 0 [info] تقدير الحركة: 0.841416 هرتز [معلومات] حركة البكسل: 0 [معلومات] تقدير الحركة: 0.841416 هرتز [معلومات] حركة البكسل: 0 [معلومات] تقدير الحركة: 0.841416 هرتز [معلومات] حركة البكسل: 0 [معلومات] تقدير الحركة: 0.841416 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 97 [info] Motion Estimate: 0.841416 Hz [info] Pixel Movement: 74 [info] Motion Estimate: 0.839298 Hz [info] Pixel الحركة: 0 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 60 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 0 [info] Motion Estimate: 0.839298 Hz [info] Pixel Movement: 0 [info] تقدير الحركة: 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 [info] Motion Estimate: 1.352046 Hz [info] Pixel Movement: 1235 [info] Motion Estimate: 1.352046 Hz [info] Pixel Movement: 1187 [info] Motion Estimate: 1.456389 Hz [info] Pixel Movement: 1115 [info] تقدير الحركة: 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 Hz [info] Pixel Movement: 1086 [info] Motion Estimate: 1.312346 Hz [info] Pixel Movement: 1049 [info] Motion Estimate: 1.312346 Hz [info] Pixel Movement: 811 [info] Motion Estimate: 1.312346 Hz [معلومات] حركة البكسل: 601 [معلومات] تقدير الحركة: 1.312346 هرتز [معلومات] حركة البكسل: 456 [معلومات] تقدير الحركة: 1.312346 هرتز
اضبط pixel_threshold و diff_threshold حتى تظهر القمم فقط ، وتكون حركة البكسل 0 بخلاف ذلك.
الخطوة 8: العرض التوضيحي
فيما يلي عرض توضيحي صغير لكيفية عمل CribSense. سيكون عليك أن تتخيل أن هذا مرتبط بجانب سرير الأطفال.
عندما تضع CribSense فوق سرير طفلك ، ستحتاج إلى تحسين المسافة بين الرضيع والكاميرا. من الناحية المثالية ، سيملأ صدر طفلك أقل من ثلث الإطار. لا ينبغي أن يكون الطفل بعيدًا جدًا ، وإلا فإن الفيديو منخفض الدقة سيجد صعوبة في العثور على تفاصيل كافية لتكبيرها. إذا كانت الكاميرا قريبة جدًا ، فقد لا تتمكن الكاميرا من رؤية طفلك إذا دحرج أو خرج من الإطار. وبالمثل ، إذا كان الطفل تحت غطاء "خيمة" ، حيث يوجد اتصال محدود بين البطانية وصدر الطفل ، فقد يكون من الصعب اكتشاف الحركة. دسهم جيدا!
سترغب أيضًا في التفكير في وضع الإضاءة حول سرير طفلك. إذا كان سرير طفلك بجوار النافذة مباشرةً ، فقد تحصل على ظلال متحركة أو تغير قيم الضوء حيث تحجب السحب الشمس أو تحدث الحركة خارج النافذة. أفضل مكان به إضاءة متسقة.
مع المزيد من العمل ، نعتقد أنه يمكن لأي شخص تحسين برامجنا بحيث تكون عملية المعايرة أكثر سلاسة. في المستقبل ، يمكن أيضًا إضافة ميزات إضافية مثل دفع الإخطارات.
الخطوة 9: استكشاف الأخطاء وإصلاحها
قد تواجه بعض المشكلات الشائعة أثناء إعداد CribSense. على سبيل المثال ، تواجه مشكلة في إنشاء / تشغيل البرنامج ، أو عدم سماع أي صوت. تذكر أن CribSense ليس جهازًا موثوقًا به لمراقبة الأطفال. نرحب بالمساهمات على مستودع GitHub الخاص بنا وأنت تُجري تحسينات!
فيما يلي بعض نصائح استكشاف الأخطاء وإصلاحها التي جمعناها أثناء عمل CribSense.
ليس هناك منبه يلعب
- هل مكبرات الصوت الخاصة بك تعمل؟
- هل يمكنك تشغيل أصوات أخرى من Pi خارج منبه CribSense؟
- إذا كان Pi الخاص بك يحاول تشغيل الصوت من خلال HDMI بدلاً من منفذ الصوت؟ تحقق من صفحة تكوين صوت Raspberry Pi للتأكد من أنك حددت الإخراج الصحيح.
- هل يكتشف برنامج CribSense الحركة؟ إذا كان CribSense يعمل في الخلفية ، يمكنك التحقق من Journalctl -f في المحطة.
- إذا كان CribSense يستشعر الكثير من الحركة ، فقد تحتاج إلى معايرة CribSense.
LED IR لا يعمل
- هل يمكنك رؤية لون أحمر باهت عندما تنظر إلى IR LED؟ يجب أن تظهر حلقة حمراء باهتة عندما يكون مؤشر LED قيد التشغيل.
- تحقق من قطبية التوصيلات. إذا تم عكس + 5V و GND ، فلن يعمل.
- قم بتوصيل LED بمصدر طاقة بحد جهد / تيار 5V / 0.5A. عادة ، يجب أن تستهلك 0.2A عند 5V. إذا لم يحدث ذلك ، فقد يكون مؤشر LED الخاص بك معطلًا.
يكتشف CribSense الحركة على الرغم من عدم وجود رضيع
- هل قمت بمعايرة CribSense بشكل صحيح؟
-
تذكر أن CribSense يبحث فقط عن التغييرات في قيم البكسل
- هل هناك أي ظلال تتحرك داخل الإطار؟
- هل يوجد وميض أو إضاءة متغيرة؟
- هل CribSense مركب على سطح مستقر (أي شيء لا يهتز إذا كان الناس يمشون به)؟
- هل هناك أي مصادر أخرى للحركة في الإطار (مرايا تلتقط الانعكاسات ، إلخ)؟
لا يكتشف CribSense الحركة على الرغم من وجود حركة
- هل قمت بمعايرة CribSense بشكل صحيح؟
- هل يوجد شيء في طريق الكاميرا؟
- هل أنت قادر على الاتصال بالكاميرا من Raspberry Pi على الإطلاق؟ تحقق من خلال تشغيل raspistill -v في محطة لفتح الكاميرا على Pi لبضع ثوان.
- إذا نظرت إلى حالة sudo systemctl cribsense ، فهل يعمل CribSense بالفعل؟
- هل رضيعك تحت بطانية "مظللة" بحيث لا يتلامس مع الطفل؟ إذا كانت هناك فجوات هوائية كبيرة بين البطانية والطفل ، فقد تحجب البطانية الحركة.
- هل يمكنك رؤية الحركة إذا قمت بتضخيم الفيديو أكثر؟
- هل يمكنك رؤية الحركة إذا قمت بضبط الترددات المنخفضة والعالية التردد؟
- إذا كان هذا يحدث في الإضاءة المنخفضة فقط ، فهل تأكدت من عمل المعايرة في الإضاءة المنخفضة؟
CribSense لا يبني
هل قمت بتثبيت جميع التبعيات؟
لا يمكنني تشغيل cribsense من سطر الأوامر
- هل أخطأت في كتابة أي شيء بالخطأ عند تشغيلك./autogen.sh --prefix = / usr --sysconfdir = / etc --disable-debug أثناء إنشاء برنامجك؟
- هل cribsense موجود في / usr / bin؟
- ما هو المسار الذي يتم توفيره إذا قمت بتشغيل "أي cribsense"؟
موصى به:
جهاز مراقبة الطقس ESP32 Based M5Stack M5stick C مع DHT11 - مراقبة درجة الحرارة والرطوبة ومؤشر الحرارة على M5stick-C مع DHT11: 6 خطوات
جهاز مراقبة الطقس ESP32 Based M5Stack M5stick C مع DHT11 | مراقبة درجة الحرارة والرطوبة ومؤشر الحرارة على M5stick-C مع DHT11: مرحبًا يا رفاق ، في هذه التعليمات سوف نتعلم كيفية واجهة مستشعر درجة حرارة DHT11 مع m5stick-C (لوحة تطوير بواسطة m5stack) وعرضها على شاشة m5stick-C. لذلك في هذا البرنامج التعليمي سوف نقرأ درجة الحرارة والرطوبة وأمبير. الحرارة أنا
جهاز تحكم عن بعد قائم على Arduino لـ Eskate أو Hydrofoil: 5 خطوات (بالصور)
جهاز التحكم عن بعد القائم على Arduino لـ Eskate أو Hydrofoil: سيوضح لك هذا التوجيه كيفية إنشاء جهاز تحكم عن بعد فعليًا لاستخدامه مع eskate أو القارب المحلق الكهربائي بما في ذلك جميع التعليمات البرمجية والأجهزة التي تحتاجها. هناك الكثير من عمليات اللحام المتضمنة ، ولكن من الممتع أيضًا القيام بها. ماذا يمكن أن يفعل جهاز التحكم عن بعد؟ شارك
بوت مستقل قائم على الأردوينو باستخدام جهاز استشعار بالموجات فوق الصوتية: 5 خطوات (بالصور)
الروبوت المستقل القائم على Arduino باستخدام مستشعر الموجات فوق الصوتية: قم بإنشاء روبوت مستقل قائم على Arduino باستخدام مستشعر بالموجات فوق الصوتية يمكن لهذا الروبوت أن يتحرك بمفرده دون الاصطدام بأي عوائق. ما تفعله في الأساس هو اكتشاف أي نوع من العوائق في طريقها وتقرر الأفضل
اردوينو مراقبة الطفل مع عارض جافا: 8 خطوات (بالصور)
Arduino Baby Monitor مع Java Viewer: قم ببناء وحدة متعددة المستشعرات قائمة على Arduino لمراقبة الظروف في الغرفة. يمكن لهذه الوحدة استشعار الرطوبة ودرجة الحرارة والحركة والصوت. مرفق هو عارض قائم على جافا يتلقى البيانات التسلسلية من اردوينو
مبرد / حامل كمبيوتر محمول بدون تكلفة (بدون غراء ، بدون حفر ، بدون صواميل ومسامير ، بدون براغي): 3 خطوات
مبرد / حامل للكمبيوتر المحمول بدون تكلفة (بدون غراء ، بدون حفر ، بدون صواميل ومسامير ، بدون براغي): التحديث: يرجى & nbsp ؛ يرجى التصويت على & nbsp ؛ من أجل الدخول في www.instructables.com/id/Zero-Cost-Aluminum-Furnace-No-Propane-No-Glue-/ أو ربما التصويت لأفضل أصدقائي