جدول المحتويات:

مراقبة الطريق: 15 خطوة
مراقبة الطريق: 15 خطوة

فيديو: مراقبة الطريق: 15 خطوة

فيديو: مراقبة الطريق: 15 خطوة
فيديو: انفجار غاز في عراق😔🔥 2024, يوليو
Anonim
مراقبة الطريق
مراقبة الطريق

سنعرض لك اليوم كيفية إعدادنا لنظام مراقبة الانحرافات على الطرق استنادًا إلى مقاييس التسارع و LoRaWAN و Amazon Web Services و Google Cloud API.

الخطوة 1: المتطلبات

  • لوحة DISCO-L072CZ-LRWAN1
  • وحدة التوسع X-NUCLEO-IKS01A2 (لمقياس التسارع)
  • X-NUCLEO-GNSS1A1 (للترجمة)
  • حساب AWS
  • حساب Google Cloud Platform

الخطوة الثانية: إنشاء البرنامج الثابت لجهاز الاستشعار وميضه

قم بتوصيل IKS01A2 و GNSS1A1 أعلى اللوحة من خلال دبابيس GPIO. قم بتنزيل رمز البرنامج الثابت من GitHub. أنشئ (إذا لم يكن لديك حساب بالفعل) حسابًا على ARM Mbed واستورد الكود في الريبو على المترجم عبر الإنترنت. اضبط النظام الأساسي المستهدف على DISCO-L072CZ-LRWAN1 واحفظ المشروع. توجه الآن إلى The Things Network وأنشئ حسابًا إذا لم يكن لديك حساب بالفعل. قم بإنشاء تطبيق وإنشاء جهاز جديد داخل التطبيق وضبط وضع الاتصال على OTAA. احصل على المعلمات المناسبة لملء الحقول التالية في ملف mbed_app.json: "lora.appskey" ، "lora.nwkskey" ، "lora.device-address".

سيقوم المستشعر بتسجيل بيانات مقياس التسارع و GNSS بشكل دوري وإرسالها عبر اتصال LoRa إلى أقرب بوابة ، والتي ستعيد توجيهها إلى تطبيقنا على شبكة الأشياء. الخطوة التالية هي إعداد خادم سحابي ، وتكامل HTTP على TTN.

الخطوة 3: إعداد السحابة

إنشاء السحابة
إنشاء السحابة

نحن الآن جاهزون لإعداد البنية التحتية السحابية التي ستجمع وتجمع البيانات من جميع اللوحات المنشورة. هذه البنية التحتية موضحة في الشكل أدناه وتتكون من:

  • Kinesis ، للتعامل مع تدفق البيانات الواردة ؛
  • Lambda لتصفية البيانات ومعالجتها مسبقًا قبل تخزينها ؛
  • S3 ، لتخزين جميع البيانات ؛
  • EC2 ، لتحليل البيانات واستضافة واجهتنا الأمامية.

الخطوة 4: إعداد AWS Lambda

قم بإعداد AWS Lambda
قم بإعداد AWS Lambda

سنوضح الخطوات اللازمة لإنشاء هذه البنية التحتية ، بدءًا من Lambda.

  1. قم بتسجيل الدخول باستخدام حساب AWS الخاص بك ، ومن صفحة وحدة التحكم الرئيسية وانتقل إلى Lambda
  2. انقر فوق إنشاء وظيفة
  3. في الجزء العلوي من الصفحة ، يجب تحديد المؤلف من سكراتش. ثم أكمل الحقول الأخرى كما في الصورة ثم انقر فوق إنشاء وظيفة
  4. الآن بعد أن أنشأت وظيفة AWS Lambda ، انتقل إلى https://github.com/roadteam/data-server وانسخ محتوى ملف aws_lambda.py في المحرر الذي تجده في النصف الثاني من الصفحة. أصبحت وظيفة Lambda جاهزة الآن:)

الخطوة 5: إعداد تدفق بيانات AWS Kinesis Firehose

إعداد تدفق بيانات AWS Kinesis Firehose Data Stream
إعداد تدفق بيانات AWS Kinesis Firehose Data Stream
  1. ارجع الآن إلى الصفحة الرئيسية لوحدة تحكم AWS ، وانتقل إلى الخدمات إلى Kinesis
  2. أنت الآن في الصفحة الرئيسية لـ Kinesis. على يسار الصفحة ، ضمن "تدفقات توصيل Kinesis Firehose" ، حدد "إنشاء تدفق تسليم جديد"
  3. في "اسم تيار التسليم" اكتب "road-Monitoring-Stream". اترك الحقول الأخرى على الوضع الافتراضي وانقر فوق التالي
  4. الآن ضمن "تحويل سجلات المصدر باستخدام AWS Lambda" حدد ممكّن ، وكوظيفة Lambda ، انقر فوق "road-Monitoring-lambda" التي تم إنشاؤها حديثًا. لا تقلق إذا انبثق تحذير بشأن مهلة الوظيفة ، لأن العملية التي نقوم بها ليست باهظة الثمن من الناحية الحسابية. اترك الحقول الأخرى على الوضع الافتراضي وانقر فوق التالي
  5. كوجهة حدد Amazon S3 ، وكوجهة S3 حدد إنشاء جديد. كاسم الحاوية ، أدخل "حاوية مراقبة الطريق" ثم انتقل. الآن اترك الحقول الأخرى على الوضع الافتراضي وانقر فوق التالي
  6. قد ترغب في تعيين حجم المخزن المؤقت على 1 ميغا بايت والفاصل الزمني للمخزن إلى 60 ثانية. سيتم مسح المخزن المؤقت إلى S3 عندما يتم استيفاء أحد الشرطين. لا تترك الصفحة ، انظر الخطوة التالية

الخطوة 6: إعداد دور IAM لـ Kinesis

قم بإعداد دور IAM لـ Kinesis
قم بإعداد دور IAM لـ Kinesis

قمنا الآن بإعداد أذونات الأمان لـ Kinesis ، حيث يجب أن تستدعي وظيفة Lambda للمعالجة المسبقة وبعد ذلك ستكتب على S3

  1. في الجزء السفلي من الصفحة التي تكون فيها في "دور IAM" ، حدد "إنشاء اختيار جديد" ، وإنشاء دور IAM جديد كما في الصورة وانقر فوق السماح
  2. لقد عدت الآن إلى الصفحة السابقة ، انقر فوق التالي. الآن قد ترغب في التحقق مرة أخرى من جميع المعلمات. عند الانتهاء ، انقر فوق "إنشاء تدفق التسليم"

خط أنابيب Kinesis-Lambda-S3 جاهز للعمل!

الخطوة 7: إعداد AWS EC2

قم بإعداد AWS EC2
قم بإعداد AWS EC2

سنقوم الآن بإعداد مثيل EC2 مع بعض واجهات برمجة التطبيقات التي ستسمح لنا بدفع البيانات وسحبها من سحابة AWS وأيضًا الخادم الذي نستضيف فيه الواجهة الأمامية للتطبيق. في بيئة الإنتاج ، قد ترغب في نشر API باستخدام AWS API Gateway الأكثر قابلية للتوسع.

  1. من الصفحة الرئيسية لوحدة تحكم AWS ، انتقل إلى خدمة EC2
  2. انقر فوق تشغيل مثيل
  3. في شريط البحث العلوي ، الصق هذا الرمز: "ami-08935252a36e25f85" ، هذا هو الرمز التعريفي للجهاز الظاهري المكوّن مسبقًا لاستخدامه. انقر فوق تحديد على اليمين
  4. حدد t2.micro من عمود "النوع" وانقر على "مراجعة وتشغيل". لا تقم بتشغيل المثيل بعد ، انتقل إلى الخطوة التالية

الخطوة 8: إعداد دور أمان IAM لـ EC2

قم بإعداد دور أمان IAM لـ EC2
قم بإعداد دور أمان IAM لـ EC2
  1. قبل بدء التشغيل ، نريد تعديل مجموعة الأمان الخاصة بمثيلنا. للقيام بذلك ، في أقصى يسار قسم "مجموعات الأمان" ، انقر فوق "تحرير مجموعات الأمان" ، وقم بإعداد مجموعة أمان جديدة على النحو التالي. يعمل هذا بشكل أساسي على تكوين جدار الحماية الخاص بمثيلك الذي يعرض المنفذ 22 لاتصال SSH والمنفذ 80 لخدمات
  2. انقر مرة أخرى على "مراجعة وتشغيل". تحقق الآن من تعيين جميع المعلمات. عند الانتهاء ، انقر فوق "تشغيل"
  3. عند النقر ، ستظهر نافذة جديدة لإعداد زوج مفاتيح لاتصال ssh بالمثيل. حدد "إنشاء زوج مفاتيح جديد" وكاسم ، أدخل "ec2-road-Monitoring". انقر فوق تنزيل زوج المفاتيح. من المهم للغاية أن يتم فقد هذا الملف أو (الأسوأ من ذلك) تخزينه بشكل غير آمن: لن تتمكن من تنزيل المفتاح مرة أخرى. بمجرد تنزيل مفتاح.pem ، يصبح المثيل جاهزًا للتشغيل

الخطوة 9: الوصول إلى مثيل EC2 الخاص بك

الوصول إلى مثيل EC2 الخاص بك
الوصول إلى مثيل EC2 الخاص بك

مثيل EC2 الجديد الخاص بك موجود في سحابة AWS. يمكنك الاتصال به باستخدام ملف المفتاح الذي تم تنزيله من قبل (في هذا البرنامج التعليمي ، نفترض أنك تعرف أساسيات ssh). يمكنك استرداد عنوان IP الخاص بالمثيل عن طريق تحديده في لوحة التحكم في قسم "الوصف" على النحو التالي: يمكنك استخدام كل من عنوان IP العام أو نظام أسماء النطاقات العام لديك. باستخدام عميل ssh الآن ، أدخل الأمر:

ssh -i ec2-road-Monitoring.pem ec2-user @ YOUR-IP-ADDR-OR-DNS

حيث يكون ec2-road-Monitoring.pem هو المفتاح الذي تم إنشاؤه من قبل.

تابع الآن لسحب رمز جانب الخادم من خلاله

git clone - متسلسل

الخطوة 10: استرداد Google Maps API

استرداد خرائط جوجل API
استرداد خرائط جوجل API

نحن على وشك الانتهاء. الآن يتعين علينا إعداد واجهة برمجة تطبيقات خرائط Google في صفحة html الخاصة بنا من أجل عرض الخريطة مع الإحداثيات للمستخدم:

  1. قم بتسجيل الدخول إلى حساب Google الخاص بك وانتقل إلى
  2. انقر على "البدء" على يسار الصفحة
  3. حدد "خرائط" في القائمة ثم انقر فوق "متابعة"
  4. كاسم مشروع أدخل "مراقبة الطريق" وانقر على التالي
  5. أدخل تفاصيل الفواتير الخاصة بك وانقر فوق متابعة
  6. الآن مشروعك جاهز وسنحصل على مفتاح API من خلال النقر على واجهات برمجة التطبيقات والخدمات -> بيانات الاعتماد

الخطوة 11: تشغيل الخادم

تشغيل الخادم
تشغيل الخادم

وها هو مفتاح API الخاص بك. آخر شيء عليك القيام به هو الانتقال إلى data_visualization / anomalies_map.html ونسخ مفتاحك إلى نهاية الملف مثل ذلك ، مع استبدال "YOUR-KEY-HERE"

الآن كل شيء جاهز وجاهز للانطلاق! لجعله يبدأ التنفيذ في مثيل EC2: "خادم بيانات القرص المضغوط" "python flask_app.py"

أدخل في متصفحك عنوان IP أو DNS لمثيل EC2 الخاص بك ، يجب أن تشاهد خريطة الحالات الشاذة مع بعض البيانات الوهمية

الخطوة 12: تنفيذ تكامل HTTP على شبكة الأشياء

تنفيذ تكامل HTTP على شبكة الأشياء
تنفيذ تكامل HTTP على شبكة الأشياء

الآن بعد أن أصبح لدينا جميع البنية التحتية للواجهة الخلفية قيد التشغيل ، يمكننا معالجة تنفيذ تكامل

  1. قم بإنشاء تطبيق جديد وقم بتسجيل جهازك. نحن نفترض المعرفة الأساسية لـ TTN ، إن لم تكن تشير إلى دليل البدء السريع
  2. في قائمة التطبيق ، حدد "عمليات التكامل" ثم "إضافة التكامل"
  3. حدد تكامل
  4. أدخل الحقول التي تلي الصورة واستبدل بـ EC2 ip أو DNS العام

الخطوة 13: معالجة البيانات

لكل مجموعة بيانات T تم جمعها من المستشعر ، يجب عليك تنفيذ الخطوات التالية:

  1. احصل على مجموعة المجموعات التي تحتوي على إحداثيات GPS تقع في المنطقة المحلية من T. المنطقة المحلية هي كل المجموعات التي يبلغ ارتفاعها 100 متر حول T.
  2. لكل مجموعة N الأقرب حساب المتوسط التربيعي لمحور Z مقياس التسارع في N.
  3. احسب الانحراف المعياري التربيعي. في الكود الكاذب: الأمراض المنقولة جنسياً = sum ([(x. Z_accel ** 2 - متوسط) ** 2 لـ x في القريب])
  4. الإخراج بهذا التنسيق: lat ، long ، Z_accel ** 2 ، mean ، std

لحساب المنطقة المحلية ، استخدم مسافة GPS بالأمتار. في C ++:

#define D2R (M_PI / 180.0)

#define EARTH_RAY 6371 مسافة مزدوجة (عرض مزدوج 1 ، مزدوج طويل 1 ، عرض مزدوج 2 ، مزدوج طويل 2) {double dlong = (long2 - long1) * D2R ؛ مزدوج dlat = (lat2 - lat1) * D2R ؛ ضعف 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 (متوسط + قياسي * 3): إذا كان v (متوسط + قياسي * 2): إذا كان v (متوسط + قياسي): o.append ([1، سطر [0]، سطر [1]) else: o.append ([2، line [0]، line [1]) else: o.append ([3، line [0]، line [1])

يتم تصنيف الحالات الشاذة باستخدام قاعدة 68–95–99.7

الآن لديك مجموعة بهذا التنسيق [type، lat، long].

معنى النوع هو ما يلي:

  1. شذوذ طفيف ، ربما غير ذي صلة
  2. شذوذ متوسط
  3. شذوذ حرج

الخطوة 14: التصور

التصور
التصور

لفهم وربما تغيير جزء التصور ، يجب أن نتعلم كيفية استخدام العلامات المخصصة ، وهي ميزة في واجهة برمجة تطبيقات خرائط Google

أولاً ، يجب بدء الخريطة في رد الاتصال:

وظيفة initMap () {

data = queryData () ؛ map = new google.maps. Map (document.getElementById ('map')، {zoom: 15، center: {lat: data [0] [1]، lng: data [0] [2]}})؛ ملاحظة () ؛ }

حدد اسم رد الاتصال هذا في عنوان url (أدخلناه هنا قبل مفتاح API الخاص بنا) في علامة HTML:

تأجيل النص غير المتزامن src = "https://maps.googleapis.com/maps/api/js؟key=[KEY]&callback=initMap"

يمكن إدراج علامة في الخريطة عند إنشاء الكائن:

google.maps. Marker الجديدة ({position: {lat: LATITUDE، lng: LONGITUDE}، map: map، icon: “/path/to/icon.png”})

يمكنك أن ترى في الكود أنه لكل بيانات في مجموعة بيانات الحالات الشاذة يتم إدراج علامة (انظر وظيفة الملاحظة ()) ويستند الرمز إلى فئة الحالة الشاذة. عند تشغيل هذا في المتصفح ، يمكننا استكشاف خريطة يمكن فيها تصفية الحالات الشاذة باستخدام مربعات الاختيار ، كما هو موضح في الصورة.

الخطوة 15: الاعتمادات والروابط الخارجية

قام بهذا المشروع جيوفاني دي لوكا وأندريا فيورالدي وبيترو سباداكينو ، طلاب السنة الأولى ماجستير في الهندسة في علوم الكمبيوتر في جامعة سابينزا في روما.

  • الشرائح التي استخدمها المؤلفون لتقديم دليل المفهوم هذا:

    www.slideshare.net/PietroSpadaccino/road-m…

  • مستودعات جيثب مع كل الكود:

    github.com/roadteam

موصى به: