Cree una red de sensores inalámbricos Wi-Fi / MIWI (15.4) / Lora 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 y Miwi
Interfaz web independiente del dispositivo para ver fácilmente los datos
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 2018, monitoreamos las temperaturas de toda la conferencia utilizando 3 redes diferentes que se informan 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 finales Wi-Fi y Miwi Fin deberá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.
Introducción Lora representa a largo alcance. 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. La versión 1.0 de la especificación de Lorawan, 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 la gestión de incendios, la gestión de residuos, la automatización del hogar para IoT permite electrodomésticos inteligentes, gestión de la ganadería y la ganadería, el monitoreo de temperatura y la humedad, los sensores a nivel de agua y el control de riego.
Ventajas de Lorawan
La temperatura de introducción de demostración de las habitaciones extendidas a través de un gran complejo fue monitoreado 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.
Hardware
Software
Procedimiento paso a paso para replicar la demostración
Encuentre su archivo Variant.cpp en el paquete SODAQ Board dentro de la instalación de Arduino. Mi archivo Variant.cpp se ubicó en este directorio c: users cxxxx appData local arduino15 paquetes sodaq hardware samd 1.6.18 variants sodaq_explorer. Dependiendo de su instalación y versión de Arduino, puede ser ligeramente diferente.
Abra el archivo Variant.cpp con cualquier editor y haga la siguiente adición: Busque en el archivo, la tabla con este nombre: const Pindescription g_apindescription [] = Después de la última línea en la tabla, agregue el siguiente: // 48 VBAT {Portb, 5, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_CHANNEL13, NO_ON_ON_PWM, NOT_ON_ TIMER, EXTERENTAL, EXTERENTARIO, EXTERENTARIO UNTER UTTER}, //////1 VBAT Cuando el usuario termina con los cambios en el archivo, el final de la tabla debe verse algo así: // 47 Button {Porta, 14, Pio_output, PIN_ATTR_DIGITAL, NO_ADC_CHANNEL, NOT_ON_PWM, NOT_ON_ON_TIMER, EXTERNES ADC_CHANNEL13, NOT_ON_PWM, NOT_ON_TIMER, externo_int_none}, // vbat
El usuario puede agregar la siguiente línea, #define vbat_measure (48u) en el archivo variant.h en la misma ruta que variant.cpp o o el usuario probablemente podría agregar #define vbat_measure 48 en el boceto principal. Luego guarde el archivo.
Entonces el usuario puede leer el voltaje de la batería (MV) con este código:
'#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);
}
Consejos: si el voltaje informado está ligeramente apagado o variable/ruidoso, el usuario puede hacer un promedio de la lectura ADC
Registro y aprovisionamiento de la puerta de enlace El dispositivo final permitirá que un usuario cree una cuenta de servidor de red, registre su puerta de enlace y dispositivo final. Después de crear/registrarse para obtener una cuenta, conecte su puerta de enlace al servidor de red Things. Siga los pasos en el siguiente enlace para el registro de la puerta de enlace
Una vez que la puerta de enlace está en línea, "cree una aplicación" seguida de la sección "Crear un nuevo dispositivo" para registrar la aplicación y el dispositivo final a TTN al crear la aplicación y el dispositivo final en TTN. Las siguientes son las cosas que se cuidarán mientras se crea EUI y claves en TTN para esta aplicación. Elija crear cualquier aplicación EUI y Dev EUI automáticamente. La tecla APP (16 bytes) debe ser AppKeyPrefix + Dev EUI, que forma parte del código fuente en el proyecto JW_MARRIOT_DESERT_RIDGE PROJ. Nota: La clave de la aplicación puede ser cualquier cosa de la elección del usuario. La demostración utiliza un método de cancelación para derivar la clave de la aplicación y no es obligatorio que los desarrolladores de aplicaciones usen este método. Por defecto, AppKeyPrefix es {0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88}; Dev EUI se puede modificar como se resalta en la figura
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.
Antes de programar el código fuente en el SAMD21 en la placa SODAQ, asegúrese en el Administrador de la Junta que la versión 1.6.11 esté instalada para el soporte del paquete de la placa para las placas SODAQ Xplorer.
Programe el kit Sodaq Xplorer usando el modo de cargador de arranque. Presione reiniciar dos veces en rápida sucesión y programar el kit Sodaq Xplorer usando Arduino. 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, ¿ir a aplicaciones? Xxxx? Formatos de carga útil xxxx denota el nombre de su aplicación elegido
Vaya a la sección del decodificador y guarde la siguiente función del decodificador
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 deberían comenzar a aparecer.
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 estrellas de Miwi.
Se puede desarrollar una aplicación MIWI típica teniendo 2 componentes. Coordinador de sartén y dispositivo final. Los dispositivos finales pueden tipo FFD/RFD. 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 (que se ejecuta con baterías) se utilizó para demostrar las ventajas de
Hardware
Software
Información genérica ¿Qué es AWS IoT? AWS IoT es una plataforma en la nube administrada que permite que los dispositivos conectados interactúen de manera fácil y segura con aplicaciones en la nube y otros dispositivos. ¿Qué es AWS Lambda? AWS Lambda es un servicio informático que ejecuta código en respuesta a los eventos y administra automáticamente los recursos informáticos requeridos por ese código. Registro del dispositivo: "JITR" ocurre una vez al inicio para cada nuevo dispositivo Función Lambda Función Lambda es una forma de automatizar la creación de cosas. La función Lambda se activará cuando un dispositivo desconocido con CA conocido conecta el resumen de las cosas que manejará la función Lambda
Procedimiento paso a paso para replicar la demostración de MIWI
Crear cuenta de AWS
Configuración de Lambda para la configuración de Lambda sigue los pasos mencionados en la sección "v. AWS IOTJUST-A-Time Configuración de registro" Enlace "
Cree un ecosistema de certificado para el propósito de esta demostración, creamos nuestra propia cadena de confianza, ejecute los scripts aquí para:
Los siguientes certificados se generarán root-CA.CRT/Key Signer-CA.CRT/Key
Registre nuestro CA con AWS IoT en el último paso Certificado CA que se generó, AWS requiere que el usuario se registre y lo active para que pueda activar la función Lambda cuando un dispositivo que usa el CA se conecta a él. Parte del registro requiere que el usuario demuestre que el usuario tiene la clave privada para la CA. Pasos para el registro
Para lograr los pasos para registrar el usuario, debe: configurar las credenciales de AWS CLI Abra un símbolo del sistema navegue a “C: Archivos de programa Amazon AWScli” Tipo “AWSCONFIGURE” Ingrese información desde el archivo de credenciales de cuenta del usuario - Ejecutar AWS_REGISTER_SIGNER.Signer.signer.
Provisión ECC608 para provocar que el usuario de ECC608 necesita:
Genere el dispositivo de clave pública/privada del dispositivo y cree una CSR para el certificado de dispositivo.
Abra la solución SAMR30 XPRO ECC en Atmel Studio 7, conecte la placa EDBG USB ATWINC1500-XPRO en la placa EXT1 y ATCryptoauth-B XPRO en ext3 de ATSAMR30-XPRO Open TeraterM y establezca la siguiente configuración Programa de la solución a ATSAMR30-XPRO y se exhibirá la ventana de la Terminal y CSR.
Genere el certificado del dispositivo. Para generar el certificado de dispositivo WINC:
Almacene los datos del certificado en WinC1500. Para almacenar los datos del certificado en WINC1500
Conéctese a AWS IOTCloud y publique a un nombre de cosa