0% encontró este documento útil (0 votos)
163 vistas4 páginas

Integración MQTT con Arduino y Ethernet

Este documento describe cómo integrar MQTT con Arduino y Ethernet para permitir la conectividad IoT. Explica que MQTT es un protocolo estándar para comunicaciones IoT que utiliza un broker para redirigir mensajes entre clientes. Luego detalla los pasos para configurar un broker gratuito en la nube llamado CloudMQTT y programar un Arduino con un módulo Ethernet para publicar y suscribirse a temas MQTT para enviar y recibir mensajes de texto.

Cargado por

Carlos Niño
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
163 vistas4 páginas

Integración MQTT con Arduino y Ethernet

Este documento describe cómo integrar MQTT con Arduino y Ethernet para permitir la conectividad IoT. Explica que MQTT es un protocolo estándar para comunicaciones IoT que utiliza un broker para redirigir mensajes entre clientes. Luego detalla los pasos para configurar un broker gratuito en la nube llamado CloudMQTT y programar un Arduino con un módulo Ethernet para publicar y suscribirse a temas MQTT para enviar y recibir mensajes de texto.

Cargado por

Carlos Niño
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Integracion de MQTT con Arduino + Ethernet

Para los dispositivos de Internet de las Cosas (IoT), la conexión a Internet es un requisito.
La conexión a Internet permite que los dispositivos trabajen entre sí y con servicios.

MQTT (Message Queue Telemetry Transport) se ha convertido en el patrón para las


comunicaciones del IoT.

El protocolo MQTT define dos tipos de entidades en la red: un bróker de mensajería y


numerosos clientes.

Bróker es un servidor que recibe todos los mensajes de los clientes y en seguida, redirige estos
mensajes a los clientes que se suscriben a este tema.

- Un cliente es cualquier cosa que pueda interactuar con el bróker y recibir mensajes.
- Un cliente puede ser un sensor de IoT o una aplicación central que procesa .

CloudMQTT proporciona MQTT Broker como un servicio, el cual se usara en este tutorial.

En este proyecto se pretende conectar Arduino provisto de una shield Ethernet, a un Broker para
enviar y recibir un texto e imprimirlo por consola.

Se usara un plan gratuito de CloudMQTT para esto o puede usar cualquier otro corredor MQTT
de su elección.

Componentes Requeridos

- Arduino Uno/Mega/…
- Shield Ethernet W5100
- Cable USB
- Cable de red
- Descargar la librería PubSubClient - incluye ejemplos de uso!

(https://github.com/knolleary/pubsubclient/archive/v2.7.zip)
El Shield Ethernet W5100

Arduino usa los pines digitales 10, 11, 12, y 13 (SPI) para comunicarse con el W5100 en el
ethernet shield, estos pines no pueden ser usados para entradas o salidas genéricas.

El botón de reset del shield resetea ambos, el W5100 y la placa Arduino.

El shield contiene LEDs para información:

 ON: indica que la placa y el shield están alimentadas.


 LINK: indica la presencia de un enlace de red y parpadea cuando el shield envía o recibe
 datos.
 100M: indica la presencia de una conexión de red de 100 Mb/s (de forma opuesta a una
 de 10Mb/s).
 RX: parpadea cuando el shield recibe datos.
 TX: parpadea cuando el shield envía datos.

Creación de cuenta en CloudMQTT


En primer lugar tenemos que crear una cuenta en CloudMQTT. https://www.cloudmqtt.com/

 Ingresar ID de correo electrónico en "Crear cuenta", luego clic en Registrarse.


 El servidor CloudMQTT enviará el correo de verificación
 Abrimos el mail de confirmación enviado por CloudMQTT y confirmamos la subcripcion.
 En CloudMQTT Ingresamos la contraseña de cuenta y confirmamos la contraseña.
 "Crear nueva instancia"
 Introducimos un "Nombre", por ejemplo: CloudMQTT.
 Luego "Crear instancia" para completar la creación.
 Posteriormente se crean los Topic

Después de la creación de una nueva instancia, debemos anotar los detalles, Nombre de la
Instancia, Servidor, Usuario, Contraseña y Puerto de la instancia.
Programación del arduino como cliente
Explicación del código paso a paso

Incluimos las siguientes librerías al proyecto:

SPI.h (del inglés Serial Peripheral Interface) es un estándar de comunicaciones.


Ethernet.h es la usada para manejar el Ethernet, implementa la pila de protocolos TCP/IP.
PubSubClient.h permite que un cliente publique/suscriba mensajes con un servidor MQTT.

#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>

// definir una dirección mac, por lo general no debe cambiarse


byte mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };

// Modificar estos con valores para su red.


IPAddress ip(192, 168, 0, 140);
IPAddress server_router(192, 168, 0, 1);

// Modificar URL según el broker


const char* server = "m11.cloudmqtt.com";

EthernetClient ethClient;
PubSubClient client(ethClient);

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


// Imprime por consola el mensaje recibido
Serial.print( "Mensaje recibido[" );
Serial.print(topic);
Serial.print("] ");
for (int i=0;i<length;i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}

void setup()
{
Serial.begin(115200);
// Asignamos MAC y dirección IP a la shield Ethernet W5100
Ethernet.begin(mac, ip);
delay(1500);
// En esta línea solo se debe modificar el puerto del broker
client.setServer(server, 1883);
// conectamos al broker
client.setCallback(callback);
}
void reconectar() {
// Ciclo de reconexion
while (!client.connected()) {
Serial.print( "Conectando a MQTT..." );
// Intento de conexión con ID / nombre de usuario / contraseña (de MQTT)
if (client.connect( "myClientID", "myUsername", "myPassword" )) {
Serial.println( "conectado" );
// Una vez conectado, publicar un mensaje en el tópico “outTopic”...
client.publish( "outTopic","Hola mundo" );
// Se subscribe al topico “inTopic” para recibir
client.subscribe( "inTopic" );
} else {
// Si no pudo conectar lo imprime por consola y reintenta
Serial.print( "Error al conectar" );
Serial.print(client.state());
Serial.println( " Reintentando en 5 segundos" );
delay(5000);
}
}
}

void loop()
{
if (!client.connected()) { // Si el cliente se desconecto, reconecta
reconectar();
}
client.loop();
}

https://www.facebook.com/groups/2151472251796152/

Di Pardo Gastón - Developer IoT & M2M

También podría gustarte