Skip to content

Iotnet/IoTnet_DEVKIT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

129 Commits
 
 
 
 
 
 

Repository files navigation

Ir a la versión mas reciente: https://github.com/NXTIoT/NXTIoT_DEVKIT

IoTnet_DEVKIT

Introducción

Proyecto para aprender a utilizar el Devkit de desarrollo de IoTnet, el cual trae un módulo Wisol de conectividad Sigfox y un microprocesador ATmega 328P, por lo que puede programarse mediante el IDE de Arduino (https://www.arduino.cc/en/Main/Software). El Devkit cuenta con 6 GPIOs y 6 entradas analógicas, que también pueden configurarse como entradas digitales, un botón y un led que pueden programarse. A lo largo de este proyecto, se presentarán algunos ejemplos para demostrar lo fácil que es incluir la conectividad Sigfox a cualquier proyecto. Además, los ejemplos permitirán asociar las terminales de la tarjeta con las utilizadas en Arduino de manera que cualquier sketch utilizado en Arduino Uno puede ser cargado en el Devkit, únicamente cambiando los puertos utilizados a los disponibles en la tarjeta.

Pinout

En la siguiente imagen se muestra el pinout del Devkit, de manera que se puedan asociar las terminales de la tarjeta con las utilizadas en Arduino Uno.

devkit_pinout

Programación

Para cargar un programa a la tarjeta, primero se deben quitar los jumpers (o jumper, sea el caso) tal como se muestra en la imagen. TENER CUIDADO AL QUITAR LOS JUMPERS.

dev1

una vez que se cargó el programa, se vuelven a colocar los jumpers. Este procedimiento debe realizarse cada vez que se desee cargar un programa al Devkit.

Ejemplos

A continuación, se presentan varios ejemplos donde se utilizan las entradas analógicas y digitales, además de los dispositivos integrados en el Devkit.

Leer ID/PAC

En este ejemplo se utilizará el sketch devkit_info.ino (Code) para leer el ID y el PAC de nuestro Devkit, los cuales son necesarios para registrar el dispositivo en la plataforma de Sigfox y poder ver los mensajes enviados en el backend. Una vez descargado el sketch, procedemos a cargarlo en nuestra tarjeta siguiendo el procedimiento descrito anteriormente. Abrimos el Monitor Serie

dev2

Presionamos el botón más cercano al Led que se encuentra encendido y en el monitor serial nos aparecerá la información sobre el ID y el PAC de nuestro Devkit.

dev3

Ahora que tenemos el ID y el Pac de nuestro dispositivo, procedemos a darlo de alta en el backend siguiendo los pasos del siguiente repositorio: https://github.com/Iotnet/Registro-Devkit-IoTnet.

Una vez registrado, podemos enviar nuestro primer mensaje, lo cual podemos hacer con el mismo programa. Presionamos nuevamente el botón y nos desplegara la misma información que antes. Notar que los leds de status del módulo Wisol parpadearan 3 veces, lo que indica que se están enviando los mensajes. Si nos vamos al backend, veremos el mensaje que acabamos de enviar.

dev4

Boton y led

Este ejemplo nos permitirá conocer cuáles son los puertos a los que están conectados el botón y el led para poder utilizarlos en otros programas. Se utilizará el sketch boton_led.ino (Code). Una vez cargado el programa, al presionar el botón, el Led 6 se encenderá por 2 segundos para después apagarse.

dev5

Sensor ultrasónico

En este ejemplo se mostrará como conectar un sensor de distancia al Devkit y mandar por medio de Sigfox, la distancia medida entre el sensor y un objeto, de manera que pueda visualizarse en el backend. El sensor que se utilizará es el HC-SRQ4. Conectamos el sensor de acuerdo al siguiente diagrama

sensor_distancia

Descargamos el sketch sensor_distancia1.ino (Code) y lo cargamos en la tarjeta siguiendo el procedimiento descrito anteriormente. El programa manda la información de la distancia hacia el backend cada 10 minutos.

Ponemos un objeto frente al sensor

dev6

y abrimos el monitor serial de Arduino. Inmediatamente nos mostrara la distancia medida entre el sensor y el objeto

dev7

Si revisamos el backend, veremos que cada mensaje nos mostrara la misma información de la distancia que la mostrada en el monitor serie

back1

Sensor de Temperatura

En este ejemplo se mostrará como leer un sensor analógico además de realizar la codificación del dato antes de ser enviado y ya en el backend, se realizará la decodificación para poder visualizar la información en forma decimal.

Descargar el sketch (Code). El sensor utilizado en este ejemplo es el LM35

tmp36

el cual debe ser conectado siguiendo el siguiente diagrama

temp2

Una vez cargado el programa, abrimos el monitor serial, presionamos el botón mas cercano al Led encendido y nos desplegara la información de la temperatura

dev8

Ahora para decodificar el dato enviado, se debe realizar el parsing del payload. Ir al “Device type” donde se encuentra el dispositivo y dar click en el botón “Edit” en la esquina superior derecha y en la sección “Payload display” seleccionamos “Custom grammar” y en “Custom configuration” escribimos temp::float:32:little-endian

dev10

Revisando los mensajes del dispositivo, veremos que ahora debajo del dato enviado aparecerá la información de la temperatura tal como nos aparece en el monitor serie de Arduino

dev9

Creación de Callbacks

A continuación se mostrará como realizar los Callbacks hacia diferentes plataformas, es decir, mandar la información hacia una plataforma específica para presentar la información enviada por el Devkit de manera mas intuitiva y facil de entender. Para entender mas sobre los callbacks ir al siguiente link: Callback

Integración en Losant

Para esta parte utilizaremos el ejemplo del sensor de temperatura anterior.

Ahora que el backend está recibiendo los mensajes del Devkit, procederemos a visualizar los datos en Losant, plataforma dedicada al internet de las cosas en donde se pueden visualizar y analizar datos provenientes de dispositivos IoT, además es facil de usar ya que se configura por medio de diagramas de flujo.

Comenzaremos por crear una cuenta gratuita. Ésta nos permite registrar hasta 100 dispositivos y enviar hasta 1M de payloads. Una vez hecha la cuenta crearemos una nueva aplicación.

create

EL nombre de la aplicación puede ser cualquiera, pero de manera que sea facil de reconocer. Enseguida daremos click en 'Create Application'

create2

Dentro de nuestra aplicacíon configuraremos 3 cosas:
1: Webhook - Url en donde se enviarán todos los datos desde el backend a la plataforma.
2: Device - Dispositivo en donde Losant guardará la informacion proveniente del Devkit para posteriormente mostrarla en un dashboard.
3: Workflow - Diagrama de flujo que se activará cada vez que haya un request por parte del backend de Sigfox.

Webhook

Dentro de nuestra aplicación nos dirigimos a la pestaña 'Webhooks' y damos click.

webhook

Damos click en 'Add Webhook' y aparecerá la siguiente ventana en donde configuraremos lo siguiente:

  • El nombre de nuevo puede ser cualquiera y lo demás lo dejamos con la misma configuración

webhook2

Mas abajo marcamos la opción 'Wait for reply from workflow' y seguido damos click en 'Create Webhook"

webhook4

Notaremos que al momento de crearlo nos genera una URL:

webhook5

Esta URL la copiaremos y guardaremos para usarla posteriormente para configurar el callback de Sigfox.

Device

Ahora, configuraremos el device en donde Losant guardará los datos provenientes de Sigfox. En nuestra pantalla principal de la aplicacion, daremos click en 'Devices', seguido daremos click en 'Create new device'

createdev

Damos click en 'Create blank device'

createdev1

En el Device Name podemos poner el nombre que queramos pero de preferencia que indentifique a nuestro dispositivo Marcamos la casilla 'Standalone' en el Device Type

createdev2

En la parte de atributos colocamos:

createdev3

Debemos de tener en cuenta la información que estamos leyendo y enviando desde el dispositivo. En este caso estamos enviando unicamente la temperatura del sensor por lo que el tipo de dato que recibira Losant será un número y el nombre de la variable puede ser cualquiera, pero una que identifique nuestra información.

Workflow

Ahora es turno de configurar el diagrama de flujo para que una vez que Losant reciba la información sepa que hacer con ella.

En nuestro menú principal de la aplicación damos click en 'Workflows', seguido damos click en 'Create Workflow'

Le damos el nombre que nosotros queramos y opcionalmente podemos asignarle una descripción. Seguido damos click en 'Create Workflow'

Notaremos que nos abrirá un espacio de trabajo donde podremos crear nuestro diagrama de flujo.

Del lado izquierdo nos muestra todos los nodos disponibles. Tales como 'Triggers', 'User Experience', 'Data', etc.

Debido a que nuestra información esta llegando por medio de un Webhook, el diagrama de flujo se activará cada que llegue información a ese Webhook que creamos.

Por lo tanto, en el lado izquierdo en la sección de 'Triggers' buscamos por el nodo 'Webhook'

workflow

Lo arrastramos y pegamos a nuestro espacio de trabajo.

workflow1

Ahora, buscaremos el nodo 'Debug'. Este nodo nos sirve para observar que esta sucediendo en determinada parte del diagrama de flujo. Lo conectaremos debajo de nuestro 'Webhook' para poder observar que información llega.

workflow2

Ahora presionaremos en 'Deploy Workflow' para guardar nuestro diagrama de flujo y quede listo para recibir información. Dejaremos esta parte pendiente para continuar configurando el backend en Sigfox.

Backend

Para esta parte es necesario haber registrado el dispositivo en el backend de Sigfox. Daremos click en 'Device Type' y buscamos por nuestro dispositivo registrado

backend1

Dentro de nuestro Device Type, del lado izquierdo en el menú buscamos la opción 'Callbacks' y damos click

backend2

Los callbacks nos sirven para poder jalar nuestra información del backend Sigfox a nuestra webApp, plataforma, etc. Para nuestro ejemplo haremos un callback a Losant

Dentro de la sección 'Callbacks' damos click en 'New', seguido daremos click en 'Custom Callback'

callback

En la ventana que nos aparece, configuraremos nuestro callback de la siguiente manera:

callback1

  • Type : Data & Uplink
  • Channel: URL //
  • Custom Payload Config : Variables personalizadas, decodificación del mensaje hexadecimal
  • URL Pattern : URL a la que le enviaremos la información del dispositivo
  • Use HTTP method : POST
  • Content type : Application/json

Así nuestro callback quedará listo para poder recibir la información en Losant.

Ahora conectado nuestro sensor de temperatura y el Devkit con el código cargado, procederemos a apretar el botón para enviar la información de temperatura a Losant. Al hacer esto iremos al diagrama de flujo previamente creado y del lado derecho presionaremos en 'Debug'

Ahí aparecera toda la información relacionada con el nodo 'Debug'.

callback2

Cada vez que presionamos el botón del Devkit, nos aparecera nueva información relacionada a Losant y al Devkit, en particular hay un Path dentro de ese formato Json que nos interesa el cual es : 'data.query.temp'

En la cual Losant esta recibiendo la informacion proveniente del Devkit y de Sigfox.

Tal cual esta llegando la información no se esta guardando en ningun lado por lo tanto tenemos que guardar de alguna manera esa información y para ello haremos uso de nuestro 'device virtual' previamente creado.

En nuestro diagrama de flujo buscaremos por el nodo 'Device state' y lo agregaremos a nuestro diagrama de flujo de la siguiente manera.

callback3

Justo entonces nos aparecera la configuración del nodo, el cual configuraremos de la siguiente manera:

  • Device : Marcamos la opción 'Select a specific device' y en la lista buscamos por nuestro device creado anteriormente

  • State :

    • Data Metod: Individual Fields

callback4

Dentro de esta parte veremos que ya esta preconfigurado nuestro campo Temperatura al cual le hace falta el valor asignado. Dentro de 'Value' colocaremos el Json path en donde llegaba la información de Sigfox de la siguiente manera: Value : {data.query.temp}

Finalmete damos click en 'Deploy Workflow'

De esta manera nuestra información proveniente de Sigfox quedará almacenada en nuestro Device para posteriormente mostrarla en el Dashboard de Losant.

Dashboard Losant

Con la información ya almacenada en nuestro device en Losant. Podemos visualizarla en un Dashboard sencillo.

Para ello iremos a la parte superior y daremos click en 'Dashboards', seguido de 'Create Dashboard'.

Le daremos el nombre que queramos y damos click en 'Create Dashboard'.

Nos mostrará distintos wodgets que podemos elegir para mostrar la informacion en la forma que queramos. Para este ejemplo seleccionaremos 'Gauge' y damos click en 'Customize'

dashboard

Siguiendo la siguiente configuración, le damos el nombre que queramos y buscamos por nuestra aplicación anteriormente creada.

dashboard1

En la parte de 'Block data', en Device buscaremos por el nuestro creado anteriormente En Attribute seleccionamos Temperatura En Label podemos colocar las unidades de la informacion que estemos mostrando o simplemente a que se refiere ese Widget.

dashboard2

Integración con Microsoft Azure

Integración con Amazon Web Services

Integración con Ubidots

Ahora toca la integración con la plataforma Ubidots. Al igual que en los ejemplos pasados, en este también se utilizará la práctica del sensor de temperatura. Lo primero que se debe hacer es crear una cuenta en el siguiente link ubidots.

Una vez creada la cuenta, nos aparecerá lo siguiente

ubi1

Nos vamos a la esquina superior derecha y damos click en nuestro usuario para desplegar un menú, donde seleccionaremos “API CREDENTIALS”, para obtener un Token que nos permitirá crear el callback.

ubi2

Ahora, copiamos y guardamos el token ya que sera necesario posteriormente

ubi3

Callback hacia Ubidots

Enseguida creamos el callback. Vamos al backend a nuestro dispositivo y damos click en el DEVICE TYPE.

ubi4

nos desplegara la información sobre el DEVICE TYPE. Selecionaremos CALLBACKS en el panel izquierdo

ubi5

y seleccionamos CUSTOM CALLBACK

ubi6

configuramos el callback de acuerdo a la imagen de abajo y en “URL Pattern” escribimos las siguiente dirección

http://things.ubidots.com/api/v1.6/devices/{device}/?token=YOUR_TOKEN

seguida del Token que copiamos enseguida de crear nuestra cuenta.

ubi7

y damos click en OK para terminar el callback. Con esto queda creado el callback hacia Ubidots.

Visualización de la información en Ubidots

Ahora que nuestro Callback esta creado, ya podemos mandar la información de la temperatura de nuestro Devkit hacia la plataforma. Presionamos el botón para mandar la información de la temperatura y en el backend podremos observar el estatus del callback, el cual debe quedar en color verde

ubi8

si regresamos a Ubidots, veremos que aparece el ID de nuestro dispositivo

ubi9

si damos click en el nos aparecerá la variable que enviamos, en este caso es la variable “temp”

ubi10

finalmente, si damos click, podremos ver los datos en forma de gráfica, así como un historial de la información enviada.

ubi11

ubi12

Dashboard Ubidots

Para crear el dashboard, en la parte superior, damos click en “DASHBOARD”

ubi13

en la esquina superior derecha seleccionamos “Create Widget”

ubi14

y tendremos que seleccionar de que tipo lo queremos. En este caso seleccionaremos una gráfica sencilla

ubi15

seleccionamos nuestro dispositivo así como la variable de nuestro interés, que en este caso es “temp”. Finalmente damos click en “ADD VARIABLE”

ubi16

y ahora nuestro dashboard tendrá la gráfica de la temperatura.

ubi17

Para agregar más Widgets a nuestro dashboard se sigue el mismo procedimiento.

About

Proyecto para aprender a utilizar el Devkit de desarrollo de IoTnet, además de incluir el procedimiento para la creación de callbacks a distintas plataformas.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages