INTRODUCCIÓN
Esta tercera práctica dedicada a la plataforma thinger.io está orientado al control de dispositivos. Cuando hablamos del control nos referimos al encendido, apagado y/o regulación de los dispositivos conectados con las salidas de nuestros microprocesadores ESP8266. Por supuesto el control lo podremos realizar desde la propia plataforma, a través de ordenadores, tablets, smartphones… o desde la APP diseñada al efecto, a través de tablets, smartphones, smartwatches…
¡Ni siquiera es necesario tener contratada una IP fija para mantener la accesibilidad a lo largo del tiempo! Siempre podremos gestionar nuestros dispositivos de forma rápida y sencilla.
Las dos primeras prácticas también cubrían otros aspectos muy interesantes de thinger.io:
Por un lado teníamos una primera práctica de iniciación, dedicado a la configuración de la plataforma, la obtención de datos desde los sensores, su almacenamiento y visualización de forma gráfica.
[/ultimate_icon_list_item][/ultimate_icon_list]Por otro lado una segunda práctica dedicada al envío de datos desde nuestros sensores a la plataforma en el momento de ser captados –streaming resources-, para su almacenamiento y/o visualización.
[/ultimate_icon_list_item][/ultimate_icon_list]Con esta tercera práctica podemos ver que uno de los puntos fuertes de thinger.io es que la información es bidireccional. Es decir que podemos tanto recibir datos de los dispositivos, como actuar sobre ellos.
El ejemplo que vamos a utilizar para comprobar el control de dispositivos es con dos LEDs:
Un LED monocromo: vamos a actuar sobre él controlando su encendido o apagado.
[/ultimate_icon_list_item][ultimate_icon_list_item icon=»Defaults-angle-right»]Un LED RGB: vamos a actuar sobre él controlando su color.
[/ultimate_icon_list_item][/ultimate_icon_list]INTRODUCCIÓN
ENCENDIDO Y APAGADO DE UN DISPOSITIVO
La forma de programar el encendido/apagado de LED es igual que la forma que se enciende/apaga un motor, relé, sensor, etc… Debemos extrapolar esta práctica a cualquier necesidad de uso similar que nos surja.
La estructura de la función de encendido y apagado es la siguiente:
Debemos prestar especial atención a las siguientes partes:
NOMBRE DEL RECURSO: es el nombre de una variable en la que se agrupan los datos de comunicación entre el módulo ESP8266 y la plataforma thinger.io. Este nombre nos permitirá identificar o seleccionar los datos a utilizar, cuando hagamos uso de ellos con los dashboards, data buckets o endpoints.
[/ultimate_icon_list_item][ultimate_icon_list_item icon=»Defaults-angle-right»]OPERADOR y PARÁMETROS: nos indican el sentido en el que circula la información entre el recurso y la plataforma, así como su forma de codificación.En nuestro caso, los datos son de entrada al recurso desde la plataforma y vienen codificada en formato JSON. El formato JSON es un tipo de variable que puede contener booleanos, números enteros, números decimales, cadenas, e incluso información estructurada como un documento JSON.
[/ultimate_icon_list_item][ultimate_icon_list_item icon=»Defaults-angle-right»]CUERPO: en el apartado se indica la forma de actuar sobre uno o varios dispositivos conectados al módulo, a partir de los datos suministrados desde la plataforma (y en su caso desde el propio módulo).
[/ultimate_icon_list_item][/ultimate_icon_list]En el sketch vamos a utilizar la misma función, pero añadiendo en el cuerpo las instrucciones para leer el estado inicial del LED (cuando el módulo se conecta). De esta manera thinger.io lo podrá representar inicialmente de una forma correcta.
REGULACIÓN DE UN DISPOSITIVO
La práctica de la regulación del color de un LED es extrapolable a multitud de dispositivos, como la regulación de la temperatura de la calefacción, el ángulo de giro de un servomotor, la intensidad de una luz… es ilimitado el uso que podemos hacer de esta utilidad.
La estructura de la función de regulación es similar a la de encendido y apagado. Lo único que varía es que en vez de utilizar una variable booleana (encendido y apagado) utilizamos tres variables numéricas (LED_RGB_R, LED_RGB_G y LED_RGB_B) para enviar los datos de la intensidad de cada color (rojo, verde y azul), agrupadas en el recurso LED RGB:
INICIO DE LA PRÁCTICA, CIRCUITO Y SKETCH
Para iniciar la práctica, como siempre, deberemos acceder a la plataforma thinger.io y añadir el nuevo dispositivo que vamos a enlazar. Seleccionamos Devices > Add Device e introducimos los datos del nuevo dispositivo.
Debemos recordar que el campo Device ID no debe estar separado por espacios o no podremos grabarlo.
Para la construcción del circuito necesitaremos el siguiente material:
Lo deberemos conexionar conforme el siguiente esquema:
El sketch será el siguiente:
/* Control del encendido y apagado de un LED MONOCROMO y regulación de un LED RGB a través de la plataforma www.thinger.io y su APP Este código de ejemplo es de público dominio. Dani No www.esploradores.com */ #include <ESP8266WiFi.h> //Librería de conexión WiFi del módulo ESP8266 #include <ThingerESP8266.h> //Librería de la plataforma THINGER.IO // Parámetros del conexión con thinger.io #define usuario "ESPloradores" #define device_Id "LEDS" #define device_credentials "S8RH%eokvpRO" ThingerESP8266 thing(usuario, device_Id, device_credentials); // Parámetros de conexión WiFi const char WiFi_ssid[]="********"; //Nombre de red const char WiFi_password[]="********"; //Clave de red // Variables globales int LED_MONOCROMO = 2; // GPIO02 - D4 int LED_RGB_R = 5; // GPIO05 - D1 int LED_RGB_G = 4; // GPIO13 - D2 int LED_RGB_B = 0; // GPIO15 - D3 void setup() { // Inicialización de la WiFi para comunicarse con THINGER.IO thing.add_wifi(WiFi_ssid, WiFi_password); // Inicialización del LED MONOCROMO pinMode(LED_MONOCROMO, OUTPUT); // Recurso para el cambio de estado del LED_DIP desde THINGER.IO thing["LED MONOCROMO"] << [](pson& in){ if(in.is_empty()){ in = (bool) digitalRead(LED_MONOCROMO); } else{ digitalWrite(LED_MONOCROMO, in ? HIGH : LOW); } }; // Inicialización del LED RGB pinMode(LED_RGB_R, OUTPUT); pinMode(LED_RGB_G, OUTPUT); pinMode(LED_RGB_B, OUTPUT); // Recurso para el control del LED RGB desde THINGER.IO thing["LED RGB"] << [](pson& in){ analogWrite(LED_RGB_R, in["Rojo"]); analogWrite(LED_RGB_G, in["Verde"]); analogWrite(LED_RGB_B, in["Azul"]); }; } void loop() { thing.handle(); }
No debemos olvidar cambiar los Parámetros de conexión con thinger.io y hacerlos coincidir con los que habíamos utilizado al introducir los datos del nuevo dispositivo en la plataforma.
También tendremos que cambiar los Parámetros de conexión WiFi y hacerlos coincidir con los de nuestra propia red WiFi (nombre de red -SSID- y clave de red).
Una vez hechos los cambios podremos subir el sketch a la placa.
CONTROL DE LOS LEDS: encendido, apagado y/o regulación
CONTROL DESDE LA PLATAFORMA thinger.io
Con el sketch funcionando, accedemos a thinger.io y seleccionamos Devices para comprobar si se ha iniciado la comunicación. Si se ha iniciado en el dispositivo (LEDS en el ejemplo) aparecerá «Connected«, si no se ha iniciado, lo que aparecerá será «Disconnected» y tendremos que revisar los pasos anteriores para ver donde está el fallo.
Teniendo conectado el dispositivo, hacemos un click sobre él para abrirlo.
A continuación, hacemos click en View API y en LED MONOCROMO-Private y LED RGB-Private.
Una vez que esté hecho aparecerá el interruptor para encender y apagar el LED monocromo y los tres campos para regular cada uno de los colores del LED RGB (los valores a introducir deberán estar comprendidos entre 0 y 1024).
CONTROL DESDE LA APP thinger.io (Únicamente dispositivos Android)
El primer paso es instalar la APP en el smarphone, la tablet… la aplicación se puede encontrar en el Play Store.
Abre el dispositivo –LEDS– en la plataforma y haz click en Device Tokens.
Escribe un nombre representativo en el campo Token name, para identificar la conexión y haz click en Ok > Show QR Code.
Abre la APP, haz click en “+“ y a continuación escanea el código QR (QR Code).
Por último haz click en el dispositivo y aparecerá el interruptor para encender y apagar el LED monocromo y los tres campos para regular cada uno de los colores del LED RGB.
Recordamos que los valores a introducir deberán estar comprendidos entre 0 y 1024.
4 Comments
Leave your reply.