in

Open Alarm: El sistema de alarma hogareña de NeoTeo (II)

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.

Aspecto de un teclado como el propuesto.

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.

Este es el sensor sugerido.

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!

Reportar

¿Qué te pareció?

Escrito por Ariel Palazzesi

13 Comments

Leave a Reply
  1. 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

  2. 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.

  3. 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!

  4. 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)

  5. 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

  6. 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

  7. 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.

  8. 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

  9. Hola Ariel, queria consultarte que paso con la ultima entrega de este maravilloso proyecto, ya que no a habido actividad reciente.

    Gracias
    Slds

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Móvil satelital Elektrobit: lo mejor de ambos mundos

ViPR para el iPhone