Está en la página 1de 14

IMPLEMENTACION DE UN SERVIDOR MQTT Y UNA

INTERFAZ DE USUARIO USANDO NODE-RED PARA EL


MANEJO UNA PLACA NOCEMCU-ESP32

César Quilumbaquin

20 de diciembre de 2019
Índice general

1. Objetivos 2
1.1. Objetivo General. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Objetivos especı́ficos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2. Estado del Arte 3

3. Marco Teórico 4
3.1. MQTT Ioticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Driver L298N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

4. Ejecución. 5
4.1. Construcción Fı́sica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.1.1. Materiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2. Diagramas de conexión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

5. Conclusiones y Recomendaciones. 12
5.0.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1
Capı́tulo 1

Objetivos

1.1. Objetivo General.


Controlar un sistema fı́sico mediante una HMI diseñado en Node-Red y enlazado a un broker de
mensakeria MQTT.

1.2. Objetivos especı́ficos.


Usar un broker de mensajeria mqtt, pub/sub para controlar y monitorizar las entradas y salidas de
la tarjeta esp.

Diseñar un panel dashboard que se comunique con el servidor mqtt y controle la tarjeta esp.

Introducir los conocimientos obtenidos en la materia de microprocesadores para esta aplicación

2
Capı́tulo 2

Estado del Arte

En la investigacion “Design and Implementation of IoT Based Smart Laboratory” realiza por Poon-
gothai, Subramanian Rajeswari, presentado en la “5th International Conference on Industrial Enginee-
ring and Applications”, se realizó un Smart Laboratory basado en IOT en el cual se mide el consume de
energı́a, parámetros ambientales y las actividades generales del laboratorio, para lo cual se desarrolla-
ron dispositivos de hardware inteligente diseñados con ESP8266, Arduino Uno, relés, trasformadores,
Raspberry Pi3 y varios sensores, todos los dispositivos se controlan y monitorean desde una HMI desa-
rrollada en Node-RED, toda la información obtenida de cada sensor se almacena en una base de datos.
con la investigación se demostró que al controlarse los dispositivos del laboratorio de forma retoma re-
duce notablemente el consumo de energı́a.(1)

En la investigacion “MQTT Based Air Quality Monitoring System using Node MCU and Node-RED”
realiza por Chanthakit Rattanapoka presentado en la “Seventh ICT International Student Project Con-
ference”, se realizó un sistema de monitoreo que analiza la calidad del aire basado en MQTT, para lo
cual se usa como controlador principal la tarjeta ESP8266 NodeMCUla recopila la informacion de los
sensores que miden la temperatura, humedad, concentración de monóxido de carbono, gas ozono y los
envia al Broker MQTT. Se desarrollo un HMI en Node-RED que permita administrar y analizar los datos.
(2)

En la investigacion “MQTT based secured home automation system” realizada por Upadhyay, Borole
Dileepan presentado en la “Symposium on Colossal Data Analysis and Networking”, se realizó un siste-
ma de automatización para una casa basado en el broker MQTT, para lo cual se uso como controlador la
Raspberry Pi3 para el acceso a la red y se implemento el protocolo MQTT para la transferencia y recep-
ción de datos entre los sensores, la raspberry y una pagina web que sirva de HMI en la cual se monitorea
todos los datos de los sensores. (3)

En la investigacion “IoT Based HOME AUTOMATION Using Node-RED” realizada por Upadhyay,
Borole Dileepan presentado en la “Symposium on Colossal Data Analysis and Networking”, se realizó la
automatizacicon de una casa con dispositivos que permitan el control de los electrodometicos y enchufes
eléctricos, en la cual todos los sensores se comunican usando IoT, para lo cual todo los datos medidos por
los sensores sean recibidos y enviados por la tarjeta ESP8266 y sean monioreadas y controladas desde
un HMI realizado en Node-RED y la transferencia y recepción de datos sean realizados usando el Boker
MQTT. (4)

Tomando en cuenta las referencia anteriores, se optó por el uso de la tarjeta Wemos lolin32 basada
en el microcontrolador ESP32 para la recepción de datos y control del motor, la cual realizara la trans-
ferencia y recepción de datos al Broker MQTT, para el control y monitoreo de datos se realizara un HMI
desarrollado en Node-RED.

3
Capı́tulo 3

Marco Teórico

3.1. MQTT Ioticos


Ioticos.org es una empresa argentina que ofrece una amplia gama de servicios y están enfocados en
la ensañan de IoT para el desarrollo de negocios, entre sus productos esta el servidor desarrollado por
ellos el cual lleva el nombre de IoticosMqtt el cual ofrece una version gratutia de de hasta 5 clientes con
un entorno amigable y fácil de configurar para personas que tienen un cantocto por prumera vez a estos
servicios.
En el cual podemos ver el host al cual se colocara la conexión en la tarjeta esp, la contraseña y un
tópico de raı́z ademas del puerto TCP.
Luego nos da tenemos las opciones de ve ver el terminal el cual tiene el siguiente diseño En el terminal
podemos observar los datos que nos envia la tarjeta en este caso se ha configurado dos salidas con los
tópicos output y output1 con lun contador y la palabra hola correspondientemente. Tambien cuenta con
un cuadro de estado en el cual podemos visualarizar los datos que se envı́an por el topic de subscripcion
input2(5)

3.2. Driver L298N


El driver puente H L298N es el modulo más utilizado para manejar motores DC de hasta 2 amperios.
El chip L298N internamente posee dos puentes H completos que permiten controlar 2 motores DC o un
motor paso a paso bipolar/unipolar.(6)
El módulo permite controlar el sentido y velocidad de giro de motores mediante señales TTL que se
pueden obtener de microcontroladores y tarjetas de desarrollo como Arduino, Raspberry Pi o Launch-
pads de Texas Instruments.

Figura 3.1: puente H

4
Capı́tulo 4

Ejecución.

En esta seccion se detalla la construccion de un carro implementando 4 sensores a elegirse, para


nuestro vehiculo se ha seleccionado sensores ultrasonicos y un ldr con los cuales se manejara y enviara
datos a un servidor MQTT y dos clientes, un dispositivo movil y una pc.
Para la contruccion se parte de un diseño prefabricado al cual se integraran todos los componentes
necesarios para el buen funcionamiento del proyecto luego se realizara la implementacion del software.

4.1. Construcción Fı́sica


4.1.1. Materiales
Motores de 5V: Motor reductor de 5V 300 rpm con una fuerza nominal de 1,3 Kg·cm a máxima
eficiencia. Consumo:¡800 mA. Fuerza: 0,13 N·m. Diámetro del eje: 2mm.

Puente H L239N: 2 canales (soporta 2 motores DC),voltaje lógico: 5V, Voltaje de potencia (V mo-
tor): 5V - 35V DC, Consumo de corriente (lógico): 0 a 36mA, Capacidad de corriente: 2A (picos de
hasta 3A) Potencia máxima: 25W.

Base para montar el circuito.

Node MCU wemoslolin32.

Cables para circuiteria.

fuente de 5V

4.2. Diagramas de conexión.


Se siguió el siguiente esquema para la conexión de la node MCU esp32 con el puente H para el
control de los motores.

Conexión el sensor ldr a la placa de la siguiente manera.

5
CAPÍTULO 4. EJECUCIÓN. 6

Figura 4.1: Conexión puente H


Programación

.
las librerias usadas para la wemoslolin 32 son:

#include <WiFi.h>
#include <PubSubClient.h>

Configuracion del servidor mqtt.

const char *mqtt_server = "ioticos.org";


const int mqtt_port = 1883 ;
const char *mqtt_user = "3LbO69jjxXa5Mtm";
const char *mqtt_pass = "IEMfyb0aKg48BoC";
const char *root_topic_subscribe = "J2JY6xp2gsWYBR6/input1";
const char *root_topic_subscribe2 = "J2JY6xp2gsWYBR6/input2";
const char *root_topic_publish = "J2JY6xp2gsWYBR6/output";
const char *root_topic_publish2 = "J2JY6xp2gsWYBR6/output1";

Parametros de configuracion de accesos a la red LAN:

const char* ssid = "JE1";


const char* password = "Conexion1";

4. Declaracion de datos globales

WiFiClient espClient;
PubSubClient client(espClient);
char msg[25];
char msg2[25];
long count=0;
#define LED_PIN1 12
#define LED_PIN2 13

Funciones globales.

void callback(char* topic, byte* payload, unsigned int length);


void reconnect();
void setup_wifi();

6. Programación general decimos comenzar con una condición de if para saber si el cliente se a
conectado al servidor caso contrario se intentara ingresar nuevamente esto nos sirve en caso que la
red se caiga o exista alguna interferencia con la red wifi.

7
CAPÍTULO 4. EJECUCIÓN. 8

void loop() {

if (!client.connected()) {
reconnect();
}

if (client.connected()){
String str = "La cuenta es -> " + String(count);
str.toCharArray(msg,25);
client.publish(root_topic_publish2,msg);
count++;
delay(500);
client.publish(root_topic_publish,"hola");
}
client.loop();
}

7. Conexión wifi. Imprimimos en le puerto serial lo que sucede en nuestro programa para asi tener
una mejor idea de como están funcionando los protocolas que seleccionamos.

void setup_wifi(){
delay(10);
// Nos conectamos a nuestra red Wifi
Serial.println();
Serial.print("Conectando a ssid: ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {


delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("Conectado a red WiFi!");
Serial.println("Dirección IP: ");
Serial.println(WiFi.localIP());
}

Ahora nos conectamos con IoticosMqtt donde usamos la ventaja de Mqtt pub/sub.

void reconnect() {

while (!client.connected()) {
Serial.print("Intentando conexión Mqtt...");
// Creamos un cliente ID
String clientId = "IOTICOS_H_W_";
clientId += String(random(0xffff), HEX);
// Intentamos conectar
CAPÍTULO 4. EJECUCIÓN. 9

if (client.connect(clientId.c_str(),mqtt_user,mqtt_pass)) {
Serial.println("Conectado!");
// Nos suscribimos
if(client.subscribe(root_topic_subscribe)&client.subscribe(root_topic_subscribe2) ){
Serial.println("Suscripcion ok");
}else{
Serial.println("fallo Suscripciión");
}
} else {
Serial.print("falló :( con error -> ");
Serial.print(client.state());
Serial.println(" Intentamos de nuevo en 5 segundos");
delay(5000);
}
}
}

La función callback devuelve lo que se ingrese desde el topico designado en este caso input1 e
input2, lo convierte en una cadena de caracteres.

void callback(char* topic, byte* payload, unsigned int length){


String incoming = "";
Serial.print("Mensaje recibido desde -> ");
Serial.print(topic);
Serial.println("");
for (int i = 0; i < length; i++) {
incoming += (char)payload[i];
}
incoming.trim();

Serial.println("Mensaje -> " + incoming);


if(incoming=="encender"){
digitalWrite(14,HIGH);
}
if(incoming=="apagar"){
digitalWrite(14,LOW);
}

}
CAPÍTULO 4. EJECUCIÓN. 10

Creación del servidor MQTT


La siguiente figura se refiere al terminal del servidor en el que se puede visualizar el envio y recepcion
de mesanjes de los topicos input/ output.
En la pantalla Iot podemos observar el nodo con la informacion necesaria para configurarla con
la tarjeta esp32 usamos el topico J2JY6xp2gsWYBF6/ input y J2JY6xp2gsWYBF6/ output tanto para
subscribirse como para publicar.
CAPÍTULO 4. EJECUCIÓN. 11

Figura 4.2: Entorno MQTT


Capı́tulo 5

Conclusiones y Recomendaciones.

5.0.1. Conclusiones
Al realizarse la transferencia de datos mediante redes inalambricas estos son suceptibles a vigilan-
cia de terceros, se recomienda usar una lista de accesos para proporcianr un metodo de encripta-
cion a los datos.

El uso de la tarjeta esp32 usada como puerta de enlace a la red permite disminuir notablemente el
consumo de energia y brinda un soporte confiable a la red inalambrica de sensores.

Los topicos usados en la configuran tanto del broker como del node-red deben coincidir en caso
contrario no se arealizara la cominicacion de manera adeucada

EL protocolo mqtt es muy útil en cuanto a aplicaciones de cliente servidor y tiene acceso en todo el
mundo ya que cualquier protocolo de red que proporcione conexiones bidireccionales ordenadas
funciona para el mismo fin

12
Bibliografı́a

[1] Poongothai, M., Subramanian, P. M., Rajeswari, A. (2018, April). Design and implementation
of IoT based smart laboratory. In 2018 5th International Conference on Industrial Engineering
and Applications (ICIEA) (pp. 169-173). IEEE.

[2] Chanthakit, S., Rattanapoka, C. (2018, July). MQTT Based Air Quality Monitoring System
using Node MCU and Node-RED. In 2018 Seventh ICT International Student Project Confe-
rence (ICT-ISPC) (pp. 1-5). IEEE.

[3] Upadhyay, Y., Borole, A., Dileepan, D. (2016, March). MQTT based secured home automation
system. In 2016 Symposium on Colossal Data Analysis and Networking (CDAN) (pp. 1-4).
IEEE.

[4] Rajalakshmi, A., Shahnasser, H. (2017, September). IoT Based HOME AUTOMATION Using
Node-RED. In 2017 17th International Symposium on Communications and Information Tech-
nologies (ISCIT) (pp. 1-4). IEEE.

[5] https://ioticos.org, 2019

[6] https://www.ingmecafenix.com/electronica/puente-h-control-motores/

13

También podría gustarte