قم بإنشاء شبكة مستشعرات Wi-Fi / Miwi (15.4) / لوروان اللاسلكية لمراقبة درجات الحرارة التي تغطي مساحة واسعة مثل فندق أو مصنع.
دراسة حالة: مراقبة درجة حرارة الفصول الدراسية خلال مؤتمر Microchip Masters الذي عقد في JW Marriot Desert Ridge ، AZ
عرض العرض التوضيحي (يعيش فقط خلال مؤتمر الماجستير)
يراقب بيانات المستشعر (درجة الحرارة ومستوى البطارية و RSSI)
يغطي 34-35 موقعًا على مساحة واسعة تقريبًا. 1 كم 2
التواصل الآمن مع AWS IoT من أجل Wi-Fi
واجهة ويب مستقلة للجهاز لعرض البيانات بسهولة
عرض طوبولوجيا MIWI Mesh في WSN Monitor GUI
تسجيل البيانات إلى ملف CSV
أجهزة تشغيل البطارية
تعرض تقنيات مختلفة تتناول نفس المهمة
Smart Secure Connection
في Masters 2019 ، قمنا بمراقبة درجات الحرارة على مستوى المؤتمر باستخدام 3 شبكات مختلفة في وقت واحد تقارير في لوحة معلومات يمكن الوصول إليها بسهولة يمكن الوصول إليها عبر الإنترنت لعرض معلومات 34 موقعًا. بالإضافة إلى ذلك ، بالنسبة لتنفيذ Lora ، أضفنا عقدة ملعب للجولف يتم وضعها خارج الفندق لعرض إمكانيات Lora طويلة المدى.
يتم اختراق النظام بشكل أساسي من جزأين:
يمكن تحقيق نفس العرض التوضيحي والوظائف باستخدام أي من التقنيات الثلاثة. ومع ذلك ، فإن كل تقنية لها نقاط القوة والعيوب الخاصة بها. نحن نقدم هذا التفسير والرمز الداعم لمساعدة عملاء الرقائق على اختيار التكنولوجيا التي تناسب تطبيقهم بشكل أفضل.
ملاحظة: يتم توفير الرمز هنا كما هو ولم يتم اختباره لجودة الإنتاج. لديها بعض مشكلات المعرفة في قسم السحابة الذي نذكره لاحقًا. أنت مسؤول تمامًا عن اختبار الرمز وتكييفه على نظامك الخاص.
يحتاج المستخدم إلى بوابة لعرض البيانات. لجعل طريقة عرض مستقل منصة لا تتطلب التثبيت أو كلمة مرور نختار عرض البيانات على صفحة الويب HTML + JavaScript .
صفحة الويب ليست سوى أداة تقوم باسترداد البيانات من نقطة نهاية البيانات ، ويمكن استبدالها بتطبيق هاتف أو إضافته إلى عرض لكل مستخدم في منتج نهائي.
لجعل تطبيقنا معياري ومستقل على تطبيق الواجهة الأمامية ، سواء كان موقع ويب أو تطبيق للجوال. قررنا تنفيذ واجهة برمجة تطبيقات مريحة باستخدام Flask
يتم إرجاع البيانات ككائن JSON من نقطة النهاية ويمكن عرضها هنا.
لغرض هذا العرض التوضيحي ، استخدمنا مثيل Amazon EC2 Ubuntu Virtual Machine (نظرًا لأننا كنا بالفعل نستخدم AWS IoT Core) لإدارة جميع خدماتنا بسهولة على نفس الواجهة ..
ومع ذلك ، يمكن تحقيق الشيء نفسه مع Digitalocean كبديل. في تطبيق العالم الحقيقي ، من المحتمل أن يكون لديك الخادم الخاص بك وهذه الخطوة غير ضرورية.
من أجل هذا العرض التوضيحي ، عند استخدام Wi-Fi أو 802.15.4 (MIWI) ، قررنا الذهاب مع Amazon AWS IOT Core .
عند استخدام Lora & Lorawan ، يجب عليك تسجيل واستخدام أحد مقدمي خدمات Lorawan مثل ** Things Network (TTN) ** أو Senet.
لغرض هذا العرض التوضيحي ذهبنا مع TTN. لقد نجحنا أيضًا في تحويل هذا العرض التوضيحي إلى Senet في الهند ، لكن هذا خارج نطاق هذه الصفحة.
يمكن أن يكون التصميم والتكنولوجيا المستخدمة في العقد النهائية:
عند اختيار العقد النهائية ، يحتاج المستخدم إلى مراعاة:
وتناقش كل نقطة من هذه النقاط في أقسام العقدة النهائية أدناه.
الرسم البياني أعلاه لخص النظام. العقد النهائية في وضع السكون حتى وقت معين حيث تستيقظ ، ويرسل البيانات إلى البوابة ثم يعود إلى النوم.
يحتاج Lora و Miwi إلى بوابة مخصصة للجسر من Lora/Miwi إلى Wi-Fi قبل إرسال البيانات إلى السحابة. يتمتع Wi-Fi بميزة أنه لا يحتاج إلى بوابة مخصصة إذا كانت هناك تغطية Wi-Fi بالفعل والتي هي الحال لموقع الفندق لدينا.
يتم إرسال البيانات إلى مزود Servicer Cloud. AWS IoT ل Wi-Fi و Miwi و TTN ل Lora. سيحصل تطبيق Flask الخاص بنا على البيانات وتوفير نقطة نهاية بيانات معيارية يمكن أن تقدمها صفحة الويب الخاصة بنا. تطبيق Flask وواجهة الويب على حد سواء على مثيل AWS EC2 الخاص بنا.
يمكن للمستخدم بعد ذلك الوصول إلى صفحة الويب الخاصة بنا من أي جهاز في أي مكان يريده.
في هذا القسم نناقش كيفية إعداد الجزء السحابي من العرض التوضيحي.
نستخدم خدمتين من AWS في هذا العرض التوضيحي ، AWS EC2 كمنصة استضافة الخادم. و AWS IoT ل Wi-Fi و Miwi End Notes MQTT وسيط.
لاستضافة الخادم الخاص بك ، سيتعين عليك إنشاء مثيل Virtual Machine EC2 قبل نشر Apache فيه. العملية سهلة ومباشرة إلى الأمام بمجرد أن تكون حساب AWS جاهزًا.
للحصول على دليل خطوة بخطوة ، يرجى اتباع دليل Amazon هنا.
بالنسبة إلى العرض التجريبي ، ذهبنا مجانًا هذا النوع من المثيل: خادم Ubuntu 16.04 LTS Free Tier (تمت ترقيته إلى المتوسط أثناء المؤتمر لإقامة الطلب)
في إعداد الأمان ، السماح بالوصول إلى حركة HTTP و HTTPS و SSH الواردة والخارجية. يمكنك أيضًا ضبط إعداد الأمان حسب رغبتك. أيضًا ، يرجى الاحتفاظ بالمفتاح الخاص للوصول إلى المثيل آمنًا حتى تتمكن من دفع بياناتك فيه والتحكم في الخادم.
للوصول إلى الخادم الخاص بك ، اتبع الأدلة المتاحة في موقع Amazon هنا. ### ستحتاج العقد Wi-Fi إلى الاتصال بـ AWS IoT Core لإرسال بيانات المستشعر عبر MQTT.
لإعداد AWS IoT Cloud ، يمكنك متابعة دليل المستخدم لمشروع AWS Zero Touch Provisioing (من القسم 2 لتثبيت البرامج إلى القسم 5 AWS IoT Luck-In Lime) ، يحتاج المستخدم إلى إنشاء وظيفة Lambda وقاعدة IOT AWS ودور IAM لتوفير AWS.
AWS Zero Touch Provisioing Kit هو مشروع حول توفير مجموعة التوفير الآمنة لـ Zero Touch للاتصال والتواصل مع خدمة IoT Amazon Web Services (AWS). يمكن العثور على دليل المستخدم لمشروع AWS Zero Touch Provisioing Kit من أدناه: http://microchipdeveloper.com/iot:ztpk
بمجرد قيام مثيل EC2 بأعلى وتشغيله بعد اتباع الخطوات المذكورة أعلاه ، ستحتاج إلى تثبيت Apache وتوجيهه لاستضافة صفحة الويب الخاصة بنا وتطبيق Flask.
مثيل EC2 يأتي بالفعل مع Python ، تأكد من أنك git pip لأننا سنحتاجه لاحقًا. $ sudo apt-get update و sudo apt-get install python3-pip
أولاً ، قم بتثبيت Flask على مثيل EC2 الخاص بك: $ pip3 install Flask
انسخ ملف "Server/WSN_Server.py" إلى مثيل EC2.
الآن دعنا نصف أجزاء من الكود الذي سترغب في تعديله والتكيف مع تطبيقك:
ستجد قواميس تسمى "UsmasterSnodelocation" و "IndiamasterSnodeLocation" .. والسبب هو ، أردنا إعادة استخدام لوحاتنا لموقع العرض التجريبي المتعدد دون تغيير الكود على اللوحة ، لذلك نعطي كل عقدة رقمًا واستخدام هذا القاموس لرسم الخريطة للعقدة إلى الغرفة التي يتم وضعها في الداخل.
على سبيل المثال ، Node4 خلال الولايات المتحدة الماجستير على "Desert Suite 4". ثم شحننا نفس العقدة إلى الهند ووضعها في غرفة "Dominion". وبهذه الطريقة ، يمكن استخدام نفس العقدة ، مع نفس الرمز لموقع مختلف فقط عن طريق تغيير تطبيق Flask دون الحاجة إلى برنامج PhysicAll للجهاز.
إن تحديث الكود جسديًا على اللوحة ليس دائمًا مناسبًا في هذا المجال. نشجعك على التفكير في طرق مثل هذه والتخطيط إلى الأمام لتجنب تحديث اللوحة FW.
#our Rooms database
USMastersNodeLocation = {
"Node1" : "Desert Suite 1" ,
"Node2" : "Desert Suite 2" ,
"Node3" : "Desert Suite 3" ,
"Node4" : "Desert Suite 4" ,
"Node5" : "Desert Suite 5" ,
"Node6" : "Desert Suite 6" ,
"Node7" : "Desert Suite 7" ,
"Node8" : "Desert Suite 8" ,
"Node9" : "Pinnacle Peak 1" ,
"Node10" : "Pinnacle Peak 2" ,
"Node11" : "Pinnacle Peak 3" ,
"Node12" : "Wildflower A" ,
"Node13" : "Wildflower B" ,
"Node14" : "Wildflower C" ,
"Node15" : "Grand Canyon 1" ,
"Node16" : "Grand Canyon 2" ,
"Node17" : "Grand Canyon 3" ,
"Node18" : "Grand Canyon 4" ,
"Node19" : "Grand Canyon 5" ,
"Node20" : "Grand Canyon 9" ,
"Node21" : "Grand Canyon 10" ,
"Node22" : "Grand Canyon 11" ,
"Node23" : "Grand Canyon 12" ,
"Node24" : "Grand Sonoran A" ,
"Node25" : "Grand Sonoran B" ,
"Node26" : "Grand Sonoran C" ,
"Node27" : "Grand Sonoran D" ,
"Node28" : "Grand Sonoran H" ,
"Node29" : "Grand Sonoran I" ,
"Node30" : "Grand Sonoran J" ,
"Node31" : "Grand Sonoran K" ,
"Node32" : "ATE / Grand Canyon 6" ,
"Node33" : "Cyber Cafe / Grand Sonoran G" ,
"Node34" : "Grand Saguaro East/West" ,
"Node35" : "Golf course"
}نقوم بتخزين البيانات التي نتلقاها على ملف CSV. تم تحديد موقع الملف والاسم على السطر 141-143.
###################################
###### Files to store data ########
###################################
wifiFile = open ( '/home/c43071/WSN/wifiData.csv' , 'a' )
miwiFile = open ( '/home/c43071/WSN/miwiData.csv' , 'a' )
loraFile = open ( '/home/c43071/WSN/loraData.csv' , 'a' )
WiFiWriter = csv . writer ( wifiFile )
MiWiWriter = csv . writer ( miwiFile )
LoRaWriter = csv . writer ( loraFile )للحصول على إشعارات من العقدة النهائية ، يحتاج التطبيق إلى الاشتراك في خوادم AWS IoT Core و TTN (أو أي خادم تختاره)
استخدمنا Publickly Pythond Code لـ AWS IoT. لاستخدامه ، يرجى الذهاب إلى Amazon Github Repo هنا.
يمكن استخدام الكود الخاص بنا كما هو إذا استبدلت مسار الشهادات بمسار الشهادة الخاص بك.
# For certificate based connection
myMQTTClient = AWSIoTMQTTClient ( "WSNClientID" )
# For TLS mutual authentication with TLS ALPN extension
myMQTTClient . configureEndpoint ( "a3adakhi3icyv9.iot.us-west-2.amazonaws.com" , 443 )
myMQTTClient . configureCredentials ( "/home/c43071/WSN/VeriSign.pem" , "/home/c43071/WSN/WSN_BE_private.pem" , "/home/c43071/WSN/WSN_BE_certificate.pem" )
myMQTTClient . configureOfflinePublishQueueing ( - 1 ) # Infinite offline Publish queueing
myMQTTClient . configureDrainingFrequency ( 2 ) # Draining: 2 Hz
myMQTTClient . configureConnectDisconnectTimeout ( 10 ) # 10 sec
myMQTTClient . configureMQTTOperationTimeout ( 5 ) # 5 sec
myMQTTClient . connect ()يتوقع الكود أن تكون الموضوعات معروفة وموضوع واحد لكل تقنية. يمكن للمستخدم استخدام مواضيع مختلفة مع وصول مختلف إذا رغب في ذلك.
myMQTTClient . subscribe ( "/Microchip/WSN_Demo/WiFi" , 1 , WiFiCallback )
myMQTTClient . subscribe ( "/Microchip/WSN_Demo/MiWi" , 1 , MiWiCallback ) يتوقع الرمز كائن JSON بتنسيق: {'nodeID': "Node1", 'Battery': "4.99V", 'Temperature': 81.46, 'RSSI': -55}
لا تتطلب شبكة الشيء مصادقة أو شهادات متبادلة للاتصال مثل AWS ، بدلاً من ذلك أنها تعتمد على اسم المستخدم وكلمة المرور. وبالتالي ، نعرض الحالة كيفية الاتصال بخادمهم باستخدام حزمة "flask_mqtt".
from flask_mqtt import Mqtt
app . config [ 'MQTT_BROKER_URL' ] = 'us-west.thethings.network'
app . config [ 'MQTT_BROKER_PORT' ] = 1883
app . config [ 'MQTT_USERNAME' ] = 'jwmarriottdesertridge'
app . config [ 'MQTT_PASSWORD' ] = ''
app . config [ 'MQTT_REFRESH_TIME' ] = 1.0 # refresh time in seconds
mqtt = Mqtt ( app )
@ mqtt . on_connect ()
def handle_connect ( client , userdata , flags , rc ):
print ( "MQTT connected!!! r n " )
mqtt . subscribe ( 'jwmarriottdesertridge/devices/+/up' )
@ mqtt . on_message ()
def handle_mqtt_message ( client , userdata , message ):ستلاحظ أن حمولة الرسائل الخاصة بـ Lora مختلفة قليلاً عن Wi-Fi و Miwi ، وهذا يرجع إلى إضافة TTN Gateway بعض المعلومات إلى حمولة العقدة النهائية وبسبب محاولة تقليل حمل الدفع قدر الإمكان لتقليل الطاقة المستخدمة وزيادة الكفاءة. يرجى الرجوع إلى قسم لورا أدناه.
### Apache
هناك عدد كبير من البرامج التعليمية Apache والمحتوى هناك ، نذكر فقط الانحرافات هنا.
أولاً ، احصل على Apache و WSGI for flask: sudo apt-get install apache2 libapache2-mod-wsgi-py3
إنشاء ملف WSGI: vi wsn_demo.wsgi
ضع هذا في الملف أعلاه:
import sys
sys . path . insert ( 0 , '/var/www/html/WSN' ) إنشاء symlink بحيث يظهر دليل المشروع في/var/www/html: $ sudo ln -sT ~/WSN /var/www/html/WSN
تمكين WSGI: sudo a2enmod wsgi
تكوين Apache (ستحتاج إلى sudo لتحرير الملف) $ sudo vi /etc/apache2/sites-enabled/000-default.conf
سنقوم بإنشاء مضيف افتراضي ، أحدهما لنقطة نهاية البيانات وواحد لموقع الويب Out.
السطر 9 و 49 أدناه تشير إلى اسم موقع الويب الخاص بك. السطر 14 لديك موقع ملف WSGI الخاص بك.
الصق هذا في "000 default.conf" بعد إجراء تعديلات مضيفك كما هو مذكور أعلاه:
< VirtualHost *:80 >
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName demo2.microchip.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
WSGIDaemonProcess WSN threads=5
WSGIScriptAlias / /var/www/html/WSN/wsn_demo.wsgi
< Directory WSN >
WSGIProcessGroup WSN
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</ Directory >
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</ VirtualHost >
< VirtualHost *:80 >
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName demo.microchip.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/Masters
DirectoryIndex index.html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</ VirtualHost > أعد تشغيل الخادم: $ sudo apachectl restart
أنت الآن بحاجة إلى إدخال DNS الذي سيخطط من "Demo.microchip.com" و "Demo2.Microchip.com" إلى عنوان IP العام لمثيل EC2.
بمجرد الانتهاء من ذلك ، تابع وعرض بياناتك في رابط مشابه لـ: http://demo2.microchip.com/wsn/data/lora/
وسيكون موقع الويب Similr to: (اعتمادًا على كيفية تكوين Apache وأين تضع ملفات HTML الخاصة بك): http://demo.microchip.com/wsn/masters/
عندما تفحص صفحات HTML التي نقدمها في "Server Us IoT Network IOT"
الملف المهم هو "Scripts.js" الذي يذهب وقراءة البيانات من نقاط نهاية البيانات لدينا أعلاه.
الباقي هو مجرد ملفات HTML التي تحتوي على جدول وملفات SVG لخريطة الموقع.
في هذا القسم ، نصف الخطوات اللازمة لبدء إرسال بيانات المستشعر إلى السحابة باستخدام كل تقنية معنية.
أسباب قد ترغب في اختيار Wi-Fi كعقدة النهاية الخاصة بك:
** مزايا wifi **
الأسباب التي تجعل Wi-Fi خيارات أقل مثالية:
تنام لوحة Wi-Fi لفترة زمنية قابلة للتكوين. عندما يستيقظ ، يتحقق لمعرفة ما إذا كانت قراءة المستشعر قد تغيرت منذ آخر الإبلاغ عن السحابة. إذا اختارت تحديث القراءة ، فسيتم توصيلها بوحدة Wi-Fi وتوثيقها باستخدام AWS Cloud باستخدام رقاقة Crypto-Auth (ECC508) وإرسال القيم المحدثة.
يجب أن يكون المجلس مُثبَّعًا لأول مرة فقط قبل استخدامه ، نذهب إلى هذا أدناه.
بالنسبة للعروض التجريبية ، استخدمنا مستشعر IoT الذي يحتوي على MCU (SAML21) ووحدة Wi-Fi Microcrolge (ATWINC1500) وأجهزة استشعار أخرى.
لمزيد من المعلومات حول HW ، يرجى الانتقال إلى هذه الصفحة هنا.
المجلس غير متاح للشراء في الوقت الحالي microchip Direct. تم توزيعه على الحاضرين في مؤتمر الماجستير مجانًا وسيتم إضافته لاحقًا لخيار الشراء. في الوقت نفسه ، يمكنك أن تفعل الشيء نفسه باستخدام مجموعة AWS Zero Touch.
لفلاش البرامج الثابتة إلى اللوحة ، يرجى الاطلاع على الخيارات هنا.
يرجى التوجه إلى هذه الصفحة لتثبيت الأدوات اللازمة.
الآن. إذا كنت ترغب في استخدام Wi-Fi ، فإن الخطوات مثل هذه:
تتم تغطية الخطوة الأولى في قسم السحابة. يمكنك أيضًا المضي قدمًا في Aws.Amazon.com ومتابعة دليلهم في حالة تغيير الخطوات. سنقوم بتغطية الخطوات الثانية والثالثة هنا.
جهاز ECC608 هو Valut الذي يحمي هوية جهازك والمصادقة على AWS Cloud.
لتوفير جهاز ECC608 ، يرجى اتباع الخطوات هنا.
بمجرد الانتهاء من الخطوات المذكورة أعلاه ، يتم توفير ECC608. الجزء المتبقي هو تخزين شهادة الجهاز على WINC1500.
يمكن القيام بذلك بشكل برمجي من جانب التطبيق عن طريق الاتصال: m2m_ssl_send_certs_to_winc أعلاه مناسب للإنتاج. البديل هو باستخدام الأداة في هذا الدليل.
بمجرد توفير كل من ECC608 و WINC1500. يمكنك أخيرًا وميض اللوحة بالتطبيق الحقيقي.
يحتوي مثال التطبيق على مجلد Wi-Fi يحتوي على رمز مرجعي للقيام بذلك.
هناك للمشاريع هناك:
يمكنك تغيير AP SSID وكلمة المرور التي تريد الاتصال بها على الأسطر 61/63 على MAIN.H
اسم العقدة على السطر 73 ، على Main.h
يذهب SAML21 للنوم ويستيقظ في مقاطعة RTC. ستذهب MCU للنوم عند دعوة إلى: system_sleep(); ويستيقظ عند استلام مقاطعة RTC. للتحكم في مدة مقاطعة RTC ، قم بتكوين العدد في الوظيفة "Configure_rtc_count" على RTC.C ، تعتمد مدة النوم على عدد المرات التي تريد تحديثها للبيانات وميزانية الطاقة الخاصة بك.
يجب عليك إدخال معرف عميل MQTT لتكون مشابهة لمعرف الموضوع في شهادة جهازك. أدخل معرف العميل في متغير "gawsmqtclientid" في السطر 95 من "Winc15x0.c"
هذا إلى حد كبير ، والآن انتقل إلى ملف Main.c ، وقراءة الوظيفة الرئيسية والتعرف عليها وعندما تكون جاهزًا ، قم ببناء وميض SAML21 مع الرمز.
إذا قمت بتسجيل الدخول إلى Consle Test Cons المشترك في موضوع Wi-Fi المذكور أعلاه (/microchip/wsn_demo/wifi) ، فيجب أن ترى رسالة جديدة تم استلامها بمجرد تشغيل اللوحة.
لورا تقف على المدى الطويل. Lorawan يرمز إلى شبكات المساحة واسعة النطاق. لوروان هي الشبكة التي تعمل عليها لورا. Lorawan هو بروتوكول طبقة التحكم في الوصول إلى الوسائط (MAC) ولكنه أساسًا هو بروتوكول لطبقة الشبكة لإدارة الاتصالات بين بوابات LPWAN وأجهزة نهاية العقدة كبروتوكول توجيه ، يحتفظ به تحالف LORA. بعض التطبيقات التي يمكن إنجازها باستخدام LORا هي مواقف ذكية للسيارات والسيارات ، والمرافق ، وإدارة البنية التحتية ، واكتشاف الحرائق وإدارتها ، وإدارة النفايات ، وأتمتة المنازل لإنترنت الأشياء ، تتيح الأجهزة الذكية ، والزراعة الذكية وإدارة الثروة الحيوانية ، ومراقبة درجة الحرارة والرطوبة ، وأجهزة استشعار مستوى المياه والتحكم في الري.
تم رصد درجة حرارة الغرف المنتشرة عبر منتجع ضخم باستخدام Lora. يمكن تطوير تطبيق LORA النموذجي من خلال وجود 4 مكونات من الجهاز والبوابة وخادم الشبكة وخادم التطبيق. تم استخدام الجهاز النهائي مع مستشعر درجة الحرارة (يعمل على البطاريات) لإظهار مزايا Lorawan مثل الطاقة المنخفضة وآمنة ومسافة طويلة. يمكن للمستخدمين الجدد في تطوير التطبيقات باستخدام Lorawan العثور على نظرة عامة على بنية نظام Lorawan هنا.
تأكد من توصيل البوابة بخادم شبكة الأشياء - الخطوات المذكورة هنا
بمجرد أن تكون البوابة متاحة ، "قم بإنشاء تطبيق" متبوعًا بـ "إنشاء جهاز جديد" لتسجيل التطبيق والجهاز النهائي إلى TTN
بمجرد إنشاء الجهاز النهائي في وحدة التحكم في شبكة الأشياء ، تم إجراء تغييرات كود ضرورية في رمز مصدر التطبيق لـ Deveui و AppeUi. سوف نستخدم طريقة OTAA للانضمام لتطبيقنا.
لتمكين قياس جهد البطارية ، تأكد من اختصار PA15 إلى GND. يجب أن يكون I/O Jumper و MCU Jumper Bypassmode
قم بتوصيل ATSAMR34-XPRO بالكمبيوتر باستخدام كبل MICRO USB من خلال مزود الطاقة EDBG. سوف ATSAMR34-XPRO تعداد كمنفذ COM. باستخدام تطبيق طرفي @ baudrate 115200 ، البيانات - 8 بت ، التكافؤ - لا شيء ، توقف - 1 بت والتحكم في التدفق - لا يوجد إعدادات من المستخدمين من مراقبة المعلومات من مثال البرامج الثابتة
افتح المشروع - apps_enddevice_demo باستخدام استوديو Atmel قم بتكوين Deveui و AppKey و AppeUi باستخدام ملف conf_app.h المتاح في الدليل التالي - /src /config
إذا كان التطبيق الذي تم تطويره يستخدم نطاقات NA/AU ، فيمكن الاستخدام اختيار النطاق الفرعي الذي تستمع إليه البوابة. كما يسمح النطاق NA/AU بما يصل إلى 64 قنوات الوصلة الصاعدة. بوابات شائعة غير مكلفة هنا على 8 قنوات فقط ، وبالتالي مطلوب اختيار النطاق الفرعي. تستمع بوابة الأشياء على النطاق الفرعي - 2 ل NA تسمى us902 وفقًا للمعلمات الإقليمية في لوروان. بالنسبة للعروض التوضيحية ، استخدمنا منهجية OTAA (فوق التنشيط الجوي) المنهجية في لوروان
برنامج العرض التوضيحي باستخدام خيار "ابدأ بدون تصحيح" على استوديو Atmel. بعد برمجة العرض التوضيحي ، سيحاول الجهاز النهائي (ATSAMR34-XPRO) الانضمام إلى خادم شبكة Lorawan (شبكة الأشياء). إذا كانت البوابة متصلة بالإنترنت ومتصل بخادم شبكة الأشياء ، فإن طلب Join سيؤدي إلى قبول انضمام فوري.
يحتوي TTN على ميزة تسمى وظائف TTN والتي تتيح للمستخدمين تغيير بايت ، المرسلة عبر شبكة الأشياء ، إلى الحقول القابلة للقراءة البشرية. لإضافة واجهة برمجة التطبيقات لهذا العرض التوضيحي ، انتقل إلى التطبيقات -> xxxx -> تنسيقات الحمولة النافعة xxxx تشير إلى اسم تطبيق المستخدمين إلى قسم وحدة فك الترميز وحفظ وظيفة وحدة فك الترميز أدناه
function Decoder(bytes, port) {
var length = bytes.length;
if(length == 6){
var temperature = (bytes[0] <<8) | bytes[1];
var battery = (bytes[2] <<8) | bytes[3];
battery = battery/100 + "V";
var time = bytes[4] + ":" + ('0' + bytes[5].toString(10)).slice(-2);
return{
"temperature": temperature /100,
"battery": battery /// 100, // this operation now is done in earlier step
"time": time
};
}else
{
var result = "";
for (var i = 0; i < length; i++) {
result += String.fromCharCode(parseInt(bytes[i]));
}
return {
"msg": result,
};
}
}
بعد تكوين وحدة فك الترميز وبرمجة اللوحة برمز مصدر التطبيق. يجب أن تبدأ بيانات التطبيق في الظهور في النافذة الطرفية وعلى وحدة التحكم في شبكة الأشياء
تحدث عمليات نقل المستشعر اللاحقة كل 15 دقيقة
مقدمة MIWI تعني للرقاقة اللاسلكية. MIWI هو بروتوكولات لاسلكية خاصة مصممة من قبل تقنية الرقائق الدقيقة التي تستخدم أجهزة الراديو الرقمية الصغيرة المنخفضة القوى المستندة إلى معيار IEEE 802.15.4 لشبكات المنطقة الشخصية اللاسلكية (WPANS). وهي مصممة لمعدلات نقل البيانات المنخفضة والمسافة القصيرة ، والشبكات المقيدة في التكلفة ، مثل المراقبة الصناعية والتحكم ، وأتمتة المنازل والبناء ، والتحكم عن بعد ، وأجهزة الاستشعار اللاسلكية منخفضة الطاقة ، والتحكم في الإضاءة وقراءة العداد الآلي. يدعم بروتوكول MIWI ثلاثة طبولوجيا شبكات
مزايا ميوي
تم رصد درجة حرارة المقدمة التجريبية من الغرف التي تنتشر عبر منتجع ضخم باستخدام طوبولوجيا شبكة MIWI Mesh.
يمكن تطوير تطبيق شبكة MIWI النموذجي من خلال وجود 3 مكونات.
منسق ومنسق PAN من نوع FFD (جهاز الوظيفة الكاملة) ويمكن أن يكونوا من نوع FFD (جهاز الوظيفة الكامل) / RFD (جهاز الوظيفة المخفضة). تم استخدام أجهزة نهاية RFD لغرض هذا العرض التوضيحي بسبب القدرة على الذهاب إلى النوم. تم استخدام الجهاز النهائي مع مستشعر درجة الحرارة (يعمل على البطاريات) لإظهار مزايا شبكة شبكة MIWI مثل الطاقة المنخفضة ، والشفاء الذاتي ، إلخ
ترتبط عقدة المؤسسة بالمنسق بلوحة SAMA5D2 XPRO ولديها اتصال WILC3000 لاتصال Wi-Fi (الإنترنت). يشار إلى هذا المزيج من الأجهزة باسم جسر Miwi في هذا العرض التوضيحي. تقوم أجهزة التوجيه والتعيينات النهائية بإرسال بيانات دورية إلى التنسيق المشترك. يقرأ SAMA5D2 البيانات من المنصات المشتركة ويرسل نفس الشيء إلى مثيل AWS EC2. يرسل مثيل AWS EC2 البيانات المستلمة إلى أداة مراقبة WSN وإلى خادم الويب. تصور أداة مراقبة WSN طوبولوجيا شبكة تم تكوينها من البيانات المستلمة من جهاز التوجيه وعقد المستشعر والمنظور المشترك. يمكن أيضًا استخدام شاشة WSN لمراقبة شبكة MIWI.
الأجهزة
برمجة
AT91SAMA5D27 على Linux
وحدات ATWILC3000 والبرامج الثابتة
$ /root من حزمة buildroot. تتم إضافة البرامج الثابتة في $ /lib/firmware/mchp .خدمات مثيل AWS Cloud EC2
أداة مراقبة WSN
إجراء خطوة بخطوة لتكرار إعداد MIWI Demo Sama5d2 Linux
إحضار واجهة wifi واتصال wifi
$ root كاسم مستخدم.$/root/mchp/ المجلد يحتوي على وحدة برنامج التشغيل WILC3000.$/root/mchp يحتوي على وحدة برنامج تشغيل WILC3000.$ /lib/firmwae/mchp/wilc1000_wifi_firmware.bin$ vi تعديل البرنامج النصي لبيانات اعتماد جهاز التوجيه.إعداد مثيل AWS Cloud EC2 نستخدم خدمات EC2 (Amazon المرونة Cloud Cloud) لهذا العرض التوضيحي. EC2 مثيل يستضيف خادمين TCP لجسر شبكة MIWI وأداة مراقبة WSN. AWS EC2 مثيل لاستضافة خادم Python ، يتطلب جهاز AMI Linux الظاهري. سيوفر مثيل Amazon EC2 جهاز Linux الظاهري. العملية سهلة ومباشرة إلى الأمام بمجرد أن تكون حساب AWS جاهزًا.
nohup python miwi_wsn_server_4.py & cd iot nohup python iot_publish_2.py &الإعداد ميوي
لتوضيح MIWI WSN ، منسق عموم البرنامج مع ملف المشروع المتاح على/MIWI/SAMR30/PAN_CORD_MOD. برنامج العقد المنسق مع ملف المشروع متاح على/miwi/samr30/cord_mod1 وبرنامج لوحة المستشعر مع ملف المشروع المتاح على/miwi/samr30/sensor_mod1.
أداة مراقبة WSN
أداة مراقبة WSN هي أداة ملكية MicroChip لـ 802.15.4 شاشة الشبكة و Contorl. في هذه الأداة ، سيتم عرض اتصال شبكة MIWI مع العقد المعنية. يعرض WSN Monitor Toll أيضًا درجة الحرارة ، و RSSI Vlaue لعقد الشبكة ، وإخطار طاقة البطارية. للتواصل مع خادم EC2 ، يلزم عنوان IP العام EC2. EC2 مثيل عنوان IP العام متاح في صفحة مثيل EC2 كما هو مذكور أعلاه. رقم المنفذ لاتصال أداة مراقبة WSN هو $ 8080 بمجرد توصيل أداة مراقبة WSN ، وسيقوم EC2 Server بإعادة توجيه الحزمة التي تم استلامها من شبكة MIWI Clinet.
بعد الاتصال الناجح مع خادم EC2 ، تبدأ WSN Monitor في تلقي بيانات شبكة MIWI وتعرضها.