Erstellen Sie ein Wi-Fi / Miwi (15,4) / Lorawan-Wireless-Sensor-Netzwerk, um die Temperaturen zu überwachen, die ein wesentliches Gebiet wie ein Hotel oder ein Werk abdecken.
Fallstudie: Temperaturüberwachung der Klassenzimmer während der Mikrochip -Masters -Konferenz am JW Marriot Desert Ridge, AZ
Sehen Sie sich die Demo an (nur während der Masters -Konferenz)
Überwacht Sensordaten (Temperatur, Batteriespiegel und RSSI)
Deckt 34-35 Standorte über eine riesige Fläche von ca. 1 km2
Sichere Kommunikation mit AWS IoT für Wi-Fi
Geräteunabhängige Weboberfläche zum einfachen Ansehen von Daten
Anzeige der Miwi -Mesh -Topologie in WSN Monitor GUI
Datenprotokollierung bei der CSV -Datei
Batteriebetriebene Geräte
Präsentieren Sie verschiedene Technologien, die sich bei der gleichen Aufgabe befassen
Smart Secure verbunden
Bei Masters 2019 überwachten wir die Temperaturenkonferenz mit 3 verschiedenen Netzwerken, die gleichzeitig in ein einzelnes, leicht zugängliches Dashboard berichten, das online gehostet wird, um die Informationen von 34 Standorten anzuzeigen. Darüber hinaus haben wir für die LORA -Implementierung einen Golfplatzknoten hinzugefügt, der außerhalb des Hotels platziert ist, um Lora Langstreckenfunktionen zu präsentieren.
Das System ist hauptsächlich von zwei Teilen beeinträchtigt:
Die gleiche Demo und Funktionalität kann unter Verwendung einer der 3 Technologien erreicht werden. Jede Technologie hat jedoch ihre eigenen Stärken und Nachteile. Wir geben diese Erklärung und den unterstützenden Code zur Unterstützung von Microchip -Kunden, die die Technologie auswählen, die am besten zu ihrer Anwendung passt.
HINWEIS: Der Code hier wird so bereitgestellt und wurde nicht auf Produktionsqualität getestet. Es gibt einige Kenntnisse im Cloud -Abschnitt, die wir später erwähnen. Sie sind voll verantwortlich dafür, den Code in Ihrem eigenen System zu testen und anzupassen.
Der Benutzer benötigt ein Portal, um die Daten anzuzeigen. Um eine plattformunabhängige Ansicht zu erstellen, für die keine Installation oder ein Kennwort erforderlich ist, werden die Daten auf einer HTML + JavaScript -Webseite angezeigt.
Die Webseite ist nur ein Tool, das die Daten von einem Datenendpunkt abruft. Sie kann durch eine Telefonanwendung ersetzt oder zu einer Benutzeransicht in einem Endprodukt hinzugefügt werden.
Um unsere Anwendung modular und unabhängig in der Vorderseite implementieren zu lassen, sei es eine Website oder eine mobile Anwendung. Wir haben uns entschlossen, eine erholsame API mit einem Fluss zu implementieren
Die Daten werden vom Endpunkt als JSON -Objekt zurückgegeben und können hier angezeigt werden.
Für den Zweck dieser Demo haben wir Amazon EC2 Ubuntu Virtual Machine Instance (da wir bereits AWS IoT Core verwendet) verwendet, um alle unsere Dienste auf derselben Schnittstelle problemlos zu verwalten.
Gleiches kann jedoch mit Digitalocean als Alternative erreicht werden. In einer kommerziellen Anwendung in der realen Welt haben Sie wahrscheinlich Ihren eigenen Server und dieser Schritt ist unkassinnerisch.
Um diese Demo willen, beschlossen wir bei der Verwendung von Wi-Fi oder 802.15.4 (Miwi) für den Amazon AWS IoT Core .
Wenn Sie Lora & Lorawan verwenden, müssen Sie sich registrieren und einen der Lorawan -Dienstanbieter wie ** The Things Network (TTN) ** oder Senet verwenden.
Für den Zweck dieser Demo sind wir mit TTN gegangen. Wir hatten auch Erfolg, diese Demo in Senet in Indien umzuwandeln, aber dies liegt außerhalb des Rahmens dieser Seite.
Das Design und die Technologie, die in Endknoten verwendet werden, können beide sein:
Bei der Auswahl von Endknoten muss der Benutzer berücksichtigen:
Jeder dieser Punkte wird in den folgenden Endknotenabschnitten erörtert.
Das obige Diagramm fasst das System zusammen. Die Endknoten befinden sich im Schlafmodus, bis eine bestimmte Zeit, in der sie aufwacht, die Daten an das Gateway sendet und dann wieder einschlafen.
Lora und Miwi benötigen ein spezielles Tor zur Brücke von Lora/Miwi nach Wi-Fi, bevor die Daten an die Cloud gesendet werden. Wi-Fi hat einen Vorteil, dass es kein dediziertes Gateway benötigt, wenn es bereits eine Wi-Fi-Abdeckung gibt, was für unseren Hotelort der Fall ist.
Die Daten werden an den Cloud -Servicer -Anbieter gesendet. AWS IoT für Wi-Fi und Miwi und TTN für Lora. Unsere Flask -Anwendung erhält dann die Daten und liefert einen modularen Datenendpunkt, den unsere Webseite vorhanden ist. Die Flask -Anwendung und die Webschnittstelle Colocate in unserer AWS -EC2 -Instanz.
Der Benutzer kann dann überall überall auf unsere Webseite zugreifen, wo er möchte.
In diesem Abschnitt erörtern wir, wie der Cloud -Teil der Demo eingerichtet wird.
Wir nutzen zwei Dienste von AWS in dieser Demo, AWS EC2 als Server -Hosting -Plattform. und AWS IoT für Wi-Fi und Miwi Endknoten MQTT Broker.
Um Ihren Server zu hosten, müssen Sie eine EC2 -Instanz der virtuellen Maschine erstellen, bevor Sie Apache bereitstellen. Der Vorgang ist einfach und einfach, sobald Sie Ihr AWS -Konto bereit haben.
Für eine Schritt -für -Schritt -Anleitung folgen Sie hier dem Amazon -Handbuch.
Für unsere Demo haben wir diesen Instanztyp kostenlos gegessen: Ubuntu Server 16.04 LTS Free Tier (aktualisiert auf Medium während der Konferenz, um die Nachfrage zu begegnen)
Ermöglichen Sie bei der Sicherheitseinstellung den Zugriff auf eingehende und ausgehende HTTP-, HTTPS- und SSH -Verkehr. Sie können die Sicherheitseinstellung auch nach Ihren Wünschen anpassen. Halten Sie außerdem den privaten Schlüssel, um auf die Instanz sicher zuzugreifen, damit Sie Ihre Daten darin drücken und den Server steuern können.
Um auf Ihren Server zuzugreifen, folgen Sie den Anleitungen, die hier auf der Amazon -Website verfügbar sind. ### AWS IoT Wi-Fi-Knoten müssen eine Verbindung zum AWS IoT Core herstellen, um Sensordaten über MQTT zu senden.
Um die AWS-IoT-Cloud einzurichten, können Sie das Benutzerhandbuch des AWS Zero Touch Provisioing Kit-Projekts (von Abschnitt 2 Software-Installation bis Abschnitt 5 AWS IoT Just-in-Time-Registrierung) befolgen, um die Lambda-Funktion, die AWS-IoT-Regel und die IAM-Rolle für die AWS-Bereitstellung zu erstellen.
Das AWS Zero Touch Provisioing Kit ist ein Projekt zur Bereitstellung des Null -Touch Secure Provisioning -Kits zur Verbindung und Kommunikation mit dem IoT -Service Amazon Web Services (AWS). Die Benutzerhandbuch des AWS Zero Touch Provisioing Kit -Projekts finden Sie unten: http://microchipdeveloper.com/iot:ztpk
Sobald Sie Ihre EC2 -Instanz in Betrieb haben, nachdem Sie die obigen Schritte befolgt haben, müssen Sie Apache installieren und auf unsere Webseite und die Flask -Anwendung verweisen.
Die EC2 -Instanz wird bereits mit Python geliefert. Stellen Sie sicher, dass Sie PIP Git Pip haben, da wir sie später brauchen. $ sudo apt-get update und sudo apt-get install python3-pip
Installieren Sie zuerst den Kolben in Ihrer EC2 -Instanz: $ pip3 install Flask
Kopieren Sie die Datei "Server/wsn_server.py" in die EC2 -Instanz.
Beschreiben wir nun Teile des Code, den Sie ändern möchten und an Ihre Anwendung anpassen möchten:
Sie finden Wörterbücher mit dem Namen "UsmastersNodelocation" und "IndiaMastersNodelocation". Der Grund ist, dass unsere Boards für mehrere Demo -Standorte wiederverwendet werden, ohne den Code auf der Tafel zu ändern. Daher geben wir jedem Knoten eine Nummer und verwenden dieses Wörterbuch, um den Knoten in den Raum zuzuordnen, den es darin in den Inneren versetzt.
Zum Beispiel node4 während der US -Meister auf "Desert Suite 4". Dann haben wir den gleichen Knoten nach Indien versendet und ihn in "Dominion" -Raum gelegt. Auf diese Weise kann der gleiche Knoten mit demselben Code für einen anderen Ort verwendet werden, indem nur die Flask -Anwendung geändert wird, ohne dass das Gerät physikalisch programmiert werden muss.
Die physische Aktualisierung des Codes auf der Karte ist in diesem Bereich nicht immer bequem. Wir ermutigen Sie, über solche Methoden nachzudenken und im Voraus zu planen, um die Aktualisierung des Board FW zu vermeiden.
#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"
}Wir speichern die Daten, die wir in einer CSV -Datei erhalten. Der Dateispeicherort und der Name sind in Zeile 141-143 angegeben.
###################################
###### 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 )Um Benachrichtigungen vom Endknoten zu erhalten, muss die Anwendung AWS IoT Core- und TTN -Server abonnieren (oder eines von Ihnen gewählten Servers)
Wir haben den publisch bereitgestellten Pythond -Code für AWS IoT verwendet. Um es zu verwenden, gehen Sie hier zu Amazon Github Repo.
Unser Code kann verwendet werden, wenn Sie den Zertifikatpfad durch Ihren Zertifikatpfad ersetzen.
# 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 ()Der Code erwartet, dass die Themen bekannt sind und ein Thema pro Technologie. Der Benutzer kann unterschiedliche Themen mit unterschiedlichem Zugriff verwenden, wenn er dies wünscht.
myMQTTClient . subscribe ( "/Microchip/WSN_Demo/WiFi" , 1 , WiFiCallback )
myMQTTClient . subscribe ( "/Microchip/WSN_Demo/MiWi" , 1 , MiWiCallback ) Der Code erwartet ein JSON -Objekt mit dem Format: {'nodeID': "Node1", 'Battery': "4.99V", 'Temperature': 81.46, 'RSSI': -55}
Das Ding -Netzwerk erfordert keine gegenseitige Authentifizierung oder Zertifikate, um sich wie AWS zu verbinden, sondern stützt sich auf Benutzername und Kennwort. Daher zeigen wir Case, wie Sie mit dem Paket "Flask_mqtt" eine Verbindung zu ihrem Server herstellen können.
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 ):Sie werden feststellen, dass die Nachrichtennutzlast für Lora etwas anders ist als Wi-Fi und Miwi. Dies ist darauf zurückzuführen, dass das TTN-Gateway die Nutzlast des Endknotens und die Versuch, die Lohnbelastung so weit wie möglich zu minimieren, um die verwendete Stromversorgung zu minimieren und die Wirkung zu erhöhen, einige Informationen hinzuzufügen. Weitere Informationen finden Sie im Abschnitt Lora unten.
###Apache
Es gibt eine Vielzahl von Apache -Tutorials und Inhalten, wir erwähnen nur die Abweichungen hier.
Get Apache und WSGI für Flask: sudo apt-get install apache2 libapache2-mod-wsgi-py3
Erstellen Sie eine WSGI -Datei: vi wsn_demo.wsgi
Legen Sie dies in die obige Datei:
import sys
sys . path . insert ( 0 , '/var/www/html/WSN' ) Erstellen Sie einen Symlink, damit das Projektverzeichnis in/var/www/html erscheint: $ sudo ln -sT ~/WSN /var/www/html/WSN
Aktivieren Sie WSGI: sudo a2enmod wsgi
Konfigurieren Sie Apache (Sie müssen sudo bearbeiten, um die Datei zu bearbeiten) $ sudo vi /etc/apache2/sites-enabled/000-default.conf
Wir erstellen 2 virtuellen Host, einen für den Datenendpunkt und einen für die Out -Website.
Line 9 & 49 unten geben Sie Ihren Website -Namen an. Zeilen Sie 14 haben Sie Ihren WSGI -Dateispeicherort.
Fügen Sie dies in "000-Default.conf" ein, nachdem Sie Ihre Host-Änderungen wie oben erwähnt vorgenommen haben:
< 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 > Starten Sie den Server neu: $ sudo apachectl restart
Jetzt müssen Sie einen DNS -Eintrag erstellen, der von "Demo.Microchip.com" & "Demo2.microchip.com" zur öffentlichen IP -Adresse der EC2 -Instanz zugeordnet wird.
Sobald dies erledigt ist, sehen Sie sich Ihre Daten in einem Link an, der ähnlich ist: http://demo2.microchip.com/wsn/data/lora/
und die Website wird similr an: (abhängig davon, wie Sie Apache konfiguriert haben und wo Sie Ihre HTML -Dateien einfügen): http://demo.microchip.com/wsn/masters/
Wenn Sie die HTML -Seiten untersuchen, die wir im "Server Us IoT Network IoT Network" angeben
Die wichtige Datei ist "scripts.js", die die Daten aus unseren oben genannten Datenendpunkten lesen.
Der Rest sind nur HTML -Dateien, die eine Tabelle und SVG -Dateien für die Standortkarte enthalten.
In diesem Abschnitt beschreiben wir die erforderlichen Schritte, um mit dem Senden von Sensordaten an die Cloud mit jeder jeweiligen Technologie zu beginnen.
Gründe, warum Sie Wi-Fi als Endknoten wählen möchten:
** Vorteile von WiFi **
Gründe, die Wi-Fi weniger ideale Optionen machen:
Das Wi-Fi-Board schläft für einen bestimmten Zeitraum, der konfigurierbar ist. Wenn es aufwacht, werden überprüft, ob sich der Sensor -Lesart seit dem letzten Meldung der Cloud geändert hat. Wenn es den Lesen aktualisiert, wird das Wi-Fi-Modul hergestellt und mit AWS Cloud mit dem Crypto-Auth-Chip (ECC508) mit AWS Cloud eine Verbindung hergestellt und die aktualisierten Werte gesendet.
Der Vorstand muss erst zum ersten Mal vorgestellt werden, bevor es verwendet werden kann, wir gehen dies unten durch.
Für die Demo haben wir das IoT-Sensor Bord verwendet, das eine MCU (SAML21) und ein Microchip-Wi-Fi-Modul (ATWINC1500) und andere Sensoren enthält.
Weitere Informationen zum HW finden Sie hier zu dieser Seite.
Das Board ist momentan nicht zum Kauf @microchip Direct erhältlich. Es wurde kostenlos an die Teilnehmer der Masters Conference verteilt und wird später zur Kaufoption hinzugefügt. In der Zwischenzeit können Sie das gleiche mit dem AWS Zero Touch -Kit tun.
Um die Firmware an das Board zu flashen, gehen Sie bitte die Optionen hier durch.
Bitte besuchen Sie diese Seite, um die erforderlichen Tools zu installieren.
Jetzt. Wenn Sie Wi-Fi verwenden möchten, sind die Schritte wie folgt:
Der erste Schritt ist im Cloud -Abschnitt behandelt. Sie können auch zu AWS.amazon.com gehen und ihrem Leitfaden folgen, wenn sie die Schritte geändert haben. Wir werden die 2. und 3. Schritte hier abdecken.
Das ECC608 -Gerät ist das Valut, das Ihre Geräteidentität schützt und sich mit der AWS -Cloud authentifiziert.
Um Ihr ECC608 -Gerät bereitzustellen, befolgen Sie bitte die Schritte hier.
Sobald Sie mit den obigen Schritten fertig sind, ist Ihr ECC608 bereitgestellt. Der verbleibende Teil besteht darin, das Gerätezertifikat auf dem Winc1500 zu speichern.
Dies kann von der Anwendungsseite programmatisch erfolgen, indem Sie: m2m_ssl_send_certs_to_winc Das oben genannte ist für die Produktion geeignet. Eine Alternative besteht darin, das Tool in diesem Handbuch zu verwenden.
Sobald sowohl der ECC608 als auch Winc1500 bereitgestellt werden. Sie können das Board endlich mit der realen Anwendung flashen.
Das Anwendungsbeispiel im Wi-Fi-Ordner enthält dazu Referenzcode.
Es gibt dort Projekte:
Sie können das AP SSID und das Passwort ändern, mit dem Sie eine Verbindung in Zeilen 61/63 auf main.h herstellen möchten
Der Knotenname ist in Zeile 73 auf Main.h
Der SAML21 schläft und wacht auf RTC Interrupt auf. Die MCU wird bei einem Anruf schlafen gehen: system_sleep(); und wacht auf, wenn der RTC -Interrupt empfangen wird. Um die Dauer für RTC -Interrupt zu steuern, konfigurieren Sie die Anzahl in der Funktion "configure_rtc_count" auf RTC.c. Die Schlafdauer hängt davon ab, wie oft Sie die Daten und Ihr Strombudget aktualisieren möchten.
Sie müssen die MQTT -Client -ID eingeben, um der Betreff -ID in Ihrem Gerätezertifikat zu ähneln. Geben Sie die Client -ID in die Variable "gawsmqttclientid" in Zeile 95 von "Winc15x0.c" ein
Das ist so ziemlich es, nun zu Main.c -Datei gehen, die Hauptfunktion lesen und sich damit vertraut machen und wenn Sie bereit sind, erstellen und flashen Sie den SAML21 mit dem Code.
Wenn Sie sich in den AWS-Testkonsum angemeldet haben, der sich für das oben erwähnte Wi-Fi-Thema (/microchip/wsn_demo/wiFi) abonniert, sollten Sie eine neue Nachricht sehen, sobald das Board ausgeführt wird.
Lora steht für Langstrecken. Lorawan steht für Langstrecken -Weitnetzwerke. Lorawan ist das Netzwerk, in dem Lora arbeitet. Lorawan ist ein MAC-Layer-Protokoll (Media Access Control), ist jedoch hauptsächlich ein Netzwerkschichtprotokoll für die Verwaltung der Kommunikation zwischen LPWAN-Gateways und Endknotengeräten als Routing-Protokoll, das von der LORA-Allianz aufrechterhalten wird. Einige der Anwendungen, die mit LORA übernommen werden können, sind intelligente Parkplätze und Fahrzeugmanagement, Einrichtungen und Infrastrukturmanagement, Branderkennung und -management, Abfallmanagement, Heimautomation für IoT ermöglicht Smart -Geräte, Smart Farming und Viehbewirtschaftung, Temperatur- und Feuchtigkeitsüberwachung, Wasserstandssensoren und Bewässerungskontrolle.
Die Temperatur der Räume, die sich in einem riesigen Resort ausbreiten, wurde mit der Lora überwacht. Eine typische LORA -Anwendung kann entwickelt werden, indem 4 Komponenten Endgeräte, Gateway, Netzwerkserver und Anwendungsserver beendet sind. Das Endgerät mit Temperatursensor (auf Batterien laufend) wurde verwendet, um die Vorteile von Lorawan wie geringer Leistung, sicherer und großer Reichweite zu demonstrieren. Benutzer, die neu in der Entwicklung von Anwendungen mit Lorawan sind, finden hier einen Überblick über die Lorawan -Systemarchitektur.
Stellen Sie sicher
Sobald das Gateway online ist, "Erstellen Sie eine Anwendung", gefolgt von "Erstellen eines neuen Geräts erstellen", um die Anwendung und das Endgerät an TTN zu registrieren
Sobald das Endgerät in der Netzwerkkonsole erstellt wurde und die erforderlichen Codeänderungen im Anwendungsquellcode für Deveui und Appeui vorgenommen wurden. Wir werden die OTAA -Methode für unsere Anwendung anwenden.
Um die Batteriespannungsmessung zu aktivieren, stellen Sie sicher, dass PA15 auf GND verkürzt ist. E/O -Jumper und MCU -Jumper sollten Bypassmode sein
Schließen Sie das ATSAMR34-XPRO mit einem Micro-USB-Kabel über die EDBG-Netzteil mit einem Micro-USB-Kabel an PC an. ATSAMR34-XPRO wird als COM-Port aufgezählt. Verwenden einer Terminalanwendung @ Baudrate 115200, Daten - 8 Bit, Parität - keine, Stopp - 1 Bit- und Flussregelung - Keine Einstellungen ermöglichen es einem Benutzer, Informationen aus dem Firmware -Beispiel zu überwachen
Öffnen Sie das Projekt - apps_enddevice_demo mit Atmel Studio konfigurieren
Wenn die Entwicklung von NA/AU -Bändern verwendet wird, kann die Verwendung eines Subbands das Gateway auswählen. Als Na/Au -Band erlauben bis zu 64 Uplink -Kanäle. Beliebte kostengünstige Gateways hier auf nur 8 Kanälen, daher ist eine Subband -Wahl erforderlich. Das Things -Gateway hört auf Subband - 2 für NA, die ansonsten US902 gemäß den regionalen Parametern von Lorawan bezeichnet werden. Für die Demo haben wir OTAA (Over the Air -Aktivierung) Join -Methodik in Lorawan verwendet
Programmieren Sie die Demo mit der Option "Start ohne Debuggen" auf Atmel Studio. Nach dem Programmieren der Demo wird das Endgerät (ATSAMR34-XPRO) versuchen, dem Lorawan Network Server (The Things Network) beizutreten. Wenn das Gateway online ist und mit dem Network -Server der Dinge verbunden ist, führt die Join -Anfrage zu einer sofortigen Annahme.
TTN verfügt über eine Funktion namens TTN -Funktionen, mit der Benutzer Bytes, die über das Network gesendet werden, an menschliche lesbare Felder wechseln können. Um die API für diese Demo hinzuzufügen, gehen Sie zu Anwendungen -> xxxx -> Payload -Formate xxxx bezeichnet den Anwendungsnamen des Benutzers. Gehen Sie zum Decoder -Abschnitt und speichern Sie die folgende Decoderfunktion
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,
};
}
}
Nach dem Konfigurieren des Decoders und der Programmierung der Platine mit dem Anwendungsquellcode. Die App -Daten sollten im Terminalfenster und in der Network -Konsole der Dinge angezeigt werden
Nachfolgende Sensorübertragungen treten alle 15 Minuten auf
EINLEITUNG MIWI steht für Microchip Wireless. MIWI ist ein proprietäres drahtlose Protokolle, das von der Mikrochip-Technologie entwickelt wurde und die auf dem IEEE 802.15.4-Standard für drahtlose persönliche Bereiche (WPANs) mit kleinen digitalen Funkgeräten mit geringem Stromverbrauch basieren. Es ist für niedrige Datenübertragungsraten und kurze Entfernungen, kosten eingeschränkte Netzwerke wie industrielle Überwachung und Steuerung, Heim- und Gebäudeautomatisierung, Fernbedienung, kabellosen Sensoren mit geringer Leistung, Beleuchtungssteuerung und automatisiertes Messwert ausgelegt. Das MIWI -Protokoll unterstützt drei Netzwerk -Topologien
Vorteile von Miwi
Die DEMO -Einführungstemperatur der Räume, die sich in einem riesigen Resort ausbreiten, wurde unter Verwendung der Miwi Mesh Network -Topologie überwacht.
Eine typische Miwi -Netzanwendung kann durch 3 Komponenten entwickelt werden.
PAN -Koordinator & Koordinator sind vom Typ FFD (Full -Function Device) und können die Pakete -Endgeräte ausführen können, können FFD (Full -Function -Gerät) / RFD (Reduced Function Device) -Typ sein. RFD -Endgeräte wurden für den Zweck dieser Demo verwendet, weil die Fähigkeit eingeschlafen ist. Das Endgerät mit Temperatursensor (Laufen auf Batterien) wurde verwendet, um die Vorteile des Miwi -Netznetzwerks wie geringe Leistung, Selbstheilung usw. zu demonstrieren
Der Pan-Coordinator-Knoten ist mit dem SAMA5D2 XPRO-Board verbunden und verfügt über eine WILC3000 für Wi-Fi (Internet) -Einkonnektivität. Diese Kombination von Geräten wird in dieser Demo als Miwi -Brücke bezeichnet. Die Router und Endentarger senden regelmäßige Daten an Pan-Coordinator. Der SAMA5D2 liest die Daten von Pan-Coordinator und sendet dasselbe an die AWS-EC2-Instanz. Die AWS EC2 -Instanz sendet die empfangenen Daten an das WSN -Monitor -Tool und an den Webserver. Das WSN-Monitor-Tool zeigt die aus den Router, Sensorknoten und Pan-Koordinator empfangene Mesh-Topologie. Der WSN -Monitor kann auch zur Überwachung des MIWI -Netzwerks verwendet werden.
Hardware
Software
At91sama5d27 unter Linux
ATWILC3000 Module & Firmware
$ /root des Buildroot -Pakets hinzugefügt. Firmware wird in $ /lib/firmware/mchp hinzugefügt.AWS Cloud EC2 -Instanzdienste
WSN Monitor Tool
Schritt -für -Schritt
Bringen Sie die WiFi -Schnittstelle und die WLAN -Verbindung auf
$ root als Benutzername bei $ root an.$/root/mchp/ Ordner enthalten das Wilc3000 -Treibermodul.$/root/mchp -Ordner enthält das Wilc3000 -Treibermodul.$ /lib/firmwae/mchp/wilc1000_wifi_firmware.bin geladen$ vi -Editors ändern Sie das Skript für Router -Anmeldeinformationen.AWS Cloud EC2 -Instanz -Setup Wir verwenden EC2 -Dienste (Amazon Elastic Compute Cloud) für diese Demo. EC2 Instance Host Die beiden TCP -Server für das MIWI -Netzwerkbrücken und das WSN -Monitor -Tool. AWS EC2 -Instanz , um den Python -Server zu hosten, erfordert eine Virtual Machine ami Linux. Die Amazon EC2 -Instanz bietet die virtuelle Linux -Maschine. Der Vorgang ist einfach und einfach, sobald Sie Ihr AWS -Konto bereit haben.
nohup python miwi_wsn_server_4.py & cd iot nohup python iot_publish_2.py &Miwi Setup
Für Miwi WSN Demo, Programm Pan-Coordinator mit der Projektdatei, die unter/miwi/samr30/pan_cord_mod verfügbar ist. Programmieren Sie die Koordinatorknoten mit der Projektdatei, die unter/miwi/samr30/cord_mod1 verfügbar ist, und programmieren Sie die Sensorplatine mit der Projektdatei, die unter/miwi/samr30/sensor_mod1 verfügbar ist.
WSN Monitor Tool
Das WSN Monitor -Tool ist Microchip Proprietary Tool für 802.15.4 Netzwerkmonitor und Contorl. In diesem Tool wird die MIWI -Netzwerkverbindung mit den jeweiligen Knoten angezeigt. Der WSN -Monitor -Maut zeigt auch die Temperatur, die RSSI -Vlauer der Netzwerkknoten und die Benachrichtigung über die Batterieleistung an. Um eine Verbindung mit dem EC2 -Server herzustellen, ist die öffentliche IP -Adresse der EC2 -Instanz erforderlich. EC2 -Instanz öffentliche IP -Adresse ist wie oben erwähnt auf der EC2 -Instanzseite verfügbar. Die Portnummer für die WSN -Monitor -Tool -Verbindung beträgt $ 8080 , sobald das WSN -Monitor -Tool angeschlossen ist. Der EC2 -Server leitet das vom MIWI Clinet Network empfangene Paket weiter.
Nach der erfolgreichen Verbindung mit dem EC2 -Server beginnt der WSN Monitor die MIWI -Netzwerkdaten und -anzeigen.