miércoles, 12 de mayo de 2021

Internet de las cosas con la placa NodeMCU y Ubidots

 IOT con la NodeMCU y Ubidots

Una manera rápida de introducirse al mondo del internet de las cosas es por medio de una pagina que nos provea el servicio de captura y visualización de datos, en este tutorial se ha elegido Ubidots por se una plataforma fácil de configurar y que provee una plantilla de código para trabajar con las placas basadas en el Soc ESP8266 o ESP32.

Protocolo MQTT

MQTT es un protocolo abierto el cual posibilita la comunicación entre sí y continua de dos o más

dispositivos enfocado directamente en la conectividad M2M (Machine-to-Machine) que opera con una 

arquitectura publicación-suscripción tal como se ve en la siguiente figura.Para el ejemplo a desarrollar

el cliente que publica es la placa Node MCU, el broker sera Ubidots y la visualización sera por medio

del dash board de Ubidots.

 

MQTT utiliza el paradigma de publicación-suscripción que refiere a que cualquiera de los clientes

puede suscribirse a determinados tópicos o temas y de esta misma manera cualquiera podrá publicar.


Placa NodeMCU

Para poder trabajar con la plataforma NodeMCU ESP8266 en el IDE de Arduino, es necesario

instalar el compilador para las plataformas basadas en el microcontrolador ESP8266, el siguiente

video muestra como se hace la configuración del IDE y la programación de prueba en la placa.

 

 


 

Broker MQTT Ubidots

Ubidots es una iniciativa colombiana para la elaboración de sistemas basados en el internet 

de las cosas.

Ubidots logró convertir su emprendimiento de servicios de monitoreo remoto en una startups que

recibió el apoyo de Mass Challenge - una de las mayores aceleradoras de empresas emergentes del

mundo-, logró levantar un millón de dólares de inversión entre Medellín y Silicon Valley y lanzó

un producto que hoy se usa en más de 160 empresas en todo el mundo. Ubidots ha logrado 

posicionarse al punto de tener una comunidad de más de 40.000 desarrolladores y presencia en países

como Argentina, Brasil, EE. UU., Inglaterra, Israel, Australia.

(https://www.rutanmedellin.org//es/tendencias/item/ubidots-la-startup-local-que-conecta-datos-de-todo-el-mundo)

El circuito de prueba empleado se indica en la siguiente figura, es importante indicar que las placas

basadas en el ESP8266 trabajan a 3.3 voltios.

El montaje también puede realizarse con la placa WeMos D1 o Mini. 

El video que esta a continuación indica el procedimiento para conectar la Placa NodeMCU con

Ubidots.


El código de prueba se deja a continuación, en el video muestra como se configura TOKEN y la 

red WiFi

/****************************************
* Include Libraries
****************************************/
#include "UbidotsESPMQTT.h"
/****************************************
* Define Constants
****************************************/
#define TOKEN " " // Your Ubidots TOKEN
#define WIFINAME " " //Your SSID
#define WIFIPASS " " // Your Wifi Pass
Ubidots client(TOKEN);
/****************************************
* Auxiliar Functions
****************************************/
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Mensaje recibido [");
Serial.print(topic);
Serial.print("] ");
for (int i=0;i<length;i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
/****************************************
* Main Functions
****************************************/
void setup() {
// put your setup code here, to run once:
//client.ubidotsSetBroker("industrial.api.ubidots.com"); // Sets the broker properly for the industrial account
client.setDebug(true); // Pass a true or false bool value to activate debug messages
Serial.begin(115200);
client.wifiConnection(WIFINAME, WIFIPASS);
client.begin(callback);
}
int i=0;
void loop() {
//put your main code here, to run repeatedly:
if(!client.connected()){
client.reconnect();
}
if(i<100){
float value1 = analogRead(A0);//Lectura analogo
client.add("var_pot01", value1);//El cliente agrega una variable
client.ubidotsPublish("prueba");//Colocar el nombre de dipositivo
client.loop();
i++;
delay(2000);
}


 

 

 

 

 

No hay comentarios:

Publicar un comentario