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.

 

  Tienda España Tienda Mexico
Vista lateral  Arduino MEGA Arduino UNO R3
Vista principal Un Ethernet shield R3 Un Ethernet shield R3
rojo verde amarillo Unos LEDs Unos LEDs
placa de pruebas Una protoboard Una protoboard
male to male Unos cables macho-macho 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.
 

 

 

 

 

All-foam mattresses are usually the lightest queen size models, weighing in around 60-80 pounds. The WinkBed’s price-points put the mattresses on par with the average hybrid model. The foam is less dense than traditional memory foam and quick to disperse body heat mattressella. Sleep accessories must be added to the same transaction as the qualifying mattress purchase.

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login

(99) Comments

  • Avatar for Charly
    • Ivan Uriarte

    Hola! Muchas gracias!!! Lo que tienes que hacer es abrir un puerto e el router. Aquí explicamos cómo hacerlo https://www.prometec.net/raspberry-servidor-internet/

  • Avatar for Charly
    • MONTELEON37

    Enhorabuena por el tutorial. Me funciona perfectamente. Por cable lo conecto con mi ordenador mediante la IP que he asignado. Tambiën he abierto un puerto en el Router y puedo acceder con mi móvil. Es decir funciona todo bien siempre que me me mueva en mi red interna.
    Ahora me pregunto si seria posible conectarme cuando estoy en una red externa a la mía. Hay alguna aplicación o forma de hacer esto. Muchas gracias

  • Avatar for Charly
    • Ivan Uriarte

    Muchas gracias! Estamos deseando verlo…

  • Avatar for Charly
    • Danielelectric93

    Aqui dejo el enlace: http://jefferelectric.simplesite.com/

  • Avatar for Charly

    hola Ivan Uriarte, me disculpo de antemano por el tiempo que me eh demorado en comunicarme, me a tomado tiempo y recursos aver terminado el proyecto que implemente en mi casa, pero bueno ya esta todo terminado. Ya estoy haciendo el video para que ven como quedo. 🙂 , en la noche subiré un enlace donde pondré el vídeo y unas fotos de como quedo ya instalado.
    Estoy agradecido con todos, gracias a ustedes pude hacer este proyecto que hace tiempo desea hacer.

  • Avatar for Charly
    • Manuel Montoya Ramos

    Hola,
    Desde el idle de Arduino en el menu herramientas, creo que se han de hacer dos cosas:
    – seleccionar la placa mega como dice Ivan, y
    – seleccionar el puerto 21 (que es diferente al puerto 14 correspondiente a la placa uno)
    Saludos,
    Manuel

  • Avatar for Charly
    • Ivan Uriarte

    Hola Juan Carlos, efectivamente no tenemos manera de saberlo a no ser que coonectes una entrada o algo por el estilo.

  • Avatar for Charly
    • Ivan Uriarte

    Tienes que redirigir a la IP del Arduino cuando te entren por ese puerto. Echa un ojo aquí a ver si te vale: https://www.prometec.net/raspberry-servidor-internet/

  • Avatar for Charly
    • JUAN CARLOS JURADO MARTINEZ

    Enhorabuena por compartir este programa que funciona perfectamente. Pero una cosita, encender desde el móvil y apagar queda reflejado pero si se han activado por interruptor o conmutador no tendríamos reflejo a no ser que usemos las entradas, no se si me. Explico…

  • Avatar for Charly
    • Gerardo

    Hola estoy queriendo hacer el enlace, pero no logro conectarme, tengo IP fija de mi proveedor, abrí puertos en mi roster interno y no logro entrar, alguna ayuda?? O de donde puedo sacar info. Gracias

  • Avatar for Charly
    • Ivan Uriarte

    Hola Adrián, el proyecto completo que se adapte perfectamente a tus necesidades va a ser casi imposible. Puedes encontrar en esta página que te ayuden con cada parte del proyecto por separado.

  • Avatar for Charly
    • Adrian

    Hola necesito recaudar alarmas de entrada contacto secos por ejemplo intrusión o corte de energia y que me mande un mail, de donde puedo sacar el proyecto

  • Avatar for Charly
    • 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/

  • Avatar for Charly
    • Ivan Uriarte

    Hola Steve, el programa no puede cargarse en un Arduino UNO por falta de memoria .

  • Avatar for Charly
    • Steve Adams

    Hola tengo arduino UNO que limitantes puedo tener? o es muy necesario hacerlo con el arduino MEGA?
    Con el arduino UNO serian menos pines o no funciona el proyecto?
    Gracias saludos.

  • Avatar for Charly
    • Luis

    Buen día.

    Alguien me podría apoyar para hacer lo mismo pero con un modulo «Wifi Nodemcu Lua Esp8266 Arduino» lo he tratado pero no sé que estoy haciendo mal

  • Avatar for Charly
    • Admin

    Hola Patricio. No hay problema en usar un DHT11. Y tampoco hay problema con que lo leas con el pin A1

  • Avatar for Charly

    Estimado. Sobre el sensor de temperatura, es mejor colocar un DHT11 (https://www.prometec.net/sensores-dht11/). Según el codigo al pin A1? El esquemático de conexión es el mismo de la página señalada()?.
    Saludos.

  • Avatar for Charly
    • Ivan

    Hola Jefferson! Perfecto, y si quieres puedes mandarnos tu proyecto para publicarlo en la página y que así pueda ser de utilidad a más gente, por supuesto respetando tu autoría. Un saludo, y estamos deseando verlo!

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login
Tienda y Tutoriales Arduino