جدول المحتويات:

كاشف Raspberry Pi Human + كاميرا + قارورة: 6 خطوات
كاشف Raspberry Pi Human + كاميرا + قارورة: 6 خطوات

فيديو: كاشف Raspberry Pi Human + كاميرا + قارورة: 6 خطوات

فيديو: كاشف Raspberry Pi Human + كاميرا + قارورة: 6 خطوات
فيديو: AI Wireless Hand🖐️Gesture🤟Controlled Robot🤖 Using Raspberry Pi Pico with OpenCV & Python 2024, شهر نوفمبر
Anonim
كاشف Raspberry Pi Human + كاميرا + قارورة
كاشف Raspberry Pi Human + كاميرا + قارورة

في هذا البرنامج التعليمي ، سوف أتصفح خطوات مشروع Raspberry Pi IoT الخاص بي - باستخدام مستشعر الحركة PIR ووحدة كاميرا Raspberry لبناء جهاز أمان إنترنت الأشياء بسيط والوصول إلى سجل الاكتشاف باستخدام Flask.

الخطوة 1: مستشعر الحركة PIR

مستشعر الحركة PIR
مستشعر الحركة PIR

يرمز PIR إلى "الأشعة تحت الحمراء السلبية" ويستشعر مستشعر الحركة هذا الحركات من خلال مشاهدة عرض الأشعة تحت الحمراء والتقاط تغييرات الأشعة تحت الحمراء. لذلك ، مع مرور ورقة وإنسان على المستشعر ، فإنه يكتشف الإنسان فقط لأننا كبشر نولد الحرارة وبالتالي تنبعث الأشعة تحت الحمراء. وبالتالي ، فإن مستشعر الحركة هو خيار جيد لاكتشاف الحركات البشرية.

الخطوة 2: إعداد مستشعر الحركة PIR

إعداد مستشعر الحركة PIR
إعداد مستشعر الحركة PIR

هناك ثلاثة دبابيس لمستشعر الحركة PIR ، الطاقة ، الإخراج والأرض. تحت المسامير ، يمكنك رؤية الملصقات ، VCC للطاقة ، و Out for Output و GND للأرض. عندما يكتشف المستشعر الحركات ، سيخرج دبوس الإخراج إشارة عالية إلى دبوس Raspberry Pi الذي تقوم بتوصيل المستشعر به. بالنسبة إلى Power pin ، تريد التأكد من توصيله بالدبوس 5V الموجود في Raspberry Pi للحصول على الطاقة. بالنسبة لمشروعي ، اخترت توصيل دبوس الإخراج بـ Pin11 على Pi.

بعد توصيل كل شيء ، يمكنك إرسال رسائل نصية إلى المستشعر الخاص بك عن طريق تشغيل نصوص مثل تلك الموجودة أدناه:

استيراد RPi. GPIO كوقت استيراد GPIO.cleanup () GPIO.setwarnings (خطأ) GPIO.setmode (GPIO. BOARD) GPIO.setup (11 ، GPIO. IN) # قراءة الإخراج من مستشعر حركة PIR على Pin 11 بينما True: i = GPIO.input (11) إذا كان i == 0: # عندما يكون الإخراج من مستشعر الحركة منخفضًا ، اطبع "لا يوجد اكتشاف" ، i time.sleep (0.1) elif i == 1: # عندما يكون الإخراج من مستشعر الحركة طباعة عالية " تم اكتشاف الحركة "، i time.sleep (0.1)

قم بتشغيل البرنامج النصي على Pi الخاص بك ، وضع يديك أو صديقك أمام المستشعر للتحقق مما إذا كان المستشعر يلتقط الحركة.

الخطوة 3: وحدة كاميرا Raspberry Pi والإعداد

وحدة كاميرا Raspberry Pi والإعداد
وحدة كاميرا Raspberry Pi والإعداد

ينبعث الإنسان من الأشعة تحت الحمراء بسبب الحرارة ، وكذلك الأشياء ذات درجات الحرارة. لذلك ، يمكن للحيوانات أو الأشياء الساخنة تشغيل مستشعر الحركة أيضًا. نحن بحاجة إلى طريقة للتحقق مما إذا كان الاكتشاف صحيحًا. هناك العديد من الطرق للتنفيذ ، ولكن في مشروعي ، اخترت استخدام وحدة كاميرا Raspberry Pi لالتقاط الصور عندما يلتقط مستشعر الحركة الحركات.

لاستخدام وحدة الكاميرا ، عليك أولاً التأكد من توصيل المسامير بفتحة الكاميرا على Pi. نوع

sudo raspi-config

على Pi الخاص بك لفتح واجهة التكوين ، وتمكين الكاميرا في "خيارات الواجهة". بعد إعادة التشغيل ، يمكنك اختبار ما إذا كان Pi متصل بالفعل بالكاميرا عن طريق الكتابة

vcgencmd get_camera

وسوف تظهر لك الحالة. الخطوة الأخيرة هي تثبيت وحدة picamera عن طريق الكتابة

نقطة تثبيت picamera

بعد كل الإعدادات ، يمكنك اختبار الكاميرا عن طريق تشغيل نصوص مثل تلك الموجودة أدناه:

من picamera استيراد PiCamera

من وقت استيراد كاميرا النوم = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()

سيتم تخزين الصورة كـ "image.jpg" في الدليل مثل تلك الموجودة في البرنامج النصي للكاميرا. لاحظ أنك تريد التأكد من وجود "سكون (2)" وأن الرقم أكبر من 2 حتى يتوفر للكاميرا الوقت الكافي لضبط حالة الإضاءة.

الخطوة 4: اجمع بين مستشعر حركة PIR ووحدة الكاميرا

فكرة مشروعي هي أن مستشعر الحركة والكاميرا سيواجهان نفس الاتجاه. عندما يلتقط مستشعر الحركة الحركات ، ستلتقط الكاميرا صورة حتى نتمكن من التحقق من أسباب الحركات بعد ذلك.

النص:

استيراد RPi. GPIO كـ GPIO من استيراد التاريخ والوقت ووقت الاستيراد من picamera استيراد PiCamera

GPIO.cleanup ()

GPIO. ، "w") log_f.close ()

الكاميرا = PiCamera ()

pic_name = 0

camera.start_preview ()

time.sleep (2) الوقت

احيانا صحيح:

i = GPIO.input (11) إذا كان i == 0: # عندما يكون الإخراج من مستشعر الحركة منخفضًا إذا كان العداد> 0: النهاية = str (datetime.now ()) log_f = open ('static / log.txt'، ' أ ') رسالة = رسالة +' ؛ ينتهي في '+ end +' / n 'طباعة (رسالة) log_f.write (رسالة) log_f.close () final =' ثابت / '+ str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (final) counter = 0 print "No intruders" ، i time.sleep (0.1) elif i == 1: # عندما يكون الناتج من مستشعر الحركة مرتفعًا إذا كان العداد == 0: التيار = str (datetime.now ()) message = 'اكتشف الإنسان:' + 'البدء عند' + العداد الحالي = العداد + 1 طباعة "تم اكتشاف دخيل" ، i time.sleep (0.1) camera.stop_preview ()

أدلة "log.txt" والصور "ثابتة" ، وهو أمر ضروري لكي يعمل Flask.

الخطوة 5: الإعداد للقارورة

الإعداد للقارورة
الإعداد للقارورة

Flask هو إطار عمل ويب صغير مكتوب بلغة Python ويعتمد على مجموعة أدوات Werkzeug ومحرك قالب Jinja2. إنه سهل التنفيذ والصيانة. للحصول على برنامج تعليمي أفضل لـ Flask ، أوصي بهذا الرابط: Flask Mega Tutorial

النص الرئيسي ، "route.py" ، لمشروعي:

من appfolder import appFlaskfrom flask import render_template ، أعد توجيه استيراد نظام التشغيل

APP_ROOT = os.path.dirname (os.path.abspath (_ file_)) # يشير إلى application_top

APP_STATIC = os.path.join (APP_ROOT، "ثابت")

@ appFlask.route ('/'، methods = ['GET'، 'POST'])

def view (): log_f = open (os.path.join (APP_STATIC، 'log.txt')، 'r') logs = log_f.readlines () final_logs = لسجلات الدخول: final_logs.append (سجل. strip ()) name = str (len (final_logs) -1) + '. jpg' return render_template ('view.html'، logs = final_logs، اسم الملف = الاسم)

يوجد ملف HTML "view.html" في الشريط العلوي (لأنني عندما أنسخ أكواد HTML هنا ، فإنه يتحول في الواقع إلى تنسيق HTML …)

ويجب أن يبدو هيكل المشروع كما يلي (ولكن بالطبع هناك ملفات أكثر من هذه):

iotproject / appfolder / route.py Templates / view.html static / log.txt 0-j.webp

الخطوة 6: النتيجة

نتيجة
نتيجة

بالنسبة لهذا التطبيق ، بعد إعداد كل شيء بشكل صحيح ، يجب أن تكون قادرًا على الوصول إلى Raspberry Pi الخاص بك عن طريق كتابة عنوان IP الخاص به على المتصفح ، ويجب أن تبدو النتيجة مثل الصورة في الشريط العلوي في هذه الخطوة.