جدول المحتويات:
- الخطوة 1: مستشعر الحركة PIR
- الخطوة 2: إعداد مستشعر الحركة PIR
- الخطوة 3: وحدة كاميرا Raspberry Pi والإعداد
- الخطوة 4: اجمع بين مستشعر حركة PIR ووحدة الكاميرا
- الخطوة 5: الإعداد للقارورة
- الخطوة 6: النتيجة
فيديو: كاشف Raspberry Pi Human + كاميرا + قارورة: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
في هذا البرنامج التعليمي ، سوف أتصفح خطوات مشروع Raspberry Pi IoT الخاص بي - باستخدام مستشعر الحركة PIR ووحدة كاميرا Raspberry لبناء جهاز أمان إنترنت الأشياء بسيط والوصول إلى سجل الاكتشاف باستخدام Flask.
الخطوة 1: مستشعر الحركة PIR
يرمز PIR إلى "الأشعة تحت الحمراء السلبية" ويستشعر مستشعر الحركة هذا الحركات من خلال مشاهدة عرض الأشعة تحت الحمراء والتقاط تغييرات الأشعة تحت الحمراء. لذلك ، مع مرور ورقة وإنسان على المستشعر ، فإنه يكتشف الإنسان فقط لأننا كبشر نولد الحرارة وبالتالي تنبعث الأشعة تحت الحمراء. وبالتالي ، فإن مستشعر الحركة هو خيار جيد لاكتشاف الحركات البشرية.
الخطوة 2: إعداد مستشعر الحركة 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 لالتقاط الصور عندما يلتقط مستشعر الحركة الحركات.
لاستخدام وحدة الكاميرا ، عليك أولاً التأكد من توصيل المسامير بفتحة الكاميرا على 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 الخاص به على المتصفح ، ويجب أن تبدو النتيجة مثل الصورة في الشريط العلوي في هذه الخطوة.