Seguimos con el diseño de nuestro sistema de alarma domiciliaria. En esta segunda entrega veremos de que forma podemos construir un teclado que nos permita controlar cada una de las funciones de la misma. También aprenderemos a utilizar un sensor infrarrojo para detectar movimiento.
El teclado
Probablemente el periférico de entrada mas utilizado en los dispositivos electrónicos sea el teclado. Es bastante difícil, a pesar de los avances en tecnologías como las pantallas táctiles o el reconocimiento de voz, encontrar un aparato electrónico que no posea una o más teclas. Y nuestra alarma no será una excepción.
Proporcionándole un teclado a este proyecto podremos implementar el uso de contraseñas para la activación y desactivación de la alarma, entre otras posibilidades. Las teclas estarán implementadas mediante pulsadores, que al ser accionados modificarán el estado de los pines del puerto B del microcontrolador.
Se trate de un modesto timbre que posee una sola tecla, o del más completo teclado de ordenador, el principio de funcionamiento es básicamente el mismo: al presionar un pulsador se cierra un circuito, circula una corriente a través de él, y el aparato realiza la acción prevista. La diferencia entre utilizar interruptores o pulsadores radica en que los primeros mantienen el estado de “abierto” o “cerrado” hasta que se los actúa nuevamente, mientras que los pulsadores (los normalmente abiertos) mantienen el estado de “cerrado” solamente mientras se los mantiene presionados. Como decíamos recién, los teclados comúnmente están creados a partir de pulsadores.
El teclado más sencillo que podemos construir contiene una sola tecla. Alguien podrá decir que algo tan simple no llega a la categoría de teclado, pero sin embargo nos va a servir para entender el funcionamiento interno de uno mas complejo. Este hipotético y sencillo teclado tiene solo dos estados posibles: El estado "A", con el pulsador abierto (correspondería a la tecla sin pulsar), y el estado "B", en el que la tecla está pulsada.
En el estado "A", la corriente de la batería no puede circular por el cable para llegar hasta la lámpara, dado que no puede saltar el espacio que hay dentro del interruptor abierto, por lo tanto la lámpara permanece apagada. Cuando el pulsador es presionado, este efectúa un puente en el circuito por cual la corriente puede cruzar y alcanzar la lámpara, y esta se enciende.
En un circuito asociado a un microcontrolador, los estados de la lámpara se corresponderían con el "0" y "1" binarios: la lámpara apagada equivaldría a "0" y encendida a un "1".
Varias teclas
Veamos como construir un teclado con varias teclas. Como vimos en notas anteriores, los puertos de un microcontrolador PIC en general disponen de un “ancho” de 8 bits, que mediante el byte de control pueden configurarse como entradas o salidas. Esto significa que si configuramos un puerto completo como entrada podríamos "leer" el estado de 8 interruptores a la vez.
En este caso, en el lugar de las lámparas del párrafo anterior tenemos conectadas al pulsador cada uno de los pines correspondientes puerto B de un PIC, como se ve en la figura 2. De esta manera, cada vez que se pulse una de las teclas, tendremos un “1” en el bit correspondiente. Este esquema funciona perfectamente, y es muy fácil de leer mediante un programa, simplemente debemos crear un bucle que lea el byte de datos, y si es distinto de cero analizar sus bits para ver cual/es de ellos están en "1" y así saber que pulsador/es están presionados.
Esta forma de construir un teclado tiene la desventaja de necesitar un número de conductores igual a la cantidad de pulsadores, lo que generalmente es poco práctico. Si nuestra alarma va a tener un teclado “de verdad”, necesitamos enfocar el problema de otra manera.
Multiplexación
Cuando el número de pulsadores empieza a aumentar, lo más conveniente es utilizar técnicas de multiplexado. Esto permite un uso más eficiente de los recursos disponibles, a costa de hacer ligeramente más complejos los circuitos y el software.
Básicamente, se trata de crear una matriz de dos dimensiones con conductores, y colocar en las intersecciones de estos los pulsadores (es más fácil de entender mirando el esquema de la figura 3). De esta manera, cuando pulsamos una tecla, estamos creando un puente en uno de los conductores correspondientes a las filas, y otro correspondiente a las columnas. Analizando un poco el esquema, vemos que para cada pulsador corresponde una sola configuración de fila-columna, por lo que es posible la identificación inequívoca del pulsador presionado.
De esta manera, y usando matrices cuadradas, es decir, misma cantidad de filas que de columnas (que es el caso optimo), podemos tener con "n" conductores (n/2)^2 pulsadores. Prácticamente todos los teclados con numero elevado de teclas, el de nuestra alarma incluido, utilizan un esquema de multiplexado similar a este.
La forma de leer un teclado de este tipo consiste en poner un "1" en una de las filas (o columnas) e ir leyendo las columnas (o filas) una a una. Si aparece alguna en "1" es que el pulsador correspondiente a esa fila y columna esta presionado.
El teclado de NeoTeo
Nuestro teclado necesita al menos 10 teclas, una para cada digito del 0 al 9. Esto nos permitiría utilizar cualquier número como contraseña. Podemos pensar en un teclado de 3 columnas y 4 filas (12 teclas), que además de las mencionadas incluya los símbolos “*” y “#”, o mejor aún en uno de 4 columnas y 4 filas (16 teclas), con una columna de “teclas especiales”. De ahora en más vamos a suponer que esa es nuestra elección, y que la disposición de las teclas será la que puede verse en la figura 4. Por supuesto, el lector puede diagramar su propio teclado a gusto.
Nos hemos tomado la libertad de dibujar una placa de circuito impreso que sirva para montar los pulsadores de un teclado de 4×4, que incluye un conector para vincularlo eléctricamente a la placa central propuesta en la entrega anterior de este tutorial.
El diseño, que puede verse en la figura 5, incluye los dígitos del 0 al 9, los símbolos “*” y “#”, una tecla para probar el funcionamiento de la sirena (“TEST”), una tecla de disparo instantáneo (“PANICO”), y dos teclas de uso general (“F1” y “F2”).
A continuación te mostramos como realizar un programa en BASIC que permite leer el teclado. Si tienes dudas sobre el significado de alguna de las instrucciones empleadas, puedes darle un repaso a nuestro tutorial sobre programación de microcontroladores.
‘———————————-
‘Alarma NeoTeo
‘Ejemplo lectura Teclado
‘———————————-
AllDigital ‘Todos los pines del puerto A como E/S.
TRISA = %11111111 ‘Puerto A como entradas
TRISB = %00001111 ‘Puerto B: 4 entradas, 4 salidas
‘Declaro las variables a utilizar
Dim tecla As Byte ‘Tecla presionada
tecla = 16 ’16 = no hay tecla presionada
‘Bucle principal
loop: ‘Leo el teclado Gosub leoteclado WaitMs 10 ‘Espero ‘Sigo con el resto del programa…
Goto loop ‘vuelvo a loop: para repetir indefinidamente.
End
leoteclado: tecla = 16 ’16 = no hay tecla presionada ‘Leo la primer columna PORTB = %10000000 If PORTB.3 = 1 Then tecla = 1 ‘Tecla "1" If PORTB.2 = 1 Then tecla = 4 ‘Tecla "4" If PORTB.1 = 1 Then tecla = 7 ‘Tecla "7" If PORTB.0 = 1 Then tecla = 10 ‘Tecla "*"
‘Leo la segunda columna PORTB = %01000000 If PORTB.3 = 1 Then tecla = 2 ‘Tecla "2" If PORTB.2 = 1 Then tecla = 5 ‘Tecla "5" If PORTB.1 = 1 Then tecla = 8 ‘Tecla "8" If PORTB.0 = 1 Then tecla = 0 ‘Tecla "0"
‘Leo la tercer columna PORTB = %00100000 If PORTB.3 = 1 Then tecla = 3 ‘Tecla "3" If PORTB.2 = 1 Then tecla = 6 ‘Tecla "6" If PORTB.1 = 1 Then tecla = 9 ‘Tecla "9" If PORTB.0 = 1 Then tecla = 11 ‘Tecla "#"
‘Leo la cuarta columna PORTB = %00010000 If PORTB.3 = 1 Then tecla = 12 ‘Tecla "TEST" If PORTB.2 = 1 Then tecla = 13 ‘Tecla "PANICO" If PORTB.1 = 1 Then tecla = 14 ‘Tecla "F1" If PORTB.0 = 1 Then tecla = 15 ‘Tecla "F2"
Return
La subrutina “leoteclado” carga en la variable “tecla” el valor correspondiente a la tecla presionada. Si “tecla” vale 16 significa que ningún pulsador ha sido presionado. En función del valor de esta variable se pueden ejecutar las acciones correspondientes.
El sensor infrarrojo
Parallax, la empresa fabricante del afamado BASIC Stamp, tiene en su catalogo un sensor infrarrojo que puede sernos de mucha utilidad en nuestro proyecto. Se trata del modelo PIR Sensor (#555-28027), que cuesta muy poco dinero y es sumamente simple de utilizar. Básicamente, se trata de una pequeña placa de circuito impreso que contiene al sensor propiamente dicho. Es capaz de detectar cambios en los niveles de emisión infrarroja de los objetos que tiene situados delante, hasta una distancia de unos 6 metros.
El corazón de este sensor es un dispositivo que contiene un material cristalino que es capaz de generar una pequeña corriente en función de la temperatura ambiente. Una lente, situada delante del sensor propiamente dicho e incluida en el modulo, permite ampliar el rango de operación del dispositivo.
La placa que aloja el sensor dispone de tres pines, dos de ellos dedicados a la alimentación y un tercero que provee una señal digital que puede ser leída directamente por el microcontrolador. Podemos alimentarlo directamente con 5V, y a la hora de diseñar la fuente de alimentación de nuestro proyecto debemos tener en cuenta que la corriente necesaria para que funcione sin problemas ronda los 100 microamperes.
Dispone de un jumper que determina el modo de funcionamiento. En la posición 1 (uniendo los pines “H” y el central), la salida del sensor se mantiene en estado alto de forma continua cuando se detectan objetos en movimiento de forma repetida. En la posición 2 (uniendo el pin central con el “L”), la salida pasa de estado alto a bajo con cada disparo. En ambos modos de operación, la salida permanece en estado bajo mientras no haya actividad frente al sensor.
Nuestro sistema de alarma prevee la conexión de solo uno de estos sensores. Pero como hemos dicho, la idea es que cada uno la adecue a sus necesidades, por lo que puedes agregar alguno(s) más aprovechando los pines de entrada/salida del microcontrolador que queden disponibles.
La rutina encargada de leer el sensor no podría ser más simple. El siguiente listado muestra como debemos realizar esta parte del programa, usando el BASIC del PIC SIMULATOR IDE:
‘———————————-
‘Alarma NeoTeo
‘Ejemplo lectura sensor infrarrojo
‘———————————-
AllDigital ‘Todos los pines del puerto A como E/S.
TRISA = %11111111 ‘Puerto A como entradas
TRISB = %00000000 ‘Puerto B como salidas
Symbol pir = PORTA.0 ‘Sensor en A0
Symbol led = PORTB.0 ‘LED en B0
‘Bucle principal
loop: led = pir ‘Modifico estado del LED.
Goto loop
End
En la próxima entrega de esta serie de tutoriales veremos como integrar todo esto, y como sensar el estado de los demás “periféricos” que hemos pensado para nuestro sistema. ¡No te lo pierdas!
Saludos
Esta pagina esta super interesante, me gusta leer todo lo que envuelve los avances tecnologico y tambien aprovechar las opciones de comprar equipos modernos y construir algunas ideas electronicas como proyectos personales.
Muchas gracias por permitirme comunicarme con ustedes
Atte
Elvis
hola, me gustaria saber como implementar un sistema de alarma hogareño pero unido a un computador, es decir que si se abre una ventana o puerta este me diga cual fue la que se abrio?espero pronta respuesta.
Hola Yenni!
Segui este tutorial, y el de Visual Basic. Entre los dos podras hacer eso, y mucho mas!
Saludos!
QUE TAL ARIEL MEGUSTO TU PROYECTO LO VEO MUY COMPLETO YO QUISIERA HACER UNO MUCHO MAS SENCILLO NO SE SI ME PODRIAS APOYAR. NECESITO REALIZAR UNA ALARMA CON UN SOLO SENSOR O INTERRUPTOR DE LIMITE Y QUIERO USAR UN PIC 16F84A. EL PROBLEMA ES QUE NO SE CUAL ES TODO EL MATERIAL PARA HACERLO NOSE SI ME PODRIAS AYUDAR CON ESO Y EL DIAGRAMA D CONEXION GRACIAS
Hola Terror254!
El proyecto que estamos encarando en NeoTeo es "generico", es decir, te brinda las bases necesarias para que puedas construir una alarma con las caracteristicas que necesitas. Si repasas los capitulos disponibles, verás que es muy facil "reducirla" a lo que necesitas.
Un abrazo!
Muy buen trabajo los felicito por que son estos proyectos basicos que nuestros jovenes se interesen por la electronica, continuen asi es muy interezante 100% click (aplauzos electronicos)
hola ariel me gusto super tu proyecto de alarma es por eso que hoy te pido que por favor me regales una serie mas completa de tutoriales de programacion de microcontroladores y por cualquier cosa este es mi email maxwell154@hotmail.com ESPERO ME DES RESPUESTA PRONTA Y ÑPOSITIVA MILES GRACIAS
hola, muchas gracias por estos datos muy importantes, pero kiero saber la parte final, osea ya conecté todo, pero cuando lo enchufé a la corriente electrica, pero se apagó todo en mi casa!!!!!!!!!!!!!!!!!!!!!!! kisiera saberr la razon o el porké?
agradecidamente.
LESTTER RALH
Ingresado al sitio Neoteo y me parese un lugar muy chevere para intercambiar opiniones e ideas y por favor quisiera integrarme al grupo de trabajo de Uds.
Hola estoy interesado en el proyecto de open-alarm, pero solo he visto la parte 1 a la tres y no hay mas me podrias ayudar, de antemano muchas gracias y excelente explicacion ante todo…. saludos
Hola Ariel, queria consultarte que paso con la ultima entrega de este maravilloso proyecto, ya que no a habido actividad reciente.
Gracias
Slds
Hola, disculpen el atraso pero este material está muy bueno. Donde donde acceder a la tercer entrega? Gracias!
Muy interesante el proyecto, alguien sabe si estan disponibles el resto de las entregas? Saludos y Gracias.