Control de iluminación con Arduino desde Android
Con motivo de la Jornada de Puertas Abiertas del IES MARIO ROSO DE LUNA, de Logrosán (CÁCERES), preparamos algunas prácticas para la visita de los alumnos del IESO LAS VILLUERCAS, de la localidad próxima de Guadalupe. También asistieron otros alumnos y profesores de nuestro propio centro.
Uno de los proyectos que mostramos a nuestros compañeros fue un sistema de control de iluminación de vivienda, tanto a través de un móvil Android (vía Bluetooth) como mediante pulsadores instalados en cada una de las estancias de la vivienda.
Antes de nada, realizamos el diseño del cableado necesario, mediante TinyCad.
A continuación, hicimos un panel con los tres pulsadores y las tres lámparas que simulaban las tres habitaciones, primero replanteamos las canalizaciones y registros y, a continuación, cableamos y montamos los mecanismos.
Por otro lado, hicimos el prototipo con Arduino, una placa de relés, un módulo Bluetooth HC-05 y unos pulsadores para protoboard.
Probamos primero el funcionamiento con los pulsadores y, seguidamente, diseñamos una aplicación para Android con MIT App Inventor 2, con la interfaz necesaria para que el usuario pueda manejar cada uno de los puntos de luz de la vivienda y los controles internos para enviar las señales adecuadas al módulo Bluetooth conectado a Arduino.
Aquí tenéis el vídeo final del proyecto y su funcionamiento. Esperamos que os guste.
Y también os dejamos el código de programación de la placa Arduino UNO.
int rele1 = 2; // pin de conexión del relé a la placa arduino
int rele2 = 3;
int rele3 = 4;
int pulsador1 = 8; // pin de conexión del pulsador a la placa arduino
int pulsador2 = 9;
int pulsador3 = 10;
int lampara1; // variables de estado de las lámparas: 0 = apagada; 1 = encendida
int lampara2;
int lampara3;
int estadobt; // valor recibido por bluetooth desde el móvil
void setup() {
// configuramos los pines de la placa arduino: relés como salida y pulsadores como entrada
pinMode (rele1, OUTPUT);
pinMode (rele2, OUTPUT);
pinMode (rele3, OUTPUT);
pinMode (pulsador1, INPUT);
pinMode (pulsador2, INPUT);
pinMode (pulsador3, INPUT);
// configuramos el puerto serie (para el bluetooth) a 9600bps
Serial.begin (9600);
//apagamos las lámparas (conectadas al NC de los relés)
digitalWrite(rele1, LOW);
digitalWrite(rele2, LOW);
digitalWrite(rele1, LOW);
//inicializamos las variables de estado de las lámparas (todas apgadas)
lampara1 = 0;
lampara2 = 0;
lampara3 = 0;
}
void loop() {
//comprobamos si hay algún dato en el puerto serie (del bluetooth) y se lo asignamos a estadobt
if(Serial.available() > 0)
{
estadobt = Serial.read();
}
// comprueba si es un 1 y, si es así, enciende la lámpara1
if (estadobt == '1')
{
digitalWrite(rele1, HIGH);
lampara1 = 1;
estadobt = 0;
}
else if (estadobt == '2') // si es un 2, apaga lámpara1
{
digitalWrite(rele1, LOW);
lampara1 = 0;
estadobt = 0;
}
delay(100); //pausa de 100 ms
if (estadobt == '3') //si es un 3, enciende lámpara2
{
digitalWrite(rele2, HIGH);
lampara2 = 1;
estadobt = 0;
}
else if (estadobt == '4')
{
digitalWrite(rele2, LOW); //si es un 4, apaga lámpara2
lampara2 = 0;
estadobt = 0;
}
delay(100); // pausa de 100ms
if (estadobt == '5') //si es un 5, enciende lámpara3
{
digitalWrite(rele3, HIGH); // Turn on powertwo by setting the pin to HIGH //
lampara3 = 1;
estadobt = 0;
}
else if (estadobt == '6') //si es un 6, apaga láapara3
{
digitalWrite(rele3, LOW);
lampara3 = 0;
estadobt = 0;
}
delay(100);
if (digitalRead(pulsador1) == HIGH) // si se pulsa el pulsador 1
{
if (lampara1==0) // si la lampara1 está apagada
{
digitalWrite(rele1, HIGH); // la enciende
lampara1 = 1;
estadobt = 0;
}
else //si está encendida
{
digitalWrite(rele1, LOW); // la apaga
lampara1 = 0;
estadobt = 0;
}
}
delay (50);
if (digitalRead(pulsador2) == HIGH) // si se pulsa el pulsador 2
{
if (lampara2==0) // si la lampara2 está apagada
{
digitalWrite(rele2, HIGH); // la enciende
lampara2 = 1;
estadobt = 0;
}
else //si está encendida
{
digitalWrite(rele2, LOW); // la apaga
lampara2 = 0;
estadobt = 0;
}
}
delay (50);
if (digitalRead(pulsador3) == HIGH) // si se pulsa el pulsador 3
{
if (lampara3==0) // si la lampara3 está apagada
{
digitalWrite(rele3, HIGH); // la enciende
lampara3 = 1;
estadobt = 0;
}
else //si está encendida
{
digitalWrite(rele3, LOW); // la apaga
lampara3 = 0;
estadobt = 0;
}
}
delay (50);
}
Uno de los proyectos que mostramos a nuestros compañeros fue un sistema de control de iluminación de vivienda, tanto a través de un móvil Android (vía Bluetooth) como mediante pulsadores instalados en cada una de las estancias de la vivienda.
Antes de nada, realizamos el diseño del cableado necesario, mediante TinyCad.
A continuación, hicimos un panel con los tres pulsadores y las tres lámparas que simulaban las tres habitaciones, primero replanteamos las canalizaciones y registros y, a continuación, cableamos y montamos los mecanismos.
Por otro lado, hicimos el prototipo con Arduino, una placa de relés, un módulo Bluetooth HC-05 y unos pulsadores para protoboard.
Probamos primero el funcionamiento con los pulsadores y, seguidamente, diseñamos una aplicación para Android con MIT App Inventor 2, con la interfaz necesaria para que el usuario pueda manejar cada uno de los puntos de luz de la vivienda y los controles internos para enviar las señales adecuadas al módulo Bluetooth conectado a Arduino.
Aquí tenéis el vídeo final del proyecto y su funcionamiento. Esperamos que os guste.
Y también os dejamos el código de programación de la placa Arduino UNO.
int rele1 = 2; // pin de conexión del relé a la placa arduino
int rele2 = 3;
int rele3 = 4;
int pulsador1 = 8; // pin de conexión del pulsador a la placa arduino
int pulsador2 = 9;
int pulsador3 = 10;
int lampara1; // variables de estado de las lámparas: 0 = apagada; 1 = encendida
int lampara2;
int lampara3;
int estadobt; // valor recibido por bluetooth desde el móvil
void setup() {
// configuramos los pines de la placa arduino: relés como salida y pulsadores como entrada
pinMode (rele1, OUTPUT);
pinMode (rele2, OUTPUT);
pinMode (rele3, OUTPUT);
pinMode (pulsador1, INPUT);
pinMode (pulsador2, INPUT);
pinMode (pulsador3, INPUT);
// configuramos el puerto serie (para el bluetooth) a 9600bps
Serial.begin (9600);
//apagamos las lámparas (conectadas al NC de los relés)
digitalWrite(rele1, LOW);
digitalWrite(rele2, LOW);
digitalWrite(rele1, LOW);
//inicializamos las variables de estado de las lámparas (todas apgadas)
lampara1 = 0;
lampara2 = 0;
lampara3 = 0;
}
void loop() {
//comprobamos si hay algún dato en el puerto serie (del bluetooth) y se lo asignamos a estadobt
if(Serial.available() > 0)
{
estadobt = Serial.read();
}
// comprueba si es un 1 y, si es así, enciende la lámpara1
if (estadobt == '1')
{
digitalWrite(rele1, HIGH);
lampara1 = 1;
estadobt = 0;
}
else if (estadobt == '2') // si es un 2, apaga lámpara1
{
digitalWrite(rele1, LOW);
lampara1 = 0;
estadobt = 0;
}
delay(100); //pausa de 100 ms
if (estadobt == '3') //si es un 3, enciende lámpara2
{
digitalWrite(rele2, HIGH);
lampara2 = 1;
estadobt = 0;
}
else if (estadobt == '4')
{
digitalWrite(rele2, LOW); //si es un 4, apaga lámpara2
lampara2 = 0;
estadobt = 0;
}
delay(100); // pausa de 100ms
if (estadobt == '5') //si es un 5, enciende lámpara3
{
digitalWrite(rele3, HIGH); // Turn on powertwo by setting the pin to HIGH //
lampara3 = 1;
estadobt = 0;
}
else if (estadobt == '6') //si es un 6, apaga láapara3
{
digitalWrite(rele3, LOW);
lampara3 = 0;
estadobt = 0;
}
delay(100);
if (digitalRead(pulsador1) == HIGH) // si se pulsa el pulsador 1
{
if (lampara1==0) // si la lampara1 está apagada
{
digitalWrite(rele1, HIGH); // la enciende
lampara1 = 1;
estadobt = 0;
}
else //si está encendida
{
digitalWrite(rele1, LOW); // la apaga
lampara1 = 0;
estadobt = 0;
}
}
delay (50);
if (digitalRead(pulsador2) == HIGH) // si se pulsa el pulsador 2
{
if (lampara2==0) // si la lampara2 está apagada
{
digitalWrite(rele2, HIGH); // la enciende
lampara2 = 1;
estadobt = 0;
}
else //si está encendida
{
digitalWrite(rele2, LOW); // la apaga
lampara2 = 0;
estadobt = 0;
}
}
delay (50);
if (digitalRead(pulsador3) == HIGH) // si se pulsa el pulsador 3
{
if (lampara3==0) // si la lampara3 está apagada
{
digitalWrite(rele3, HIGH); // la enciende
lampara3 = 1;
estadobt = 0;
}
else //si está encendida
{
digitalWrite(rele3, LOW); // la apaga
lampara3 = 0;
estadobt = 0;
}
}
delay (50);
}
Comentarios
Publicar un comentario