فهرست مطالب:

ضبط ضربه برای وسایل نقلیه: 18 مرحله (همراه با تصاویر)
ضبط ضربه برای وسایل نقلیه: 18 مرحله (همراه با تصاویر)

تصویری: ضبط ضربه برای وسایل نقلیه: 18 مرحله (همراه با تصاویر)

تصویری: ضبط ضربه برای وسایل نقلیه: 18 مرحله (همراه با تصاویر)
تصویری: (دوربین مخفی) صحنه هایی که اگرضبط دوربین نمیشد کسی آنرا باور نمی کرد!! 2024, نوامبر
Anonim
ضبط کننده ضربه برای وسایل نقلیه
ضبط کننده ضربه برای وسایل نقلیه

ضبط کننده ضربه برای ضربات وارده به خودرو در حین رانندگی یا ساکن طراحی شده است. تأثیرات در پایگاه داده به صورت خواندن و همچنین فیلم/تصویر ذخیره می شود. بر اثر ضربه ، کاربر از راه دور می تواند در زمان واقعی تأیید شود و کاربر از راه دور می تواند ویدیوی ذخیره شده را تماشا کند یا از راه دور به دوربین pi دسترسی داشته باشد و بر این اساس رویدادها را تماشا کند. به

مرحله 1: قطعات و لوازم جانبی

(1) Raspberry Pi 3 یا بهتر: قدرت محاسباتی مورد نیاز است

(2) کلاه حسی تمشک pi

(3) دوربین Raspberry pi / دوربین USB

(4) کارت حافظه با جدیدترین تصویر raspbian (باید از گره قرمز پشتیبانی کند ، تقریباً در هر تصویر اخیر)

(5) منبع تغذیه حداقل 2.1 A (من از بانک باتری برای عملکرد مستقل در ماشین استفاده کرده ام)

مرحله 2: توضیحات قطعات: Sense Hat

توضیحات قطعات: کلاه حس
توضیحات قطعات: کلاه حس

Sense HAT دارای ماتریس LED 8 × 8 RGB ، جوی استیک پنج دکمه است و شامل سنسورهای زیر است:

  • ژیروسکوپ
  • شتاب سنج
  • مغناطیس سنج
  • درجه حرارت
  • فشارسنجی
  • فشار
  • رطوبت

اطلاعات بیشتر در مورد کار با کلاه حسی را می توان از پیوندهای زیر به دست آورد: Sense_Hat

API کلاه حس در: Sense_hat_API میزبانی می شود

کد برنامه نویسی کلاه در مراحل بعدی پوشش داده شده است. کد کلاه حس را می توان در شبیه ساز میزبانی شده در: Sense-hat simulator شبیه سازی کرد

مرحله 3: مونتاژ: ضبط کننده ضربه

مونتاژ: ضبط کننده ضربه
مونتاژ: ضبط کننده ضربه
مونتاژ: ضبط کننده ضربه
مونتاژ: ضبط کننده ضربه
مونتاژ: ضبط کننده ضربه
مونتاژ: ضبط کننده ضربه
مونتاژ: ضبط کننده ضربه
مونتاژ: ضبط کننده ضربه
  • مونتاژ ساده تر است زیرا کلاه حسی باید روی pi چیده شود (پیچ های نصب شده با کلاه حسی ارائه می شود).
  • دوربین USB یا دوربین pi را می توان متصل کرد. در آموزش ، دوربین pi در نظر گرفته شده است و بر این اساس کدگذاری برای آن انجام می شود.
  • کارت حافظه را وارد کرده و کد پایتون و node -red را پیکربندی کنید (پیکربندی و کد در مراحل بعدی پوشش داده شده است)

تصویر بالا دوربین pi را نشان می دهد که از طریق کابل روبان تخت به pi متصل شده است

مرحله 4: مونتاژ: ضبط کننده ضربه در Dash Board of Car

مونتاژ: ضبط کننده ضربه در Dash Board of Car
مونتاژ: ضبط کننده ضربه در Dash Board of Car

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

دوربین دیگر همانطور که در تصویر نشان داده شده است به صورت عمودی نصب می شود ، با استفاده از همان نوار دو طرفه ،

در مرحله بعدی اتصال منبع تغذیه (پاوربانک 10،000 mAH) به همراه اتصال به اینترنت آماده است

اتصال به اینترنت برای برنامه MQTT لازم است (جزئیات مربوط به MQTT در مراحل بعدی ذکر شده است)

مرحله 5: Impact Recoder: Working & Applications

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

شتاب سنج: شتاب سنج مقدار نیروی گرانشی (نیروی G) را که بر روی هر یک از محورهای x ، y & z عمل می کند ، در صورتی که هر محور بیش از نیروی 1G اندازه گیری کند ، تشخیص می دهد که حرکت سریع قابل تشخیص است. (لطفاً توجه داشته باشید که محور به سمت پایین دارای مقدار 1g است و بر این اساس باید در کد پایتون در نظر گرفته شود).

ژیروسکوپ ؛ ژیروسکوپ برای اندازه گیری حرکت زاویه ای استفاده می شود ، به عنوان مثال هنگام چرخش شدید ، سنسور ممکن است فعال شود (بستگی به تنظیم کد دارد) ، بنابراین شخصی که بطور شدید در حال چرخش خودرو است گرفتار می شود !!

هرگونه فعال سازی محدودیت تنظیم شده نیز روی ماتریس LED کلاه حس به عنوان "!" نمایش داده می شود. قرمز برای شتاب و سبز برای فعال سازی ژیروسکوپ

مرحله 6: توضیحات نرم افزار: Node Red

Node-RED یک ابزار برنامه نویسی مبتنی بر جریان است که در ابتدا توسط تیم خدمات فناوری نوظهور IBM توسعه یافته و اکنون بخشی از بنیاد JS است.

اطلاعات بیشتر در مورد گره قرمز را می توانید از طریق پیوند زیر دریافت کنید: node-red

در مورد ما ، ما از node -red برای فعالیتهای زیر استفاده می کنیم

(1) تعامل با جوی استیک ها برای شروع عملکردهای دوربین

(2) نظارت بر تأثیرات بر وسیله نقلیه و انتقال اطلاعات به کاربر نهایی با استفاده از MQTT و پذیرش بیشتر دستورات کاربر نهایی از طریق MQTT و شروع برنامه مورد نیاز روی pi

(3) انجام برخی موارد اساسی مانند خاموش کردن pi

مراحل بعدی اطلاعات دقیق نمودار جریان را که روی گره قرمز اجرا شده است ، ارائه می دهد

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

مرحله 7: اصول گره قرمز

مبانی گره قرمز
مبانی گره قرمز
مبانی گره قرمز
مبانی گره قرمز
مبانی گره قرمز
مبانی گره قرمز

برخی مراحل اساسی برای شروع Node-red به صورت فلاش برجسته شده اند ، اما بله node-red برای شروع و کار با برنامه ها بسیار ساده است.

  • شروع Node-red: https:// localhost: 1880.
  • شروع Node-red هنگامی که pi به اینترنت متصل است https:// ip address>: 1880

مرحله 8: گره قرمز: جریان _1a

گره قرمز: جریان _1a
گره قرمز: جریان _1a

Flow _1a ، هرگونه تغییر در فایل CSV را کنترل می کند و بر اساس تغییرات ، یعنی تأثیر تشخیص داده شده ، ضبط ویدئوی دوربین روی حالت تنظیم می شود و در ادامه کاربر از طریق اینترنت مطلع می شود که ضربه ای رخ داده است.

مرحله 9: گره قرمز: Flow_1b

گره قرمز: Flow_1b
گره قرمز: Flow_1b

در جریان گفته شده ، ضبط ویدئو را می توان در هر نقطه فقط با فشار دادن جوی استیک شروع کرد

مرحله 10: گره قرمز: Flow_2a

گره قرمز: Flow_2a
گره قرمز: Flow_2a

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

مرحله 11: گره قرمز: Flow_2b

گره قرمز: Flow_2b
گره قرمز: Flow_2b

این جریان در ابتدا برای کاربر از راه دور طراحی شده است ، به طوری که دستگاه را به روش زیر کنترل می کند

الف) دستگاه خاموش

(ب) عکس گرفتن

ج) فیلم ها را ضبط کنید

(d) شروع کد اصلی (کد datalogger کد اصلی است که تاثیر را محاسبه می کند)

مرحله 12: گره قرمز ؛ جریان_3

گره قرمز ؛ جریان_3
گره قرمز ؛ جریان_3

جریان برای دسترسی محلی طراحی شده است ، به طوری که کد اصلی یا دستگاه خاموش را راه اندازی کند

مرحله 13: MQTT

MQTT (Message Queuing Telemetry Transport) یک پروتکل TCP/IP است که در آن ناشر و مشترک با یکدیگر ارتباط برقرار می کنند.

در مورد ما Pi ناشر است ، در حالی که برنامه نصب شده در moblile/PC ما مشترک خواهد بود.

به این ترتیب در ایجاد هرگونه تأثیر ، اطلاعات از راه دور به کاربر منتقل می شود (اتصال به اینترنت ضروری است)

اطلاعات بیشتر در مورد MQTT را می توانید از لینک زیر دریافت کنید: MQTT

برای شروع استفاده از MQTT ، ابتدا باید ثبت نام کنیم ، برای آموزشی که من از cloudmqtt (www.cloudmqtt.com) استفاده کرده ام ، یک برنامه رایگان تحت "گربه ناز" وجود دارد ، این همه.

پس از ثبت نام ، یک مثال ایجاد کنید و بگویید "pi" ، پس از آن جزئیات زیر را دریافت خواهید کرد

  • نام ارائهکننده
  • بندر
  • نام کاربری
  • کلمه عبور

موارد فوق هنگام اشتراک از طریق تلفن همراه/رایانه مورد نیاز است

برای برنامه من ، از برنامه MQTT از google play store (نسخه Android) استفاده کرده ام

مرحله 14: MQTT: مشترک

MQTT: مشترک
MQTT: مشترک

برنامه MQTT در حال اجرا بر روی تلفن همراه (نسخه Android)

تاثیر تشخیص داده شده بر روی pi به عقب منتقل می شود

مرحله 15: MQTT: ویرایش ویژگی ها با رنگ Node-red

MQTT: ویرایش ویژگی ها با رنگ Node-red
MQTT: ویرایش ویژگی ها با رنگ Node-red

در گره قرمز پس از انتخاب گره MQTT ، "نام سرور" و "موضوع" ذکر می شود. این باید در انتهای مشترک یکسان باشد

مرحله 16: کد پایتون:

عملکرد کد مطابق نمودار جریان پیوست است

مرحله 17: کد نهایی

کد پایتون ضمیمه شده است

برای اینکه اسکریپت پایتون خود را از ترمینال اجرا کنیم ، باید آنها را به عنوان chmod +x datalogger.py قابل اجرا کنیم ، تا این که بالای کد باید شامل خط #shebang زیر باشد! /usr/bin/python3 (این مورد برای اجرای توابع از node-red مورد نیاز است)

#!/usr/bin/python3 // shebang linefrom sense_hat import SenseHat from datetime import datetime from csv import writer import RPi. GPIO as GPIO from time import import sleep

حس = SenseHat ()

وارد کردن csv

timestamp = datetime.now ()

تاخیر = 5 // تأخیر برای ذخیره داده ها در data.csv فایل قرمز = (255 ، 0 ، 0) سبز = (0 ، 255 ، 0) زرد = (255 ، 255 ، 0) تعریف شده است

#GPIO.setmode (GPIO. BCM)

#GPIO.setup (17 ، GPIO. OUT)

def get_sense_impact ():

sense_impact = acc = sense.get_accelerometer_raw () sense_impact.append (acc ["x"]) sense_impact.append (acc ["y"]) sense_impact.append (acc ["z"])

gyro = sense.get_gyroscope_raw ()

sense_impact.append (gyro ["x"]) sense_impact.append (gyro ["y"]) sense_impact.append (gyro ["z"])

return sense_impact

def ndik (): // تابع برای تشخیص ضربه #GPIO.setmode (GPIO. BCM) #GPIO.setup (4، GPIO. OUT) شتاب = sense.get_accelerometer_raw () x = شتاب ['x'] y = شتاب ['y'] z = شتاب ['z'] x = abs (x) y = abs (y) z = abs (z)

gyro = sense.get_gyroscope_raw ()

gyrox = gyro ["x"] gyroy = gyro ["y"] gyroz = gyro ["z"]

gyrox = گرد (gyrox ، 2)

gyroy = گرد (gyroy، 2) gyroz = دور (gyroz، 2)

تاثیر = get_sense_impact ()

اگر x> 1.5 یا y> 1.5 یا z> 1.5: // مقادیر بعد از تکرار در جاده واقعی تنظیم شوند ، می توان برای انواع مختلف و مهارت های رانندگی با باز تغییر داد ('ndik.csv' ، 'w' ، newline = ' ') به عنوان f: data_writer = writer (f) data_writer.writerow ([' 'acc x' ، 'acc y' ، 'acc z' ، 'gyro x' ، 'gyro y' ، 'gyro z'])) #GPIO خروجی (4 ، GPIO. HIGH) sense.clear () sense.show_letter ("!" ، قرمز) data_writer.writerow (ضربه)

elif gyrox> 1.5 یا gyroy> 1.5 یا gyroz> 1.5: // مقادیر با توجه به سرعت شروع چرخش با باز ('impact.csv' ، 'w'، newline = '') به عنوان f: data_writer تنظیم می شوند. = writer (f) data_writer.writerow (['acc x'، 'acc y'، 'acc z'، 'gyro x'، 'gyro y'، 'gyro z']) #GPIO.output (4، GPIO HIGH) sense.clear () sense.show_letter ("!" ، سبز) data_writer.writerow (ضربه)

دیگری:

# GPIO.output (4 ، GPIO. LOW) sense.clear ()

def get_sense_data (): // عملکرد برای ضبط و ذخیره مقادیر از حسگر sense_data =

sense_data.append (sense.get_temperature ()) sense_data.append (sense.get_pressure ()) sense_data.append (sense.get_humidity ())

جهت گیری = sense.get_orientation ()

sense_data.append (جهت گیری ["yaw"]) sense_data.append (جهت گیری ["گام"]) sense_data.append (جهت گیری ["roll"])

acc = sense.get_accelerometer_raw ()

sense_data.append (acc ["x"]) sense_data.append (acc ["y"]) sense_data.append (acc ["z"]) mag = sense.get_compass_raw () sense_data.append (mag ["x"]) sense_data.append (mag ["y"]) sense_data.append (mag ["z"])

gyro = sense.get_gyroscope_raw ()

sense_data.append (gyro ["x"]) sense_data.append (gyro ["y"]) sense_data.append (gyro ["z"])

sense_data.append (datetime.now ())

بازگشت داده های حسی

با باز ('data.csv'، 'w'، newline = '') به صورت f:

data_writer = نویسنده (f)

data_writer.writerow (["temp" ، "pres" ، "hum" ، "yaw" ، "pitch" ، "roll" ، "acc x" ، "acc y" ، "acc z" ، "mag x" ، " mag y '،' mag z '،' gyro x '،' gyro y '،' gyro z '،' datetime '])

در حالی که True:

print (get_sense_data ()) برای رویداد در sense.stick.get_events (): # بررسی کنید که آیا joystick در صورت event.action == "pressed" فشار داده شده است: # اگر رویداد در کدام جهت است بررسی کنید. جهت == "بالا": # حس نمایش = دور (y ، 0) z = دور (z ، 0)

# چرخش صفحه را بسته به اینکه if = x == -1: sense.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180) تغییر دهید) else: sense.set_rotation (0) sense.clear () t = sense.get_temperature () t = round (t، 1) message = "T:" + str (t) sense.show_message (message، text_colour = red، scroll_speed = 0.09) elif event.direction == "down": acceleration = sense.get_accelerometer_raw () x = شتاب ['x'] y = شتاب ['y'] z = شتاب ['z'] x = دور (x ، 0) y = دور (y ، 0) z = دور (z ، 0)

# چرخش صفحه را بسته به اینکه if = x == -1: sense.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180) تغییر دهید) else: sense.set_rotation (0) # sense.show_letter ("D") # پیکان پایین sense.clear () h = sense.get_humidity () h = round (h، 1) message = "H:" + str (ح) sense.show_message (پیام ، text_colour = سبز ، scroll_speed = 0.09) p = sense.get_pressure () p = round (p، 1) message = "P:" + str (p) sense.show_message (message، text_colour = زرد ، scroll_speed = 0.09)

# elif event.direction == "left":

#شتاب = sense.get_accelerometer_raw () #x = شتاب ['x'] #y = شتاب ['y'] #z = شتاب ['z'] #x = دور (x، 0) #y = دور (y ، 0) #z = دور (z ، 0)

#چرخش صفحه نمایش را بسته به اینکه از کدام طرف بالا بروید به روز کنید #elif y == -1: sense.set_rotation (180) #else: sense.set_rotation (0) # sense.show_letter ("L") # پیکان چپ # elif event.direction == "right": # sense.show_letter ("K") # پیکان راست # elif event.direction == "وسط": # sense.clear ()

ضربه()

data = get_sense_data ()

dt = data [-1] - timestamp if dt.seconds> delay: data_writer.writerow (data) timestamp = datetime.now ()

مرحله 18: نظارت بر ویدئوی زنده

ضبط ضربه همچنین می تواند برای نظارت بر ویدئوهای زنده استفاده شود ، زیرا ویدیو را می توان در هر زمان و در هر نقطه از طریق MQTT شروع کرد

ما از پخش کننده VLC برای پخش ویدئوها استفاده می کنیم ، به طور پیش فرض در آخرین raspbian VLC از قبل نصب شده است ، در غیر این صورت vlc را در زیر نصب کنید

اطلاعات بیشتر در مورد مشاهده جریان شبکه را می توان از طریق جریان شبکه VLC دریافت کرد

ممنون که خواندید !!

ضبط ضربه بسیار بیشتر می تواند انجام دهد..

در انجام نقشه برداری از موانع به فضای بعدی برای تجزیه و تحلیل میدان مغناطیسی دقت کنید

توصیه شده: