Objetivos

<  

  • Montar un circuito con un 6 LEDs y un Shield Ethernet.
  • Crear un servidor Web.
  • Presentar un programa de Internet, ideal para monitorizar y controlar remotamente tu casa.
  • Ver como configurar y adaptar este programa a nuestras necesidades.
  •  

    Material requerido.

     

    Vista lateral  Arduino MEGA
    Vista principal Un Ethernet shield R3
    rojo verde amarillo Unos LEDs
    placa de pruebas Una protoboard
    male to male Unos cables macho-macho

     

    Un caso práctico

     

    En las últimas sesiones, hemos ido viendo los conceptos básicos de las Redes Ethernet y del protocolo TCPIP. También hemos probado un esquema básico de programa que podemos usar como esqueleto para nuestros propios proyectos.

    Hemos intentado mantener los Sketches de Arduino y los snippets de código y los programas de gestión, a un mínimo de complicación, para facilitar la comprensión de los ejemplos y animaros a que los uséis como base para vuestros desarrollos.

    En esta sesión, nos vamos a olvidar por un momento de la sencillez obligada para presentaros un proyecto que hace tiempo tenía ganas de traer a estas páginas, pero que requería antes de una cierta base al respecto, y que además confió en que os sea útil en algún momento.

    Es un proyecto que vi en Instructables (página que por cierto os recomiendo, si leéis en inglés) y que me impresionó. Básicamente es un sistema de gestión desde internet o la red local de las salidas digitales de Arduino, con un interface gráfico espectacular, desarrollado directamente en HTML5 y CSS.

    Comprender el código no es sencillo porque implica conocimiento importante de HTML y CSS, pero en realidad tampoco es demasiado importante, porque basta con utilizar la parte HTML como armazón y modificar, si lo necesitamos, la parte de Arduino.

    EL proyecto original del autor Claudio Vella, consistía en desarrollar un servidor web sobre Arduino que le permitiera controlar de una forma elegante los pines digitales y gobernar diferentes controles de su casa, desde la calefacción al riego, o diferentes luces de casa, sin levantarse del sillón. Después algunos otros han construido sobre el programa original y el resultado creo que hablara por sí mismo.

    Pero debéis saber que las mejoras graficas conllevan un coste, el programa no puede cargarse en un Arduino UNO por falta de memoria y este va a ser el primer ejemplo en Prometec en que vamos a utilizar un MEGA.

    Creo que la dificultad del programa HTML (Que insisto puede ignorarse y utilizarlo como una librería) y la necesidad de usar un MEGA compensan el resultado.

    Además, al utilizar código HTML5 para dibujar los controles, nos permite acceder desde el navegador del móvil y efectuar el control, tanto desde casa como desde el exterior, si previamente configuramos el Port Forwarding en el Router.

    Debo añadir además, que no pretendo atribuirnos ningún mérito en el desarrollo de este programa, y que nuestra única función es la de presentároslo, pero todo el mérito corresponde a los autores y no a Pormetec.net

    En cualquier caso, vosotros juzgareis si el esfuerzo ha merecido la pena.

     

    Diagrama de conexión

     

    Vamos a montar un circuito muy sencillo con múltiples LEDs, 6 en mi caso, pero el programa permite gobernar hasta 10 pines digitales.

  • Hay una razón técnica profunda, para elegir exactamente 6 LEDS: No tengo más, pero el programa acepta hasta 10 entradas.
  •  

    Haremos un montaje con una única resistencia de 330? entre GND y el negativo de todos los LEDs y conectaremos los positivos de los LEDS a pines digitales.

    El diagrama incluye el Arduino MEGA y encima de el está un Shield Ethernet.

    Esquema de protoboard

     

    El programa de control

     

    El objetivo del programa es montar un servidor web en el Arduino Mega, que nos presente esta pantalla, preferiblemente en nuestro teléfono móvil (Aunque naturalmente, también funciona con el navegador):

    Control remoto de Arduino por ethernet

    Cuando tocas cualquiera de los botones la luz correspondiente se enciende e el display y levanta el pin correspondiente de Arduino, y puede apagarse con el botón de OFF.

    El sistema gestiona correctamente la gestión de los múltiples  pines y hasta guarda en la EEPROM, por si se va la luz, es capaz de recordar que controles tenia activados.

    Por supuesto, Podéis cambiar todas la etiquetas de nombres y adaptarlas a vuestras necesidades.

    Podéis encontrar el proyecto original aquí :  Ethernet Switching – with Arduino . Pero os pongo aquí un enlace para descargar el programa directamente: WebServerSwitching V04.06

    La última versión disponible es la 4.06, que incorpora unas cuantas mejoras muy interesantes:

  • Fijar un refresco de datos.
  • Encender o apagar las salidas en el arranque, sin intervención manual.
  • Leer la temperatura y mostrarla.
  • Guardar y recuperar datos de la EEPROM.
  •  

     

    No tendría mucho sentido reproducir  aquí, el programa completo, dada su complejidad. Pero si me parece interesante comentar algunas líneas.

    Lo primero es que carga las librerías SPI y Ethernet para el Shield y además la librería EEPROM

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

    Después configura manualmente el TCPIP (No nos interesa el DHCP para saber a ciencia cierta que IP se nos asigna)

    byte ip[] = {   192, 168, 1, 217 }; 
    byte gateway[] = {   192, 168, 1, 254 }; 
    byte subnet[] = {   255, 255, 255, 0 };

    Si vais a acceder desde internet, lo lógico sería establecer una VPN. Si no sabéis lo que es, no tiene mayor importancia ahora mismo, pero sí que es imprescindible que cambies la dirección IP, a una diferente, para no dar demasiadas facilidades al enemigo (Si, los administradores de red tendemos a ser paranoicos).

    Vamos con otro tema importante. Dependiendo del modelo que vayáis a usar, conviene definir un array con los pines que os interesa controlar.

    int outputAddress[10] = { 3,5,6,7,8,9,14,15,16,17};

  • Recordad que el MEGA usa los pines 10, 50, 51, 52 y 53 para el Shield Ethernet y por tanto, no se pueden usar. Dependiendo del modelo que uséis, tenéis que comprobar que pines están disponibles.
  • El pin 4 se usa para leer la tarjeta microSD y es mejor que no lo utilicéis, o veréis cosas raras.
  • El pin 2 se usa para interrupciones, así que mejor ni tocar.
  •  

    Otra línea importante. Escribid los rótulos que queréis mostrar en el display:

    String buttonText[10] = {  "01. Right Lamp","02. Left Lamp","03. Bedroom","04.  Kitchen",
    "05. Water Heater","06. Gate","07. Toilet","08. Main Heater","09. Roof Light","10. Basement"};

    Mas configuraciones, Indica en que pines quieres retener la configuración si la luz se va, o sea que los vuelves a dejar en el estado previo al corte:

    int retainOutputStatus[10] = {1,0,0,0,1,1,1,1,1,1};

  • 1- Conservat status.
  • 0 – Ir a OFF al reiniciar.
  •  

    Echadle una ojeada al programa. Es largo, pero no hay nada que no podáis entender, excepto, quizás el código HTML que imprime con client.print, lo mismo que hemos visto en las sesiones previas.

    Aquí os pongo un mini video del proceso:

     

    Mejorando el proyecto

     

    En el video anterior hemos visto el aspecto del programa y como manejaba una colección de LEDs en una protoboard. Naturalmente, confío en que encontrareis aplicaciones más útiles para este programa que encender luces. Y para ello vamos a necesitar algo que gobierne cargas de corriente superiores.

    Para ello bastaría con conectar un Shield de Relés adicional o una línea externa de relés, del tipo que os muestro en las imágenes anexas.

    SHield de reles Arduino

    Tira de 8 reles

    Tanto el Shield con 4 Relés, como la barra con 8 relés, son relativamente fáciles de encontrar, y te permiten conmutar,por muy poco dinero,  hasta 250V con 10Amperios, lo que no está mal y es más que suficiente para conmutar casi lo que se os ocurra a nivel doméstico.

    En el caso del Shield de 4 reles no necesitaria, ni siquiera una protoboard o circuito impreso adicional, ya que se puede montar encima del MEGA y del Ethernet Shield, aunque habria que comprobar que no se maten entre ellos por cuestion de pines.

    Si fuera asi, existem tiras de reles, de 2, 4, y 8 unidades, lo que os permitirían configurar bastante bien casi cualquier necesidad.

     

    Resumen de la sesión

     

  • Hemos presentado el proyecto Ethernet switching, que es excepcional para domotizar vuestra casa.
  • Utiliza un programa basado en HTML5 y una hoja de estilos, para presentar unos controlos, estéticamente agradables.
  • Veréis que es muy sencillo de configurar con nuestras preferencias y nos va a permitir gobernar controles y equipos domesticos desde el exterior.
  • Recordad, que si queremos entrar desde el exterior, tenemos que configurar el port Forwarding.
  •  
     

    Deja una respuesta