كاميرا Raspberry Pi 3 Motion Detection مع البث المباشر: 6 خطوات
كاميرا Raspberry Pi 3 Motion Detection مع البث المباشر: 6 خطوات
Anonim
كاميرا Raspberry Pi 3 Motion Detection مع البث المباشر
كاميرا Raspberry Pi 3 Motion Detection مع البث المباشر

مقدمة

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

تم تنظيم هذا المشروع في عدة خطوات:

  • مقدمة
  • إعداد Pi الخاص بك
  • SSHing في Pi الخاص بك
  • إرسال عنوان IP الخاص بك بالبريد الإلكتروني عند التشغيل
  • تثبيت وإعداد Motion
  • إرسال مقاطع الفيديو بالبريد الإلكتروني من الحركة عند الكشف
  • استكشاف الأخطاء وإصلاحها والمصادر

ماذا ستحتاج:

  • نموذج Raspberry Pi 3 ب ~ ~ 35 دولارًا
  • بطاقة Micro SD سعة 8 جيجابايت ~ ~ 10 دولارات
  • USB Webcam ~ ~ 20 دولارًا (استخدم هذا المشروع كاميرا ويب Logitech HD Webcam c270)
  • كابل USB الصغير ~ 5 دولارات أمريكية
  • إما:
  • حزمة بطارية قابلة لإعادة الشحن 5 فولت (بطارية احتياطية للهاتف) ، وهذا يجعل مشروعك لاسلكيًا ~ ~ 20 دولارًا
  • أو
  • محول حائط USB ~ ~ 5 دولارات
  • اتصال WiFi

ما ستحتاج إلى الوصول إليه للإعداد:

  • رصد
  • فأرة ولوحة مفاتيح
  • جهاز كمبيوتر بفتحة بطاقة SD
  • محول بطاقة Micro SD إلى SD (يجب أن يأتي مع بطاقة micro SD الخاصة بك)

الخطوة 1: إعداد Pi الخاص بك

إعداد Pi الخاص بك
إعداد Pi الخاص بك

لنقم الآن بإعداد Pi الخاص بك

للبدء ، تأكد من حصولك على جميع العناصر المطلوبة من الخطوة الأخيرة. بعد ذلك ، اتبع الخطوات الموجودة على موقع Raspberry Pi على الويب حول تثبيت Raspbian Jessie على بطاقة Microsd الخاصة بك ، الموجودة هنا.

بمجرد تثبيت Raspbian على Pi الخاص بك ، فقد حان الوقت لإعداد بعض الميزات الأساسية.

واي فاي

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

SSH

إحدى الأدوات المفيدة جدًا المتاحة لك عند استخدام Pi الخاص بك هي خيار إصدار أوامر إلى Pi الخاص بك فيما يعرف باسم الإعداد بدون رأس. باستخدام Secure SHell أو SSH ، يمكنك التحكم في Pi عن بُعد من جهاز كمبيوتر. باستخدام هذه الطريقة ، كل ما تحتاجه لتحرير Pi هو مصدر طاقة للاحتفاظ به ، لا مزيد من الشاشة ولوحة المفاتيح!

الخطوة الثانية: الدخول في PI الخاص بك

SSHing في PI الخاص بك
SSHing في PI الخاص بك
SSHing في PI الخاص بك
SSHing في PI الخاص بك

يعد SSHing في Raspberry Pi الخاص بك أمرًا سهلاً ومفيدًا للغاية ، حيث تتيح لك العملية إصدار أوامر إلى Pi الخاص بك من أي جهاز كمبيوتر ليس أكثر من اتصال WiFi.

لإدخال SSH إلى Pi الخاص بك ، تحتاج إلى اتباع هذه الخطوات الثلاث البسيطة.

أولاً ، تحتاج إلى تمكين SSH على Pi الخاص بك. للقيام بذلك ، افتح نافذة أوامر في Pi ، واكتب:

sudo raspi-config

يسمح لك هذا الأمر بالدخول إلى قائمة التكوين. من هناك ، ستحتاج إلى استخدام السهم ، وعلامة التبويب ، وإدخال المفاتيح للانتقال أولاً إلى خيارات الواجهة ، ثم لتمكين SSH ، وكذلك الكاميرا ، ثم الخروج وإعادة تشغيل pi.

بعد ذلك ، ستحتاج إلى العثور على عنوان IP الخاص بـ Pi. في محطة الأوامر ، اكتب:

sudo ifconfig

ويجب أن يكون عنوان IP الخاص بك في قسم wlan0 المنبثق ، أسفل Link encap: ethernet. في الصورة التوضيحية أعلاه ، عنوان IP هو 192.168.1.10.

أخيرًا ، ستحتاج إما إلى فتح تطبيق Terminal المدمج على جهاز Mac ، أو العثور على الإرشادات الخاصة بتطبيق ssh التابع لجهة خارجية لنظام التشغيل Windows واتباعها. في تطبيق Terminal ، اكتب:

ssh pi @ عنوان IP الخاص بك

إذا لم تكن قد قمت بتغيير كلمة المرور أثناء استخدام Raspi-config ، فستكون كلمة المرور التي يجب إدخالها عند المطالبة هي كلمة المرور الافتراضية: raspberry.

من هناك ، يجب أن تكون على ما يرام!

الخطوة 3: أرسل عنوان IP الخاص بك بالبريد الإلكتروني عند التمهيد

أرسل عنوان IP الخاص بك بالبريد الإلكتروني في التمهيد
أرسل عنوان IP الخاص بك بالبريد الإلكتروني في التمهيد

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

# ابدأ في الدليل الرئيسي

مؤتمر نزع السلاح ~

# إنشاء مجلد الخلفية

mkdir الخلفية

# إنشاء نص بيثون

sudo نانو emailip.py

#write in emailip.py

مقبس الاستيراد

s = socket.socket (socket. AF_INET ، socket. SOCK_DGRAM)

s.connect (("8.8.8.8" ، 80))

print (s.getsockname () [0]) x = s.getsockname () [0] s.close ()

استيراد smtplib

من البريد الإلكتروني

من email. MIMEText استيراد MIMEText

fromaddr = "عنوانك"

toaddr = "تلقي العنوان"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

msg ['الموضوع'] = "عنوان IP"

body = xmsg.attach (نص MIMET (نص عادي ، "عادي"))

server = smtplib. SMTP ('smtp.gmail.com'، 587)

server.starttls ()

server.login (fromaddr، "YOUR PASSWORD")

text = msg.as_string ()

server.sendmail (fromaddr ، toaddr ، نص)

server.quit ()

# ثم هذا يفعل ذلك عند إعادة التشغيل

sudo nano /etc/rc.local

# أدخل في /etc/rc.local

في حين ! / sbin / ifconfig wlan0 | grep -q 'inet addr: [0-9]'؛

تنام 3

انتهى

_IP = $ (hostname -I) || حقيقية

إذا ["$ _IP"] ؛ من ثم

printf "عنوان IP الخاص بي هو٪ s / n" "$ _IP"

python /home/pi/Background/emailip.py &

فاي

خروج 0

#وانت انتهيت

الخطوة 4: تثبيت وإعداد الحركة

تركيب وإعداد الحركة
تركيب وإعداد الحركة

# تحديث بي

sudo apt-get update

sudo apt-get ترقية

#تحميل

sudo apt-get install motion

# الآن قم بتحرير هذا الملف بالتغييرات التالية

sudo nano /etc/motion/motion.conf

# لتعيين معيار لهذا البرنامج التعليمي ، التغيير

#################

تم تشغيل البرنامج الخفي

Stream_localhost معطلة

webcontrol_localhost متوقف

ffmpeg_output_movies on

target_dir / var / lib / motion

##################

#local خيارات تدفق متصفح الويب

##################

stream_maxrate 100 # سيسمح هذا بالتدفق في الوقت الفعلي ولكنه يتطلب المزيد من النطاق الترددي والموارد

معدل الإطارات 60 # سيسمح هذا بالتقاط 60 إطارًا في الثانية # وكلما زاد هذا ، كانت معالجة الفيديو أبطأ

العرض 640 # هذا يغير عرض الصورة المعروضة

ارتفاع 480 # هذا يغير ارتفاع الصورة المعروضة

##################

#emailing إعدادات الفيديو في… / motion.conf

##################

#delete the "؛" أمام السطر ، تقوم الفاصلة المنقوطة بتعليق السطر

on_event_start python /home/pi/background/motionalert.py٪ f

on_movie_end python /home/pi/background/motionvid.py٪ f

##################

# مريضات

##################

# الخيارات الموضحة في الملف

output_pictures تحديد موقع_حركة_نمط

##################

# ثم التغيير

sudo نانو / الخ / الافتراضي / الحركة

#ليقول

start_motion_daemon = نعم

#last ، ابدأ B ****

بدء حركة خدمة sudo

# يمكنك تغيير الأمر إلى "إيقاف" أو "إعادة تشغيل"

الخطوة 5: إرسال مقاطع الفيديو بالبريد الإلكتروني من الحركة عند الاكتشاف

إرسال مقاطع الفيديو عبر البريد الإلكتروني من الحركة عند الاكتشاف
إرسال مقاطع الفيديو عبر البريد الإلكتروني من الحركة عند الاكتشاف

البريد الإلكتروني عند اكتشاف الحركة:

# ابدأ في المنزل

dircd ~

# إنشاء نص بيثون لتنبيه الحركة

sudo nano /home/pi/background/motionalert.py

#اكتب

استيراد smtplib

من تاريخ الاستيراد والوقت والتاريخ

من البريد الإلكتروني

من email. MIMEText استيراد MIMEText

fromaddr = "YOURADDRESS"

toaddr = "RECIEVINGADDRESS"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

msg ['Subject'] = "تم اكتشاف الحركة"

body = 'تم اكتشاف حركة. / n الوقت:٪ s'٪ str (datetime.now ())

msg.attach (نص MIMET (نص أساسي ، "عادي"))

server = smtplib. SMTP ('smtp.gmail.com'، 587)

server.starttls ()

server.login (fromaddr، "YOURPASSWORD")

text = msg.as_string ()

server.sendmail (fromaddr ، toaddr ، نص)

server.quit ()

إرسال فيديو الحركة عند حفظ الفيديو:

# ابدأ في homedircd ~

# إنشاء نصوص لفيديو بيثون الحركة ، sudo nano / home/pi/background/motionvid.py

استيراد smtplib

من البريد الإلكتروني

من email. MIMEText استيراد MIMEText

من البريد الإلكتروني. MIMEBase استيراد MIMEBase

من برامج تشفير استيراد البريد الإلكتروني

fromaddr = "بريدك الإلكتروني"

toaddr = "عنوان البريد الإلكتروني الذي ترسل إليه"

msg = MIMEMultipart ()

msg ['From'] = fromaddr

msg ['To'] = toaddr

msg ['Subject'] = "تم تنشيط Motion Cam"

body = "تم اكتشاف مقطع فيديو للحركة"

msg.attach (نص MIMET (نص أساسي ، "عادي"))

استيراد نظام التشغيل

مسار الجذر = '/ var / lib / motion'

filelist = [os.path.join (rootpath، f) لـ f في os.listdir (مسار الجذر)]

filelist = [f لـ f في قائمة الملفات إذا os.path.isfile (f)]

الأحدث = max (قائمة الملفات ، المفتاح = lambda x: os.stat (x).st_mtime)

اسم الملف = الأحدث

استيراد نظام التشغيل

مسار الجذر = '/ var / lib / motion'

filelist = [os.path.join (rootpath، f) لـ f في os.listdir (مسار الجذر)]

filelist = [f لـ f في قائمة الملفات إذا os.path.isfile (f)]

الأحدث = max (قائمة الملفات ، المفتاح = lambda x: os.stat (x).st_mtime)

المرفق = مفتوح (الأحدث ، "rb")

جزء = MIMEBase ('تطبيق' ، 'ثماني دفق')

part.set_payload ((مرفق). read ())

encoders.encode_base64 (جزء)

part.add_header ('Content-Disposition'، "attachment؛ filename =٪ s"٪ filename)

msg.attach (جزء)

server = smtplib. SMTP ('smtp.gmail.com'، 587)

server.starttls ()

server.login (fromaddr، "YOUR PASSWORD")

text = msg.as_string ()

server.sendmail (fromaddr ، toaddr ، نص)

server.quit ()

الخطوة 6: استكشاف الأخطاء وإصلاحها والمصادر

استكشاف الأخطاء وإصلاحها والمصادر
استكشاف الأخطاء وإصلاحها والمصادر

استكشاف الأخطاء وإصلاحها:

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

  • عند إعداد pi لإرسال عنوان IP الحالي إليك عبر البريد الإلكتروني ، من الضروري تحرير ملف rc.local كما هو موضح سابقًا لأن هذا يسمح بتأخير بسيط قبل تنشيط البرنامج بعد إعادة التشغيل. وإلا فلن يتم توصيل pi بشبكة wifi ، ولن يتم إرسال البريد الإلكتروني.
  • عند تحرير ملف motion.conf ، تأكد من حذف الفواصل المنقوطة أمام معلمات معينة. تلغي الفاصلة المنقوطة إجراءً معينًا ، وإلا فلن يصبح التغيير ساري المفعول.
  • ملف motion.conf منظم ومفصل جيدًا. لا تتردد في تغيير الإعدادات حسب رغبتك ، لكن افهم أنها قد تؤثر على نجاح نظام التقاط الحركة.
  • بعد إعداد التنبيه عبر البريد الإلكتروني وخيارات الفيديو عبر البريد الإلكتروني ، من المهم ملاحظة أن البريد الإلكتروني الخاص بالحركة التي تم اكتشافها للفيديو سيستغرق وقتًا أطول قليلاً من إرساله عن رسالة التنبيه الأولية بالبريد الإلكتروني. هذا لأن الفيديو يختتم بعد ثانيتين من عدم اكتشاف الحركة ، ولأن مرفق البريد الإلكتروني قد يكون كبيرًا بما يكفي لتتطلب بضع دقائق لتلقيه. في بعض الحالات ، إذا استمرت الحركة لفترة طويلة جدًا من الوقت ، فقد تكون كبيرة جدًا بحيث لا يمكن إرسالها على الإطلاق. لهذا السبب ، من الأفضل دائمًا التحقق من البث المباشر بعد تلقي رسالة التنبيه الإلكترونية الأولية.

لماذا موشن ؟:

عند الشروع في هذا المشروع لأول مرة ، أخذنا في الاعتبار عدة موارد مختلفة. أولاً فكرنا في استخدام PiCam وهي وحدة كاميرا تم تصميمها خصيصًا لـ raspberry pi. يعد PiCam بالتأكيد جهازًا قادرًا ولديه العديد من التطبيقات ، ولكنه يقتصر على استخدام البرامج المصممة خصيصًا له وهو مكلف نسبيًا مقارنة بكاميرات الويب متعددة الأغراض الرخيصة. لذلك من أجل جعل هذا المشروع في متناول جمهور أكبر ، قررنا استخدام كاميرا ويب USB مشتركة. كانت المشكلة التالية هي البرامج التي يجب دمجها. لقد درسنا في البداية OpenCV وهو برنامج مجاني يسمح بأنواع مختلفة من رؤية الكمبيوتر ومشاريع التصوير. من بين المشكلات هنا أن OpenCV هو ملف ضخم يستهلك الكثير من الذاكرة ويتم إعداده لفترة طويلة. يحتوي الإعداد أيضًا على مراحل متعددة ، مما يترك مجالًا أكبر للخطأ. وجدنا أنه بالنسبة لمشروعنا المحدد ، كانت Motion أسهل في الإعداد والبدء في العمل ، ولكنها كانت أكثر قوة في تنفيذها.

مصادر

مصادر التعليمات البرمجية:

www.techradar.com/how-to/computing/how-to-b…

pimylifeup.com/raspberry-pi-webcam-server/

www.pyimagesearch.com/2015/06/01/home-surve…

naelshiab.com/tutorial-send-email-python/

www.raspberrypi.org/documentation/linux/us…

learn.adafruit.com/adafruits-raspberry-pi-…

learn.adafruit.com/adafruits-raspberry-pi-…

pinout.xyz/pinout/i2c

اعتمادات الصورة:

حلزون SSH:

شعار البريد:

كاميرا الويب Logitech:

نافذة SSH: