호텔이나 공장과 같은 넓은 지역을 덮는 온도를 모니터링하기 위해 Wi-Fi / Miwi (15.4) / Lorawan 무선 센서 네트워크를 만듭니다.
사식
데모보기 (Masters Conference에서만 라이브)
센서 데이터를 모니터링합니다 (온도, 배터리 레벨 및 RSSI)
약 34-35 개 위치를 대상으로합니다. 1 km2
Wi-Fi 용 AWS IoT와의 보안 커뮤니케이션
데이터를 쉽게 볼 수있는 장치 독립 웹 인터페이스
WSN Monitor GUI에서 Miwi Mesh 토폴로지 표시
CSV 파일에 데이터 로깅
배터리 작동 장치
동일한 작업을 다루는 다양한 기술을 보여줍니다
스마트 보안 연결
Masters 2019에서 우리는 34 개 위치의 정보를보기 위해 온라인으로 호스팅되는 단일의 쉽게 액세스 가능한 대시 보드에 동시에보고하는 3 개의 서로 다른 네트워크를 사용하여 온도 회의 전체를 모니터링했습니다. 또한 LORA 구현을 위해 LORA 장거리 기능을 보여주기 위해 호텔 외부에 배치 된 골프 코스 노드를 추가했습니다.
시스템은 주로 두 부분으로 손상됩니다.
3 가지 기술 중 하나를 사용하여 동일한 데모 및 기능을 달성 할 수 있습니다. 그러나 각 기술에는 고유 한 강점과 단점이 있습니다. 우리는 마이크로 칩 고객이 자신의 응용 프로그램에 가장 적합한 기술을 선택할 수 있도록이 설명과 지원 코드를 제공합니다.
참고 : 여기의 코드는 그대로 제공되며 생산 품질에 대해 테스트되지 않았습니다. 클라우드 섹션에 나중에 언급 한 지식 문제가 있습니다. 귀하는 자신의 시스템에서 코드를 테스트하고 조정할 책임이 있습니다.
사용자는 데이터를보기 위해 포털이 필요합니다. 설치 나 암호가 필요하지 않은 플랫폼 독립적 인보기를 만들려면 HTML + JavaScript 웹 페이지에 데이터를 표시하도록 선택합니다.
웹 페이지는 데이터 엔드 포인트에서 데이터를 검색하는 도구 일 뿐이며 전화 응용 프로그램으로 대체하거나 최종 제품의 사용자보기에 추가 할 수 있습니다.
웹 사이트이든 모바일 애플리케이션이든, 프론트 엔드 구현에서 응용 프로그램을 모듈화하고 독립적으로 만들기 위해. 우리는 플라스크를 사용하여 편안한 API를 구현하기로 결정했습니다
데이터는 엔드 포인트에서 JSON 객체로 반환되며 여기에서 볼 수 있습니다.
이 데모의 목적으로, 우리는 Amazon EC2 Ubuntu Virtual Machine 인스턴스 (이미 AWS IoT 코어를 사용하고 있었기 때문에)를 사용하여 동일한 인터페이스에서 모든 서비스를 쉽게 관리했습니다.
그러나 DigitalOcean을 대안으로도 얻을 수 있습니다. 상업용 현실 세계 애플리케이션에서는 아마도 자신의 서버가있을 것이며이 단계는 무의미합니다.
이 데모를 위해 Wi-Fi 또는 802.15.4 (Miwi)를 사용할 때 Amazon AWS IoT Core 와 함께 가기로 결정했습니다.
Lora & Lorawan을 사용할 때는 ** THETS Network (TTN) ** 또는 Senet과 같은 Lorawan 서비스 제공 업체 중 하나를 등록하고 사용해야합니다.
이 데모의 목적을 위해 우리는 TTN과 함께 갔다. 우리는 또한이 데모를 인도의 Senet으로 변환하는 데 성공했지만이 페이지의 범위를 벗어납니다.
결국 노드에 사용 된 설계 및 기술은 다음 중 하나 일 수 있습니다.
엔드 노드를 선택할 때 사용자는 다음을 고려해야합니다.
이러한 각 지점은 아래의 최종 노드 섹션에서 논의됩니다.
위의 다이어그램은 시스템을 요약합니다. 종료 노드는 깨어 난 시간이 일어나서 데이터를 게이트웨이로 보내고 다시 잠을 자게 될 때까지 수면 모드에 있습니다.
Lora와 Miwi는 데이터를 클라우드로 보내기 전에 Lora/Miwi에서 Wi-Fi로 연결하기 위해 전용 게이트웨이가 필요합니다. Wi-Fi는 이미 Wi-Fi 커버리지가있는 경우 전용 게이트웨이가 필요하지 않다는 이점이 있습니다.
데이터는 클라우드 서비스 제공 업체로 전송됩니다. Wi-Fi 및 Miwi 용 AWS IoT 및 LORA의 경우 TTN. Flask 응용 프로그램은 데이터를 얻고 웹 페이지가있는 모듈 식 데이터 종료점을 제공합니다. Flask 응용 프로그램과 웹 인터페이스는 모두 AWS EC2 인스턴스에서 Colocate입니다.
그런 다음 사용자는 원하는 모든 장치에서 웹 페이지에 액세스 할 수 있습니다.
이 섹션에서는 데모의 클라우드 부분을 설정하는 방법에 대해 설명합니다.
우리는이 데모의 AWS의 두 가지 서비스 인 AWS EC2를 서버 호스팅 플랫폼으로 사용합니다. Wi-Fi 및 Miwi 엔드 노드 MQTT 브로커 용 AWS IoT.
서버를 호스팅하려면 Apache를 배포하기 전에 가상 머신 EC2 인스턴스를 작성해야합니다. AWS 계정을 준비하면 프로세스가 쉽고 간단합니다.
단계별 가이드는 여기에서 Amazon Guide를 따르십시오.
우리의 데모를 위해 우리는 무료 로이 인스턴스 유형으로 갔다 : Ubuntu Server 16.04 lts free theier (수요를 수용하기 위해 회의 중에 중간으로 업그레이드 됨)
보안 설정에서 인바운드 및 아웃 바운드 HTTP, HTTP 및 SSH 트래픽에 액세스 할 수 있습니다. 원하는대로 보안 설정을 조정할 수도 있습니다. 또한 개인 키를 유지하여 인스턴스 안전에 액세스하여 데이터를 푸시하고 서버를 제어 할 수 있도록하십시오.
서버에 액세스하려면 Amazon 웹 사이트에서 사용 가능한 안내서를 참조하십시오. ### AWS IoT Wi-Fi 노드는 MQTT를 통해 센서 데이터를 보내려면 AWS IoT 코어에 연결해야합니다.
AWS IoT Cloud를 설정하려면 AWS Zero Touch Provisioing Kit Project의 사용자 안내서 (섹션 2 소프트웨어 설치부터 섹션 5 AWS IoT Just-In-Time 등록 설정에 이르기까지) AWS 제공에 대한 Lambda 기능, AWS IoT 규칙 및 IAM 역할을 작성해야합니다.
AWS Zero Touch Provisioing Kit는 AWS (Amazon Web Services) IoT 서비스와 연결하고 통신하기위한 제로 터치 보안 프로비저닝 키트 프로비저닝에 관한 프로젝트입니다. AWS Zero Touch Provisioing 키트 프로젝트의 사용자 안내서는 다음에서 찾을 수 있습니다 : http://microchipdeveloper.com/iot:ztpk
위의 단계를 따른 후 EC2 인스턴스가 올라가고 실행되면 Apache를 설치하고 웹 페이지와 플라스크 응용 프로그램을 호스팅하도록 지적해야합니다.
EC2 인스턴스는 이미 Python과 함께 제공됩니다. 나중에 필요한대로 핍을 git하십시오. $ sudo apt-get update 및 sudo apt-get install python3-pip
먼저 EC2 인스턴스에 플라스크 설치 : $ pip3 install Flask
"server/wsn_server.py"파일을 EC2 인스턴스에 복사하십시오.
이제 응용 프로그램을 수정하고 조정하려는 코드의 일부를 설명해 봅시다.
"UsmasterSnodelocation"과 "IndiamastersNodelocation"이라는 사전을 찾을 수 있습니다. 그 이유는 보드의 코드를 변경하지 않고 여러 데모 위치에 대한 보드가 재사용되기를 원했기 때문에 각 노드에 숫자를 제공 하고이 사전을 사용하여 노드를 내부에 넣는 방에 맵핑했습니다.
예를 들어, "Desert Suite 4"의 미국 마스터 동안 Node4. 그런 다음 우리는 동일한 노드를 인도로 배송하여 "Dominion"방에 넣었습니다. 이러한 방식으로 동일한 코드를 사용하여 동일한 코드를 사용하여 장치를 프로그램 할 필요없이 플라스크 애플리케이션을 변경하여 다른 위치에 사용할 수 있습니다.
보드에서 물리적으로 코드를 업데이트하는 것이 현장에서 항상 편리하지는 않습니다. 이와 같은 방법을 생각하고 보드 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 서버 (또는 선택한 서버)를 구독해야합니다.
우리는 AWS IoT에 대한 공개적으로 제공된 Pythond 코드를 사용했습니다. 그것을 사용하려면 여기 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 게이트웨이는 엔드 노드 페이로드에 정보를 추가하고 가능한 한 많은 급여 부하를 최소화하여 사용 된 전력을 줄이고 효율성을 높이기 때문입니다. 아래 LORA 섹션을 참조하십시오.
### 아파치
많은 아파치 튜토리얼과 콘텐츠가 있습니다. 여기서는 편차를 언급합니다.
먼저, 플라스크 용 apache 및 wsgi : sudo apt-get install apache2 libapache2-mod-wsgi-py3
wsgi 파일을 만듭니다 : vi wsn_demo.wsgi
위 파일에 이것을 넣으십시오.
import sys
sys . path . insert ( 0 , '/var/www/html/WSN' ) 프로젝트 디렉토리가/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 웹 사이트 용 2 개의 가상 호스트를 생성합니다.
아래의 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
이제 "demo.microchip.com"& "demo2.microchip.com"에서 EC2 인스턴스의 공개 IP 주소에 매핑되는 DNS 항목을 작성해야합니다.
일단 완료되면 다음과 유사한 링크에서 데이터를 확인하십시오. http://demo2.microchip.com/wsn/data/lora/
웹 사이트는 다음과 같이 similr입니다.
"Server US IoT Network IoT Network"에서 제공하는 HTML 페이지를 검사 할 때
중요한 파일은 "Scripts.js"이며 위의 데이터 엔드 포인트의 데이터를 읽고 읽습니다.
나머지는 위치 맵의 테이블과 SVG 파일을 포함하는 HTML 파일입니다.
이 섹션에서는 각 기술을 사용하여 센서 데이터를 클라우드로 보내기위한 필요한 단계에 대해 설명합니다.
Wi-Fi를 최종 노드로 선택하려는 이유 :
** Wi -Fi의 장점 **
Wi-Fi가 덜 이상적인 옵션으로 만드는 이유 :
Wi-Fi 보드는 구성 가능한 시간 동안 잠을 자고 있습니다. 깨어날 때 클라우드에 마지막으로보고 된 이후로 센서 판독 값이 변경되었는지 확인합니다. 읽기를 업데이트하기로 선택하면 Wi-Fi 모듈을 사용하는 AP에 연결하고 Crypto-Auth Chip (ECC508)를 사용하여 AWS 클라우드로 인증하고 업데이트 된 값을 보냅니다.
이사회는 사용하기 전에 처음으로 제공되어야합니다.
데모의 경우 MCU (SAML21)와 Microchip Wi-Fi 모듈 (ATWINC1500) 및 기타 센서를 포함하는 IoT 센서 보드를 사용했습니다.
HW에 대한 자세한 내용은이 페이지를 참조하십시오.
이사회는 현재 @microchip 직접 구매할 수 없습니다. Masters Conference 참석자에게 무료로 배포되었으며 나중에 구매 옵션을 위해 추가됩니다. 그 동안 AWS Zero Touch 키트를 사용하여 동일한 작업을 수행 할 수 있습니다.
펌웨어를 이사회에 플래시하려면 여기 옵션을 살펴보십시오.
필요한 도구를 설치하려면이 페이지로 이동하십시오.
지금. Wi-Fi를 사용하려면 단계는 다음과 같습니다.
첫 번째 단계는 클라우드 섹션에 포함됩니다. 또한 Aws.amazon.com으로 진행하여 단계를 변경 한 경우 가이드를 따라갈 수 있습니다. 우리는 여기서 2 단계와 세 번째 단계를 다룰 것입니다.
ECC608 장치는 장치 아이덴티티를 보호하고 AWS 클라우드로 인증하는 계곡입니다.
ECC608 장치를 제공하려면 여기 단계를 따르십시오.
위의 단계가 완료되면 ECC608이 프로비저닝됩니다. 나머지 부분은 장치 인증서를 WINC1500에 저장하는 것입니다.
이는 다음 m2m_ssl_send_certs_to_winc 호출하여 응용 프로그램 측에서 프로그래밍 할 수 있습니다. 대안은이 안내서에서 도구를 사용하는 것입니다.
ECC608과 WINC1500이 모두 제공되면. 마침내 실제 응용 프로그램으로 보드를 플래시 할 수 있습니다.
Wi-Fi 폴더의 응용 프로그램 예제에는 참조 코드가 포함되어 있습니다.
거기에 프로젝트가 있습니다.
Main.h의 61/63 행에 연결하려는 AP SSID 및 비밀번호를 변경할 수 있습니다.
노드 이름은 Main.h의 73 행에 있습니다
SAML21은 잠을 자고 RTC 인터럽트에서 깨어납니다. MCU는 다음과 같은 전화를 받으면 잠을 자게됩니다. system_sleep(); RTC 인터럽트가 접수되면 깨어납니다. RTC 인터럽트의 지속 시간을 제어하려면 RTC.C에서 "configure_rtc_count"함수의 카운트를 구성하십시오. 수면 지속 시간은 데이터를 새로 고치고 전력 예산을 새로 고치는 빈도에 따라 다릅니다.
장치 인증서의 주제 ID와 유사하려면 MQTT 클라이언트 ID를 입력해야합니다. "winc15x0.c"의 95 행에있는 "gawsmqttclientid"변수에 클라이언트 ID를 입력하십시오.
그것은 거의 그와 거의 비슷합니다. 이제 main.c 파일로 이동하여 주요 기능을 읽고 익숙해지고 준비되면 코드로 SAML21을 빌드하고 플래시하십시오.
위에서 언급 한 Wi-Fi 주제 (/microchip/wsn_demo/wifi)에 가입하는 AWS Test Consle ANS에 로그인 한 경우 보드가 실행되면 새 메시지를 받게됩니다.
로라는 장거리를 나타냅니다. Lorawan은 장거리 와이드 지역 네트워크를 나타냅니다. Lorawan은 Lora가 운영하는 네트워크입니다. Lorawan은 MAC (Media Access Control) 레이어 프로토콜이지만 주로 LORA Alliance가 관리하는 라우팅 프로토콜로서 LPWAN 게이트웨이와 엔드-노드 장치 간의 통신을 관리하기위한 네트워크 계층 프로토콜입니다. LORA를 사용하여 달성 할 수있는 일부 응용 프로그램은 스마트 주차 및 차량 관리, 시설 및 인프라 관리, 화재 감지 및 관리, 폐기물 관리, IoT 용 홈 자동화로 스마트 어플라이언스, 스마트 농업 및 가축 관리, 온도 및 수분 모니터링, 수위 센서 및 관개 제어를 가능하게합니다.
거대한 리조트에 퍼져있는 방의 온도는 로라를 사용하여 모니터링되었습니다. 일반적인 LORA 애플리케이션은 4 개의 구성 요소 엔드 장치, 게이트웨이, 네트워크 서버 및 응용 프로그램 서버를두면 개발할 수 있습니다. 온도 센서 (배터리에서 작동)가있는 엔드 장치는 저전력, 안전 및 장거리와 같은 로라완의 장점을 보여주기 위해 사용되었습니다. Lorawan을 사용하여 애플리케이션 개발을 처음 접하는 사용자는 여기에서 Lorawan 시스템 아키텍처에 대한 개요를 찾을 수 있습니다.
게이트웨이가 네트워크 서버 - 여기에 언급 된 단계에 연결되어 있는지 확인하십시오.
게이트웨이가 온라인 상태가되면 "응용 프로그램 만들기"와 "새 장치 생성"섹션이 응용 프로그램을 등록하고 TTN에 장치를 종료합니다.
Deveui 및 Appeui의 애플리케이션 소스 코드에서 최종 장치가 네트워크 콘솔에서 생성되고 필요한 코드 변경이 이루어졌습니다. 우리는 응용 프로그램에 OTAA 조인 방법을 사용할 것입니다.
배터리 전압 측정을 가능하게하려면 PA15가 GND로 단락되도록하십시오. I/O 점퍼 및 MCU 점퍼는 우회 모드 여야합니다
EDBG 전원 공급 장치를 통해 마이크로 USB 케이블을 사용하여 ATSAMR34-XPRO를 PC에 연결하십시오. ATSAMR34-XPRO는 COM 포트로 열거됩니다. 터미널 응용 프로그램 @ Baudrate 115200, 데이터 -8 비트, 패리티 - 없음 -1 비트 및 유량 제어 사용 - 없음 설정은 사용자가 펌웨어 예제에서 정보를 모니터링 할 수있게 해줍니다.
프로젝트 열기 -Apps_enddevice_demo Atmel Studio를 사용하여 Deveui, Appkey 및 Appeui를 구성하여 다음 directory - /src /config에서 사용할 수있는 conf_app.h 파일을 사용하여 deveui, appkey 및 appeui를 구성하십시오.
개발 된 응용 프로그램이 NA/AU 대역을 사용하는 경우, 사용으로 인해 게이트웨이가 듣는 서브 밴드를 선택할 수 있습니다. NA/AU 대역은 최대 64 개의 업 링크 채널을 허용합니다. 8 개의 채널에서만 인기있는 저렴한 게이트웨이이므로 서브 밴드 선택이 필요합니다. Lorawan 지역 매개 변수에 따라 Gateway는 Subband -2에 대해 US902라고 불리는 NA의 경우 2를 경청합니다. 데모의 경우 Lorawan에서 OTAA (Air Activation Over Air Activation)를 사용했습니다.
Atmel Studio에서 "디버깅없이 시작"옵션을 사용하여 데모를 프로그래밍하십시오. 데모를 프로그래밍 한 후 최종 장치 (ATSAMR34-XPRO)는 Lorawan Network Server (The Things Network)에 가입하려고합니다. 게이트웨이가 온라인 상태이고 Things Network Server에 연결된 경우 조치 요청은 즉시 조인 수락을 초래합니다.
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는 WPAN (Wireless Personal Area Networks)의 IEEE 802.15.4 표준을 기반으로 소형 저전력 디지털 라디오를 사용하는 Microchip 기술이 설계 한 독점 무선 프로토콜입니다. 낮은 데이터 전송 속도 및 단거리 거리, 산업 모니터링 및 제어, 가정 및 건물 자동화, 원격 제어, 저전력 무선 센서, 조명 제어 및 자동 미터 판독과 같은 비용 제한 네트워크를 위해 설계되었습니다. Miwi 프로토콜은 3 개의 네트워크 토폴로지를 지원합니다
미위의 장점
데모 소개 거대한 리조트에 퍼진 객실의 온도는 Miwi Mesh 네트워크 토폴로지를 사용하여 모니터링되었습니다.
전형적인 Miwi Mesh 응용 프로그램은 3 개의 구성 요소를 통해 개발할 수 있습니다.
PAN 코디네이터 및 코디네이터는 FFD (Full Function Device) 유형이며 패킷 엔드 장치는 FFD (전체 기능 장치) / RFD (감소 된 기능 장치) 유형 일 수 있습니다. RFD 엔드 장치는 잠을 잘 수있는 능력으로 인해이 데모의 목적으로 사용되었습니다. 온도 센서 (배터리에서 실행)가있는 엔드 장치는 저전력, 자체 치유 등과 같은 Miwi Mesh 네트워크의 장점을 보여주는 데 사용되었습니다.
팬 코디네이터 노드는 SAMA5D2 XPRO 보드에 연결되어 있으며 Wi-Fi (인터넷) 연결을위한 WilC3000이 있습니다. 이 장치의 조합은이 데모에서 Miwi Bridge라고합니다. 라우터와 종료 기기는주기적인 데이터를 팬 코디네이터에게 보냅니다. SAMA5D2는 Pan-Cordinator의 데이터를 읽고 AWS EC2 인스턴스에 동일하게 보냅니다. AWS EC2 인스턴스는 수신 된 데이터를 WSN 모니터 도구와 웹 서버로 보냅니다. WSN 모니터 도구는 라우터, 센서 노드 및 팬 코디네이터에서받은 데이터로부터 형성된 메쉬 토폴로지를 보여줍니다. WSN 모니터를 사용하여 Miwi 네트워크를 모니터링 할 수도 있습니다.
하드웨어
소프트웨어
Linux의 AT91SAMA5D27
ATWILC3000 모듈 및 펌웨어
$ /root 에 추가되었습니다. 펌웨어는 $ /lib/firmware/mchp 로 추가됩니다.AWS Cloud EC2 인스턴스 서비스
WSN 모니터 도구
Miwi Demo Sama5d2 Linux 설정을 복제하는 단계별 절차
Wi -Fi 인터페이스 및 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 인스턴스는 MIWI 네트워크 브리지 및 WSN 모니터 도구 용 두 개의 TCP 서버를 호스팅합니다. AWS EC2 인스턴스 Python Server를 호스팅하려면 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에서 프로젝트 파일이 포함 된 Pan-Coordinator를 프로그램하십시오. /miwi/samr30/cord_mod1에서 사용 가능한 프로젝트 파일로 코디네이터 노드를 프로그래밍하고/miwi/samr30/sensor_mod1에서 사용 가능한 프로젝트 파일로 센서 보드를 프로그래밍하십시오.
WSN 모니터 도구
WSN 모니터 도구는 802.15.4 네트워크 모니터 및 Contorl 용 마이크로 칩 독점 도구입니다. 이 도구에서는 각 노드와의 Miwi 네트워크 연결이 표시됩니다. WSN 모니터 톨는 또한 온도, 네트워크 노드의 RSSI VLAUE 및 배터리 전원 알림도 표시됩니다. EC2 서버와 연결하려면 EC2 인스턴스 공개 IP 주소가 필요합니다. EC2 인스턴스 공개 IP 주소는 위에서 언급 한 EC2 인스턴스 페이지에서 사용할 수 있습니다. WSN 모니터 도구 연결의 포트 번호는 $ 8080 입니다. WSN 모니터 도구가 연결되면 EC2 서버는 Miwi Clinet Network에서 수신 된 패킷을 전달합니다.
EC2 서버와의 성공적인 연결 후 WSN 모니터는 Miwi 네트워크 데이터 및 디스플레이를 수신하기 시작합니다.