Erstellen Sie ein Wi-Fi / MIWI (15,4) / LORA-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 und Miwi
Geräteunabhängige Weboberfläche zum einfachen Ansehen von Daten
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 2018 haben wir die Temperaturenkonferenz über die Konferenz überwacht, die mit 3 verschiedenen Netzwerken gleichzeitig in ein einzelnes, leicht zugängliches Dashboard berichteten, 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 und Miwi-Endknoten müssen eine Verbindung zum AWS-IoT-Kern 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.
EINLEITUNG 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. Version 1.0 der Lorawan -Spezifikation Einige der Anwendungen, die mit LORA übernommen werden können, sind intelligente Parkplätze und Fahrzeugmanagement, Einrichtungen und Infrastrukturmanagement, Brandkennung und -management, Abfallmanagement, Heimatautomation für IoT ermöglicht die Smart -Geräte, die Smart -Landwirtschaft und das Lebensdock -Management, die Überwachung von Temperaturen, die Überwachung der Wasserstand sowie die Kontrolle der Bewässerung.
Vorteile von Lorawan
Die Demo -Einführungstemperatur 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.
Hardware
Software
Schritt -für -Schritt -Prozedur zur Replikation der Demo
Finden Sie Ihre Variante.cpp -Datei im Sodaq -Board -Paket innerhalb der Arduino -Installation. Meine Variante.cpp -Datei befand sich in diesem Verzeichnis C: Users Cxxxx AppData Local Arduino15 Pakete Sodaq Hardware Samd 1.6.18 Varianten Sodaq_explorer. Abhängig von Ihrer Arduino -Installation und -version ist dies möglicherweise etwas anders.
Open variant.cpp file with any editor and make the following addition: Find in the file, the table with this name: const PinDescription g_APinDescription[]= After the last line in the table, add the following: //48 Vbat { PORTB, 5, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel13, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // VBAT When user is done with the changes to file, the end of the table Should look something like this: // 47 Button { PORTA, 14, PIO_OUTPUT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_14 }, // BUTTON //48 Vbat { PORTB, 5, PIO_ANALOG, Pin_attr_analog, adc_channel13, nicht_on_pwm, nicht_on_timer, external_int_none}, // vbat
Der Benutzer kann dann die folgende Zeile hinzufügen, #define vbat_measure (48U) in die Dateivariante. Speichern Sie dann die Datei.
Dann kann der Benutzer die Batteriespannung (MV) mit diesem Code lesen:
'#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);
}
Tipps: Wenn die gemeldete Spannung geringfügig aus oder variabel/laut ist, kann der Benutzer die ADC -Lesung durchschnittlich durchführen
Durch die Gateway -Registrierung und Bereitstellung des Endgeräts können ein Benutzer ein Netzwerkserverkonto erstellen, sein Gateway und sein Endgerät registrieren. Schließen Sie Ihr Gateway nach dem Erstellen/Anmelden für ein Konto mit dem Network -Server an. Befolgen Sie die Schritte in der folgenden Link für die Gateway -Registrierung
Sobald das Gateway online ist, "Erstellen Sie eine Anwendung", gefolgt von "Erstellen eines neuen Geräts" zum Registrieren der Anwendung und des Endgeräts an TTN beim Erstellen der Anwendung und des Endgeräts in TTN. Im Folgenden sind die Dinge zu erledigen, die bei der Erstellung von EUI und Schlüssel in TTN für diese Anwendung erstellt werden müssen. Wählen Sie automatisch eine App EUI und Dev EUI. APP -Schlüssel (16 Bytes) sollte AppKeyprefix + Dev EUI sein, der Teil des Quellcode im Projekt JW_MARriot_Desert_Ridge Proj ist. Hinweis: Der App -Schlüssel kann die Wahl des Benutzers sein. Demo verwendet eine Stornierungsmethode, um den App -Schlüssel abzuleiten, und ist für App -Entwickler nicht obligatorisch, um diese Methode zu verwenden. Standardmäßig ist Appkeyprefix {0xff, 0xee, 0xdd, 0xcc, 0xBB, 0xaa, 0x99, 0x88}; Dev EUI kann in der Abbildung als hervorgehoben werden
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.
Stellen Sie vor dem Programmieren des Quellcodes in der SAMD21 in der Sodaq -Board im Board -Manager sicher, dass die Version 1.6.11 für den Board -Paket -Support für SODAQ Xplorer Boards installiert ist.
Programmieren Sie das Sodaq Xplorer -Kit mit dem Bootloader -Modus. Drücken Sie in schneller Folge zweimal zurück und programmieren Sie das Sodaq Xplorer -Kit mit Arduino. 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 Bewerbungen? Xxxx? Nutzlastformate xxxx bezeichnet den gewählten Anwendungsnamen
Gehen Sie zum Decoderabschnitt 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 erscheinen.
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 mit der Miwi Star Network -Topologie überwacht.
Eine typische MIWI -Anwendung kann durch 2 Komponenten entwickelt werden. Pan -Koordinator und Endgerät. Endgeräte können den FFD/RFD -Typ. RFD -Endgeräte wurden für den Zweck dieser Demo verwendet, weil die Fähigkeit eingeschlafen ist. Das Endgerät mit Temperatursensor (auf Batterien ausgeführt) wurde verwendet, um die Vorteile von zu demonstrieren
Hardware
Software
Generische Informationen Was ist AWS IoT? AWS IoT ist eine verwaltete Cloud -Plattform, mit der verbundene Geräte mit Cloud -Anwendungen und anderen Geräten einfach und sicher interagieren können. Was ist AWS Lambda? AWS Lambda ist ein Computerdienst, der Code als Antwort auf Ereignisse ausführt und die von diesem Code erforderlichen Computerressourcen automatisch verwaltet. Geräteregistrierung: „JITR“ findet am Start für jede neue Geräte -Lambda -Funktion Lambda -Funktion eine Möglichkeit, die Erstellung von Dingen zu automatisieren. Die Lambda -Funktion löst aus, wenn ein unbekanntes Gerät mit bekanntem CA eine Zusammenfassung der Dinge mit der Lambda -Funktion verbindet
Schritt -für -Schritt -Prozedur zur Replikation der MIWI -Demo
AWS -Konto erstellen
Lambda-Setup für Lambda Setup Folgen Sie den in Abschnitt "v. AWS IOTjust-in-Time-Registrierungs-Setup" genannten Schritten
Erstellen Sie zum Zweck dieser Demo das Zertifikat -Ökosystem. Wir erstellen unsere eigene Vertrauenskette aus. Führen Sie die Skripte hier aus:
Die folgenden Zertifikate werden root-ca.crt/key signer-ca.crt/key generiert
Registrieren Sie unsere CA mit AWS -IoT im letzten Schritt CA -Zertifikat wurde generiert. AWS verlangt von Benutzer, sich zu registrieren und zu aktivieren, damit die Lambda -Funktion ausgelöst werden kann, wenn ein Gerät, das die CA mit dem CA -Anschluss angeht. Ein Teil der Registrierung verlangt von dem Benutzer, dass der Benutzer über den privaten Schlüssel zur CA verfügt. Schritte zur Registrierung
Um die Schritte für die Registrierung auszuführen, muss der Benutzer AWS -CLI -Anmeldeinformationen konfigurieren. Öffnen Sie eine Eingabeaufforderung. Navigieren Sie zu "C: Programme Amazon awscli" Geben Sie "awsconfigure" in Informationen ein.
Bereitstellung ECC608 zur Bereitstellung des ECC608 -Benutzers muss:
Generieren Sie das Public/Private -Schlüsselpaar von Geräten und erstellen Sie ein CSR für Gerätezertifikat.
Öffnen Sie die SAMR30 XPRO ECC-Lösung für Atmel Studio 7, verbinden Sie das EDBG USB ATWINC1500-XPRO-Board auf Ext1 und Atcryptoauth-B XPro-Board auf EXT3 von ATSAMR30-XPRO Open Teraterm und das folgende Einstellungsprogramm.
Gerätezertifikat generieren. So generieren Sie das Winc Device -Zertifikat:
Speichern Sie die Zertifikatdaten in Winc1500. So speichern Sie die Zertifikatdaten in Winc1500
Stellen Sie eine Verbindung zu AWS IOTCloud her und veröffentlichen Sie mit einem Dingnamen