قم بإنشاء شبكة مستشعر Wi-Fi / MIWI (15.4) / Lora اللاسلكية لمراقبة درجات الحرارة التي تغطي مساحة واسعة مثل فندق أو مصنع.
دراسة حالة: مراقبة درجة حرارة الفصول الدراسية خلال مؤتمر Microchip Masters الذي عقد في JW Marriot Desert Ridge ، AZ
عرض العرض التوضيحي (يعيش فقط خلال مؤتمر الماجستير)
يراقب بيانات المستشعر (درجة الحرارة ومستوى البطارية و RSSI)
يغطي 34-35 موقعًا على مساحة واسعة تقريبًا. 1 كم 2
التواصل الآمن مع AWS IoT ل Wi-Fi و Miwi
واجهة ويب مستقلة للجهاز لعرض البيانات بسهولة
تسجيل البيانات إلى ملف CSV
أجهزة تشغيل البطارية
تعرض تقنيات مختلفة تتناول نفس المهمة
Smart Secure Connection
في Masters 2018 ، قمنا بمراقبة درجات الحرارة على مستوى المؤتمر باستخدام 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 هنا. ### ستحتاج العقد النهائية لـ AWS IOT و MIWI إلى الاتصال بـ 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. الإصدار 1.0 من مواصفات Lorawan بعض التطبيقات التي يمكن إنجازها باستخدام LORا هي إدارة السيارات الذكية والمرافق وإدارة البنية التحتية ، واكتشاف الحرائق وإدارتها ، وإدارة النفايات ، والأتمتة المنزلية لإنترنت الأشياء ، تتيح الأجهزة الذكية ، والزراعة الذكية وإدارة الثروة الحيوانية ، ومراقبة درجة الحرارة والرطوبة ، وأجهزة استشعار مستوى المياه.
مزايا لوروان
تم رصد درجة حرارة المقدمة التجريبية من الغرف التي تنتشر عبر منتجع ضخم باستخدام Lora. يمكن تطوير تطبيق LORA النموذجي من خلال وجود 4 مكونات من الجهاز والبوابة وخادم الشبكة وخادم التطبيق. تم استخدام الجهاز النهائي مع مستشعر درجة الحرارة (يعمل على البطاريات) لإظهار مزايا Lorawan مثل الطاقة المنخفضة وآمنة ومسافة طويلة.
الأجهزة
برمجة
إجراء خطوة بخطوة لتكرار العرض التوضيحي
ابحث عن ملف Variant.cpp في حزمة لوحة Sodaq داخل تثبيت Arduino. تم تحديد ملف variant.cpp في هذا الدليل C: Users cxxxx appdata local arduino15 packages sodaq hardware samd 1.6.18 ariants sodaq_explorer. اعتمادًا على تثبيت Arduino وإصدارك ، قد يكون مختلفًا قليلاً.
افتح ملف variant.cpp مع أي محرر وجعل الإضافة التالية: البحث في الملف ، الجدول بهذا الاسم: const pindescription g_apindescription [] = بعد السطر الأخير في الجدول ، أضف ما يلي: ] pin_attr_analog ، adc_channel13 ، not_on_pwm ، not_on_timer ، external_int_none} ، // vbat
يمكن للمستخدم بعد ذلك إضافة السطر التالي ، #define vbat_measure (48u) إلى متغير الملف. في نفس المسار مثل variant.cpp أو أو أو يمكن أن يضيف فقط #define vbat_measure 48 في المخطط الرئيسي. ثم احفظ الملف.
ثم يمكن للمستخدم قراءة جهد البطارية (MV) مع هذا الرمز:
'#define ADC_AREF 3.3f'
'#define BATVOLT_R1 4.7f'
'#define BATVOLT_R2 10.0f'
'#define VBAT_MEASURE 48'
pinMode(VBAT_MEASURE, INPUT);
uint16_t getBatteryVoltage()
{
pinMode(VBAT_MEASURE, INPUT);
uint16_t voltage = (uint16_t)((ADC_AREF / 1.023) * (BATVOLT_R1 + BATVOLT_R2) / BATVOLT_R2 * (float)analogRead(VBAT_MEASURE));
return(voltage);
}
نصائح: إذا كان الجهد الكبير المبلغ عنه خارجًا قليلاً أو متغيرًا/صاخبًا ، فيمكن للمستخدم القيام ببعض متوسط قراءة ADC
سيؤدي تسجيل البوابة وتوفير الجهاز النهائي إلى تمكين المستخدم من إنشاء حساب خادم الشبكة وتسجيل البوابة والجهاز النهائي. بعد إنشاء/التسجيل لحساب ما ، قم بتوصيل البوابة إلى خادم شبكة الأشياء. اتبع الخطوات في الرابط التالي لتسجيل البوابة
بمجرد أن تكون البوابة متاحة على الإنترنت ، "قم بإنشاء تطبيق" متبوعًا بـ "إنشاء جهاز جديد" لتسجيل التطبيق والجهاز النهائي إلى TTN عند إنشاء التطبيق وإنهاء الجهاز في TTN. فيما يلي الأشياء التي يجب الاهتمام بها أثناء إنشاء EUI و Keys في TTN لهذا التطبيق. اختر إنشاء أي تطبيق EUI و DEV EUI تلقائيًا. يجب أن يكون مفتاح التطبيق (16 بايت) AppkeyPrefix + Dev EUI والذي يعد جزءًا من رمز المصدر في Project jw_marriot_desert_ridge proj. ملاحظة: يمكن أن يكون مفتاح التطبيق أي شيء من اختيار المستخدم. يستخدم Demo طريقة cancatenation لاستخلاص مفتاح التطبيق وليس إلزاميًا لمطوري التطبيقات لاستخدام هذه الطريقة. بشكل افتراضي ، AppkeyPrefix هو {0xff ، 0xee ، 0xdd ، 0xcc ، 0xbb ، 0xaa ، 0x99 ، 0x88} ؛ يمكن تعديل Dev EUI كما هو موضح في الشكل
بمجرد إنشاء الجهاز النهائي في وحدة التحكم في شبكة الأشياء ، تم إجراء تغييرات كود ضرورية في رمز مصدر التطبيق لـ Deveui و AppeUi. سوف نستخدم طريقة OTAA للانضمام لتطبيقنا.
قبل برمجة الكود المصدر إلى SAMD21 على لوحة SODAQ ، تأكد من تثبيت الإصدار 1.6.11 في SODAQ Xplorer.
برنامج مجموعة Sodaq Xplorer باستخدام وضع تحميل التشغيل. اضغط على إعادة ضبط مرتين في تتابع سريع وبرمجة مجموعة Sodaq Xplorer باستخدام Arduino. يحتوي 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,
};
}
}
بعد تكوين وحدة فك الترميز وبرمجة اللوحة برمز مصدر التطبيق. يجب أن تبدأ بيانات التطبيق في الظهور.
مقدمة MIWI تعني للرقاقة اللاسلكية. MIWI هو بروتوكولات لاسلكية خاصة مصممة من قبل تقنية الرقائق الدقيقة التي تستخدم أجهزة الراديو الرقمية الصغيرة المنخفضة القوى المستندة إلى معيار IEEE 802.15.4 لشبكات المنطقة الشخصية اللاسلكية (WPANS). وهي مصممة لمعدلات نقل البيانات المنخفضة والمسافة القصيرة ، والشبكات المقيدة في التكلفة ، مثل المراقبة الصناعية والتحكم ، وأتمتة المنازل والبناء ، والتحكم عن بعد ، وأجهزة الاستشعار اللاسلكية منخفضة الطاقة ، والتحكم في الإضاءة وقراءة العداد الآلي. يدعم بروتوكول MIWI ثلاثة طبولوجيا شبكات
مزايا ميوي
تم رصد درجة حرارة المقدمة التجريبية من الغرف التي تنتشر عبر منتجع ضخم باستخدام طوبولوجيا شبكة MIWI Star.
يمكن تطوير تطبيق MIWI النموذجي من خلال وجود مكونين. منسق المقلاة والجهاز النهائي. يمكن للأجهزة النهائية FFD/RFD. تم استخدام أجهزة نهاية RFD لغرض هذا العرض التوضيحي بسبب القدرة على الذهاب إلى النوم. تم استخدام الجهاز النهائي مع مستشعر درجة الحرارة (يعمل على البطاريات) لإظهار مزايا
الأجهزة
برمجة
معلومات عامة ما هي AWS IoT؟ AWS IoT هو منصة سحابة مُدارة تتيح للأجهزة المتصلة بسهولة وتفاعل مع التطبيقات السحابية والأجهزة الأخرى. ما هو AWS Lambda؟ AWS Lambda هي خدمة الحوسبة التي تعمل على تشغيل الكود استجابة للأحداث وتدير تلقائيًا موارد الحوسبة المطلوبة في هذا الرمز. تسجيل الجهاز: يحدث "jitr" مرة واحدة في البداية لكل دالة Lambda دالة Lambda جديدة هي وسيلة لأتمتة إنشاء الأشياء. ستؤدي وظيفة Lambda إلى تشغيل عندما يقوم جهاز غير معروف به CA المعروف إلى توصيل ملخص لأشياء سوف تتعامل مع وظيفة Lambda
إجراء خطوة بخطوة لتكرار العرض التوضيحي MIWI
إنشاء حساب AWS
إعداد Lambda لإعداد Lambda اتبع الخطوات المذكورة في القسم "v. AWS IOTjust-In-time Setup"
قم بإنشاء نظام بيئي للشهادة لغرض هذا العرض التوضيحي ، نقوم بإنشاء سلسلة الثقة الخاصة بنا ، قم بتشغيل البرامج النصية هنا إلى:
سيتم إنشاء الشهادات التالية root-ca.crt/key signer-ca.crt/key
قم بتسجيل CA مع AWS IoT في شهادة CA الأخيرة ، وتطلب AWS من المستخدم تسجيلها وتفعيلها حتى يتمكن من تشغيل وظيفة Lambda عند اتصال جهاز يستخدم CA به. يتطلب جزء من التسجيل من المستخدم إثبات أن المستخدم لديه المفتاح الخاص إلى CA. خطوات للتسجيل
من أجل إنجاز خطوات التسجيل ، يجب على - تكوين بيانات اعتماد AWS CLI ، تفتح موجه الأوامر تنقل إلى "C: Program Files Amazon Awscli" نوع "AwsConfigure" إدخال معلومات من ملف بيانات حساب المستخدم - تشغيل AWS_REGISTER_SIGNER.PY
توفير ECC608 لتوفير يحتاج مستخدم ECC608 إلى:
قم بإنشاء زوج مفتاح عام/خاص للعبّر وإنشاء CSR لشهادة الجهاز.
افتح حل SAMR30 XPRO ECC على ATMEL STUDIO 7 ، قم بتوصيل لوحة EDBG USB ATWINC1500-XPRO على لوحة ATCRYPTOAUTH-B XPRO على ext3 من ATSAMR30-XPRO المفتوح وضبط برنامج الإعدادات التالية.
إنشاء شهادة الجهاز. لإنشاء شهادة جهاز WINC:
تخزين بيانات الشهادة في WINC1500. لتخزين بيانات الشهادة في WINC1500
تواصل مع AWS iotcloud ونشر إلى شيء