فهرست مطالب:
- مرحله 1: الزامات
- مرحله 2: ساخت و فلش کردن سیستم عامل سنسور
- مرحله 3: راه اندازی ابر
- مرحله 4: AWS Lambda را راه اندازی کنید
- مرحله 5: جریان داده AWS Kinesis Firehose را تنظیم کنید
- مرحله 6: تنظیم نقش IAM برای Kinesis
- مرحله 7: AWS EC2 را تنظیم کنید
- مرحله 8: تنظیم نقش امنیتی IAM برای EC2
- مرحله 9: به نمونه EC2 خود دسترسی پیدا کنید
- مرحله 10: بازیابی API Google Maps
- مرحله 11: راه اندازی سرور
- مرحله 12: ادغام HTTP را در شبکه Things انجام دهید
- مرحله 13: پردازش داده ها
- مرحله 14: تجسم
- مرحله 15: اعتبارات و پیوندهای خارجی
تصویری: نظارت بر راه: 15 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
امروز ما به شما نشان می دهیم که چگونه یک سیستم مانیتورینگ ناهنجاری های جاده ای را بر اساس شتاب سنج ، LoRaWAN ، خدمات وب آمازون و Google Cloud API راه اندازی کرده ایم.
مرحله 1: الزامات
- برد DISCO-L072CZ-LRWAN1
- ماژول توسعه X-NUCLEO-IKS01A2 (برای شتاب سنج)
- X-NUCLEO-GNSS1A1 (برای محلی سازی)
- یک حساب AWS
- یک حساب Google Cloud Platform
مرحله 2: ساخت و فلش کردن سیستم عامل سنسور
IKS01A2 و GNSS1A1 را در بالای برد از طریق پین های GPIO وصل کنید. کد سیستم عامل را از GitHub بارگیری کنید. در ARM Mbed یک حساب (اگر قبلاً ندارید) ایجاد کنید و کد را در repo در کامپایلر آنلاین وارد کنید. پلت فرم هدف را روی DISCO-L072CZ-LRWAN1 تنظیم کنید و پروژه را ذخیره کنید. حالا به The Things Network بروید و اگر قبلاً حساب کاربری ندارید ، ایجاد کنید. یک برنامه ایجاد کنید ، یک دستگاه جدید در داخل برنامه ایجاد کنید و حالت اتصال را روی OTAA تنظیم کنید. پارامترهای مناسب را برای پر کردن فیلدهای زیر در پرونده mbed_app.json بگیرید: "lora.appskey" ، "lora.nwkskey" ، "lora.device-address".
سنسور به صورت دوره ای شتاب سنج و داده های GNSS را ضبط کرده و از طریق اتصال LoRa به نزدیکترین دروازه ارسال می کند ، که آنها را به برنامه ما در The Things Network ارسال می کند. مرحله بعدی راه اندازی سرور ابری و یکپارچه سازی HTTP در TTN است.
مرحله 3: راه اندازی ابر
اکنون ما آماده ایجاد زیرساخت ابری هستیم که داده ها را از همه تخته های مستقر جمع آوری و جمع آوری می کند. این زیرساخت در شکل زیر نشان داده شده است و شامل موارد زیر است:
- Kinesis ، برای رسیدگی به جریان داده های ورودی ؛
- Lambda ، برای فیلتر کردن و پیش پردازش داده ها قبل از ذخیره آنها ؛
- S3 ، برای ذخیره همه داده ها ؛
- EC2 ، برای تجزیه و تحلیل داده ها و میزبانی بخش جلویی ما.
مرحله 4: AWS Lambda را راه اندازی کنید
ما مراحل لازم برای راه اندازی این زیرساخت را با لامبدا شروع می کنیم.
- با حساب AWS خود وارد شوید ، و از صفحه اصلی کنسول و به Lambda بروید
- بر روی ایجاد عملکرد کلیک کنید
- در قسمت بالای صفحه باید Author from Scratch انتخاب شود. سپس سایر فیلدها را مانند تصویر تکمیل کرده و سپس روی ایجاد عملکرد کلیک کنید
- اکنون که یک تابع AWS Lambda ایجاد کرده اید ، به https://github.com/roadteam/data-server بروید و محتوای فایل aws_lambda.py را در ویرایشگری که نیمه دوم صفحه را پیدا کرده اید کپی کنید. عملکرد لامبدا شما آماده است:)
مرحله 5: جریان داده AWS Kinesis Firehose را تنظیم کنید
- اکنون به صفحه اصلی کنسول AWS بازگردید و به Services به Kinesis بروید
- اکنون شما در صفحه اصلی Kinesis هستید. در سمت راست صفحه ، تحت "جریانهای تحویل Kinesis Firehose" ، "ایجاد جریان تحویل جدید" را انتخاب کنید
- در "نام جریان تحویل" ، "جاده-نظارت-جریان" را بنویسید. سایر فیلدها را به حالت پیش فرض رها کرده و روی next کلیک کنید
- اکنون در بخش "Transform source records with AWS Lambda" Enabled را انتخاب کنید و به عنوان تابع Lambda روی "road-monitoring-lambda" ایجاد شده کلیک کنید. نگران نباشید اگر هشداری در مورد زمان پایان عملکرد ظاهر شود ، زیرا عملیاتی که ما انجام می دهیم از نظر محاسباتی گران نیستند. سایر فیلدها را به صورت پیش فرض رها کرده و روی next کلیک کنید
- به عنوان مقصد Amazon S3 و به عنوان مقصد S3 Create New را انتخاب کنید. به عنوان نام سطل ، وارد 'road-monitoring-سطل' شده و سپس بروید. اکنون سایر فیلدها را به حالت پیش فرض رها کرده و روی Next کلیک کنید
- ممکن است بخواهید اندازه بافر را روی 1 مگابایت و فاصله بافر را روی 60 ثانیه تنظیم کنید. هرگاه یکی از دو شرط برآورده شود ، بافر به S3 شسته می شود. صفحه را ترک نکنید ، مرحله بعدی را ببینید
مرحله 6: تنظیم نقش IAM برای Kinesis
اکنون مجوزهای امنیتی Kinesis را تنظیم می کنیم ، زیرا باید تابع Lambda را برای پیش پردازش فراخوانی کند و سپس در S3 بنویسد
- در انتهای صفحه که در "نقش IAM" هستید ، "ایجاد جدید انتخاب" را انتخاب کنید ، یک نقش IAM جدید مانند تصویر ایجاد کنید و روی اجازه کلیک کنید
- اکنون شما به صفحه قبلی برگشته اید ، روی بعدی کلیک کنید. حالا ممکن است بخواهید همه پارامترها را دوبار بررسی کنید. پس از اتمام ، روی "ایجاد جریان تحویل" کلیک کنید
خط لوله Kinesis-Lambda-S3 راه اندازی شده است!
مرحله 7: AWS EC2 را تنظیم کنید
اکنون ما یک نمونه EC2 با برخی از API ها ایجاد می کنیم که به ما اجازه می دهد داده ها را از ابر AWS و همچنین سروری که میزبانی برنامه اصلی خود را در آن میزبانی می کنیم فشار دهیم. در محیط تولید ، ممکن است بخواهید API را با استفاده از مقیاس پذیرتر AWS API Gateway منتشر کنید.
- از صفحه اصلی کنسول AWS ، به سرویس EC2 بروید
- بر روی Launch Instance کلیک کنید
- در نوار جستجوی بالا این کد را وارد کنید: 'ami-08935252a36e25f85' ، که کد شناسایی ماشین مجازی از پیش تنظیم شده برای استفاده است. روی Select در سمت راست کلیک کنید
- از ستون "Type" t2.micro را انتخاب کرده و روی "بررسی و راه اندازی" کلیک کنید. هنوز نمونه را راه اندازی نکنید ، به مرحله بعدی بروید
مرحله 8: تنظیم نقش امنیتی IAM برای EC2
- قبل از راه اندازی ، می خواهیم گروه امنیتی نمونه خود را تغییر دهیم. برای انجام این کار ، در سمت راست قسمت "گروه های امنیتی" روی "ویرایش گروه های امنیتی" کلیک کنید. یک گروه امنیتی جدید را به شرح زیر تنظیم کنید. این اساساً فایروال نمونه شما را پیکربندی می کند که پورت 22 را برای اتصال SSH و پورت 80 را برای خدمات http نشان می دهد.
- دوباره روی "بررسی و راه اندازی" کلیک کنید. حالا بررسی کنید که همه پارامترها تنظیم شده باشند. پس از اتمام ، روی راه اندازی کلیک کنید
- با کلیک روی پنجره جدیدی ظاهر می شود تا یک جفت کلید برای اتصال ssh به نمونه تنظیم شود. "ایجاد جفت کلید جدید" را انتخاب کنید و به عنوان نام "ec2-road-monitoring" را وارد کنید. روی بارگیری کلید جفت کلیک کنید. بسیار مهم است که این فایل گم شود یا (بدتر) به طور ناامن ذخیره شود: شما نمی توانید دوباره کلید را بارگیری کنید. پس از بارگیری کلید.pem ، نمونه آماده راه اندازی است
مرحله 9: به نمونه EC2 خود دسترسی پیدا کنید
نمونه EC2 جدید شما در ابر AWS قرار دارد. می توانید با فایل اصلی بارگیری شده قبلی به آن متصل شوید (برای این آموزش فرض می کنیم که اصول ssh را می دانید). می توانید IP نمونه را با انتخاب آن در داشبورد در بخش "شرح" به شرح زیر بازیابی کنید: می توانید از IP عمومی یا DNS عمومی خود یکسان استفاده کنید. اکنون با یک ssh client دستور زیر را وارد کنید:
ssh -i ec2-road-monitoring.pem ec2-user@YOUR-IP-ADDR-OR-DNS
جایی که ec2-road-monitoring.pem کلید شما است که قبلاً تولید شده است.
اکنون به کشیدن کد سمت سرور ادامه دهید
git clone-بازگشتی
مرحله 10: بازیابی API Google Maps
ما تقریبا تمام شده ایم اکنون باید API نقشه های google را در صفحه html خود تنظیم کنیم تا نقشه را با نقاط مسیر به کاربر نمایش دهیم:
- به حساب Google خود وارد شوید و به https://cloud.google.com/maps-platform/ بروید
- روی "شروع به کار" در سمت چپ صفحه کلیک کنید
- در منو "Maps" را انتخاب کرده و سپس روی ادامه کلیک کنید
- به عنوان نام پروژه ، "road-monitoring" را وارد کرده و روی Next کلیک کنید
- جزئیات صورتحساب خود را وارد کرده و روی ادامه کلیک کنید
- اکنون پروژه شما آماده است و ما با کلیک روی API ها و خدمات -> اعتبارنامه کلید API را دریافت می کنیم
مرحله 11: راه اندازی سرور
و در آنجا کلید API شما است. آخرین کاری که باید انجام دهید این است که به data_visualization/anomalies_map.html بروید و کلید خود را در انتهای فایل کپی کنید و جایگزین "YOUR-KEY-HERE" در اینجا شوید.
اکنون همه چیز آماده است و آماده شروع! برای شروع اجرای آن در نمونه EC2: ‘cd data-server’ ‘python flask_app.py’
آدرس IP یا dns نمونه EC2 خود را در مرورگر خود وارد کنید ، باید نقشه ناهنجاری ها با برخی داده های ساختگی را مشاهده کنید
مرحله 12: ادغام HTTP را در شبکه Things انجام دهید
اکنون که همه زیرساخت های پشتیبان راه اندازی شده است ، می توانیم ادغام HTTP را انجام دهیم.
- یک برنامه جدید ایجاد کنید و دستگاه خود را ثبت کنید. ما دانش اساسی TTN را فرض می کنیم ، اگر به راهنمای شروع سریع مراجعه نکنید
- در منوی برنامه خود ، "Integrations" و سپس "add integration" را انتخاب کنید.
- ادغام HTTP را انتخاب کنید
- فیلدهای زیر تصویر را وارد کرده و IP2 EC2 یا DNS عمومی خود را جایگزین کنید
مرحله 13: پردازش داده ها
برای هر تعداد داده T جمع آوری شده از سنسور ، باید مراحل زیر را انجام دهید:
- مجموعه ای از چندتایی که دارای مختصات GPS هستند در ناحیه محلی T. دریافت کنید. منطقه محلی همه چندتایی هایی است که 100 متر در اطراف T قرار دارند.
- برای هر یک از نزدیک ترین تعداد N ، میانگین مربع محور Z شتاب سنج را در N. در شبه کد: میانگین = مجموع ([x. Z_accel ** 2 برای x در نزدیکی]) / near.size
- انحراف معیار مربع را محاسبه کنید. در شبه کد: std = sum ([(x. Z_accel ** 2 - mean) ** 2 برای x در نزدیکی])
- خروجی در این قالب: lat ، long ، Z_accel ** 2 ، mean ، std
برای محاسبه ناحیه محلی از فاصله GPS بر حسب متر استفاده کنید. در زبان C ++:
#تعریف D2R (M_PI / 180.0)
#EARTH_RAY 6371 دو فاصله (دو lat1 ، دو long1 ، دو lat2 ، double long2) {double dlong = (long2 - long1) * D2R ؛ Double dlat = (lat2 - lat1) * D2R ؛ double a = pow (sin (dlat/2.0) ، 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2.0) ، 2) ؛ دو برابر c = 2 * atan2 (sqrt (a) ، sqrt (1-a)) ؛
اکنون ، با استفاده از داده های میانی تولید شده در مرحله قبل ، ناهنجاری ها را تشخیص داده و با استفاده از این قطعه بندی شده برای هر خط ، طبقه بندی ساده ای انجام دهید:
line = map (float، line.split ("،"))
v = خط [2] میانگین = خط [3] std = خط [4] اگر v (میانگین + std*3): اگر v (میانگین + std*2): اگر v (میانگین + std): o.append ([1 ، خط [0] ، خط [1]) دیگری: o.append ([2 ، خط [0] ، خط [1]) دیگر: o.append ([3 ، خط [0] ، خط [1])
ناهنجاری ها با استفاده از قانون 68-95-99.7 طبقه بندی می شوند
اکنون مجموعه ای با این قالب دارید [نوع ، lat ، long].
معنی نوع به شرح زیر است:
- کمی ناهنجاری ، احتمالاً بی ربط
- ناهنجاری متوسط
- ناهنجاری بحرانی
مرحله 14: تجسم
برای درک و شاید تغییر بخش تجسم ، باید نحوه استفاده از نشانگرهای سفارشی را بیاموزیم ، یکی از ویژگی های API Google Maps
در مرحله اول ، نقشه باید در پاسخ به تماس تنظیم شود:
تابع initMap () {
data = queryData ()؛ map = new google.maps. Map (document.getElementById ('map') ، {zoom: 15، center: {lat: data [0] [1]، lng: data [0] [2]}})؛ اظهار نظر ()؛ }
نام این فراخوانی را در آدرس اینترنتی (که ما قبل از کلید API خود در اینجا درج کرده ایم) در یک تگ HTML مشخص کنید:
اسکریپت async defer src = "https://maps.googleapis.com/maps/api/js؟key= [KEY]&callback=initMap"
هنگامی که شی ایجاد می شود ، می توانید یک نشانگر در نقشه قرار دهید:
google.maps. Marker جدید ({موقعیت: {lat: LATITUDE ، lng: LONGITUDE} ، نقشه: نقشه ، نماد: "/path/to/icon.png"})
می توانید در کد مشاهده کنید که برای هر داده در مجموعه داده های ناهنجاری ، یک نشانگر درج شده است (تابع توجه () را ببینید) و نماد بر اساس کلاس ناهنجاری است. هنگام اجرای این در مرورگر ، می توانیم نقشه ای را بررسی کنیم که در آن ناهنجاری ها با استفاده از کادرهای تأیید فیلتر می شوند ، همانطور که در تصویر مشاهده می شود.
مرحله 15: اعتبارات و پیوندهای خارجی
این پروژه توسط Giovanni De Luca ، Andrea Fioraldi و Pietro Spadaccino ، سال اول کارشناسی ارشد مهندسی در دانشجویان علوم کامپیوتر در دانشگاه ساپینزا رم ، ساخته شد.
-
اسلایدهایی که نویسندگان برای ارائه این اثبات مفهوم استفاده کردند:
www.slideshare.net/PietroSpadaccino/road-m…
-
مخزن GitHub با تمام کد:
github.com/roadteam
توصیه شده:
DIY: نظارت بر باتری خودرو: کد و راه اندازی: 8 مرحله
DIY: نظارت بر باتری خودرو: کد و راه اندازی: داشتن قابلیت نظارت بر باتری خودرو می تواند از شگفتی های ناخوشایند جلوگیری کند. من به شما نشان می دهم که چگونه سخت افزار را مونتاژ کردم ، نرم افزار را بارگذاری کردم و مانیتور را در ماشینم نصب کردم. من از تخته ESP8266 با نام Wemos D1 Mini استفاده خواهم کرد
فیدر خودکار گیاه با مخزن - تنظیم کشت داخل و خارج - گیاهان آب به صورت خودکار با نظارت از راه دور: 21 مرحله
WiFi تغذیه کننده خودکار گیاهان با مخزن - راه اندازی کشت داخل و خارج از منزل - گیاهان آب به صورت خودکار با نظارت از راه دور: در این آموزش ما نحوه تنظیم یک سیستم تغذیه گیاهان داخلی/خارجی سفارشی را که به طور خودکار گیاهان را آبیاری می کند و می توان از راه دور با استفاده از پلت فرم Adosia کنترل کرد ، نشان خواهیم داد
استفاده از میکروکنترلرها برای عملکرد و نظارت بر سیستم آبیاری از راه دور: 4 مرحله
استفاده از میکروکنترلرها برای بهره برداری و نظارت بر سیستم آبیاری از راه دور: کشاورزان و اپراتورهای گلخانه ای برای یک سیستم آبیاری اتوماتیک کم هزینه. در این پروژه ، ما یک سنسور الکترونیکی رطوبت خاک را با یک میکروکنترلر ادغام می کنیم تا در صورت خشک شدن بیش از حد خاک بدون دخالت انسان ، گیاهان را به طور خودکار آبیاری کند
سیستم نظارت و توزیع توان از راه دور یک نیروگاه خورشیدی: 10 مرحله
سیستم پایش و توزیع توان از راه دور یک نیروگاه خورشیدی: هدف از این پروژه نظارت و توزیع توان در سیستم های قدرت (سیستم های خورشیدی) است. طراحی این سیستم به صورت خلاصه به شرح زیر توضیح داده شده است. این سیستم شامل چندین شبکه با تقریبا 2 پنل خورشیدی در
کنترل از راه دور و نظارت بر عکس بر روی MQTT: 8 مرحله
کنترل از راه دور و نظارت بر عکس بر روی MQTT: سلام. امروز می خواهم در مورد نحوه ساخت یک سیستم کنترل و نظارت از راه دور صحبت کنم که می تواند برای کنترل درهای گاراژ ، روشنایی ، گرمایش ، کنترل فشار ، دما و بسیاری دیگر استفاده شود. مولفه های. اما ویژگی اصلی thi