Introduction: Implementar Una Cerradura Con La XBee IO Pro
En este Instructable, veremos como se puede hacer una cerradura con la Xbee IO pro.
Se conectarán 4 botones a las entradas optoacopladas de la Xbee IO pro, estos son:
- 3 botones, los que se usarán para realizar la combinación deseada (cerradura). En este caso usaremos botones de color amarillo, azul y verde
- 1 botón para confirmar la finalización de la cerradura. Aquí usaremos el botón de color rojo.
Si la combinación es la correcta un relé se activará y se prenderá el LED verde, por el contrario, si la combinación es incorrecta se prenderá el LED rojo.
En este caso, se utilizará LEDs para simular el cierre o apertura de la cerradura electrónica.
Las cerraduras electrónicas funcionan parecido al relé. Normalmente están cerradas y con la secuencia adecuada cambia a Abierto.
Step 1: Materiales
1.- Botones (4)
2.- LEDs (2)
3.- Cables
4.- Una placa Xbee IO Pro
5.- Transformador 12 volt
6.- Cautín
7.- Estaño
Step 2: Conectar
Conectar los 4 botones a las entradas digitales optoacopladas frente a los relay. Los negativos juntos, como se ve en la foto (cable color blanco), y conectar cada positivo por separado a los 5V.
Los LEDs van conectadas con su sección negativa (corta) al negativo (GND), cada una por separada. Y su sección positiva (larga), debe ir acoplada a una resistencia de 390 Ohm, y esta debe ir conectada al puerto NO (Normalmente abierto) del relé.
Conectar un positivo de 3V al COM de cada relay.
__________________________________________
Para conectar una cerradura electrónica al relé, debemos conectar una batería externa a la cerradura, normalmente funcionan con 12V.
De la cerradura, emergen 2 cables, uno positivo y otro negativo.
El cable positivo debe ir conectado al puerto NO del relé, mientras que el negativo debe ir conectado a la misma polaridad de la batería.
De la batería, la sección positiva debe ir conectada al puerto COM del relé.
Step 3: Código En Arduino
String codigo = ""; //Variable que guardará el codigo
String clave = "ABC";
int soltaramarillo = 0; // Variables que cuando se suelta un boton
int soltarazul = 0;
int soltarverde = 0;
void setup() { // definicion de pines
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop() { //Variables que guardan el estado del boton
int botonverde = digitalRead(7);
int botonazul = digitalRead(6);
int botonamarillo = digitalRead(5);
int botonrojo = digitalRead(4); //Si se presiona el boton rojo comprobar si var codigo es igual a la var clave
if(botonrojo == 0){
if(codigo == clave){
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
delay(1000);
}
else{
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(1000);
}
codigo = "" //Vaciar la variable codigo para ingresar otra combinacion
}
//Si el boton esta presionado, apagar las dos LEDs y agregar a la variable codigo una A
if(botonamarillo == 0 && soltaramarillo == 0){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
codigo.concat("A");
//Cambiar la variable soltaramarillo a uno para que solo se agrege una A cuando se presiona el boton
soltaramarillo = 1;
delay(200); //Esperar 200ms para evitar ruido
}
//Cuando el boton se suelta cambiar la variable soltar amarillo a cero para que pueda volver a ingresar al primer if cuando se aprete de nuevo
else if(botonamarillo == 1){
soltaramarillo = 0;
}
//Si el boton esta presionado, apagar las dos leds y agregar a la variable codigo una B
if(botonazul == 0 && soltarazul == 0){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
codigo.concat("B");
//Cambiar la variable soltarazul a uno para que solo se agrege una A cuando se presiona el boton
soltarazul = 1;
delay(200); //Esperar 200ms para evitar ruido
}
//Cuando el boton se suelta cambiar la variable soltar azul a cero para que pueda volver a ingresar al primer if cuando se aprete de nuevo
else if(botonazul == 1){
soltarazul = 0;
}
//Si el boton esta presionado, apagar las dos leds y agregar a la variable codigo una C
if(botonverde == 0 && soltarverde == 0){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
codigo.concat("C");
//Cambiar la variable soltarverde a uno para que solo se agrege una A cuando se presiona el boton
soltarverde = 1;
delay(200); //Esperar 200ms para evitar ruido
}
//Cuando el boton se suelta cambiar la variable soltar verde a cero para que pueda volver a ingresar al primer if cuando se aprete de nuevo
else if(botonverde == 1){
soltarverde = 0;
}
}
_______________________________________________
Si se desea cambiar la secuencia, debe editar lo siguiente.
String clave = "ABC";
ABC representa la clave para abrir la cerradura (que en este caso es un LED)
Cambiar el ABC por la secuencia deseada, por ejemplo BAC / CAB /etc.
De esta forma, cambiará el código de ingreso.