Monitorización y control Wifi de temperatura y configuración de servidor con usuario y clave

En el artículo Wifi y Arduino: Explicación del proceso completo con personalización de app móvil, tratamos las nociones básicas de la comunicación con Wifi usando un servidor gratuito que no requiere crear usuario ni clave. Esta característica hace que no sea necesario configurar un servidor en Internet, lo que resulta muy rápido, sencillo y cómodo, pero como contrapartida nos ofrece una conexión menos segura. Ahora, vamos a aprender a crear una cuenta en un servidor online (también gratuito) que nos permita dotar a nuestra conexión de usuario y contraseña.

Todo lo que vamos a explicar es totalmente escalable, es decir, puedes crear tu proyecto con una cuenta gratuita y si por los motivos que sea quieres aumentar en gran medida el número de dispositivos, mensajes, clientes, etc., bastará con cambiar de plan y contratar uno que te ofrezca mas servicios. Se ha elegido el servidor Cloudmqtt.com, pero la filosofía de trabajo es la misma para otros servidores similares.

Vamos a ver en qué consiste el proyecto que proponemos para poner en práctica todo esto:

Se va a monitorizar la temperatura de una sala mediante un sensor de temperatura conectado a una placa Arduino. Ese dato se va a estar mandando periódicamente a un servidor online y a una app móvil para que lo podamos consultar en cualquier momento. Ademas, desde un ordenador, un móvil o una tablet, vamos a poder  enviar una orden a ese Arduino para que haga encender o apagar un relé, que a su vez, controle un aparato de aire acondicionado, la calefacción de casa, o cualquier otro dispositivo similar ¡Casi nada!

En un tutorial futuro sobre este mismo tema, daremos un paso mas y aprenderemos a programar una temperatura y las horas a las que queremos que esté funcionando el sistema… pero vayamos por partes.

Es importante destacar, que este documento es una continuación del artículo antes citado (Wifi y Arduino: Explicación del proceso completo con personalización de app móvil), por lo que se harán referencias constantes al mismo para comprender conceptos básicos ya explicados en él.

Como en otras ocasiones en las que se colabora con la plataforma Didactrónica, toda esta información se presenta en formato audiovisual en el siguiente vídeo, y a continuación se detalla también en forma de artículo.   

Monitorización y control Wifi de temperatura

Índice

  1. Componentes y esquema de conexión
  2. Alimentación, conexión y configuración del módulo wifi ESP8266
  3. Comunicación mediante MQTT
  4. Programación por bloques en ArduinoBlocks
  5. Programa completo
  6. Configuración del servidor online con usuario y contraseña
  7. Gestión del sistema desde un ordenador
  8. Configuración de una app móvil

1. Componentes y esquema de conexión

  • Módulo Wifi ESP8266
  • Adaptador para ESP8266 (o alguna otra de las opciones presentadas)
  • Relé
  • Sensor de temperatura Lm35
  • App móvil gratuita: Linear MQTT Dashboard
  • Servidor online con cuenta gratuita: Cloudmqtt

En la imagen superior vemos que se ha conectado el pin Rx del ESP8266 al pin 2 de Arduino, y el Tx al pin 3. Se pueden conectar a otros puertos, simplemente hay que tenerlo en cuenta para indicarlo al realizar el programa.

En el artículo Arduino + MQTT + WiFi con módulo ESP8266, se describen otras formas de conectar con el módulo ESP8266, tema en el que, por cierto, profundizaremos próximamente.

Cuidado al realizar la conexión del relé. Dependiendo del fabricante, el orden de las conexiones: cable de señal (cable color cian), 5V y GND, puede cambiar:

En el vídeo Relés y Arduino: solución a problemas de lógica inversa y fabricación propia, se ofrece mas información sobre relés y su conexión con Arduino.

El sensor de temperatura Lm35 se ha conectado a la entrada analógica A0.

2. Alimentación, conexión y configuración del módulo wifi ESP8266

Este es uno de esos momentos en los que nos remitimos al artículo  (Wifi y Arduino: Explicación del proceso completo con personalización de app móvil)ya que ahí puedes encontrar toda la información detallada necesaria para realizar la configuración del ESP8266 por primera vez. Si no lo has hecho antes, es posible que necesites cambiar la velocidad de transferencia de este módulo Wifi la primera vez que lo uses.

3. Comunicación mediante MQTT

El proceso de envío y recepción de datos, en resumen, es el siguiente:

Los nombres elegidos para los temas (topics) son arbitrarios, podéis poner el que queráis, cuanto mas personalizados, mejor.

Igual que en los apartados anteriores, podéis encontrar detalles sobre la utilización del protocolo MQTT para la comunicación por internet en Wifi y Arduino: Explicación del proceso completo con personalización de app móvil y en el artículo ¡Conecta tu Arduino al Internet de las cosas! (IoT).

4. Programación por bloques en ArduinoBlocks

Como siempre, tenemos dos bloques principales: Inicializar, para definir parámetros y configuración inicial, y Bucle, para describir las órdenes y condiciones a chequear y ejecutar constantemente. Vamos primero con Inicializar:

1.Configuramos los datos de la conexión:

  • Teniendo en cuenta el esquema de conexión propuesto anteriormente, vemos en el bloque cómo conectamos el pin 2 de Arduino con el Rx del ESP8266 y el 3 con el Tx. Como decíamos, se pueden elegir otros puertos de Arduino, eso sí, preferiblemente distintos del 0 y el 1, ya que estos los ocupa la placa para su comunicación con el ordenador.
  • Establecemos la velocidad de conexión a 9600 baudios.
  • En WiFi red y clave, introducimos los datos de la red Wifi a la que se vaya a conectar.
  • El resto de parámetros los creamos y definimos en el servidor en internet. Vamos a ver cómo obtenerlos en la última parte del artículo.

2. Indicamos el tema al que nos vamos a suscribir para recibir órdenes desde internet:

Vamos a suscribirnos al tema DID/Rele y los datos que se envíen a ese tema desde un móvil, tablet, Pc, etc., los vamos a almacenar en la variable Ordenes.

Con eso ya tendríamos toda la parte de inicializar parámetros. Ahora vamos a ver que incluimos en el parte Bucle:

1. Encendido y apagado del relé conectado al pin 8:

Utilizamos un bloque condicional si para evaluar una condición:

  • Si Ordenes (variable en la que guardamos los datos leídos del tema DID/Rele) es igual a 1, es decir, si recibimos un 1 desde internet en el tema DID/Rele, entonces encendemos el pin 8 de Arduino.
  • Si recibimos cualquier otro valor, o no hemos recibido nada, entonces ponemos el pin 8 apagado.

2. Envío de la temperatura al servidor para poder visualizarla en un móvil, PC, etc.

  • Vamos a leer el valor medido por un sensor de temperatura conectado al pin analógico A0 de Arduino, y lo vamos a guardar en una variable llamada Temperatura.
  • A continuación, publicamos en el tema DID/Temperatura el valor Temperatura.
  • Todo esto lo incluimos dentro del bloque Ejecutar cada, para enviar los datos solo cada cierto tiempo (en este ejemplo cada 3 segundos), para no saturar así la comunicación con el servidor.

5. Programa completo

Así de sencillo ¡solo 13 bloques! Finalmente, vamos a ver cómo configurar el servidor para dar fiabilidad a nuestra conexión y obtener los datos que incluimos en la inicialización del programa.

6. Configuración del servidor online con usuario y contraseña

Vamos a utilizar el servidor Cloudmqtt.com porque tiene una opción gratuita y porque es muy fácilmente escalable, como decíamos.

1. Primero creamos una instancia, dentro de la que vamos a configurar nuestra conexión. Diferentes proyectos los podemos organizar en diferentes instancias.

Le damos un nombre, seleccionamos la opción gratuita (o la de pago si se quieren realizar mayor número de conexiones de las ofrecidas en el plan básico):

Seleccionamos la región en la que nos encontremos (o la mas cercana):

Le damos a continuar y confirmar, y ya la tenemos. Ahora nos aparecerá la siguiente pantalla:

Ahí tenemos ya toda la información que necesitamos para rellenar la configuración inicial de nuestro programa. Con esto vamos al siguiente paso.

2. Introducimos los datos de conexión (servidor, clave, usuario y puerto) generados por el servidor, en nuestro programa en ArduinoBlocks.

Ahora ya si que está el programa completo.

3. Tenemos que crear en el servidor los temas a los que Arduino se vaya a suscribir. Para ello, vamos a USERS & ACL:

Aquí tenemos dos apartados: Users y ACLs. Básicamente esto nos permite crear usuarios, dentro de los cuales haya temas específicos de ese usuario. Ejemplo:

Como nuestra conexión es muy simple, no vamos a crear ningún usuario, crearemos directamente el tema que publica Arduino:

DID/Rele, como decíamos antes, es un nombre arbitrario. Solo es importante que sea el mismo  que se ha usado en el programa elaborado en ArduinoBlocks para Arduino:

Y queda así:

Ya tenemos el servidor completamente configurado.Si queréis ver un ejemplo de configuración de temas que dependan de usuarios de forma jerarquizada, en el vídeo Arduino e Internet ¡SIN CÓDIGO! Proceso completo con mqtt y programación gráfica por bloques, se explica como realizarlo. Es un tutorial para comunicación por internet con cable Ethernet, pero funciona exactamente igual que con Wifi.

7. Gestión del sistema desde un ordenador

Ahora ya, tras cargar el programa en la placa, vamos en el servidor al apartado WEBSOCKET UI:

Como se ve en la imagen, escribimos el tema (topic) en el que queremos publicar una orden (que es el tema al que le hemos dicho a Arduino que se suscriba).

Escribimos el dato que se quiere enviar (Message) y lo enviamos (Send).

Los temas que Arduino publique para esta conexión no es necesario que los creemos ni configuremos en el servidor, él ya los toma directamente. Por tanto, con la parte de DID/Temperatura, no tendremos que hacer nada en el servidor:

Y este es el resultado del intercambio de mensajes:

En la imagen superior estamos recibiendo datos de temperatura publicados por Arduino en el tema DID/Temperatura. Además, en la parte inferior izquierda, vemos que se ha enviado la orden de encender el relé, que se ha enviado un 1 en le tema DID/Rele.

8. Configuración de una app móvil

Vamos a utilizar la misma app que en artículo anterior sobre wifi: Linear MQTT Dashboard. Esta parte es exactamente igual que ahí. La única diferencia es que, al configurar los datos del servidor, ahora si tenemos que incluir usuario y contraseña.

Como hacíamos, configuramos una “casilla” a la que van a llegar los datos de temperatura y un interruptor con el que enviar las órdenes de encendido y apagado del relé.

En el móvil nos quedaría algo como la imagen inferior. Estamos recibiendo una temperatura de 21 grados y tenemos un interruptor para encender y apagar el relé:

!Y eso es todo¡ En el siguiente tutorial vamos ya a por una programación horaria de la temperatura. Recordad que todo esto que hacemos, lo podéis adaptar a infinidad de proyectos diferentes: Control de luces en función de la luminosidad, gestión de alarmas, accesos…

 

 

 

Compartir