Control Remoto de Alumbrado – 4 – Final

Apurando los últimos días de vacaciones finalmente he terminado el proyecto de alumbrado de mi habitación.

Tal y como explique en la primera entrada, la idea es poder controlar la iluminación de la habitación desde un pulsador o desde un mando a distancia pudiendo apagar o encender la luz, programar el apagado en 5 minutos o entrar en el modo programación que te permite hasta 60 minutos de tiempo para el apagado automático.

Para ello ademas del pulsador, el típico usado en escaleras comunitarias, es necesario un microcontrolador, en este caso un Arduino Mini Pro, un relé, un buzzer, un fototransistor, un led bicolor, dos resistencias de 1k y poco más. Las primeras pruebas es recomendable hacerlas en un protoboard.

También necesitaremos una fuente de alimentación para el circuito, en este caso un transformador de móvil de 5V 0,850A.

En cuanto a la programación la mayor dificultad ha estado en cuanto al funcionamiento de los mandos a distancia, pues no todos funcionan igual. Tal y como comento de forma más extendida en los comentarios del código, algunos mandos al pulsar un botón mandan el código correspondiente a ese botón, una vez mandado mandan otro código “residual” hasta que se deja de pulsar el botón. Con estos es muy fácil programar el código. Sin embargo, con otros mandos el funcionamiento varia bastante, y es que un mismo botón puede tener varios códigos validos y distintos del resto de botones, pueden mandar uno de esos códigos al azar y cuando lo mandan lo hacen duplicado y reiteradamente hasta que se deja de pulsar el botón. Esto hace, si no lo controlamos, que al pulsar el botón medio segundo, se encienda y apague la luz de tres a cuatro veces seguidas…


[clear /]

Código disponible desde Google Code:
http://code.google.com/p/01-arduino-remote-control-of-lighting

14 thoughts on “Control Remoto de Alumbrado – 4 – Final

  1. Hoo ! debo admitir que esta muy bien ! yo quisiera aprender a programar circuitos ! je! muy padre el proyecto, a lo mejor algún día me anime a hacer uno parecido.

    Saludos ! a mando mas cartas en el 3ds ! jajajaj ! 😛

  2. Excelente proyecto, vengo siguiendo esta web hace bastante, tengo un duemilanove pero no le estoy dando mucho uso, por ser muy colgado 😛 Sigue así!

  3. Hola! Gracias por tus aportaciones.
    Tengo entre manos un proyecto de control de la calefaccion y riego y me gustaria utlizar un infrarrojo el problema es que na vez lo tengo andando con la funcion ir.begin() no puedo acceder via web a arduino. Yo lo achaco a que al iniciar el ir se quede esperando la llegada del codigo infrarrojo.

    Te suena algo de esto?

  4. hola buenas copio y pego su codigo de la version v1.1 tal cual en el arduino y me suelta el siguiente error

    Arduino:1.6.5 (Windows 8.1), Placa:”Arduino/Genuino Uno”

    C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‘TKD2’ was not declared in this scope
    int RECV_PIN = TKD2; // the pin the IR receiver is connected to
    ^
    Error de compilación

    This report would have more information with
    “Show verbose output during compilation”
    activala desde Archivo > Preferencias

    que puede ser?

    solo me interesa poder encender y apagar la luz desde el mando o el pulsador, todo lo de la programacion de apagado no me es relevante
    gracias y saludos

    1. Hola,

      Eso es porque tienes dos librerías que chocan entre ellas, quizás usen los mismos nombres para las clases. Elimina la que sobre, cierra y abre el IDE de nuevo y vuelve a probar.

      Saludos

    2. gracias ya se ejecuta correctamente, era una libreria robot que duplicaba el archivo IRremote.h,
      pero ahora al pasarlo al arduino uno R3 este no hace nada, enciende el led verde pero no responde ni al pulsador ni al mando

      saludos

    3. ya me funciona correctamente, era un fallo del pulsador, lo que sigue sin funcionar es el mando,(solo tengo un mando, usted tiene 2)
      es el mando que viene con el kit de arduino, el codigo del primer boton es por ejemplo 3125149440 el del segundo 3108437760 el del tercero 3091726080

      ese es su codigo
      // CODIGOS DE LOS MANDOS
      // Los botones:
      #define onOff 0
      #define apagadoAuto 1
      #define modoProgra 2

      // N̼mero de botones РN̼mero de mandos:
      #define numBotones 3
      #define numMandos 4
      unsigned long losCodigos[numBotones][numMandos] =
      {
      //Mando: Microsoft MCE , Chino YK-001, Apple Remote
      { 2148500571, 2148467803, 16753245, 2011242676 }, // On Off
      { 2148500572, 2148467804, 16769565, 2011287732 }, // Apagado Automático
      { 2148500573, 2148467805, 16736925, 2011250868 } // Modo Programación
      };

      como tendria que dejar el codigo para el correcto funcionamiento?

    4. Así:

      #define numBotones 3
      #define numMandos 1
      unsigned long losCodigos[numBotones][numMandos] =
      {
      { 3125149440 }, // On Off
      { 3108437760 }, // Apagado Automatico
      { 3091726080 } // Modo Programacion
      };

    5. muchas gracias por la ayuda, eres un genio, pero el problema era que el mando enviaba un codigo de accion y un residual, pero el de accion era diferente en cada pulsasion llegando a haber hasta 4 diferentes…
      con las librerias NECIRrcv, no tenia problema, pero con IRremote si, use el mando del apple tv simulado desde el telefono movil y mano de santo

      Un saludo y muchas gracias crack 😉

  5. Yo tengo el problema del principio de Javier, pongo este código:

    Pero me da el problema de:
    Arduino:1.6.5 (Windows 7), Placa:”Arduino/Genuino Uno”

    C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‘TKD2’ was not declared in this scope
    int RECV_PIN = TKD2; // the pin the IR receiver is connected to
    ^
    Error de compilación

Escriba aquí su comentario