bclose

Control de tu casa desde Internet

Controlando desde Internet hasta 10 pines digitales

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.

 

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 Arduino, 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.
 

 

 

 

 

(87) Comments

    • Miguel

    Te puedo aconsejar que sigas siendo paranoico con lo de la IP pero tambien te puedo asegurar que dara igual que la cambies por ese camino no tienes nada que hacer, porque las IP se pueden rastrear sin problemas por muchos cambios que hagas e incluso te puedo tambien asegurar que se puede engañar al router para que no detecte la IP del atacante, amigo la tegnologia avanza mucho en seguridad pero resulta que tambien lo hace en el otro extremo, busque información de shodan te puedes sorprender que se puede hacer con esto y algunas que otras utilidades basadas en linux
    https://es.wikipedia.org/wiki/Shodan
    https://www.shodan.io/

Give a Reply

WordPress Anti-Spam by WP-SpamShield

¡Ofertón!

Robot Rover 4×4

Ahora por sólo

50€ + IVA

¡Lo quiero!