فهرست مطالب:

آشکارساز رزبری پای انسانی + دوربین + فلاسک: 6 مرحله
آشکارساز رزبری پای انسانی + دوربین + فلاسک: 6 مرحله

تصویری: آشکارساز رزبری پای انسانی + دوربین + فلاسک: 6 مرحله

تصویری: آشکارساز رزبری پای انسانی + دوربین + فلاسک: 6 مرحله
تصویری: حامد عینی و فیگور جلوی هنی رامبد 2024, جولای
Anonim
آشکارساز رزبری پای انسانی + دوربین + فلاسک
آشکارساز رزبری پای انسانی + دوربین + فلاسک

در این آموزش ، من مراحل پروژه Raspberry Pi IoT را طی می کنم - با استفاده از PIR Motion Sensor ، ماژول Raspberry Camera برای ایجاد یک دستگاه IoT امنیتی ساده و دسترسی به گزارش تشخیص با Flask.

مرحله 1: سنسور حرکت PIR

سنسور حرکت PIR
سنسور حرکت PIR

PIR مخفف "Passive Infrared" است و این سنسور حرکت با مشاهده نمای مادون قرمز و برداشتن تغییرات مادون قرمز ، حرکات را افزایش می دهد. بنابراین ، با عبور یک برگ و یک انسان از سنسور ، فقط انسان را تشخیص می دهد زیرا ما به عنوان انسان گرما تولید می کنیم و بنابراین اشعه مادون قرمز ساطع می کنیم. بنابراین ، سنسور حرکت انتخاب خوبی برای تشخیص حرکات انسان است.

مرحله 2: تنظیم سنسور حرکت PIR

تنظیم سنسور حرکت PIR
تنظیم سنسور حرکت PIR

سه پین برای سنسور حرکت PIR ، Power ، Output و Ground وجود دارد. در زیر پین ها می توانید برچسب ها ، VCC for Power ، Out for Output و GND را برای زمین ببینید. هنگامی که سنسور حرکات را تشخیص می دهد ، پین خروجی یک سیگنال HIGH به پین Raspberry Pi منتقل می کند که سنسور را با آن وصل می کنید. برای پین پاور ، می خواهید مطمئن شوید که برای قدرت به پین 5 ولت در رزبری پای متصل می شود. برای پروژه خود ، من اتصال پین خروجی را با Pin11 در Pi وصل می کنم.

پس از اتصال همه چیز ، می توانید با اجرای اسکریپت هایی مانند تصویر زیر ، به سنسور خود پیام ارسال کنید:

وارد کردن RPi. GPIO به عنوان GPIOimport زمان GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11، GPIO. IN) #خواندن خروجی از حسگر حرکت PIR در پین 11 در حالی که True: i = GPIO.input (11) اگر i == 0: #هنگامی که خروجی از سنسور حرکت LOW print باشد "بدون تشخیص" ، i time.sleep (0.1) elif i == 1: #هنگامی که خروجی از سنسور حرکت دارای چاپ بالا باشد " حرکت تشخیص داده شد "، i time.sleep (0.1)

اسکریپت را روی Pi خود اجرا کنید ، و دستان یا دوست خود را مقابل سنسور قرار دهید تا بررسی کنید که آیا سنسور حرکت را انجام می دهد یا خیر.

مرحله 3: ماژول دوربین رزبری پای و راه اندازی

ماژول و راه اندازی دوربین رزبری پای
ماژول و راه اندازی دوربین رزبری پای

انسان در اثر گرما اشعه مادون قرمز ساطع می کند و اجسام دارای دما نیز همینطور. بنابراین ، حیوانات یا اجسام داغ می توانند حسگر حرکت را نیز فعال کنند. ما به روشی نیاز داریم تا بررسی کنیم که آیا تشخیص معتبر است یا خیر. راه های زیادی برای پیاده سازی وجود دارد ، اما در پروژه خود ، من از ماژول دوربین رزبری پای برای عکاسی در هنگام حرکت حسگر حرکت استفاده می کنم.

برای استفاده از ماژول دوربین ، ابتدا باید مطمئن شوید که پین ها به شکاف دوربین در Pi متصل شده اند. تایپ کنید

sudo raspi-config

در Pi خود رابط پیکربندی را باز کنید و دوربین را در "گزینه های رابط" فعال کنید. پس از راه اندازی مجدد ، می توانید آزمایش کنید که آیا Pi واقعاً به دوربین متصل است یا خیر

vcgencmd get_camera

و وضعیت را به شما نشان می دهد آخرین مرحله این است که ماژول picamera را با تایپ کردن نصب کنید

pip نصب picamera

پس از تمام تنظیمات ، می توانید دوربین خود را با اجرای اسکریپت هایی مانند تصویر زیر آزمایش کنید:

از واردات picamera PiCamera

از زمان وارد کردن دوربین خواب = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()

تصویر به عنوان 'image.jpg' در فهرست همانند اسکریپت دوربین شما ذخیره می شود. توجه داشته باشید ، شما می خواهید مطمئن شوید که "خواب (2)" وجود دارد و عدد بیشتر از 2 است بنابراین دوربین زمان کافی برای تنظیم شرایط نور را دارد.

مرحله 4: سنسور حرکت PIR و ماژول دوربین را ترکیب کنید

ایده پروژه من این است که سنسور حرکت و دوربین در یک جهت قرار بگیرند. هر زمان که سنسور حرکت حرکات را انجام دهد ، دوربین عکاسی می کند تا بتوانیم بعداً علت حرکت را بررسی کنیم.

فیلمنامه:

وارد کردن RPi. GPIO به عنوان GPI

GPIO.cleanup ()

GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11، GPIO. IN) #خواندن خروجی از پیام سنسور حرکت PIR = 'start' counter = 0 log_f = open ('static/log.txt' ، 'w') log_f.close ()

دوربین = PiCamera ()

pic_name = 0

camera.start_preview ()

زمان خواب (2)

در حالی که True:

i = GPIO.input (11) اگر i == 0: #هنگامی که خروجی از سنسور حرکت کم است اگر شمارنده> 0: end = str (datetime.now ()) log_f = open ('static/log.txt' ، ' a ') message = message +'؛ پایان در ' + پایان +' / n 'چاپ (پیام) log_f.write (پیام) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (نهایی) counter = 0 print "No intruders"، i time.sleep (0.1) elif i == 1: #وقتی خروجی از سنسور حرکت بالا باشد اگر شمارنده == 0: current = str (datetime.now ()) پیام = "انسان شناسایی شد:" + "شروع می شود در" + شمارنده فعلی = شمارنده + 1 چاپ "مزاحم شناسایی شد" ، i time.sleep (0.1) camera.stop_preview ()

فهرستهای "log.txt" و تصاویر "static" هستند که برای کار Flask ضروری است.

مرحله 5: راه اندازی برای Flask

راه اندازی برای Flask
راه اندازی برای Flask

Flask یک چارچوب میکرو وب است که به زبان پایتون نوشته شده و بر اساس مجموعه ابزار Werkzeug و موتور قالب Jinja2 طراحی شده است. پیاده سازی و نگهداری آن آسان است. برای آموزش بهتر برای Flask ، این پیوند را توصیه می کنم: Flask Mega Tutorial

اسکریپت اصلی ، "lines.py" ، پروژه من:

از appfolder وارد برنامه

APP_ROOT = os.path.dirname (os.path.abspath (_ فایل_)) # به بالای برنامه اشاره دارد

APP_STATIC = os.path.join (APP_ROOT ، 'static')

@appFlask.route ('/' ، روش = ['GET' ، 'POST'])

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

فایل HTML "view.html" در نوار بالای صفحه است (زیرا وقتی کدهای HTML را اینجا کپی می کنم ، در واقع به HTML FORMAT تبدیل می شود …)

و ساختار پروژه باید شبیه چیزی در زیر باشد (اما البته تعداد فایلها از اینها بیشتر است):

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

مرحله ششم: نتیجه گیری

نتیجه
نتیجه

برای این پیاده سازی ، پس از اینکه همه چیز به درستی تنظیم شد ، باید بتوانید با تایپ آدرس IP آن در مرورگر به رزبری پای خود دسترسی پیدا کنید و نتیجه در این مرحله باید مانند تصویر در نوار بالا باشد.