جدول المحتويات:
- اللوازم
- الخطوة 1: قم بتجميع الأجهزة
- الخطوة 2: تأكد من أن Pi الخاص بك متصل بالإنترنت
- الخطوة الثالثة: إعداد الكاميرا
- الخطوة 4: تثبيت Flask
- الخطوة 5: إنشاء فئة النموذج
- الخطوة 6: إنشاء قالب Flask
- الخطوة 7: تقديم النموذج
- الخطوة 8: إنشاء فئة مشغل الكاميرا
- الخطوة 9: إنشاء وحدة التسجيل
- الخطوة 10: ابدأ تشغيل الخادم
- الخطوة 11: جربها بنفسك
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-23 12:53
هذه خطوة بخطوة قابلة للتوجيه حول كيفية إنشاء IoT ، وكاميرا أمان تنشيط الحركة باستخدام Raspberry Pi. سوف تتعلم كيفية إنشاء خادم ويب flask ونموذج يسمح للمستخدم بضبط حساسية الكاميرا ووقت التسجيل ، و / أو بدء / إيقاف التسجيل يدويًا ، و / أو التقاط صورة سيتم حفظها محليًا.
اللوازم
- Raspberry Pi 3
- كاميرا بي
- مستشعر الحركة PIR
- بطاقة الذاكرة
- مصدر الطاقة
الخطوة 1: قم بتجميع الأجهزة
أثناء إيقاف تشغيل Pi ، أدخل بطاقة micro-SD في Pi. أدخل كبل شريط وحدة الكاميرا في منفذ وحدة الكاميرا على Pi. بعد ذلك ، قم بتوصيل المسامير الثلاثة (المسمى VCC و OUT و GND) الخاصة بكاشف الحركة PRI بدبابيس GPIO الخاصة بـ Pi. قم بتوصيل VCC إلى 5.5V من الطاقة ، و GND بالأرض ، و OUT إلى دبوس 11 على Pi.
الخطوة 2: تأكد من أن Pi الخاص بك متصل بالإنترنت
الآن ، قم بتشغيل Pi عن طريق توصيله بمصدر طاقة وتحقق من أنك متصل بالإنترنت باستخدام الأمر ping. إذا كنت لا تعرف كيفية توصيل Pi بالإنترنت ، فانقر هنا.
sudo ping www.google.com
إذا كنت ناجحًا ، يجب أن ترى أن البيانات يتم تلقيها عن طريق google.
بالإضافة إلى ذلك ، يمكنك استخدام ifconfig لرؤية عنوان IP الخاص بك.
sudo ifconfig
الخطوة الثالثة: إعداد الكاميرا
استخدم الأمر التالي لفتح واجهة التكوين ، وتمكين الكاميرا في "خيارات الواجهة".
sudo raspi-config
بعد إعادة التشغيل ، يمكنك عرض حالة الكاميرا للتأكد من توصيلها بشكل صحيح.
vcgencmd get_camera
أخيرًا ، قم بتثبيت وحدة picamera.
نقطة تثبيت picamera
الخطوة 4: تثبيت Flask
قم بتثبيت وحدة القارورة والوحدة المريحة للقارورة في بايثون:
sudo apt-get install python-dev python-pip
بيثون- m pip تثبيت قارورة قارورة مريحة
بعد ذلك ، سنقوم بتثبيت وحدة قارورة Python المستخدمة لإنشاء النماذج.
تثبيت الأنابيب flask-wtf
الخطوة 5: إنشاء فئة النموذج
أنشئ دليلًا يسمى iotProject لتخزين جميع ملفاتك بتنسيق.
sudo mkdir iotProject
قم بإنشاء ملف python يسمى "camControl.py".
sudo نانو camControl.py
في هذا الملف ، سننشئ فئة النموذج الخاصة بنا ، والتي تتيح لنا إنشاء نموذج ويب مع مربعات نصية وقائمة منسدلة ليتمكن المستخدم من تغيير إعدادات الكاميرا ، وبدء / إيقاف التسجيل يدويًا ، والتقاط الفيديو.
من flask_wtf استيراد FlaskFormfrom wtforms.validators استيراد DataRequired من wtforms استيراد SubmitField من مدققي استيراد wtforms ، IntegerField ، BooleanField ، SelectField
فئة camFrame (FlaskForm):
videoDuration = IntegerField ("وقت التسجيل (بالثواني)")
الحساسية = IntegerField ("حساسية الحركة (النطاق 2500-10000)) n كلما زاد الرقم ، قلت حساسية الكاميرا" ،
المدققون = [validators. NumberRange (min = 2500 ، max = 10000 ، message = 'Value Out of Range')])
options = SelectField ('Options'، options = [('none'، 'No action')، ('rec'، 'Start Recording')، ('stop'، 'Stop Recording)،
("صورة" ، "التقاط صورة")])
Submit = SubmitField ('Submit')
الخطوة 6: إنشاء قالب Flask
لإنشاء واجهة المستخدم ، يجب عليك تصميم قالب Flask الذي يستخدم النموذج الذي أنشأته للتو. سيتم كتابة هذا الملف بلغة html ، وتخزينه في مجلد يسمى القوالب ، والذي يجب أن يكون في نفس الدليل مثل النموذج الخاص بك.
داخل مجلد القوالب ، قم بإنشاء ملف يسمى index.html. داخل هذا الملف ، قم بتكرار الرمز الموضح أعلاه.
الخطوة 7: تقديم النموذج
حان الوقت الآن لإنشاء ملف يعرض القالب. قم بإنشاء ملف باسم appCam.py (تأكد من أنك لم تعد في مجلد القوالب). يجب استخدام أي محتوى ديناميكي مستخدم في القالب كوسيطة مسماة في استدعاء render_template ().
import camControlfrom flask import Flask، render_template، request، Response from flask_restful import Resource، Api، reqparse
التطبيق = قارورة (_ name_)
app.config ['SECRET_KEY'] = '13542' api = Api (التطبيق)
المحلل اللغوي = reqparse. RequestParser ()
parser.add_argument ('dur'، type = int، help = 'مدة الفيديو عند اكتشاف الحركة) parser.add_argument (' sens '، type = int، help =' مستوى الحركة المطلوب لتشغيل التسجيل ') المحلل اللغوي.add_argument ('opt'، type = str، help = 'تسجيل مقطع فيديو يدويًا أو التقاط صورة')
تحديث الفصل (المورد):
#Stuff for wtforms def post (self): args = parser.parse_args () # rc.input (args ['dur']، args ['sens']، args ['opt']) # اكتب في الملف النصي الذي يتحدث إلى الكاميرا التي تعمل في كاميرا متوازيةSettingsFile = open ("cameraSettings.txt"، 'w') cameraSettingsFile.write (args ['dur'] + '\ n') # اكتب dur cameraSettingsFile.write (args ['sens'] + '\ n') #write sens cameraSettingsFile.write (args ['opt'] + '\ n') #write opt cameraSettingsFile.close () إرجاع {'dur': args ['dur'] ، 'sens': args ['sense']، 'opt': args ['opt']}
@ app.route ('/'، methods = ['GET'، 'POST'])
def index (): "" "الصفحة الرئيسية لوحدة التحكم" "" form = camControl.camFrame () # هذا هو نموذج if request.method == 'POST': print (request.form) args = [i for i in request.form.items ()] # rc.input (int (args [0] [1]) ، int (args [1] [1]) ، args [2] [1]) cameraSettingsFile = open ("cameraSettings.txt "، 'w') cameraSettingsFile.write (args [0] [1] + '\ n') #write dur cameraSettingsFile.write (args [1] [1] + '\ n') #write sens cameraSettingsFile.write (args [2] [1] + '\ n') #write opt cameraSettingsFile.close () imageDictionary = {"filename": "image.jpg"} return render_template ('index.html'، form = form، image = imageDictionary)
api.add_resource (تحديث ، '/ تحديث /')
إذا _name_ == "_الرئيسية_":
app.run (المضيف = '0.0.0.0' ، المنفذ = 80 ، التصحيح = صحيح ، مترابط = صحيح)
الخطوة 8: إنشاء فئة مشغل الكاميرا
نريد الآن إنشاء ملف يسمى camOperator.py. سننشئ فيه فصلًا للكاميرا مع طرق لتشغيل الكاميرا ، باستخدام وظائف PiCamera المتوفرة بالفعل. سنستخدم مثيلًا لهذا الكائن في الخطوة التالية حيث سنجمع بين وظيفة الكاميرا ومستشعر الحركة.
تقوم الطرق المحددة في هذه الفئة بتغيير إعدادات "التسجيل" على الكاميرا الأمنية باستخدام مدخلات الحساسية والمدة التي يوفرها المستخدم ، مع تحديد القيم الافتراضية لهذه المتغيرات في حالة عدم وجود مدخلات المستخدم.
استيراد RPi. GPIO كصورة استيراد وقت الاستيراد من GPIO من تاريخ استيراد ووقت وتاريخ
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11 ، GPIO. IN)
كشف = 0
فئة الكاميرا
def _init _ (ذاتي):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "لا شيء"
سجل def (self، dur):
# تسجيلات للمدة المحددة بواسطة وحدة التحكم videoName = str (datetime.now ()) videoName = videoName.replace (':'، ') videoName = videoName.replace ('. '،') self.cam.start_recording ('.'، ') self.cam.start_recording (': '،') '/ home / pi / iotProject / videos /' + videoName + '.h264') time.sleep (dur) self.cam.stop_recording ()
عملية def (self، dur، sens):
# التشغيل الرئيسي للكاميرا التي تتحقق باستمرار لمعرفة ما إذا كان هناك إنسان في الجوار ، إذا بقي الإنسان لفترة كافية ، نبدأ في التسجيل! الاكتشاف الشامل i = GPIO.input (11) إذا كان i == 0: # عندما يكون الإخراج من مستشعر الحركة منخفضًا = 0 time.sleep (0.1) elif i == 1: # عندما يكون الإخراج من مستشعر الحركة طباعة عالية (" تم الكشف عن الحركة "+ str (اكتشف)) إذا اكتشف> = sens * 10: self.record (dur) print (" RECORDED ") اكتشف = 0 time.sleep (0.1) اكتشف + = 1
الخطوة 9: إنشاء وحدة التسجيل
سيتم كتابة البرنامج الأخير المطلوب لهذا المشروع في ملف يسمى rec.py. يخبر هذا الملف الكاميرا بموعد التسجيل ، ومدة التسجيل ، وما إذا / متى تلتقط صورة. يقوم بذلك عن طريق التحقق المستمر من بيانات المستخدم المكتوبة في الملف النصي وقراءتها من الخطوة 5. إذا تم تحديث الملف ، فإنه يضبط قيم الحساسية والمدة وفقًا لذلك ، وبعد ذلك ، إذا تم التقاط تسجيل أو صورة ، فإنه يحفظ المحتوى في pi ، إما بتنسيق ملف.h264 أو.jpg.
'' 'يعمل بالتوازي مع خادم القارورة ، ويقرأ متغيرات التحكم التي تم تعيينها بواسطة نماذج الخادم. يتم تعيين متغيرات التحكم في الخادم في ملف منفصل بمجرد إرسال النماذج. تقرأ وحدة rec هذه المتغيرات وتقوم بتحديث الكاميرا بناءً عليها. '' استيراد camOperator من وقت استيراد التاريخ والوقت
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt"، 'w') cameraSettingsFile.close () # هنا ، نفتح ونغلق في وضع الكتابة لحذف المحتويات داخل الملف قبل تشغيل الحلقة الرئيسية
# حلقة مستمرة تراقب لترى ما إذا كان البشر في الجوار. إذا كانوا كذلك ، إذن
# تبدأ الكاميرا في التسجيل. تعمل هذه الوظيفة بالتوازي مع القارورة #server التي تتحكم في هذه الكاميرا. RegistrationInProcess = False while True: # check / Record if (registrationInProcess == False): rc.operation (rc.dur، rc.sens) # تغيير إعدادات الكاميرا بناءً على كاميرا الخادم ServerSettingsFile = open ("cameraSettings.txt" ، 'r') settingNum = 0 للإعداد في cameraSettingsFile.readlines (): if settingNum == 0: #Duration change rc.dur = int (setting) elif settingNum == 1: # تغيير الحساسية rc.sens = int (الإعداد) إعداد elifNum == 2: #Action change rc.opt = setting settingNum + = 1 cameraSettingsFile.close ()
# تنفيذ إجراء
# if rc.opt == "none": # متابعة إذا rc.opt == "rec / n" and registrationInProcess == False: print ("تشغيل أمر التسجيل من وحدة التحكم") #Generate name للفيديو استنادًا إلى الوقت الحالي videoName = "snappedVid _" + str (datetime.now ()) videoName = videoName.replace (':'، ') videoName = videoName.replace ('. '،') rc.cam.start_recording ('/ home / pi / iotProject / videos / '+ videoName +'.h264 ') registrationInProcess = True elif rc.opt == "stop / n" and registrationInProcess == True: print ("إيقاف أمر التسجيل من وحدة التحكم") rc.cam.stop_recording () التسجيل في العملية = False cameraSettingsFile = open ("cameraSettings.txt"، 'w') cameraSettingsFile.write (str (rc.dur) + '\ n') cameraSettingsFile.write (str (rc.sens) + '\ n') cameraSettingsFile. اكتب ("لا شيء / n") rc.opt = "بلا / n" elif rc.opt == "pic / n" وتسجيل InProcess == خطأ: طباعة ("التقط أمر الموافقة المسبقة عن علم من وحدة التحكم") اسم الصورة = "snappedPic_ "+ str (datetime.now ()) pictureName = pictureName.replace (':'، ') pictureName = pictureName.replace ('. '،') rc.cam.st art_preview () time.sleep (5) rc.cam.capture ('pictures /' + pictureName + '.jpg') rc.cam.stop_preview () cameraSettingsFile = open ("cameraSettings.txt"، 'w') ملف إعدادات الكاميرا. write (str (rc.dur) + '\ n') cameraSettingsFile.write (str (rc.sens) + '\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"
الخطوة 10: ابدأ تشغيل الخادم
SSH في pi وابدأ تشغيل الخادم باستخدام سطر الأوامر الموضح أعلاه.
الخطوة 11: جربها بنفسك
قم بالوصول إلى صفحة الويب باستخدام عنوان IP ويجب أن تكون قادرًا على التحكم في الكاميرا عن بُعد!
موصى به:
نظام أمان كاميرا الويب Pizero Motion Detect: 3 خطوات
نظام أمان كاميرا الويب Pizero Motion Detect: يستخدم هذا النظام جهاز pizero و wifi dongle وكاميرا ويب قديمة في علبة مخصصة لعلبة الثقاب. إنه يسجل مقاطع فيديو لاكتشاف الحركة بمعدل 27 إطارًا في الثانية لأي حركة مهمة على ممر سيارتي. ثم يقوم بتحميل المقاطع إلى حساب صندوق الإسقاط. يمكن أيضًا عرض السجلات و c
كاميرا أمان خارجية كاملة المزايا تعتمد على Raspberry Pi: 21 خطوة
كاميرا أمان خارجية كاملة الميزات استنادًا إلى Raspberry Pi: إذا كانت لديك تجارب مخيبة للآمال مع كاميرات الويب الرخيصة ، وبرامجها المكتوبة بشكل سيئ و / أو الأجهزة غير الملائمة ، فيمكنك بسهولة إنشاء كاميرا ويب شبه احترافية باستخدام Raspberry Pi وبعض المكونات الإلكترونية الأخرى بسهولة للعثور على أي ركض
كاميرا أمان لاسلكية في علبة كبريت: 7 خطوات
كاميرا أمان لاسلكية في علبة الثقاب: مرحبًا ، ما الأمر يا رفاق؟ Akarsh هنا من CETech. اليوم سنصنع كاميرا متصلة بالإنترنت تحتوي على wifi على متنها وهي صغيرة جدًا بحيث يمكن وضعها في علبة الثقاب ، وبالتالي يمكن وضعها لتأمين الأشياء الثمينة الخاصة بك دون أن يشك أي شخص
كاميرا ويب في كاميرا Hawkeye Brownie: 3 خطوات (بالصور)
كاميرا ويب في كاميرا Hawkeye Brownie: قبل بضع فراشات واجهت مجلة DIY حول وضع كاميرا ويب داخل كاميرا قديمة قابلة للطي ، وكان شيئًا أقرب إلى ما كنت أحاول القيام به باستخدام نقطة وكاميرا تصوير لكني لم أجد الحالة المثالية لذلك. انا احب ال
كاميرا رقمية / كاميرا فيديو للرؤية الليلية بالأشعة تحت الحمراء: 17 خطوة (مع صور)
كاميرا رقمية / كاميرا فيديو للرؤية الليلية بالأشعة تحت الحمراء: يشرح هذا الدليل كيفية تحويل كاميرا ديسكفري كيدز للرؤية الليلية (التي تم الإعلان عنها بشكل خاطئ لاستخدام & quot ؛ تقنية الرؤية الليلية الحقيقية بالأشعة تحت الحمراء & quot ؛) إلى كاميرا فيديو حقيقية للرؤية الليلية بالأشعة تحت الحمراء. & nbsp؛ هذا مشابه لـ IR webca