Introduction: Conexion De Sensor De Alarma Para Ventana O Puerta Con Arduino

En este instructable explico de forma sencilla como conectar un sensor magnético a arduino de manera que cuando este se dispare, Arduino encienda un LED.

Este es el primer paso que he dado para construirme una alarma con diferentes sensores basada en Arduino, y para ello he utilizado el programa de ejemplo que incluye el compilador de Arduino llamado "Button" (escrito por Tom Igoe)

Materiales:

- Sensor magnético de alarma para puerta o ventana (comprado en los chinos del barrio, en Internet los venden en Dealextreme).
- Arduino UNO (o equivalente).
- Resistencia de 10K ohm (yo no tenía y he usado un potenciómetro del mismo valor).
- Un LED.
- Placa de prototipado.
- Cable de un solo hilo rígido. 
- Destornillador para desmontar el sensor

(y por supuesto, el software de Arduino)

Step 1: Nuestro Objetivo Y Un Poco De Teoria

Objetivo

Lo que quiero es que el Arduino vea el disparo de este sensor y actúe sobre un LED. Este es el primer paso de lo que luego puede ser que Arduino ponga un tweet o nos avise por el teléfono móvil de una intrusión. 

¿Qué estamos usando?

Lo que tenemos entre manos es un aparatito que se emplea en puerta y ventanas para detectar intrusos. Consta de dos partes una va unida al marco de la puerta o ventana y la otra a la hoja que se mueve. Si ambas se separan el dispositivo se pone a pitar. 

La parte más grande lleva tres baterías de botón de 1'5V conectadas en serie (4'5V) que alimentan un circuito con un sensor consistente en un interruptor de lengüeta normalmente cerrado. A este circuito se une un piezo-altavoz.

La parte otra pequeña es simplemente un imán permanente encapsulado en un plástico. 

¿Cómo funciona?

Wikipedia: Interruptor de lengüeta

El interruptor de lengüeta reacciona ante la presencia de un campo magnético. En el caso que nos ocupa, permanece normalmente cerrado y cuando se le acerca un campo magnético, se abre. Por tanto mientras ambas partes permanecen juntas, el interruptor queda abierto por culpa del imán y nada sucede, pero si se abre la puerta o ventana, ambas partes se separan, el interruptor se cierra al perder el campo magnético y conecta el piezo-altavoz que se pone a pitar muy alto de forma intermitente, avisando de la intrusión (en el circuito hay un componente que no identifico cuya función me imagino que es hacer oscilar la señal para producir el pitido intermitente del altavoz)




Step 2: Montaje

El montaje es fácil, se basa en el ejemplo que trae Arduino sobre el uso de un botón, solo que en este caso, nuestro botón será el interruptor de lengüeta. 

En el diagrama hay dos placas board, la superior representa de forma minimalista el sensor, con las baterías, el piezo altavoz y el interruptor de lengüeta. La inferior representa nuestra placa de trabajo (la amarilla en el resto de fotos). 

Se trata de sacar dos cables de + y - de las pilas de botón y puentearlos con una resistencia de 10K. Del nodo negativo de esta resistencia y las pilas sacaremos un cable al GND del Arduino (Así Arduino interpreta ese valor como 0)

Por otra parte hemos de soldar un cable (de color amarillo en el diagrama) al extremo del interruptor de lengüeta que no va unido al negativo de las baterías y llevarlo hasta el pin 2 de Arduino.

No hay que olvidarse de colorcar un LED entre el pin 13 y GND en arduino, respetando la polaridad (la patita MÁS larga a +, o sea al pin 13)




Step 3: Programa

/*
  Button

 Turns on and off a light emitting diode(LED) connected to digital
pin 13, when pressing a pushbutton attached to pin 7.


The circuit:
* LED attached from pin 13 to ground
* pushbutton attached to pin 2 from +5V
* 10K resistor attached to pin 2 from ground

* Note: on most Arduinos there is already an LED on the board
attached to pin 13.


created 2005
by DojoDave <http://www.0j0.org>
modified 17 Jun 2009
by Tom Igoe

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/Button
*/

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead( buttonPin);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}

Step 4: Video De Funcionamiento

Y aquí os muestro el resultado, espero que os haya gustado, si tenéis cualquier duda o aportación os invito a usar los comentarios. Ha sido un placer hacer este instructable y que lo leáis ;-) ¡Gracias!