Créez un réseau de capteurs sans fil Wi-Fi / Miwi (15,4) / Lorawan pour surveiller les températures couvrant une large zone comme un hôtel ou une plante.
Étude de cas: Surveillance de la température des salles de classe pendant la conférence Microchip Masters tenue à JW Marriot Desert Ridge, AZ
Voir la démo (en direct uniquement pendant la conférence Masters)
Surveille les données du capteur (température, niveau de batterie et RSSI)
Couvre 34-35 emplacements sur une vaste superficie d'env. 1 km2
Communication sécurisée avec AWS IoT pour Wi-Fi
Interface Web indépendante de l'appareil pour afficher facilement les données
Affichage de la topologie en maillage Miwi dans l'interface graphique du moniteur WSN
Enregistrement des données dans le fichier CSV
Appareils à batterie
Présenter différentes technologies qui s'attaquent à la même tâche
Smart Secure Connected
Chez Masters 2019, nous avons surveillé les températures à l'échelle de la conférence en utilisant 3 réseaux différents en rapportant simultanément un seul tableau de bord facilement accessible hébergé en ligne pour afficher les informations de 34 emplacements. De plus, pour la mise en œuvre de LORA, nous avons ajouté un nœud de parcours de golf placé à l'extérieur de l'hôtel pour présenter les capacités à longue portée de Lora.
Le système est compromis principalement de deux parties:
La même démo et la même fonctionnalité peuvent être obtenues en utilisant l'une des 3 technologies. Cependant, chaque technologie a ses propres forces et inconvénients. Nous fournissons cette explication et le code de support pour aider les clients de Microchip à choisir la technologie qui convient le mieux à leur application.
Remarque: Le code ici est fourni tel quel et n'a pas été testé pour la qualité de la production. Il a des problèmes de connaissances dans la section cloud que nous mentionnons plus loin. Vous êtes pleinement responsable de tester et d'adapter le code sur votre propre système.
L'utilisateur a besoin d'un portail pour afficher les données. Pour créer une vue indépendante de plate-forme qui ne nécessite pas d'installation ou de mot de passe, nous choisissons pour afficher les données sur une page Web HTML + JavaScript .
La page Web n'est qu'un outil qui récupére les données d'un point final de données, il peut être remplacé par une application de téléphone ou ajouté à une vue par utilisateur dans un produit final.
Pour rendre notre application modulaire et indépendante sur l'implémentation frontale, qu'il s'agisse d'un site Web ou d'une application mobile. Nous avons décidé d'implémenter une API RESTful à l'aide de Flask
Les données sont renvoyées sous forme d'objet JSON à partir du point de terminaison et peuvent être consultées ici.
Aux fins de cette démo, nous avons utilisé l'instance de machine virtuelle Amazon EC2 Ubuntu (puisque nous utilisons déjà AWS IoT Core) pour gérer facilement tous nos services sur la même interface.
Cependant, la même chose pourrait être réalisée avec DigitalOcean comme alternative. Dans une application commerciale du monde réel, vous aurez probablement votre propre serveur et cette étape est inutile.
Pour le bien de cette démo, lorsque vous utilisez Wi-Fi ou 802.15.4 (MIWI), nous avons décidé d'aller avec Amazon AWS IoT Core .
Lorsque vous utilisez Lora & Lorawan , vous devez vous inscrire et utiliser l'un des fournisseurs de services Lorawan comme ** The Things Network (TTN) ** ou Senet.
Aux fins de cette démo, nous sommes allés avec TTN. Nous avons également réussi à convertir cette démo en Senet en Inde, mais cela est en dehors de la portée de cette page.
La conception et la technologie utilisées dans les nœuds d'extrémité peuvent être soit:
Lors du choix des nœuds de fin, l'utilisateur doit considérer:
Chacun de ces points est discuté dans les sections de nœud final ci-dessous.
Le diagramme ci-dessus résume le système. Les nœuds d'extrémité sont en mode veille jusqu'à un moment donné où il se réveille, envoie les données à la passerelle puis se rendormir.
Lora et Miwi ont besoin d'une passerelle dédiée pour remonter de Lora / Miwi au Wi-Fi avant d'envoyer les données au cloud. Le Wi-Fi a un avantage qu'il n'a pas besoin d'une passerelle dédiée s'il y a déjà une couverture Wi-Fi, ce qui est le cas pour notre emplacement de l'hôtel.
Les données sont envoyées au fournisseur de service de cloud. AWS IOT pour Wi-Fi et Miwi et TTN pour Lora. Notre application Flask obtiendra ensuite les données et fournira un point final de données modulaire que notre page Web peut présenter. L'application FLASK et l'interface Web colocalisent à la fois sur notre instance AWS EC2.
L'utilisateur peut ensuite accéder à notre page Web à partir de n'importe quel appareil où il le souhaite.
Dans cette section, nous discutons de la façon de configurer la partie cloud de la démo.
Nous utilisons deux services d'AWS dans cette démo, AWS EC2 en tant que plate-forme d'hébergement de serveur. et AWS IoT pour les nœuds de fin Wi-Fi et Miwi MQTT courtier.
Pour héberger votre serveur, vous devrez créer une instance Virtual Machine EC2 avant d'y déployer Apache. Le processus est facile et simple une fois que vous avez votre compte AWS prêt.
Pour un guide étape par étape, veuillez suivre le guide Amazon ici.
Pour notre démo, nous sommes allés avec gratuitement ce type d'instance: Ubuntu Server 16.04 LTS Free Tier (mis à niveau vers Medium pendant la conférence pour accueillir la demande)
Au réglage de sécurité, permettez l'accès au trafic entrant et sortant HTTP, HTTPS et SSH. Vous pouvez également ajuster le paramètre de sécurité à votre goût. Veuillez également garder la clé privée pour accéder à l'instance en sécurité afin que vous puissiez pousser vos données et contrôler le serveur.
Pour accéder à votre serveur, suivez les guides disponibles sur le site Web d'Amazon ici. ### Les nœuds Wi-Fi IoT AWS devront se connecter au noyau AWS IoT pour envoyer des données de capteur sur MQTT.
Pour configurer AWS IoT Cloud, vous pouvez suivre le Guide de l'utilisateur du projet de kit de provisionnement AWS Zero Touch (de l'installation du logiciel section 2 à la section 5 AWS IoT Enregistrement de la configuration d'enregistrement) doit créer la fonction lambda, la règle AWS IoT et le rôle IAM pour la provision AWS.
Le kit AWS Zero Touch Provisioing est un projet sur l'approvisionnement du kit de provisioning Zero Touch Secure pour se connecter et communiquer avec le service IoT des services Web Amazon (AWS). Le guide de l'utilisateur du projet de kit de provisionnement AWS Zero Touch peut être trouvé à partir de ci-dessous: http://microchipdeveloper.com/iot:ztpk
Une fois que vous avez votre instance EC2 opérationnelle après avoir suivi les étapes ci-dessus, vous devrez installer Apache et le pointer pour héberger notre page Web et l'application FLASK.
L'instance EC2 est déjà livrée avec Python, assurez-vous que vous gits PIP car nous en aurons besoin plus tard. $ sudo apt-get update et sudo apt-get install python3-pip
Tout d'abord, installez Flask sur votre instance EC2: $ pip3 install Flask
Copiez le fichier "Server / wsn_server.py" dans l'instance EC2.
Décrivons maintenant les parties du code que vous souhaitez modifier et adapter à votre application:
Vous trouverez des dictionnaires nommés "UsmastersNodelocation" et "IndiamastersNodelocation". La raison en est que nous voulions que nos conseils soient réutilisés pour plusieurs emplacements de démonstration sans changer le code sur la carte, nous donnons donc un numéro à chaque nœud et utilisons ce dictionnaire pour cartographier le nœud dans la pièce qu'il est mis à l'intérieur.
Par exemple, Node4 pendant les maîtres américains sur "Desert Suite 4". Ensuite, nous avons expédié le même nœud en Inde et l'avons mis dans la salle "Dominion". De cette façon, le même nœud, le même code peut être utilisé pour un emplacement différent simplement en modifiant l'application FLASK sans avoir besoin de programmer Physicall l'appareil.
La mise à jour du code physiquement sur la carte n'est pas toujours pratique sur le terrain. Nous vous encourageons à penser à des méthodes comme celle-ci et à planifier à l'avance pour éviter de mettre à jour le conseil d'administration 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"
}Nous stockons les données que nous recevons sur un fichier CSV. L'emplacement et le nom du fichier sont spécifiés sur la ligne 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 )Pour obtenir des notifications à partir du nœud d'extrémité, l'application doit s'abonner aux serveurs AWS IoT Core et TTN (ou tout serveur que vous choisissez)
Nous avons utilisé le code Pythond fourni par publication pour AWS IoT. Pour l'utiliser, veuillez vous rendre au Repo Amazon Github ici.
Notre code peut être utilisé comme si vous remplacez le chemin des certificats par votre chemin de certificat.
# 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 ()Le code s'attend à ce que les sujets soient connus et un sujet par technologie. L'utilisateur peut utiliser différents sujets avec un accès différent s'il le souhaite.
myMQTTClient . subscribe ( "/Microchip/WSN_Demo/WiFi" , 1 , WiFiCallback )
myMQTTClient . subscribe ( "/Microchip/WSN_Demo/MiWi" , 1 , MiWiCallback ) Le code s'attend à un objet JSON avec le format: {'nodeID': "Node1", 'Battery': "4.99V", 'Temperature': 81.46, 'RSSI': -55}
Le réseau ne nécessite pas d'authentification ou de certificats mutuels pour se connecter comme AWS, mais ils s'appuient sur le nom d'utilisateur et le mot de passe. Par conséquent, nous montrons comment se connecter à leur serveur à l'aide du package "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 ):Vous remarquerez que la charge utile du message pour Lora est un peu différente de celle du Wi-Fi et du Miwi, cela est dû à la passerelle TTN ajoutant des informations à la charge utile du nœud final et à nous en essayant de minimiser la charge de rémunération autant que possible pour réduire la puissance utilisée et augmenter l'efficacité. Veuillez vous référer à la section LORA ci-dessous.
### Apache
Il existe une pléthore de tutoriels et de contenu Apache, nous mentionnons simplement les écarts ici.
Tout d'abord, obtenez Apache et WSGI pour Flask: sudo apt-get install apache2 libapache2-mod-wsgi-py3
Créer un fichier WSGI: vi wsn_demo.wsgi
Mettez ceci dans le fichier ci-dessus:
import sys
sys . path . insert ( 0 , '/var/www/html/WSN' ) Créez un lien symbolique afin que le répertoire de projet apparaisse dans / var / www / html: $ sudo ln -sT ~/WSN /var/www/html/WSN
Activer WSGI: sudo a2enmod wsgi
Configurez Apache (vous devrez Sudo pour modifier le fichier) $ sudo vi /etc/apache2/sites-enabled/000-default.conf
Nous créerons 2 hôtes virtuels, un pour le point final des données et un pour le site Web OUT.
Les lignes 9 et 49 ci-dessous indiquent le nom de votre site Web. Ligne 14 Ayez votre emplacement de fichier WSGI.
Collez ceci dans "000-default.conf" après avoir apporté vos modifications d'hôte comme mentionné ci-dessus:
< 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 > Redémarrer le serveur: $ sudo apachectl restart
Maintenant, vous devez faire une entrée DNS qui mappera à partir de "Demo.microchip.com" & "Demo2.microchip.com" à l'adresse IP publique de l'instance EC2.
Une fois cela fait, allez-y et consultez vos données dans un lien similaire à: http://demo2.microchip.com/wsn/data/lora/
et le site Web sera similaire à: (selon la façon dont vous avez configuré Apache et où vous mettez vos fichiers HTML): http://demo.microchip.com/wsn/masters/
Lorsque vous inspectez les pages HTML que nous fournissons à "Server US IoT Network IoT Network"
Le fichier important est "scripts.js" qui va lire les données de nos points de terminaison de données ci-dessus.
Le reste n'est que des fichiers HTML contenant une table et des fichiers SVG pour la carte de localisation.
Dans cette section, nous décrivons les étapes nécessaires pour commencer à envoyer des données de capteur au cloud en utilisant chaque technologie respective.
Raisons pour lesquelles vous voudrez peut-être choisir le Wi-Fi comme nœud final:
** Avantages du wifi **
Raisons qui font du Wi-Fi des options moins idéales:
La carte Wi-Fi dort pendant une période de temps configurable. Lorsqu'il se réveille, il vérifie si la lecture du capteur a changé depuis la dernière mise en place du cloud. S'il choisit de mettre à jour la lecture, il se connectera au module AP Usning le module Wi-Fi et s'authentifiera avec AWS Cloud à l'aide de la puce Crypto-Auth (ECC508) et envoie les valeurs mises à jour.
Le conseil d'administration ne doit être assuré que la première fois avant de pouvoir être utilisé, nous le faisons ci-dessous.
Pour la démo, nous avons utilisé le capteur IoT Bord qui contient un MCU (SAML21) et un module Wi-Fi microchip (Atwinc1500) et d'autres capteurs.
Pour plus d'informations sur le HW, veuillez vous rendre sur cette page ici.
La carte n'est pas disponible à l'achat pour le moment @microchip Direct. Il a été distribué gratuitement aux participants à la conférence des Masters et sera ajouté plus tard pour l'option d'achat. En attendant, vous pouvez faire de même en utilisant le kit AWS Zero Touch.
Pour flasher le firmware à la carte, veuillez passer par les options ici.
Veuillez vous rendre sur cette page pour installer les outils nécessaires.
Maintenant. Si vous souhaitez utiliser Wi-Fi, les étapes sont comme ceci:
La première étape est couverte dans la section cloud. Vous pouvez également aller de l'avant sur aws.amazon.com et suivre leur guide au cas où ils ont changé les étapes. Nous couvrirons les 2e et 3e étapes ici.
L'appareil ECC608 est la vallée qui protège votre identité de l'appareil et s'authentifie avec le cloud AWS.
Pour fournir votre appareil ECC608, veuillez suivre les étapes ici.
Une fois que vous avez terminé les étapes ci-dessus, votre ECC608 est provisionné. La partie restante consiste à stocker le certificat de l'appareil sur le WinC1500.
Cela peut être fait de manière programmatique du côté de l'application en appelant: m2m_ssl_send_certs_to_winc Ce qui précède convient à la production. Une alternative consiste à utiliser l'outil de ce guide.
Une fois que l'ECC608 et le WinC1500 sont provisionnés. Vous pouvez enfin flasher la carte avec la vraie application.
L'exemple d'application sur le dossier Wi-Fi contient du code de référence pour le faire.
Il y a des projets là-bas:
Vous pouvez modifier le AP SSID et le mot de passe auxquels vous souhaitez vous connecter sur les lignes 61/63 sur Main.h
Le nom du nœud est sur la ligne 73, sur main.h
Le SAML21 s'endort et se réveille sur l'interruption RTC. Le MCU ira dormir sur un appel à: system_sleep(); et se réveille lorsque l'interruption RTC est reçue. Pour contrôler la durée de l'interruption RTC, configurez le nombre dans la fonction "configure_rtc_count" sur rtc.c, la durée du sommeil dépend de la fréquence à laquelle vous souhaitez actualiser les données et votre budget de puissance.
Vous devez saisir l'ID Client MQTT pour être similaire à l'ID sujet dans votre certificat d'appareil. Entrez l'ID client dans la variable "GAWSMQTTCLIENDID" en ligne 95 de "winc15x0.c"
C'est à peu près tout, allez maintenant dans le fichier main.c, lisez la fonction principale et se familiarisez-la et lorsque vous êtes prêt, construisez et flashez le SAML21 avec le code.
Si vous êtes connecté au Test Consle AWS CONSLE ANS à vous abonner au sujet Wi-Fi mentionné ci-dessus (/ microchip / wsn_demo / wifi), vous devriez voir un nouveau message reçu une fois que le tableau sera exécuté.
Lora représente à longue portée. Lorawan représente des réseaux à longue portée. Lorawan est le réseau sur lequel Lora fonctionne. Lorawan est un protocole de couche de contrôle d'accès multimédia (MAC) mais est principalement un protocole de couche de réseau pour gérer la communication entre les passerelles LPWAN et les périphériques de nœud final en tant que protocole de routage, maintenu par la Lora Alliance. Certaines des applications qui peuvent être accomplies à l'aide de LORA sont la gestion intelligente du stationnement et des véhicules, les installations et la gestion des infrastructures, la détection et la gestion des incendies, la gestion des déchets, la foyer pour l'IoT permettent des appareils intelligents, une agriculture intelligente et une gestion du bétail, une surveillance de la température et de l'humidité, des capteurs au niveau de l'eau et un contrôle de l'irrigation.
La température des chambres réparties dans une énorme station a été surveillée à l'aide de la LORA. Une application LORA typique peut être développée en ayant 4 composants de composants, un périphérique de fin, une passerelle, un serveur réseau et un serveur d'applications. Le dispositif final avec capteur de température (fonctionnant sur les batteries) a été utilisé pour démontrer les avantages de Lorawan tels que la faible puissance, sécurisée et à longue portée. Les utilisateurs qui sont nouveaux dans le développement d'applications à l'aide de Lorawan peuvent trouver un aperçu de l'architecture du système Lorawan ici.
Assurez-vous que la passerelle est connectée au serveur réseau de choses - étapes mentionnées ici
Une fois la passerelle en ligne, "Créer une application" suivie de la section "Créer un nouvel appareil" pour enregistrer l'application et le périphérique final à TTN
Une fois le périphérique final créé dans la console réseau et les modifications de code nécessaires ont été apportées dans le code source d'application pour Deveui et Appeui. Nous utiliserons la méthode OTAA de jointure pour notre application.
Pour permettre la mesure de la tension de la batterie, assurez-vous que PA15 est court-circuité à GND. Le cavalier d'E / S et le cavalier MCU devraient être en train de contourner
Connectez l'ATSAMR34-XPRO à PC à l'aide d'un câble micro USB via l'alimentation EDBG. ATSAMR34-XPRO sera énuméré en tant que port com. Utilisation d'une application de terminal @ baudrate 115200, données - 8 bits, parité - Aucun, arrêt - 1 bit et contrôle de flux - aucun des paramètres ne permettra à un utilisateur de surveiller les informations de l'exemple du micrologiciel
Ouvrez le projet - apps_enddevice_demo à l'aide d'ATMEL Studio Configurez le Deveui, Appkey et l'Appeui à l'aide du fichier conf_app.h disponible dans le répertoire suivant - / src / config
Si l'application développée utilise des bandes NA / Au, l'utilisation peut choisir une sous-bande sur laquelle la passerelle écoute. Car la bande Na / Au permet jusqu'à 64 canaux de liaison montante. Des passerelles peu coûteuses populaires ici sur seulement 8 canaux, donc un choix de sous-bande est nécessaire. La passerelle qui écoute les sous-bandes - 2 pour NA autrement appelé US902 selon les paramètres régionaux de Lorawan. Pour la démo, nous avons utilisé l'OTAA (sur l'activation de l'air), rejoignez la méthodologie à Lorawan
Programmez la démo à l'aide de l'option "Déboger sans débogage" sur ATMEL Studio. Après la programmation de la démo, le périphérique final (ATSAMR34-XPRO) essaiera de rejoindre le serveur réseau Lorawan (The Things Network). Si la passerelle est en ligne et connectée au serveur réseau de choses, la demande de jointure entraînera une acceptation immédiate de jointure.
TTN possède une fonctionnalité appelée fonctions TTN qui permet aux utilisateurs de changer les octets, envoyés sur le réseau Things, aux champs lisibles par humain. Pour ajouter l'API pour cette démo, accédez aux applications -> xxxx -> Formats de charge utile xxxx indique le nom de l'application des utilisateurs, allez dans la section Decoder et enregistrez la fonction de décodeur ci-dessous
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,
};
}
}
Après avoir configuré le décodeur et programmé la carte avec le code source d'application. Les données de l'application doivent commencer à apparaître dans la fenêtre du terminal et sur la console du réseau
Les transmissions de capteurs ultérieures se produisent toutes les 15 minutes
Introduction Miwi signifie microchip Wireless. Miwi est un protocole sans fil propriétaire conçu par la technologie Microchip qui utilise de petites radios numériques à faible puissance basées sur la norme IEEE 802.15.4 pour les réseaux de zone personnelle sans fil (WPAN). Il est conçu pour les faibles taux de transmission de données et la courte distance, les réseaux contraints des coûts, tels que la surveillance et le contrôle industriels, l'automatisation des maisons et du bâtiment, la télécommande, les capteurs sans fil à faible puissance, le contrôle de l'éclairage et la lecture automatisée des compteurs. Le protocole Miwi prend en charge trois topologies de réseau
Avantages de Miwi
La température d'introduction de la démo des chambres réparties dans une énorme station a été surveillée à l'aide de la topologie du réseau de maillage Miwi.
Une application typique de maillage Miwi peut être développée en ayant 3 composantes.
Le coordinateur PAN et le coordinateur sont de type FFD (périphérique de fonction complète) et sont capables de rouler que les périphériques d'extrémité des paquets peuvent être un type FFD (périphérique de fonction complet) / RFD (périphérique de fonction réduit). Les dispositifs d'extrémité RFD ont été utilisés aux fins de cette démo en raison de la capacité de s'endormir. Le dispositif final avec capteur de température (fonctionnant sur des batteries) a été utilisé pour démontrer les avantages du réseau de maillage Miwi tel que la faible puissance, l'auto-guérison, etc.
Le nœud pan-coordinateur est connecté à la carte SAMA5D2 XPRO et il a une connectivité WiC3000 pour Wi-Fi (Internet). Cette combinaison de dispositifs est appelée pont Miwi dans cette démo. Les routeurs et les appareils finaux envoient des données périodiques au pan-coordinateur. Le SAMA5D2 lit les données du pan-coordinateur et l'envoie à l'instance AWS EC2. L'instance AWS EC2 envoie les données reçues à l'outil de moniteur WSN et au serveur Web. L'outil de moniteur WSN représente la topologie du maillage formée à partir des données reçues du routeur, des nœuds de capteur et du pan-coordinateur. Le moniteur WSN peut également être utilisé pour surveiller le réseau Miwi.
Matériel
Logiciel
AT91SAMA5D27 sur Linux
Modules et micrologiciel AtWILC3000
$ /root du package Buildroot. Le firmware est ajouté dans $ /lib/firmware/mchp .Services d'instance AWS Cloud EC2
Outil de moniteur WSN
Procédure étape par étape pour reproduire la configuration de la démo miwi sama5d2
Afficher l'interface WiFi et la connexion WiFi
$ root comme nom d'utilisateur.$/root/mchp/ dossier contiennent le module du pilote wilc3000.$/root/mchp contient le module de pilote WILC3000.$ /lib/firmwae/mchp/wilc1000_wifi_firmware.bin$ vi Modifier le script pour les informations d'identification du routeur.Configuration de l'instance AWS Cloud EC2 Nous utilisons les services EC2 (Amazon Elastic Caltel Cloud) pour cette démo. L'instance EC2 héberge les deux serveurs TCP pour le pont réseau Miwi et l'outil de moniteur WSN. Instance AWS EC2 Pour héberger le serveur Python, nécessite une machine virtuelle Ami Linux. L'instance Amazon EC2 fournira la machine Virtual Linux. Le processus est facile et simple une fois que vous avez votre compte AWS prêt.
nohup python miwi_wsn_server_4.py & cd iot nohup python iot_publish_2.py &Configuration de Miwi
Pour la démonstration MIWI WSN, programme Pan-coordinateur avec fichier de projet disponible sur / miwi / samr30 / pan_cord_mod. Programmez les nœuds du coordinateur avec le fichier de projet disponible sur / miwi / samr30 / cord_mod1 et programmez la carte de capteur avec le fichier de projet disponible sur / miwi / samr30 / capteur_mod1.
Outil de moniteur WSN
L'outil de moniteur WSN est l'outil propriétaire microchip pour 802.15.4 Moniteur réseau et contorl. Dans cet outil, la connexion réseau Miwi avec les nœuds respectives sera affichée. WSN Monitor Toll affiche également la température, la vlaue RSSI des nœuds de réseau et la notification de la batterie. Pour se connecter avec EC2 Server, une adresse IP publique Instance EC2 est requise. L'adresse IP publique de l'instance EC2 est disponible dans la page d'instance EC2 comme mentionné ci-dessus. Numéro de port pour la connexion de l'outil de moniteur WSN est $ 8080 Une fois que l'outil de moniteur WSN connecté, le serveur EC2 transfèrera le paquet reçu du réseau de clinités Miwi.
Après la connexion réussie avec EC2 Server, WSN Monitor commence à recevoir les données et les affichages du réseau MiWI.