สร้าง Wi-Fi / Miwi (15.4) / เครือข่ายเซ็นเซอร์ไร้สาย Lorawan เพื่อตรวจสอบอุณหภูมิที่ครอบคลุมพื้นที่กว้างเช่นโรงแรมหรือโรงงาน
กรณีศึกษา: ห้องเรียนการตรวจสอบอุณหภูมิในระหว่างการประชุม Microchip Masters จัดขึ้นที่ JW Marriot Desert Ridge, AZ
ดูการสาธิต (มีชีวิตอยู่เฉพาะระหว่างการประชุม Masters เท่านั้น)
ตรวจสอบข้อมูลเซ็นเซอร์ (อุณหภูมิระดับแบตเตอรี่และ RSSI)
ครอบคลุมสถานที่ 34-35 แห่งในพื้นที่กว้างใหญ่ประมาณ 1 km2
การสื่อสารที่ปลอดภัยกับ AWS IoT สำหรับ Wi-Fi
เว็บอินเตอร์เฟสอิสระของอุปกรณ์เพื่อดูข้อมูลได้อย่างง่ายดาย
การแสดงโทโพโลยี Miwi Mesh ใน WSN Monitor GUI
การบันทึกข้อมูลไปยังไฟล์ CSV
อุปกรณ์ที่ใช้แบตเตอรี่
แสดงเทคโนโลยีที่แตกต่างกันในการจัดการงานเดียวกัน
Smart Secure Connected
ที่ Masters 2019 เราตรวจสอบอุณหภูมิทั่วทั้งการประชุมโดยใช้เครือข่ายที่แตกต่างกัน 3 เครือข่ายพร้อมกันลงในแผงควบคุมเดียวที่สามารถเข้าถึงได้ง่ายที่โฮสต์ออนไลน์เพื่อดูข้อมูลของสถานที่ 34 แห่ง นอกจากนี้สำหรับการใช้งาน LORA เราได้เพิ่มโหนดสนามกอล์ฟที่วางอยู่นอกโรงแรมเพื่อแสดงความสามารถในระยะยาวของ Lora
ระบบถูกบุกรุกเป็นหลักสองส่วน:
การสาธิตและฟังก์ชั่นเดียวกันสามารถทำได้โดยใช้เทคโนโลยีใด ๆ อย่างไรก็ตามแต่ละเทคโนโลยีมีจุดแข็งและข้อเสียของตัวเอง เราให้คำอธิบายนี้และรหัสสนับสนุนเพื่อช่วยลูกค้าไมโครชิพเลือกเทคโนโลยีที่เหมาะสมกับแอปพลิเคชันของพวกเขาได้ดีที่สุด
หมายเหตุ: รหัสที่นี่มีให้ตามที่เป็นอยู่และไม่ได้ทดสอบเพื่อคุณภาพการผลิต มีปัญหาความรู้บางอย่างในส่วนคลาวด์ที่เราพูดถึงในภายหลัง คุณมีความรับผิดชอบอย่างเต็มที่ในการทดสอบและปรับรหัสในระบบของคุณเอง
ผู้ใช้ต้องการพอร์ทัลเพื่อดูข้อมูล ในการสร้างมุมมองอิสระแพลตฟอร์มที่ไม่จำเป็นต้องมีการติดตั้งหรือรหัสผ่านที่เราเลือกที่จะแสดงข้อมูลบนหน้าเว็บ HTML + JavaScript
เว็บเพจเป็นเพียงเครื่องมือที่ดึงข้อมูลจากจุดสิ้นสุดข้อมูลสามารถแทนที่ด้วยแอปพลิเคชันโทรศัพท์หรือเพิ่มลงในมุมมองผู้ใช้ในผลิตภัณฑ์ขั้นสุดท้าย
เพื่อให้แอปพลิเคชันของเราเป็นแบบแยกส่วนและเป็นอิสระจากการใช้งานส่วนหน้าไม่ว่าจะเป็นเว็บไซต์หรือแอปพลิเคชันมือถือ เราตัดสินใจที่จะใช้ API แบบพักผ่อนโดยใช้ Flask
ข้อมูลจะถูกส่งคืนเป็นวัตถุ JSON จากจุดสิ้นสุดและสามารถดูได้ที่นี่
เพื่อจุดประสงค์ของการสาธิตนี้เราใช้อินสแตนซ์เครื่องเสมือน ของ Amazon EC2 Ubuntu (เนื่องจากเราใช้ AWS IoT Core) เพื่อจัดการบริการทั้งหมดของเราทั้งหมดในอินเทอร์เฟซเดียวกัน ..
อย่างไรก็ตามสามารถทำได้เช่นเดียวกันกับ DigitalOcean เป็นทางเลือก ในแอปพลิเคชันในโลกแห่งความเป็นจริงในเชิงพาณิชย์คุณอาจมีเซิร์ฟเวอร์ของคุณเองและขั้นตอนนี้ไม่ได้เป็นเรื่องง่าย
เพื่อการสาธิตนี้เมื่อใช้ Wi-Fi หรือ 802.15.4 (Miwi) เราตัดสินใจที่จะไปกับ Amazon AWS IoT Core
เมื่อใช้ Lora & Lorawan คุณต้องลงทะเบียนและใช้หนึ่งในผู้ให้บริการ Lorawan เช่น ** The Things Network (TTN) ** หรือ Senet
เพื่อจุดประสงค์ของการสาธิตนี้เราไปกับ TTN นอกจากนี้เรายังประสบความสำเร็จในการแปลงการสาธิตนี้เป็น Senet ในอินเดีย แต่นี่อยู่นอกขอบเขตของหน้านี้
การออกแบบและเทคโนโลยีที่ใช้ในโหนดท้ายสามารถเป็นได้เช่นกัน:
เมื่อเลือกโหนดสุดท้ายผู้ใช้ต้องพิจารณา:
แต่ละจุดเหล่านี้จะกล่าวถึงในส่วนโหนดท้ายด้านล่าง
แผนภาพด้านบนสรุประบบ โหนดท้ายจะอยู่ในโหมดสลีปจนถึงเวลาที่มันตื่นขึ้นมาส่งข้อมูลไปยังเกตเวย์แล้วกลับไปที่การนอนหลับ
Lora และ Miwi ต้องการเกตเวย์เฉพาะเพื่อเชื่อมโยงจาก Lora/Miwi ไปยัง Wi-Fi ก่อนที่จะส่งข้อมูลไปยังคลาวด์ Wi-Fi มีข้อได้เปรียบที่ไม่จำเป็นต้องมีเกตเวย์เฉพาะหากมีความคุ้มครอง Wi-Fi อยู่แล้วซึ่งเป็นกรณีสำหรับสถานที่ตั้งโรงแรมของเรา
ข้อมูลจะถูกส่งไปยังผู้ให้บริการ Cloud Servicer AWS IoT สำหรับ Wi-Fi และ Miwi และ TTN สำหรับ Lora แอปพลิเคชันขวดของเราจะได้รับข้อมูลและจัดเตรียมจุดสิ้นสุดข้อมูลแบบแยกส่วนที่หน้าเว็บของเราสามารถนำเสนอได้ แอปพลิเคชัน Flask และเว็บอินเตอร์เฟสทั้งสอง colocate บนอินสแตนซ์ AWS EC2 ของเรา
จากนั้นผู้ใช้สามารถเข้าถึงเว็บเพจของเราจากอุปกรณ์ใดก็ได้ทุกที่ที่เขาต้องการ
ในส่วนนี้เราจะพูดถึงวิธีการตั้งค่าส่วนคลาวด์ของการสาธิต
เราใช้บริการสองบริการจาก AWS ในการสาธิตนี้ AWS EC2 เป็นแพลตฟอร์มโฮสติ้งเซิร์ฟเวอร์ และ AWS IoT สำหรับ Wi-Fi และ Miwi End Nodes MQTT Broker
ในการโฮสต์เซิร์ฟเวอร์ของคุณคุณจะต้องสร้างอินสแตนซ์ของเครื่องเสมือน EC2 ก่อนที่คุณจะปรับใช้ Apache ลงไป กระบวนการนี้ง่ายและตรงไปตรงมาเมื่อคุณมีบัญชี AWS ของคุณพร้อม
สำหรับคู่มือทีละขั้นตอนโปรดทำตามคู่มือ Amazon ที่นี่
สำหรับการสาธิตของเราเราไปฟรีประเภทอินสแตนซ์นี้: Ubuntu Server 16.04 LTS Free Tier (อัพเกรดเป็นปานกลางในระหว่างการประชุมเพื่อความต้องการที่สม่ำเสมอ)
ในการตั้งค่าความปลอดภัยอนุญาตให้เข้าถึงการรับส่งข้อมูลขาเข้าและขาออก HTTP, HTTPS และ SSH คุณยังสามารถปรับการตั้งค่าความปลอดภัยตามความชอบของคุณ นอกจากนี้โปรดเก็บคีย์ส่วนตัวเพื่อเข้าถึงอินสแตนซ์ที่ปลอดภัยเพื่อให้คุณสามารถผลักดันข้อมูลของคุณในนั้นและควบคุมเซิร์ฟเวอร์
ในการเข้าถึงเซิร์ฟเวอร์ของคุณให้ทำตามคำแนะนำที่มีอยู่ในเว็บไซต์ Amazon ที่นี่ ### AWS IoT Wi-Fi โหนดจะต้องเชื่อมต่อกับ AWS IoT Core เพื่อส่งข้อมูลเซ็นเซอร์ผ่าน MQTT
ในการตั้งค่า AWS IoT Cloud คุณสามารถทำตามคู่มือผู้ใช้ของโครงการ AWS Zero Touch Provisioing Kit (จากส่วนที่ 2 การติดตั้งซอฟต์แวร์ไปยังส่วนที่ 5 AWS IoT การตั้งค่าการลงทะเบียนเพียงเวลา) ผู้ใช้จำเป็นต้องสร้างฟังก์ชั่น Lambda, AWS IoT Rule
AWS Zero Touch Provisioing Kit เป็นโครงการเกี่ยวกับการจัดสรรชุดการจัดเตรียมที่ปลอดภัยเป็นศูนย์ 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" วิธีนี้โหนดเดียวกันด้วยรหัสเดียวกันสามารถใช้สำหรับตำแหน่งที่แตกต่างกันเพียงแค่เปลี่ยนแอปพลิเคชันขวดโดยไม่จำเป็นต้องใช้โปรแกรม 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 )ในการรับการแจ้งเตือนจาก End Node แอปพลิเคชันจำเป็นต้องสมัครสมาชิก AWS IoT Core และเซิร์ฟเวอร์ TTN (หรือเซิร์ฟเวอร์ใด ๆ ที่คุณเลือก)
เราใช้รหัส Pythond ที่ให้ไว้สำหรับ 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 ):คุณจะสังเกตเห็นว่า Payload ข้อความสำหรับ LORA นั้นแตกต่างจาก Wi-Fi และ Miwi เล็กน้อยนี่เป็นเพราะ TTN Gateway เพิ่มข้อมูลบางอย่างไปยัง Payload ของโหนดปลายและเนื่องจากเราพยายามลดภาระการจ่ายให้มากที่สุดเท่าที่จะทำได้เพื่อลดพลังงานที่ใช้และเพิ่มประสิทธิภาพ โปรดดูส่วน LORA ด้านล่าง
### Apache
มีบทช่วยสอนและเนื้อหามากมายที่มีอยู่มากมายเราเพิ่งพูดถึงการเบี่ยงเบนที่นี่
ก่อนอื่นรับ Apache และ WSGI สำหรับ 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
เราจะสร้างโฮสต์เสมือนจริง 2 รายการหนึ่งรายการสำหรับจุดสิ้นสุดข้อมูลและอีกหนึ่งเว็บไซต์สำหรับออก
บรรทัด 9 และ 49 ด้านล่างระบุชื่อเว็บไซต์ของคุณ บรรทัดที่ 14 มีตำแหน่งไฟล์ WSGI ของคุณ
วางสิ่งนี้ใน "000-efault.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 ถึง: (ขึ้นอยู่กับวิธีการกำหนดค่า apache และตำแหน่งที่คุณใส่ไฟล์ html ของคุณ): http://demo.microchip.com/wsn/masters/
เมื่อคุณตรวจสอบหน้า HTML ที่เราให้ไว้ที่ "Server US IoT Network IoT Network"
ไฟล์สำคัญของเจ้าคือ "scripts.js" ซึ่งไปและอ่านข้อมูลจากจุดสิ้นสุดข้อมูลของเราด้านบน
ส่วนที่เหลือเป็นเพียงไฟล์ HTML ที่มีไฟล์ตารางและไฟล์ SVG สำหรับแผนที่ตำแหน่ง
ในส่วนนี้เราอธิบายขั้นตอนที่จำเป็นในการเริ่มส่งข้อมูลเซ็นเซอร์ไปยังคลาวด์โดยใช้แต่ละเทคโนโลยีที่เกี่ยวข้อง
เหตุผลที่คุณอาจต้องการเลือก Wi-Fi เป็นโหนดปลายทางของคุณ:
** ข้อดีของ wifi **
เหตุผลที่ทำให้ Wi-Fi เป็นตัวเลือกที่เหมาะน้อยกว่า:
บอร์ด Wi-Fi นอนเป็นระยะเวลาหนึ่งที่สามารถกำหนดค่าได้ เมื่อตื่นขึ้นมาจะตรวจสอบเพื่อดูว่าการอ่านเซ็นเซอร์มีการเปลี่ยนแปลงตั้งแต่รายงานล่าสุดไปยังคลาวด์หรือไม่ หากเลือกที่จะอัปเดตการอ่านมันจะเชื่อมต่อกับ AP usning โมดูล Wi-Fi และรับรองความถูกต้องด้วย AWS Cloud โดยใช้ชิป Crypto-Auth (ECC508) และส่งค่าที่อัปเดต
คณะกรรมการจะต้องได้รับการกำหนดเป็นครั้งแรกก่อนที่จะสามารถใช้งานได้เราจะผ่านด้านล่างนี้
สำหรับการสาธิตเราใช้ IoT Sensor Bord ซึ่งมี MCU (SAML21) และโมดูล Microchip Wi-Fi (ATWINC1500) และเซ็นเซอร์อื่น ๆ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ HW โปรดไปที่หน้านี้ที่นี่
บอร์ดไม่สามารถซื้อได้ในขณะนี้ @microchip Direct มันถูกแจกจ่ายให้กับผู้เข้าร่วมประชุม Masters Free และจะเพิ่มในภายหลังสำหรับตัวเลือกการซื้อ ในช่วงเวลานั้นคุณสามารถทำเช่นเดียวกันโดยใช้ AWS Zero Touch Kit
หากต้องการแฟลชเฟิร์มแวร์ไปยังบอร์ดโปรดผ่านตัวเลือกที่นี่
โปรดตรงไปที่หน้านี้เพื่อติดตั้งเครื่องมือที่จำเป็น
ตอนนี้. หากคุณต้องการใช้ Wi-Fi ขั้นตอนนั้นเป็นเช่นนี้:
ขั้นตอนแรกครอบคลุมในส่วนเมฆ นอกจากนี้คุณยังสามารถไปข้างหน้าเป็น aws.amazon.com และทำตามคำแนะนำของพวกเขาในกรณีที่พวกเขาเปลี่ยนขั้นตอน เราจะครอบคลุมขั้นตอนที่ 2 และ 3 ที่นี่
อุปกรณ์ ECC608 เป็นของการลงทุนที่ปกป้องตัวตนของอุปกรณ์ของคุณและรับรองความถูกต้องด้วยคลาวด์ AWS
ในการจัดเตรียมอุปกรณ์ 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 ให้คล้ายกับรหัสหัวเรื่องในใบรับรองอุปกรณ์ของคุณ ป้อนรหัสไคลเอนต์ลงในตัวแปร "gawsmqttlientid" ในบรรทัด 95 ของ "winc15x0.c"
ตอนนี้ไปที่ไฟล์ Main.c อ่านฟังก์ชั่นหลักและทำความคุ้นเคยกับมันและเมื่อคุณพร้อมให้สร้างและแฟลช SAML21 ด้วยรหัส
หากคุณลงชื่อเข้าใช้การทดสอบ AWS consle ans สมัครรับหัวข้อ Wi-Fi ที่กล่าวถึงข้างต้น (/microchip/wsn_demo/wifi) คุณควรเห็นข้อความใหม่ที่ได้รับเมื่อบอร์ดทำงาน
Lora ย่อมาจากระยะยาว Lorawan ย่อมาจากเครือข่ายพื้นที่กว้างในระยะยาว Lorawan เป็นเครือข่ายที่ Lora ทำงาน LoRawan เป็นโปรโตคอลการควบคุมการเข้าถึงสื่อ (MAC) แต่ส่วนใหญ่เป็นโปรโตคอลเลเยอร์เครือข่ายสำหรับการจัดการการสื่อสารระหว่างเกตเวย์ LPWAN และอุปกรณ์ปลายทางโหนดเป็นโปรโตคอลการกำหนดเส้นทางซึ่งดูแลโดยพันธมิตร LORA แอพพลิเคชั่นบางอย่างที่สามารถทำได้โดยใช้ LORA คือการจัดการที่จอดรถอัจฉริยะและการจัดการยานพาหนะสิ่งอำนวยความสะดวกและการจัดการโครงสร้างพื้นฐานการตรวจจับและการจัดการอัคคีภัยการจัดการขยะระบบอัตโนมัติในบ้านสำหรับ IoT ช่วยให้เครื่องใช้ไฟฟ้าอัจฉริยะการทำฟาร์มอัจฉริยะและการจัดการปศุสัตว์อุณหภูมิและการตรวจสอบความชื้นเซ็นเซอร์ระดับน้ำและการควบคุมการชลประทาน
อุณหภูมิของห้องพักกระจายอยู่ทั่วรีสอร์ทขนาดใหญ่ถูกตรวจสอบโดยใช้ LORA แอปพลิเคชัน LORA ทั่วไปสามารถพัฒนาได้โดยมีอุปกรณ์สิ้นสุดส่วนประกอบ 4 ชุดเกตเวย์เซิร์ฟเวอร์เครือข่ายและเซิร์ฟเวอร์แอปพลิเคชัน อุปกรณ์สิ้นสุดด้วยเซ็นเซอร์อุณหภูมิ (ทำงานบนแบตเตอรี่) ถูกใช้เพื่อแสดงให้เห็นถึงข้อดีของ Lorawan เช่นพลังงานต่ำปลอดภัยและระยะยาว ผู้ใช้ที่ยังใหม่ต่อการพัฒนาแอปพลิเคชันที่ใช้ Lorawan สามารถค้นหาภาพรวมของสถาปัตยกรรมระบบ Lorawan ได้ที่นี่
ตรวจสอบให้แน่ใจว่าเกตเวย์เชื่อมต่อกับสิ่งที่เซิร์ฟเวอร์เครือข่าย - ขั้นตอนที่กล่าวถึงที่นี่
เมื่อเกตเวย์ออนไลน์ "สร้างแอปพลิเคชัน" ตามด้วย "สร้างอุปกรณ์ใหม่" สำหรับการลงทะเบียนแอปพลิเคชันและอุปกรณ์สิ้นสุดไปยัง TTN
เมื่ออุปกรณ์สิ้นสุดถูกสร้างขึ้นในสิ่งที่คอนโซลเครือข่ายและการเปลี่ยนแปลงรหัสที่จำเป็นได้เกิดขึ้นในซอร์สโค้ดแอปพลิเคชันสำหรับ Deveui และ Appeui เราจะใช้วิธีการเข้าร่วม OTAA สำหรับแอปพลิเคชันของเรา
เพื่อเปิดใช้งานการวัดแรงดันไฟฟ้าของแบตเตอรี่ให้แน่ใจว่า PA15 จะถูกย่อให้ GND จัมเปอร์ I/O และจัมเปอร์ MCU ควรเป็นบายพาสโหมด
เชื่อมต่อ ATSAMR34-XPRO กับพีซีโดยใช้สายเคเบิล Micro USB ผ่านแหล่งจ่ายไฟ EDBG AtSAMR34-XPRO จะระบุว่าเป็นพอร์ต COM การใช้แอปพลิเคชันเทอร์มินัล @ baudrate 115200, ข้อมูล - 8 บิต, parity - ไม่มี, หยุด - 1 บิตและการควบคุมการไหล - การตั้งค่าไม่มีจะช่วยให้ผู้ใช้สามารถตรวจสอบข้อมูลจากตัวอย่างเฟิร์มแวร์
เปิดโครงการ - apps_enddevice_demo โดยใช้ Atmel Studio กำหนดค่า deveui, appkey และ appeui โดยใช้ไฟล์ conf_app.h ที่มีอยู่ในไดเรกทอรีต่อไปนี้ - /src /config
หากแอปพลิเคชันที่พัฒนาขึ้นกำลังใช้แถบ NA/AU การใช้สามารถเลือก subband ที่เกตเวย์กำลังฟังอยู่ ในฐานะที่เป็นวง NA/AU อนุญาตให้มีช่องอัปลิงค์ได้มากถึง 64 ช่อง เกตเวย์ราคาไม่แพงยอดนิยมที่นี่ในเพียง 8 ช่องเท่านั้นจึงจำเป็นต้องมีตัวเลือก subband สิ่งที่เกตเวย์ฟังบน Subband - 2 สำหรับ NA หรือเรียกว่า US902 ตามพารามิเตอร์ภูมิภาค Lorawan สำหรับการสาธิตเราได้ใช้ OTAA (การเปิดใช้งานอากาศ) เข้าร่วมวิธีการใน Lorawan
ตั้งโปรแกรมการสาธิตโดยใช้ตัวเลือก "เริ่มต้นโดยไม่มีการดีบัก" บน Atmel Studio หลังจากเขียนโปรแกรมการสาธิตอุปกรณ์ปลายทาง (ATSAMR34-XPRO) จะพยายามเข้าร่วมเซิร์ฟเวอร์เครือข่าย Lorawan (เครือข่ายสิ่งต่าง ๆ ) หากเกตเวย์ออนไลน์และเชื่อมต่อกับเซิร์ฟเวอร์เครือข่ายสิ่งต่าง ๆ การเข้าร่วมคำขอจะส่งผลให้การยอมรับเข้าร่วมทันที
TTN มีคุณสมบัติที่เรียกว่าฟังก์ชั่น TTN ซึ่งช่วยให้ผู้ใช้เปลี่ยนไบต์ส่งผ่านเครือข่ายสิ่งต่าง ๆ ไปยังเขตข้อมูลที่มนุษย์อ่านได้ หากต้องการเพิ่ม API สำหรับการสาธิตนี้ให้ไปที่แอปพลิเคชัน -> 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 ย่อมาจาก Microchip Wireless Miwi เป็นโปรโตคอลไร้สายที่เป็นกรรมสิทธิ์ที่ออกแบบโดยเทคโนโลยีไมโครชิปที่ใช้วิทยุดิจิตอลขนาดเล็กที่มีกำลังต่ำตามมาตรฐาน IEEE 802.15.4 สำหรับเครือข่ายพื้นที่ส่วนบุคคลไร้สาย (WPANs) มันถูกออกแบบมาสำหรับอัตราการส่งข้อมูลต่ำและระยะทางสั้น ๆ เครือข่ายที่ จำกัด ต้นทุนเช่นการตรวจสอบและควบคุมอุตสาหกรรมการควบคุมบ้านและอาคารอัตโนมัติการควบคุมระยะไกลเซ็นเซอร์ไร้สายพลังงานต่ำการควบคุมแสงและการอ่านมิเตอร์อัตโนมัติ โปรโตคอล Miwi รองรับทอพอโลยีเครือข่ายสามตัว
ข้อดีของ Miwi
การสาธิตการแนะนำ อุณหภูมิของห้องพักกระจายอยู่ทั่วรีสอร์ทขนาดใหญ่ถูกตรวจสอบโดยใช้ทอพอโลยีเครือข่าย Miwi Mesh
แอปพลิเคชัน Miwi Mesh ทั่วไปสามารถพัฒนาได้โดยมี 3 องค์ประกอบ
PAN Coordinator & Coordinator เป็นประเภท FFD (อุปกรณ์ฟังก์ชั่นเต็มรูปแบบ) และมีความสามารถในการกำหนดเส้นทางอุปกรณ์ปลายแพ็กเก็ตสามารถเป็น FFD (อุปกรณ์ฟังก์ชั่นเต็มรูปแบบ) / RFD (อุปกรณ์ฟังก์ชั่นที่ลดลง) อุปกรณ์ RFD End ถูกนำมาใช้เพื่อจุดประสงค์ของการสาธิตนี้เนื่องจากความสามารถในการเข้านอน อุปกรณ์ปลาย
โหนด Pan-Coordinator เชื่อมต่อกับบอร์ด SAMA5D2 XPRO และมีการเชื่อมต่อ WILC3000 สำหรับการเชื่อมต่อ Wi-Fi (อินเทอร์เน็ต) การรวมกันของอุปกรณ์นี้เรียกว่าสะพาน Miwi ในการสาธิตนี้ เราเตอร์และอุปกรณ์ปลายทางส่งข้อมูลเป็นระยะไปยังผู้ประสานงาน PAN SAMA5D2 อ่านข้อมูลจาก Pan-Coordinator และส่งตัวอย่างเดียวกันไปยังอินสแตนซ์ AWS EC2 อินสแตนซ์ AWS EC2 ส่งข้อมูลที่ได้รับไปยังเครื่องมือตรวจสอบ WSN และไปยังเว็บเซิร์ฟเวอร์ เครื่องมือตรวจสอบ WSN แสดงให้เห็นถึงทอพอโลยีตาข่ายที่เกิดขึ้นจากข้อมูลที่ได้รับจากเราเตอร์โหนดเซ็นเซอร์และผู้ประสานงาน PAN จอภาพ 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 Elastic Compute Cloud) สำหรับการสาธิตนี้ อินสแตนซ์ EC2 โฮสต์เซิร์ฟเวอร์ TCP สองตัวสำหรับ Miwi Network Bridge และเครื่องมือตรวจสอบ 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
สำหรับการสาธิต Miwi WSN โปรแกรมผู้ประสานงาน Pan Pan พร้อมไฟล์โครงการที่มีอยู่ที่/miwi/samr30/pan_cord_mod โปรแกรมโหนดผู้ประสานงานพร้อมไฟล์โครงการที่มีอยู่ที่/miwi/samr30/cord_mod1 และโปรแกรมบอร์ดเซ็นเซอร์พร้อมไฟล์โครงการที่มีอยู่ที่/miwi/samr30/sensor_mod1
เครื่องมือตรวจสอบ WSN
เครื่องมือตรวจสอบ WSN เป็นเครื่องมือที่เป็นกรรมสิทธิ์ของไมโครชิพสำหรับ 802.15.4 การตรวจสอบเครือข่ายและเส้นเลือด ในเครื่องมือนี้การเชื่อมต่อเครือข่าย Miwi กับโหนดที่เกี่ยวข้องจะปรากฏขึ้น ค่าผ่านทางจอภาพ WSN ยังแสดงอุณหภูมิ RSSI VLAUE ของโหนดเครือข่ายและการแจ้งเตือนพลังงานแบตเตอรี่ ในการเชื่อมต่อกับเซิร์ฟเวอร์ EC2 จำเป็นต้องมีที่อยู่ IP สาธารณะอินสแตนซ์ของ EC2 EC2 อินสแตนซ์ที่อยู่ IP สาธารณะมีอยู่ในหน้าอินสแตนซ์ EC2 ตามที่กล่าวไว้ข้างต้น หมายเลขพอร์ตสำหรับการเชื่อมต่อเครื่องมือตรวจสอบ WSN คือ $ 8080 เมื่อเชื่อมต่อเครื่องมือตรวจสอบ WSN เซิร์ฟเวอร์ EC2 จะส่งต่อแพ็คเก็ตซึ่งได้รับจาก Miwi Clinet Network
หลังจากการเชื่อมต่อที่ประสบความสำเร็จกับเซิร์ฟเวอร์ EC2 จอภาพ WSN จะเริ่มรับข้อมูลเครือข่าย Miwi และแสดง