Control de iluminación con arduino y un iPad

Gracias a las herramientas de las que disponemos para el iPad como es Touchosc, un potente hardware libre como es arduino y una red wifi, podemos controlar la iluminación con solo tocar la pantalla del iPad.
Es solo una demo con unos diodos Led de colores, pero se prodría adaptar sin problemas a una red de 220v para controlar la iluminación de casa.

Más información después del salto…

Para este pequeño proyecto he usado las siguientes herramientas.

Una Placa Arduino

6 Diodos LED de colores

6 Resistencias de 1K

Un ipad con TouchOSC instalado

Processing para PC o MAC (depende de lo que uses)

Lo primero es conectar la placa Arduino a los 6 Led siguiendo el siguiente esquema.

Captura de pantalla 2011-05-10 a las 18.37.25

Después cargaremos el siguiente código en La placa Arduino.

int message = 0;
int ledrojo = 2;
int  ledverde = 3;
int lednaranja = 4;
int ledrojo2 = 6;
int ledverde2 = 7;
int lednaranja2 =8;

void setup()
{  
  Serial.begin(9600);
  pinMode (ledrojo,OUTPUT);
  pinMode (ledverde,OUTPUT);
  pinMode (lednaranja,OUTPUT);
  pinMode (ledrojo2,OUTPUT);
  pinMode (ledverde2,OUTPUT);
  pinMode (lednaranja2,OUTPUT);
}

void loop()
{
if (Serial.available() > 0)
  {
     message = Serial.read();    

//***********  Codigo de los pulsadores  ****************

     if (message == '1')
       {  
         digitalWrite (ledrojo,HIGH);
         delay (50);
         digitalWrite (ledrojo,LOW);
       }

      if (message == '2')
       {  
         digitalWrite (ledverde,HIGH);
         delay (50);
         digitalWrite (ledverde,LOW);
       }

      if (message == '3')
       {  
        digitalWrite (lednaranja,HIGH);
        delay (50);
        digitalWrite (lednaranja,LOW);
       }

//***********  Codigo de los interruptores *****************

      if (message == 'A')
       {  
         digitalWrite (ledrojo2,HIGH);
       }
      if (message == 'a')
       {
         digitalWrite (ledrojo2,LOW);
       }
      if (message == 'S')
       {  
         digitalWrite (ledverde2,HIGH);
       }
      if (message =='s')
       {
         digitalWrite (ledverde2,LOW);
       }     
      if (message == 'D')
       {  
        digitalWrite (lednaranja2,HIGH);
       }
      if (message == 'd')
       {
        digitalWrite (lednaranja2,LOW);
       }
   } 
}
Una vez cargado este código, abrimos processing y copiamos el siguiente código.
import oscP5.*;
import netP5.*;
import processing.serial.*;
OscP5 oscP5;
Serial arduinoPort;       

float dato;
int dato1;
int dato2;
int dato3;
int dato4;
int dato5;
int dato6;
int dato7;
int dato8;

String salida= "";

void setup()
{
  oscP5 = new OscP5(this,8000);
  arduinoPort = new Serial(this, Serial.list()[0], 9600);
}

void oscEvent(OscMessage theOscMessage)
{
   String addr = theOscMessage.addrPattern();
   float  val  = theOscMessage.get(0).floatValue(); 

 if(addr.equals("/1/push1"))
 {
   dato = val; 
   dato1 = int (dato);
 }

 if(addr.equals("/1/push2"))
 {
   dato = val; 
   dato2 = int (dato);
 }

if(addr.equals("/1/push3"))
 {
  dato = val; 
  dato3 = int (dato);
 }   

if(addr.equals("/1/toggle1"))
{
  dato = val; 
  dato4 = int (dato);
 } 

if(addr.equals("/1/toggle2"))
{
  dato = val; 
  dato5 = int (dato);
 } 

if(addr.equals("/1/toggle3"))
{
  dato = val; 
  dato6 = int (dato);
}

if(addr.equals("/1/fader1"))
{
  dato = val; 
  dato7 = int (dato);
} 

if(addr.equals("/1/fader2"))
{
  dato = val; 
  dato8 = int (dato);
}                                    

}

void draw()
{

if (dato1==1)
{
  arduinoPort.write("1");
}
else
{
  arduinoPort.write("0");
}
if (dato2==1)
{
  arduinoPort.write("2");
}
else
{
  arduinoPort.write("0");
}
if (dato3==1)
{
  arduinoPort.write("3");
}
else
{
 arduinoPort.write("0");
}

if (dato4==1)
{
  arduinoPort.write("A");
}
else
{
 arduinoPort.write("a");
}

if (dato5==1)
{
  arduinoPort.write("S");
}
else
{
 arduinoPort.write("s");
} 

if (dato6==1)
{
  arduinoPort.write("D");
}
else
{
 arduinoPort.write("d");
}

}

Destacar que para que processing funcione correctamente hay que instalar la biblioteca de Touchosc. Descargala desde aqui
También tenemos que instalar TouchOSC en nuestro iDispositivo para eso tendréis que visitar la AppStore o en su defecto Installous.

Una vez descargado, tendréis que visitar la página oficial del programa para poder descargar el software de configuración de botones, y poder mandarlos al iphone/ipad.

El layout de la botonera, lo podéis descargar desde AQUI

Solo tenéis que configurar el programa en la misma red wifi que el pc , y el host será el pc donde este ejecutándose processing.

PTM_39_1000000623

Pinchamos en options ponemos de host la ip del pc donde esta instalado processing

PTM_33_1000000624

Abrir el sotware de pc para la gestión de botones, seleccionamos uno de los botones descargados y pichamos en “Sync”

Captura de pantalla 2011-05-10 a las 21.19.28

Volvemos atrás y en la sección Layout pinchamos en Add

PTM_34_1000000625

Encontrará el pc, lo selecionamos .

PTM_35_1000000626

Descargará la pantalla a nuestro dispositvo.

PTM_36_1000000627

Lo seleccionamos en la lista.

PTM_37_1000000628

Ahora ya tenemos nuestros botones,

PTM_38_1000000629

Ejecutamos el software en processing dando al play

Anuncios

20 Respuestas a “Control de iluminación con arduino y un iPad

  1. Pues estoy trabando en añadir un pan/tilt para una webcam y poder moverla para añadir un servicio mas a este pequeño sistema domótico.

  2. Disculpa me intereso tu proyecto y de echo ya lo estoy haciendo simplemente me quedo atorado, en la parte de conectar el touchosc de el ipad a la computadora simplemente no me aparece el host, estoy usando una hp mini, con windows xp, ya tengo instalado arduino(el programa del arduino), prossesing(su programa y la biblioteca oscp5), tambien tengo el editor touchosc, como puedo conectar el ipad a la computadora, puede ser porque es windows y no mac? porfavor me urge es para mi proyecto final de la escuela, saludos gracias espero tu respuesta

      • Si ya de echo, conecte el ipad a otra computadora y esta si encuentra y descarga los botones pero ahora me falla el programa de prossesing, no es la biblioteca porque ya le instale la oscp5 y pues en la primera computadora se me hace que falla porque ya a, encontrado dos computadoras, en el prossesing sale algo de que no conecta con arduino

  3. Al iniciar processing, te sale una lista de los puertos disponibles , el primero es el 0,…
    En la línea de código ,
    Serial.list() [0] (9600);
    Sustituye el 0 por el número del puerto en el que esté tu arduino…

    • Cual es el puerto? 😮 el otra ves lo conecte y me espere un rato y me salio, pero lo intente de hacer de nuevo y aplasto los botones y no encienden los leds? Que tengo que hacer para que enciendan? Me podrias dejar tu whatsapp para estar al contacto esque es mi proyecto final y necesito que funcione

      • Pues no tengo, así que mandamé un mail desde la sección “contacto” y por mail podremos hacerlo…
        de paso mandare unas capturas de lo que te sale al iniciar processing…

  4. hola no se como bajar el programa para la computadora. me podrias mandar el link para descargarlo, el que sale en las imagenes del proceso que dice touchosc editor- 6 botones. ya tengo todo conectado e instalado 😦 y me urgeeeeeeeeee muchas gracias !!!

  5. Hola amigo como estas?? Tienes muy buenos aportes!!! Estoy comenzando con esto de arduino, yo compre en arduino UNO, la programación que haz utilizado para estos proyectos son compatibles con el arduino UNO?? Gracias

  6. Hola que tal, excelente proyecto, oye tengo un problema, ya están los 6 botones en el iPad, ya cargue el archivo a arduino, igual para processing no marca problemas, incluso processing dice que ya tiene conexión con el arduino (el arduino que utilizo es el mega y lo estoy conectando igual a 9600) pero no realiza ninguna acción en los leds, incluí el texto Serial.print(“1”);
    Justo así:

    /*********** Codigo de los interruptores *****************

    if (message == ‘A’)
    {
    digitalWrite (ledrojo2,HIGH);
    Serial.println(“1”); // <<<<<<<======
    }
    if (message == 'a')
    {
    digitalWrite (ledrojo2,LOW);
    }

    Esto con la intención de ver en el monitor serial de arduino cuando se esta enviando algo al activar el interruptor rojo. pero aun así no aparece nada, creo que el problema es que si hay conexión entre precessing y arduino pero creo que el iPad se conecta y desconecta, alguna vez le sucedió? o hay alguna otra forma de conectarme?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s