Cree una red de sensores inalámbricos Wi-Fi / MIWI (15.4) / Lorawan para monitorear las temperaturas que cubren un área ancha como un hotel o una planta.
Estudio de caso: Monitoreo de temperatura de las aulas durante la conferencia de Microchip Masters celebrada en JW Marriot Desert Ridge, AZ
Ver la demostración (en vivo solo durante la Conferencia de Masters)
Monitorea datos del sensor (temperatura, nivel de batería y RSSI)
Cubre 34-35 ubicaciones en una vasta área de aprox. 1 km2
Comunicación segura con AWS IoT para Wi-Fi
Interfaz web independiente del dispositivo para ver fácilmente los datos
Visualización de topología de malla MIWI en WSN Monitor GUI
Registro de datos al archivo CSV
Dispositivos operados por baterías
Exhibir diferentes tecnologías que abordan la misma tarea
Smart Secure Connected
En Masters 2019, monitoreamos las temperaturas de toda la conferencia utilizando 3 redes diferentes informando simultáneamente en un solo tablero de fácil acceso alojado en línea para ver la información de 34 ubicaciones. Además, para la implementación de Lora agregamos un nodo del campo de golf que se coloca fuera del hotel para mostrar las capacidades de Lora Long Range.
El sistema se ve comprometido principalmente de dos partes:
La misma demostración y funcionalidad se puede lograr utilizando cualquiera de las 3 tecnologías. Sin embargo, cada tecnología tiene sus propias fortalezas y inconvenientes. Proporcionamos esta explicación y el código de apoyo para ayudar a los clientes de Microchip a elegir la tecnología que mejor se adapte a su aplicación.
Nota: El código aquí se proporciona como está y no se probó para la calidad de producción. Tiene algunos problemas de conocimientos en la sección de la nube que mencionamos más adelante. Usted es totalmente responsable de probar y adaptar el código en su propio sistema.
El usuario necesita un portal para ver los datos. Para hacer una vista independiente de la plataforma que no requiere instalación o contraseña, elegimos mostrar los datos en una página web HTML + JavaScript .
La página web es solo una herramienta que recupera los datos de un punto de finalización de datos, puede ser reemplazado por una aplicación de teléfono o agregarse a una vista por usuario en un producto final.
Para que nuestra aplicación sea modular e independiente en la implementación del front -end, ya sea un sitio web o una aplicación móvil. Decidimos implementar una API RESTful usando Flask
Los datos se devuelven como objeto JSON desde el punto final y se pueden ver aquí.
Para el propósito de esta demostración, utilizamos Amazon EC2 Ubuntu Virtual Machine Instance (ya que ya estábamos usando AWS IoT Core) para administrar fácilmente todos nuestros servicios en la misma interfaz.
Sin embargo, lo mismo podría lograrse con Digitalocean como alternativa. En una aplicación comercial del mundo real, probablemente tendrá su propio servidor y este paso es inncesario.
En aras de esta demostración, cuando usamos Wi-Fi o 802.15.4 (MIWI), decidimos ir con Amazon AWS IoT Core .
Cuando use Lora y Lorawan , debe registrarse y usar uno de los proveedores de servicios de Lorawan como ** The Things Network (TTN) ** o Senet.
Para el propósito de esta demostración fuimos con TTN. También tuvimos éxito con la conversión de esta demostración a Senet en India, pero esto está fuera del alcance de esta página.
El diseño y la tecnología utilizados en los nodos finales pueden ser:
Al elegir nodos finales, el usuario debe considerar:
Cada uno de estos puntos se discute en las secciones del nodo final a continuación.
El diagrama anterior resume el sistema. Los nodos finales están en modo de suspensión hasta una hora determinada donde se despierta, envía los datos a la puerta de enlace y luego vuelve a dormir.
Lora y Miwi necesitan una puerta de enlace dedicada para unir desde Lora/Miwi a Wi-Fi antes de enviar los datos a la nube. Wi-Fi tiene la ventaja de que no necesita una puerta de enlace dedicada si ya hay cobertura Wi-Fi, que es el caso de la ubicación de nuestro hotel.
Los datos se envían al proveedor de administradores de nubes. AWS IoT para Wi-Fi y Miwi y Ttn para Lora. Nuestra aplicación Flask obtendrá los datos y proporcionará un punto final de datos modulares que nuestra página web puede presentar. La aplicación Flask y la interfaz web se colocan en nuestra instancia de AWS EC2.
El usuario puede acceder a nuestra página web desde cualquier dispositivo en cualquier lugar que desee.
En esta sección discutimos cómo configurar la parte de la nube de la demostración.
Utilizamos dos servicios de AWS en esta demostración, AWS EC2 como plataforma de alojamiento de servidor. y AWS IoT para Wi-Fi y Miwi End Nodes MQTT Broker.
Para alojar su servidor, deberá crear una instancia de EC2 de máquina virtual antes de implementar Apache en él. El proceso es fácil y directo una vez que tenga su cuenta AWS lista.
Para una guía paso a paso, siga la guía de Amazon aquí.
Para nuestra demostración, fuimos con Tipo de instancia gratuito de esta instancia: Ubuntu Server 16.04 LTS Free Tier (actualizado a medio durante la conferencia para acomodar la demanda)
En la configuración de seguridad, permita el acceso al tráfico HTTP, HTTPS y SSH de entrada y salida. También puede ajustar la configuración de seguridad a su gusto. Además, mantenga la clave privada para acceder a la instancia segura para que pueda presionar sus datos y controlar el servidor.
Para acceder a su servidor, siga las guías disponibles en el sitio web de Amazon aquí. ### Los nodos Wi-Fi AWS IoT necesitarán conectarse a AWS IoT Core para enviar datos del sensor a través de MQTT.
Para configurar AWS IoT Cloud, puede seguir la guía del usuario del Proyecto del Kit de Provisión AWS Zero Touch (desde la instalación de software de la Sección 2 hasta la Sección 5 AWS IoT Just-A-Time Registration Configuración) El usuario necesita crear la función Lambda, la regla de AWS IoT y el papel de IAM para la provisión AWS.
El kit de condición de AWS Zero Touch es un proyecto sobre el aprovisionamiento del kit de aprovisionamiento seguro de touch touch para conectarse y comunicarse con el servicio IoT de Amazon Web Services (AWS). La guía del usuario del proyecto del kit de condición de condición de AWS Zero Touch se puede encontrar desde abajo: http://microchipdeveloper.com/iot:ztpk
Una vez que tenga su instancia de EC2 en funcionamiento después de seguir los pasos anteriores, deberá instalar Apache y señalarlo para alojar nuestra página web y la aplicación Flask.
La instancia de EC2 ya viene con Python, asegúrese de Git Pip, ya que lo necesitaremos más adelante. $ sudo apt-get update y sudo apt-get install python3-pip
Primero, instale el matraz en su instancia de EC2: $ pip3 install Flask
Copie el archivo "servidor/wsn_server.py" a la instancia de EC2.
Ahora describamos partes del código que querrá modificar y adaptarnos a su aplicación:
Encontrará diccionarios llamados "USMasterSnodElocation" y "IndiaMastersNodelocation". La razón es que queríamos que nuestras tablas se reutilizaran para múltiples demostraciones sin cambiar el código en el tablero, por lo que le damos a cada nodo un número y usamos este diccionario para asignar el nodo a la habitación que se pone dentro.
Por ejemplo, Node4 durante los maestros de EE. UU. En "Desert Suite 4". Luego enviamos el mismo nodo a la India y lo pusimos en la sala "Dominion". De esta manera, el mismo nodo, con el mismo código, se puede utilizar para una ubicación diferente simplemente cambiando la aplicación Flask sin la necesidad de programar física el dispositivo.
Actualizar el código físicamente en la placa no siempre es conveniente en el campo. Le recomendamos que piense en métodos como este y planee con anticipación para evitar actualizar el tablero 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"
}Almacenamos los datos que recibimos en un archivo CSV. La ubicación y el nombre del archivo se especifican en la línea 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 )Para obtener notificaciones desde el nodo final, la aplicación debe suscribirse a los servidores AWS IoT Core y TTN (o cualquier servidor que elija)
Utilizamos el código Pythond proporcionado Publickly para AWS IoT. Para usarlo, vaya al repositorio de Amazon Github aquí.
Nuestro código se puede usar como si reemplaza la ruta de certificados con su ruta de certificado.
# 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 ()El código espera que se conozcan los temas y un tema por tecnología. El usuario puede usar temas diferentes con acceso diferente si lo desea.
myMQTTClient . subscribe ( "/Microchip/WSN_Demo/WiFi" , 1 , WiFiCallback )
myMQTTClient . subscribe ( "/Microchip/WSN_Demo/MiWi" , 1 , MiWiCallback ) El código espera un objeto JSON con el formato: {'nodeID': "Node1", 'Battery': "4.99V", 'Temperature': 81.46, 'RSSI': -55}
La red que no requiere autenticación o certificados mutuos para conectarse como AWS, sino que dependen del nombre de usuario y la contraseña. Por lo tanto, mostramos el caso de cómo conectarse a su servidor utilizando el paquete "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 ):Notará que la carga útil del mensaje para Lora es un poco diferente a Wi-Fi y MIWI, esto se debe a que TTN Gateway agrega información a la carga útil del nodo final y, debido a que tratamos de minimizar la carga de pago tanto como sea posible para disminuir la energía utilizada y aumentar la eficiencia. Consulte la sección Lora a continuación.
###Apache
Hay una gran cantidad de tutoriales de Apache y contenido, solo mencionamos las desviaciones aquí.
Primero, obtenga Apache y WSGI para Flask: sudo apt-get install apache2 libapache2-mod-wsgi-py3
Crear un archivo WSGI: vi wsn_demo.wsgi
Pon esto en el archivo anterior:
import sys
sys . path . insert ( 0 , '/var/www/html/WSN' ) Cree un enlace simbólico para que el directorio del proyecto aparezca en/var/www/html: $ sudo ln -sT ~/WSN /var/www/html/WSN
Habilitar WSGI: sudo a2enmod wsgi
Configurar Apache (necesitará sudo para editar el archivo) $ sudo vi /etc/apache2/sites-enabled/000-default.conf
Crearemos 2 host virtual, uno para el punto final de datos y otro para el sitio web.
La línea 9 y 49 a continuación indica el nombre de su sitio web. La línea 14 tiene la ubicación de su archivo WSGI.
Pegue esto en "000-default.conf" después de hacer modificaciones de su host como se mencionó anteriormente:
< 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 > Reiniciar el servidor: $ sudo apachectl restart
Ahora debe hacer una entrada DNS que se asigne desde "demo.microchip.com" y "demo2.microchip.com" a la dirección IP pública de la instancia de EC2.
Una vez hecho esto, continúe y vea sus datos en un enlace similar a: http://demo2.microchip.com/wsn/data/lora/
y el sitio web será similado a: (dependiendo de cómo configuró Apache y dónde coloque sus archivos HTML): http://demo.microchip.com/wsn/masters/
Cuando inspecciona las páginas HTML que proporcionamos en "Network Servidor US IoT IoT Network"
El archivo importante es "scripts.js" que van y leen los datos de nuestros puntos finales de datos anteriores.
El resto son solo archivos HTML que contienen una tabla y archivos SVG para el mapa de ubicación.
En esta sección describimos los pasos necesarios para comenzar a enviar datos del sensor a la nube utilizando cada tecnología respectiva.
Razones por las que puede elegir Wi-Fi como nodo final:
** Ventajas de wifi **
Razones que hacen de Wi-Fi una opción menos ideal:
La placa Wi-Fi duerme por un período de tiempo configurable. Cuando se despierta, verifica si la lectura del sensor ha cambiado desde la última vez que se informó a la nube. Si elige actualizar la lectura, se conectará al módulo Wi-Fi y se autenticará con AWS Cloud usando el chip Crypto-Auth (ECC508) y enviará los valores actualizados.
La junta debe ser probada por primera vez solo antes de que pueda usarse, pasamos por esto a continuación.
Para la demostración, utilizamos el Bord del sensor IoT que contiene un MCU (SAML21) y un módulo Wi-Fi Microchip (ATWINC1500) y otros sensores.
Para obtener más información sobre el HW, vaya a esta página aquí.
El tablero no está disponible para su compra en este momento @Microchip Direct. Se distribuyó a los asistentes a la Conferencia de Masters de forma gratuita y se agregará más tarde para la opción de compra. Mientras tanto, puede hacer lo mismo usando el kit AWS Zero Touch.
Para flashear firmware a la placa, revise las opciones aquí.
Dirígete a esta página para instalar las herramientas necesarias.
Ahora. Si desea usar Wi-Fi, los pasos son así:
El primer paso está cubierto en la sección de la nube. También puede seguir adelante a AWS.Amazon.com y seguir su guía en caso de que cambiaran los pasos. Cubriremos los pasos 2 y terceros aquí.
El dispositivo ECC608 es el valut que protege la identidad de su dispositivo y se autentica con la nube de AWS.
Para aprovisionar su dispositivo ECC608, siga los pasos aquí.
Una vez que haya terminado con los pasos anteriores, su ECC608 está provisto. La parte restante es almacenar el certificado del dispositivo en el WINC1500.
Esto se puede hacer programáticamente desde el lado de la aplicación llamando: m2m_ssl_send_certs_to_winc Lo anterior es adecuado para la producción. Una alternativa es mediante el uso de la herramienta en esta guía.
Una vez que se aprovisionan tanto el ECC608 como el WinC1500. Finalmente puede flashear el tablero con la aplicación real.
El ejemplo de la aplicación en la carpeta Wi-Fi contiene código de referencia para hacerlo.
Hay proyectos allí:
Puede cambiar el AP SSID y la contraseña que desea conectarse en las líneas 61/63 en Main.h
El nombre del nodo está en la línea 73, en main.h
El SAML21 se duerme y se despierta en la interrupción de RTC. El MCU se dormirá en una llamada a: system_sleep(); y se despierta cuando se recibe la interrupción RTC. Para controlar la duración de la interrupción de RTC, configure el recuento en la función "configure_rtc_count" en RTC.C, la duración del sueño depende de la frecuencia con la que desea actualizar los datos y su presupuesto de potencia.
Debe ingresar la ID del cliente MQTT para que sea similar a la ID de sujeto en su certificado de dispositivo. Ingrese la ID del cliente en la variable "gawsmqttClientid" en la línea 95 de "winc15x0.c"
Eso es más o menos, ahora vaya al archivo Main.c, lea la función principal y se familiariza con ella y cuando esté listo, construya y flashe el SAML21 con el código.
Si ha iniciado sesión en la prueba de prueba AWS y se suscribe al tema de Wi-Fi mencionado anteriormente (/microchip/wsn_demo/wifi), debe ver un nuevo mensaje recibido una vez que se ejecuta la placa.
Lora representa a largo plazo. Lorawan representa redes de área de largo alcance. Lorawan es la red en la que opera Lora. Lorawan es un protocolo de capa de control de acceso a medios (Mac), pero principalmente es un protocolo de capa de red para gestionar la comunicación entre las puertas de enlace de LPWAN y los dispositivos de nodo final como protocolo de enrutamiento, mantenido por la Alianza Lora. Algunas de las aplicaciones que se pueden lograr con LORA son el estacionamiento inteligente y la gestión de vehículos, las instalaciones y la gestión de infraestructura, la detección y gestión de incendios, la gestión de residuos, la automatización del hogar para IoT permite electrodomésticos inteligentes, gestión de la agricultura inteligente y la gestión del ganado, el monitoreo de la temperatura y la humedad, los sensores de nivel de agua y el control de riego.
La temperatura de las habitaciones repartidas por un gran complejo se monitoreó utilizando el lora. Se puede desarrollar una aplicación Lora típica con 4 componentes End Device, Gateway, Network Server y Application Server. El dispositivo final con sensor de temperatura (que se ejecuta con baterías) se utilizó para demostrar las ventajas de Lorawan, como baja potencia, segura y de largo alcance. Los usuarios que son nuevos en el desarrollo de aplicaciones utilizando Lorawan pueden encontrar una descripción general de la arquitectura del sistema Lorawan aquí.
Asegúrese de que la puerta de enlace esté conectada al servidor de red Things - Pasos mencionados aquí
Una vez que la puerta de enlace está en línea, "crear una aplicación" seguida de la sección "Crear un nuevo dispositivo" para registrar la aplicación y el dispositivo final a TTN
Una vez que el dispositivo final se crea en la consola de red Things y se han realizado cambios de código necesarios en el código fuente de la aplicación para Deveui y Appeui. Utilizaremos el método OTAA de unión para nuestra aplicación.
Para habilitar la medición de voltaje de la batería, asegúrese de que PA15 esté en corto a GND. Jumper de E/S y Jumper MCU debe ser BypassMode
Conecte el ATSAMR34-XPRO a PC usando un cable Micro USB a través de la fuente de alimentación EDBG. ATSAMR34-XPRO enumerará como un puerto Com. Uso de una aplicación terminal @ Baudrate 115200, datos - 8 bits, paridad - ninguno, parada - 1 bit y control de flujo - Ninguno Configuración permitirá a un usuario monitorear la información del ejemplo del firmware
Abra el proyecto - APPS_ENDDEVICE_DEMO usando Atmel Studio Configure el Deveui, AppKey y Appeui utilizando el archivo conf_app.h disponible en el siguiente directorio - /src /config
Si la aplicación desarrollada está utilizando bandas Na/Au, Use puede elegir una subbanda en la que esté escuchando la puerta de enlace. Como la banda Na/Au permite hasta 64 canales de enlace ascendente. Las puertas de enlace populares de bajo costo aquí en solo 8 canales, por lo tanto, se requiere una elección de subbanda. Las cosas que Gateway escucha en la subbanda - 2 para NA de otra manera se llama US902 según los parámetros regionales de Lorawan. Para la demostración hemos utilizado la metodología de unión de OTAA (sobre la activación del aire) en Lorawan
Programe la demostración utilizando la opción "Inicio sin depuración" en Atmel Studio. Después de programar la demostración, el dispositivo final (ATSAMR34-XPRO) intentará unirse al servidor de red Lorawan (la red Things). Si la puerta de enlace está en línea y está conectada al servidor de red Things, la solicitud de unión dará como resultado una aceptación de unión inmediata.
TTN tiene una característica llamada TTN Funciones que permite a los usuarios cambiar bytes, enviados a través de la red Things, a campos legibles por humanos. Para agregar la API para esta demostración, vaya a aplicaciones -> xxxx -> formatos de carga útil xxxx denota el nombre de la aplicación de los usuarios Vaya a la sección del decodificador y guarde la función de decodificador a continuación
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,
};
}
}
Después de configurar el decodificador y programar la placa con el código fuente de la aplicación. Los datos de la aplicación deben comenzar a aparecer en la ventana terminal y en la consola de redes de cosas
Las transmisiones de sensores posteriores ocurren cada 15 minutos
Introducción MIWI significa Microchip Wireless. MIWI es un protocolos inalámbricos patentados diseñados por la tecnología Microchip que utilizan radios digitales pequeños de baja potencia basados en el estándar IEEE 802.15.4 para redes de área personal inalámbrica (WPAN). Está diseñado para bajas tasas de transmisión de datos y corta distancia, redes limitadas por costos, como monitoreo y control industrial, automatización de hogares y edificios, control remoto, sensores inalámbricos de baja potencia, control de iluminación y lectura automatizada de medidores. El protocolo MIWI admite tres topologías de red
Ventajas de miwi
La temperatura de introducción de demostración de las habitaciones repartidas en un gran complejo se monitorizó utilizando la topología de la red de malla MIWI.
Se puede desarrollar una aplicación típica de malla MIWI teniendo 3 componentes.
El coordinador y el coordinador de PAN son de tipo FFD (dispositivo de función completa) y son capaces de enrutar los dispositivos de finalización de los paquetes pueden ser FFD (dispositivo de función completa) / RFD (dispositivo de función reducida). Los dispositivos finales RFD se usaron para el propósito de esta demostración debido a la capacidad de ir a dormir. El dispositivo final con sensor de temperatura (ejecutado con baterías) se utilizó para demostrar las ventajas de la red de malla MIWI, como la baja potencia, la auto curación, etc.
El nodo Pan-Coordinator está conectado a la placa SAMA5D2 XPRO y tiene una conectividad WILC3000 para Wi-Fi (Internet). Esta combinación de dispositivos se conoce como puente Miwi en esta demostración. Los enrutadores y los dispositivos finales envían datos periódicos al coordinador PAN. El SAMA5D2 lee los datos de Pan-Coordinator y envía lo mismo a la instancia de AWS EC2. La instancia de AWS EC2 envía los datos recibidos a la herramienta WSN Monitor y al servidor web. La herramienta WSN Monitor muestra la topología de malla formada a partir de los datos recibidos de enrutador, nodos sensores y coordinadores pan. WSN Monitor también se puede utilizar para monitorear la red MIWI.
Hardware
Software
AT91SAMA5D27 en Linux
Módulos y firmware ATWILC3000
$ /root del paquete BuildRoot. El firmware se agrega en $ /lib/firmware/mchp .Servicios de instancia de AWS Cloud EC2
Herramienta de monitor WSN
Procedimiento paso a paso para replicar la configuración de MIWI Demo Sama5D2 Linux
Lleve la interfaz WiFi y la conexión WiFi
$ root como nombre de usuario.$/root/mchp/ carpeta contiene el módulo de controlador WILC3000.$/root/mchp contiene el módulo de controlador WILC3000.$ /lib/firmwae/mchp/wilc1000_wifi_firmware.bin$ vi Modifique el script para credenciales de enrutador.Configuración de instancia de AWS Cloud EC2 Utilizamos servicios EC2 (Amazon Elastic Compute Cloud) para esta demostración. Instancia EC2 Host de los dos servidores TCP para el puente de red MIWI y la herramienta de monitor WSN. Instancia de AWS EC2 para alojar el servidor Python, requiere la máquina virtual AMI Linux. La instancia de Amazon EC2 proporcionará la máquina virtual Linux. El proceso es fácil y directo una vez que tenga su cuenta AWS lista.
nohup python miwi_wsn_server_4.py & cd iot nohup python iot_publish_2.py &Configuración de MIWI
Para la demostración de MIWI WSN, programa Pan-Coordinator con archivo de proyecto disponible en/miwi/samr30/pan_cord_mod. Programe los nodos coordinadores con el archivo del proyecto disponible AT/MIWI/SAMR30/CORD_MOD1 y programa el tablero de sensores con el archivo del proyecto disponible AT/MIWI/SAMR30/Sensor_MOD1.
Herramienta de monitor WSN
La herramienta WSN Monitor es una herramienta propietaria de microchip para el monitor de red 802.15.4 y el contador. En esta herramienta, se mostrará la conexión de red MIWI con nodos respectivos. El peaje WSN Monitor también muestra la temperatura, RSSI VLAUe de los nodos de red y la notificación de energía de la batería. Para conectarse con el servidor EC2, se requiere una dirección IP pública de instancia EC2. La dirección IP pública de instancia EC2 está disponible en la página de instancia de EC2 como se mencionó anteriormente. El número de puerto para la conexión de la herramienta de monitor WSN es de $ 8080 una vez que la herramienta WSN Monitor conectada, EC2 Server reenviará el paquete que se recibe de MIWI Clinet Network.
Después de la conexión exitosa con el servidor EC2, WSN Monitor comienza a recibir los datos y pantallas de la red MIWI.