فهرست مطالب:
- مرحله 1: قطعات و لوازم جانبی
- مرحله 2: توضیحات قطعات: Sense Hat
- مرحله 3: مونتاژ: ضبط کننده ضربه
- مرحله 4: مونتاژ: ضبط کننده ضربه در Dash Board of Car
- مرحله 5: Impact Recoder: Working & Applications
- مرحله 6: توضیحات نرم افزار: Node Red
- مرحله 7: اصول گره قرمز
- مرحله 8: گره قرمز: جریان _1a
- مرحله 9: گره قرمز: Flow_1b
- مرحله 10: گره قرمز: Flow_2a
- مرحله 11: گره قرمز: Flow_2b
- مرحله 12: گره قرمز ؛ جریان_3
- مرحله 13: MQTT
- مرحله 14: MQTT: مشترک
- مرحله 15: MQTT: ویرایش ویژگی ها با رنگ Node-red
- مرحله 16: کد پایتون:
- مرحله 17: کد نهایی
- مرحله 18: نظارت بر ویدئوی زنده
تصویری: ضبط ضربه برای وسایل نقلیه: 18 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
ضبط کننده ضربه برای ضربات وارده به خودرو در حین رانندگی یا ساکن طراحی شده است. تأثیرات در پایگاه داده به صورت خواندن و همچنین فیلم/تصویر ذخیره می شود. بر اثر ضربه ، کاربر از راه دور می تواند در زمان واقعی تأیید شود و کاربر از راه دور می تواند ویدیوی ذخیره شده را تماشا کند یا از راه دور به دوربین 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
برای نصب دستگاه ضبط ، من از نوار دو طرفه استفاده کرده ام ، مزیت این است که ضبط کننده می تواند به راحتی در موقعیت های مختلف جابجا شود ، هر کدام که مناسب ماشین شما باشد.
دوربین دیگر همانطور که در تصویر نشان داده شده است به صورت عمودی نصب می شود ، با استفاده از همان نوار دو طرفه ،
در مرحله بعدی اتصال منبع تغذیه (پاوربانک 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
Flow _1a ، هرگونه تغییر در فایل CSV را کنترل می کند و بر اساس تغییرات ، یعنی تأثیر تشخیص داده شده ، ضبط ویدئوی دوربین روی حالت تنظیم می شود و در ادامه کاربر از طریق اینترنت مطلع می شود که ضربه ای رخ داده است.
مرحله 9: گره قرمز: Flow_1b
در جریان گفته شده ، ضبط ویدئو را می توان در هر نقطه فقط با فشار دادن جوی استیک شروع کرد
مرحله 10: گره قرمز: Flow_2a
در جریان گفته شده ، هر زمان که تصویر یا فیلم جدیدی در فهرست ذخیره یا بارگذاری می شود ، اطلاعات از طریق اینترنت به کاربر ثبت شده منتقل می شود.
مرحله 11: گره قرمز: Flow_2b
این جریان در ابتدا برای کاربر از راه دور طراحی شده است ، به طوری که دستگاه را به روش زیر کنترل می کند
الف) دستگاه خاموش
(ب) عکس گرفتن
ج) فیلم ها را ضبط کنید
(d) شروع کد اصلی (کد datalogger کد اصلی است که تاثیر را محاسبه می کند)
مرحله 12: گره قرمز ؛ جریان_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 در حال اجرا بر روی تلفن همراه (نسخه Android)
تاثیر تشخیص داده شده بر روی pi به عقب منتقل می شود
مرحله 15: 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 دریافت کرد
ممنون که خواندید !!
ضبط ضربه بسیار بیشتر می تواند انجام دهد..
در انجام نقشه برداری از موانع به فضای بعدی برای تجزیه و تحلیل میدان مغناطیسی دقت کنید
توصیه شده:
تشخیص ارتعاشات با استفاده از ماژول سنسور ضربه ضربه ای پیزوالکتریک: 6 مرحله
تشخیص ارتعاشات با استفاده از ماژول سنسور ضربه ضربه ای پیزوالکتریک: در این آموزش ما نحوه تشخیص ارتعاشات شوک با استفاده از یک ماژول ارتعاشی سنسور پیزوالکتریک ساده و Visuino را یاد می گیریم
ARUPI - یک واحد ضبط خودکار کم هزینه/واحد ضبط خودکار (ARU) برای بوم شناسان Soundscape: 8 مرحله (همراه با تصاویر)
ARUPI - یک واحد ضبط خودکار کم هزینه/واحد ضبط خودکار (ARU) برای بوم شناسان Soundscape: این دستورالعمل توسط آنتونی ترنر نوشته شده است. این پروژه با کمک زیادی از Shed در دانشکده محاسبات ، دانشگاه کنت توسعه یافت (آقای دانیل ناکس کمک بزرگی بود!). این به شما نشان می دهد که چگونه یک ضبط صوتی خودکار بسازید
AC را به DC با مرکز ضربه زده ضربه زده مرکز: 5 مرحله تبدیل کنید
AC را به DC با یک مرکز اصلاح کننده مرکز ضربه بزنید: سلام دوست عزیز ، امروز من قصد دارم یک مدار از یکسو کننده با ضربات مرکزی ایجاد کنم. این یک یکسو کننده کامل موج است که AC را به DC تبدیل می کند. این مدار DC خروجی را با موج کامل می دهد. این است نوع یکسو کننده موج کامل. بیایید شروع کنیم ،
TripComputer - GPS سفر کامپیوتر و ماژول آب و هوا برای وسیله نقلیه شما: 11 مرحله (همراه با تصاویر)
TripComputer - GPS سفر کامپیوتر و ماژول آب و هوا برای وسیله نقلیه شما: یک پروژه جالب تمشک pi که از ماژول شکست GPS و 2 نمایشگر کوچک Digole برای داشتن یک کامپیوتر ناوبری در خط شما استفاده می کند
نحوه تبدیل یک گلدان IKEA به یک ایستگاه شارژ برای وسایل خود: 4 مرحله (همراه با تصاویر)
چگونه می توان یک گلدان IKEA را به یک ایستگاه شارژ برای وسایل خود تبدیل کرد.: & hellip؛ یک ایده ساده با رویکردی حتی ساده تر & hellip؛ & nbsp؛ ~ داستان ~ من در یک آپارتمان کوچک زندگی می کنم و چندین دستگاه کوچک دارم که حریص انرژی هستند. من در گذشته سعی کردم فضایی را نزدیک یک دوشاخه دیوار اختصاص دهم و آنها را شارژ کنم