Análisis e implementación de un sistema de reporte para Arduino

20150118_221154

Acceder y visualizar de manera gráfica la información procesada por Arduinos mediante una página web es una tarea común. En el presente artículo veremos una serie pasos que nos permitirán la implementación de este tipo de herramienta, estos son:

  • Definición del mecanismo que permita el acceso de Arduino a la aplicación web.
  • Ejemplo de aplicación web para monitorizar un Arduino.
  • Empleo del shield ethernet de Arduino para posibilitar la comunicación con la aplicación web,

Para ello vamos a partir de un escenario donde tenemos un Arduino conectado a dos sensores que monitorizaremos. El Arduino se comunicará con la aplicación web conectándose a un router vía Ethernet con el correspondiente shield.

Especificación del interfaz entre la aplicación web y el Arduino

Para iniciar el desarrollo de la aplicación web sólo necesitamos tener claro como se comunicará esta con el Arduino. Lo más sencillo es exponer un recurso accesible a Arduino a través de una URL de la aplicación que permita que Arduino comunique los valores de los sensores.

La información necesaria para que un programador web y un especialista en Arduino puedan iniciar el desarrollo, cada uno por su lado, está en la especificación una interfaz para un recurso, como puede ser el siguiente:

  • URL: http://baseurl/insertsensordata
  • Método: POST
  • Parámetros en formato JSON:
    • key: Clave de autenticación
    • sensor(Identificador del sensor) : valor (Valor de medición del sensor)

El acceso a dicho recurso se hará mediante una solicitud HTTP a la URL desde el Arduino.

Especificaciones de la aplicación web

En este artículo no vamos a mostrar el código empleado para desarrollar la aplicación web, pero si se comparte un ejemplo de aplicación programada en php (mediante framework Symfony2) en este repositorio. Igualmente puede encontrarse dicha aplicación web funcionando en este enlace.

Las especificaciones de la aplicación representan un ejemplo de caso de estudio típico para el escenario en el que estamos trabajando y son las siguientes:

  • Mostrar gráficas de los valores de los sensores
  • Definir valores para los cuales las mediciones de los sensores suponen un estado de alerta
  • Implementar un sistema de notificaciones por el cual, cuando un sensor alcanza un estado de alerta, se les envía una notificación a una serie de emails y se publica un tweet en una cuenta de twitter determinada.

Las siguientes capturas muestran la aplicación del repositorio.

Screenshot - 180115 - 22:20:01
sc2

Acceso al recurso por parte de Arduino vía ethernet

Conectado el shield ethernet a un Arduino ahora tenemos que programarlo para que éste pueda realizar una solicitud HTTP contra una URL y suministrar los parámetros necesarios vía post. Esto logramos gracias a la librería Ethernet.h y a la correcta formación de la cadena de caracteres que compone la solicitud, como puede verse en el siguiente código:

Comentar que la frecuencia con la que el Arduino mide y envía los datos del sensor a la URL viene definidia por la constante POLLING_INTERVAL y que el parámetro key es usado para implementar un sistema de autenticación simple.

Acerca de

Ver todas las entradas de