Arduino e Internet mediante cable Ethernet y protocolo mqtt con Videotutorial

Imagina poder controlar tu Arduino con el móvil desde cualquier parte del mundo. ¡Guau!

Ahora, imagina que puedes hacerlo simplemente arrastrando con el ratón unos cuantos bloques y configurando tu dispositivo en una web que hace de servidor. ¡Aún suena mejor!

En el siguiente vídeo aprenderás paso a paso todo el proceso. Se realiza en plataformas que permiten la conexión y el control de tu Arduino de forma totalmente gratuita. Además, si quieres ampliar tu proyecto o comercializarlo profesionalmente, la tecnología utilizada es totalmente escalable.

Qué vas a aprender:

  • A conectar y programar Arduino para que se comunique mediante un Ethernet Shield por internet.
  • Configurar un dispositivo en un servidor mqtt gratuito para realizar la comunicación.
  • Controlar y monitorizar tu Arduino desde un PC o desde el móvil mediante una App gratuita.

Es la hora. ¡Comencemos!

A continuación se resumen los pasos seguidos en el videotutorial anterior.

INDICE

  1. Material y esquemas de conexión
  2. Configuración del sistema mqtt
  3. Realización del programa en ArduinoBlocks
  4. Creación de la aplicación móvil
  • Material y esquemas de conexión

Esquema de conexión

 

  • Arduino UNO o Arduino MEGA
  • Ethernet shield o Módulo Ethernet ENC28J6
  • Led
  • Servidor Web: Cloudmqtt-
  • App móvil: – MQTT Dashboard

 

 

  • Configuración del sistema MQTT 

Vamos a utilizar el protocolo MQTT para realizar el intercambio de ordenes y estados por internet entre Arduino y nuestro móvil o PC. Se ha elegido este sistema porque es el mas extendido para dispositivos IoT (Internet de las cosas).

MQTT se basa en la publicación / subscripción de mensajes. Para crear un canal de comunicación, tenemos que crear un tema en un servidor. Publicando en ese tema, mandaremos datos que serán leídos sólo por dispositivos que estén suscritos a ese tema. En este tutorial aprendemos, tanto a enviar datos (publicar), como a recibir datos (suscribir). Por tanto, nuestro Arduino actuara como emisor y receptor de datos, al igual que nuestro teléfono móvil o PC. Para almacenar y gestionar el tráfico de datos, necesitamos utilizar un servidor MQTT, conocido también como Broker.

Puedes encontrar mas información sobre MQTT y el funcionamiento de cada bloque de programación en el artículo ¡Conecta tu Arduino al Internet de las cosas!

Vamos a usar como servidor MQTT para nuestro ejemplo, la plataforma Cloudmqtt, que es gratuita para sistemas que no integran un gran número de dispositivos y que no necesitan un gran flujo de datos. Si posteriormente quieres aumentar el número de dispositivos de forma considerable, puedes hacerlo simplemente eligiendo un plan de pago.

Para comenzar, accede a https://www.cloudmqtt.com/

Plataforma Coloudmqtt para configurar el servidor

Primero vamos a crear una instancia que es el espacio en el que configuraremos nuestro dispositivo:

1. Creación de instancia

Tras pulsar en “Create New Instance”, nos aparece la instancia creada:

2. Instancia creada

Al hacer click sobre “Didactronica“, entraremos en los detalles técnicos de la conexión creada:

3 Detalles de la conexión

Con esos datos ya podemos rellenar el bloque de inicialización de parámetros de la conexión a internet mediante cable Ethernet:

4. Datos de conexión

Es importante destacar que MAC (dirección MAC) es un identificador que representa de forma única un dispositivo con conexión a internet. Para las Ethernet shield, es habitual que este dato no sea necesario, por lo que podemos dejar el que sale por defecto al insertar el bloque en Arduinobocks. Si de esta forma el sistema no conectara, hay que averiguar la MAC del dispositivo e incluirlo en el bloque. Generalmente viene indicado con con una pegatina o escrito sobre la shield.

Ahora vamos a crear un usuario y dentro de él, crearemos los temas (topics) con el que nos comunicaremos. No es obligatorio crear un usuario, pero es una forma de organizar y relacionar temas (topics) con nuestro dispositivo. Podemos decir que cada usuario va a representar una placa Arduino.

5. Creación de usuario de conexión

Atención: El password (clave) que solicita al crear un usuario no es el que nos pide el bloque de ethernet configurado anteriormente. Este password es solo para gestión interna del servidor, no hay que incluirlo en el programa de Arduinoblocks.

Los temas de comunicación en los que publicar o a los que subscribirse, han de crearse en el apartado ACLs (LIsta de control de acceso) . Aquí tenemos dos tipos de temas: Pattern y topic. Si configuramos el tema como Pattern, los mensajes se enviarán a todos los usuarios. En cambio, si elegimos crear un tema como Topic, el mensaje sólo se enviará a los dispositivos incluidos en un tema concreto.

En nuestro ejemplo crearemos un tema tipo Pattern, al que podrían acceder diferentes usuarios. Como sólo hemos creado un usuario hasta el momento, no notaremos la diferencia.

6. Creación de un tema de comunicaicón

Ahora ya tenemos todo lo necesario para comenzar la comunicación. Tenemos que tener una última cosa importante en cuenta, cuál es el nombre exacto con el que tendremos que publicar o suscribir con Arduino y el móvil o PC.

9. Nombre del tema

El nombre final que hay que indicar para trabajar con un tema creado, teniendo en cuenta la información generada en este ejemplo y resumida en la imagen anterior, será:

  • Realización del programa en ArduinoBlocks

Nuevamente te invitamos a visitar la entrada ¡Conecta tu Arduino al Internet de las cosas! para conocer en detalle el funcionamiento individual de cada bloque.

El programa creado va a hacer lo siguiente:

  1. Estará todo el tiempo comprobando si la conexión a internet es válida
  2. Si es así, se ordena que se suscriba al tema “Placa1 – ONLED”, y que lea si algún dispositivo a publicado algún dato en ese tema. La lectura la guardará en una variable que se ha llamado “Orden”.
  3. Si el en el tema se ha publicado (desde un móvil o un PC) una letra “E”, entonces se ordena que Arduino active su pin 8, con lo que el led conectado a esta salida, se iluminará. Además, se publicará el valor “Led Encendido” en un tema nuevo creado por él y que se ha llamado “EstadoLEd”.
  4. Si el dato leído y guardado en la variable “Orden” es una A, entonces se hace apagar el pin 8 de Arduino, y con ello el led conectado al mismo. Además, se publicará el valor “Led Apagado” en un tema nuevo creado por él y que se ha llamado “EstadoLEd”.

10. Descripción del problema

Ahora ya, tras cargar el programa en la placa Arduino, podemos controlarla acceciendo al servidor y enviando datos desde él. Para hacerlo, vamos a la pestaña “Websocket UI” dentro de nuestra cuenta en el servidor Cloudmqtt, e introducimos el tema y el dato que queremos enviar.

15. Enviar ordenes desde el servidor

16. Lectura de datos publicados por Arduino

En la imagen anterior vemos como hemos publicado desde el servidor la letra “E” en el tema “Placa1 – ONLED”, y además vemos que hemos recibido una publicación (“Led encendido”) en otro tema creado por la placa Arduino y que se ha llamado “EstadoLed”. Ya tenemos una comunicación bidireccional completa.

  • Creación de la aplicación móvil

Vamos a utilizar la aplicación gratuita MQTT Dashboard. Aquí tendremos primeramente que crear una nueva conexión, en la que introduciremos los datos tratados incluidos en el programa y obtenidos del servidor Cloudmqtt:

11. Configuración le la App

Tras esto, ya podemos crear una botonera en el apartado “Publish” para enviar ordenes sólo con pulsar un botón. Vamos a crear un botón de “Encender led” que al pulsarlo publique una letra “E” en el tema “Placa1 – ONLED”. A continuación crearemos otro botón de “Apagar Led” que publique una “A” en ese mismo tema.

Recordamos que hemos puesto una condición en el programa de Arduinoblocks para que una “E” active el pin 8 y con ello encienda el led conectado al mismo, y otra condición para que una “A” lo apague.

13. Apagar led

12. Creación de pulsadores

 

 

 

 

 

 

 

 

13. Botonera creada

Finalmente, vamos a crear el tema en el que se lee el estado en el que está el led, es decir, los datos que se envían desde Arduino. Recordamos que le hemos hecho que si el led se enciende, se publique en el tema “EstadoLed” el dato “Led encendido”, y si se apaga, se publique “Led apagado” en ese mismo tema.

14. Leer datos publicados por Arduino

¡Y ya lo tenemos! Si tienes consultas o sugerencias, no dudes en comentar, visionar el vídeo y realizar tantas preguntas como sean necesarias.

Compartir