ASESOR: Gonzalo lsacc Duchen Sanchez AUTORES DEL PROYECTO: Ríeardo Eonzález Carrillo Y Ricardo Alejandro Solís Ramírez I C- 3 UNIVERSIDAD AUTONOMA METROPOLITANA Casa abierta al IZTAPALAPA tiempo DEDICATORIA Dedico este trabajo a mis padres Luis y Carlota, así como a mis hermanos Octavio, Mary, Angélica, Yolanda y Carlos. Hago un reconocimiento a mis padrinos Jorge y Juan por su solidaridad. Ricardo Alejandro Solís Ramírez. 4 AGRADECIMIENTO. Gracias. Ricardo Gorizález Carrillo. 5 íNDlCE INTRODUCCIÓN ..................................................... 8 CAPíTULO 1. HARDWARE ............................. 9 1.1 CONTROL DE PERIFÉRICOS DE LA PC ..... 9 1.2 TARJETA CONTROLADORA 1.2.1 EL CIRCUITO INTEGRADO 8279 .......... ................................. ................................. CIRCUITOS INTEGRADOS ANEXOS .......................... 12 12 1.2.2 EL CIRCUITO INTEGRADO 8255 16 1.2.3 17 I.3 SISTEMA DE COMUNICACI~N TELEF~NICA ............................................. 1.3.1 LA LíNEA TELEFÓNICA ................................................. 1.3.2 DETECTOR DE CADENCIA 1.3.3 CONTROL DEL.TELÉFONO .......................................... ......................................... 19 19 22 23 1.4 TECLADO. PUERTA. LUCES Y DETECTORES 23 DE HUMO ................................................. 6 CAPíTULO 2. SOFTWARE ............................ 2.1 ASPECTOS GENERALES DEL PROGRAMA .............................................. 2.2 MANEJO DE LA TARJETA ......................... 2.3 ALMACENAMIENTO DE INFORMACIÓN CAPíTULO 3. INSTALACIÓN ........................ 3.1 INSTALACIÓN DE SOFTWARE Y TARJETA .................................................... 3.2 INSTALACIÓN DE PERIFÉRICOS 25 26 .....29 45 45 ................46 3.3 RECOMENDACIONES ................................. BIBLIOGRAFíA .................................................... 7 25 48 49 Debido a la necesidad de custodiar lugares donde se encuentran artículos de valor y a la preocupación de poder obtener mayor provecho de la tecnología que está a nuestro alcance ( como lo son las PC's, teléfonos, etc.), se ha desarrollado un proyecto que contiene un sistema de vigilancia constante 'y un registro de personal de un lugar de interés. Para poder llevar a cabo este proyecto, se ha utilizado a la PC como control principal, de tal forma que dirija todo el sistema de seguridad. Dicho sistema tiene entre sus principales funciones el de detectar si alguna persona esta fotzando las entradas al lugar con vigilancia, realizando si esto sucede, llamadas con números telefónicos que han sido escogidos previamente. Otra función que se tiene, es el almacenamiento de las claves numéricas de los usuarios junto con la honi y fecha de acceso: esto se realiza cuando es tecleada la clave correspondiente y tiene como fin un mejor control del personal que tiene acceso al lugar protegido. Para complementar la seguridad se han colocado detectores de humo y un encendido automático de luces durante un tiempo específico en el transcurso de la noche, que dará una mejor visibilidad de la región bajo vigilancia. Todas estas funciones se explicarán mas ampliamente en los capítulos 1 y 2. El proyecto es bastante completo, ya que abarca electrónica analógica , electrónica digital y programación. La electrónica analógica se presenta al hacer uso de la linea telefónica, la cual contiene una señal senoidal con la que podemos saber si hay línea, si se esta llamando o si esta ocupado. La electrónica digital la encontramos en la información que tenemos de la señal digital obtenida a partir de la señal analógica, así como en el manejo del teclado, en los detectores de humo y en el encendido de luces que se controlan mediante la ranura de expansión de la computadora. Con respecto a la programación podemos decir que controla todo el hardware y se hace presente en el funcionamiento del sistema. 8 CAP~TULO I HARDWARE 1.1 CONTROL DE PERIFÉRICOS DE LA PC El control de periféricos mediante una PC se lleva a cabo con una tarjeta controladora de condiciones específicas, la cual está comunicada directamente con el microprocesador de la computadora usando una ranura de expansión la cual contiene 20 líneas de direccionamiento, un bus de datos de ocho bits que es bidireccional, seis niveles de interrupción, tres canales de acceso directo a memoria con lineas de control de US,líneas de acceso a memoria de lectura o escritura, conexiones al reloj y a circuitos de temporarización. Dentro de las líneas de control tenemos incluidos los voltajes de +5 Vdc, +12Vdc, -12Vdc y tierra. Todas estas líneas hacen un total de 62 pins en la ranura de expansión. Para el desarrollo de nuestro proyecto se utilizan 32 líneas de conexión de las 62 existententes. A continuación daremos todas las lineas usadas y una explicación de su funcionamiento. A2 a A9 Estas lineas los datos, los cuales se toman contienen bidereccionalmente para comunicar a la PC con la tarjeta. A2 corresponde a D7 que es el bit mas significativo y A9 corresponde a DO que es el bit menos significativo. 9 A20 a A31 Corresponden a 12 de las 20 líneas de dirreccionamiento. Donde A31 es la linea de direccionamiento A 0 y es el bit menos significativo y A.20, bit más significativo, es la línea de direccionamiento A l l la cual se deja sin conectar. Aquí es importante mencionar clue los pins A31 (AO), A30 (Al) y A29 (A2), son utilizados para habilitar a los circuitos integrados 8279 y 8255. Las demás lineas son utilizadas para direccionar los puertos libres que se asignan a la tarjeta. Estos puertos van de 300H al 305H. A l 0 - US CH RDY Esta linea nos iindica cuando esta en alto, que el canal de US esta listo. Dicha terminal se encuentra normalmente en alto y es puesta en bajo por la memoria o dispositivos de E/S para poder conectar dispositivos mas lentos que el sistema. El dispositivo debe llevar inmediatamente la linea a bajo cuando exista una dirección válida y se haya detectado un comando de lectura o escritura. La línea no debe permanecer en bajo durante mas de diez ciclos de reloj. A l 1 - AEN Es la línea de dirreccionamiento que habilita el uso del canal de U S por el procesador y otros dispositivos, mientras el DMA ocupa su lugar. B1, BIOI 631 - GND B2 - RESET B5, 629 - (+SVdc) 67 - (-12VdC) 69 - (+ 12Vdc) 10 B13 - IOW Es un comando de escritura que habilita a un dispositivo de E/S para que lea un dato del bus de datos. Se activa en Bajo. Puede ser manejado por el pmcesador o el controlador DMA. B14 - IOR E/S que intenta transferir un dato al bus de datos. Se activa en bajo. Puede ser manejado por elprocesador o el controlador DMA. Esun comando de lectura para un dispositivo de B20 - CLK La ranura de expansión y las lineas utilizadas se muestran en la figura 1 I 11 j ~-I t- mr - l O C I D b ~ I n 9 W N - l O - l N . n.I 4 N m ~ a N a M~ a e in ~a ~ UI ta r aID am n aM aM~ aN aN ~ N a N a N a N a aN aN aN aN arl m 4 UI n I V I m 1 a I ! 1.2 TARJETA CONTROLADORA Esta tarjeta es mostrada en la figura 2 que se encuentra al final de esta sección y se explica en módulos de acuerdo a los circuitos integrados que intervienen en ella. Se recomienda que al ir leyendo esta sección observe la figura. 1.2.1 EL CIRCUITO INTEGRADO 8279 Este es un dispositivo de 40 pins, los cuales se dividen de la siguiente manera: Símbolo Pin Descripción DBO-DB7 19-12 BUS DE DATOS BIDERECCIONAL: Todos losdatos y comandos entre el CPU y el 8279 se transmiten por este bus. CLK 3 CLOCK: Señal del reloj del sistema usada para la generación del timing interno. RESET 9 RESET: Un nivel alto en este pin resetea al 8279. Después de esto, el 8279 se c;oloca en el modo siguiente: 1) 16 caracteres de display de 8 bits, entrada por la derecha. :!) Exploración codificada de teclado con bloqueo por pulsación de dos teclas; durante este proceso, el división del clock se coloca a 31. 12 múltiplo de Símbolo Pin Descripción cs 22 SELECCIÓN DE CHIP: Un esta entrada nivel al habilita bajo 8279 en para transmitir y recibir. A0 21 DIRECCIÓN DE BUFFER: Un nivel alto en esta línea indicará bus que se interpretaran las señales como de comando o como estatus. El nivel bajo indicara que son datos. R D M 10-11 ENTRADNSALIDA READ WRITE: Y Estas señales habilitan al buffer de datos para enviar o recibir datos por el bus externo. IRQ 4 PETICIÓN DE INTERRUPCION: En modo teclado esta línea esta a nivel cuando hay datos en la memoria. a nivel bajo alto Pasara con cada lectura y volverá a nivel atto si quedan en ella. sensor, el pasa a nivel alto En el modo cuando se detecta un cambio en el mismo. vss, vcc 20,40 F’INS DE TIERRA Y ALIMENTACIÓN. SLO-SL3 32-35 LINEAS DE EXPLORACIÓN: usan para la Estas se exploración de teclas o los digitos del display. Se pueden codificar ( 1 de 16 ) o decodificar (1 a 4). sensores de la matriz y 13 de Símbolo Pin Descripción RLO-RL7 38,39, LIMAS DE RETORNO: 192 5-8 se conectan a las líneas de exploración de las teclas o los Estas entradas sensores de Estan polarizadas con teclado. resistencias internas de pull-up. También se utilizar como entradas en pueden el modo de entrada por impulso SHIFT 36 SHIFT: Esta entrada se almacena junto con la tecla que se haya pulsado en el modo de exploración polarizada con de teclado. resistencias Está internas de puIl-up. CNTUSTB 37 CONTROUENTRADA DE IMPULSO: Para los modos de teclado, se almacena junto con la tecla pulsada (del mismo modo que shift); esta línea se utiliza también como la entrada de impulso (flanco de bajada) eri el modo Está de entrada polarizada por impulso. por resistencias internas de pull-up. OUT AO-OUT A3 27-24 SALIDAS: Estos dos puertos desalida son OUT BO-OUT 83 31-28 para refresco el display. de los registros de Los datos de estas sincronizan con salidas se las líneas de exploración para el multiplexado del display. Los dos puerto se pueden apagar independientemente. Se pueden utilizar como un puerto de 8 bits. 14 Símbolo Pin Descripción 23 APAGADO DE DISPLAY : BD utiliza para apagar el Esta salida se display en el multiplexado o en un comando de display. La entrada de datos del 8279 y su visualización son una parte importante de los sistemas basados en los microprocesadores. Este circuito provee las funciones de interface con el CPU sin excesivas complicaciones. El 8279 consta de dos partes: el teclado y el display. La parte del teclado se puede conectar a cualquier tipo de teclado, interruptores o sensores, en nuestro caso se utilizan estas características para controlar el teclado de la puerta y los interruptores de alarma de forzamiento de puerta, alarma de ventanas y sensores de humo. La parte del display, aunque disponible, no es utilizada en el sistema debido a que se deja para un posible mejoramiento en la implementaciÓn de indicaciones por medio de leds o displays alfanuméricos. La parte de control de E/S usa las líneas CS/, AO, RD/ y W para controlar el flujo de datos, los registros internos y los buffers de datos. El flujo de datos se habilita por medio de CS/. El tipo de información que genera o precisa el CPU, se identifica mediante AO, un nivel alto significa que la información será de status o de comando, un nivel bajo indica que son datos. El modo de entrada es decodificación (4x8 teclas) de las líneas de exploración. La pulsación de una tecla genera un código de posición de seis bits. La posición y el estado de SHIFT o de CONTROL se almacena en la memoria FIFO. Los rebotes de las teclas se suprimen automáticamente y se repiten por el mantenimiento de la pulsación o se bloquean si se han pulsado dos telas a la vez. 15 Diagrama a bloques del 8279. 1.2.2 EL CIRCUITO INTEGRADO 8255 Este es dispositivo de U S pmgramable de propósito general que se diseñó para ser usado con microprocesadores. Tiene 24 pins de U S los cuales pueden ser programados individualmente en dos grupos de 12 y se usa en 3 diferentes modos de operación. El modo O es el utilizado en la tarjeta controladora y en este modo tenemos dos grupos de 12 pins de US que pueden ser programados en subgrupos de 4 ya sea de entrada o salida. La programación usada corresponde a la palabra 5 de control, la cual es el número 89H que llega a los pins DO a D7 del 8255, trayendo como resuitado que el puerto A (PA) y el puerto B (PB) del circuito sean de salida, mientras que el puerto C (PC) sea de entrada. Como podemos obsewar la actwaciÓn de este circuito pone a nuestra disposición el uso de los tres puertos ( PA, PB y PC), donde el pin PB4 va a un relevador que al conmutar nos dará la linea telefónica; el pin PB5 también va a un relevador, pero 16 éste, es el encargado de accionar la reproductora donde se encuentra un mensaje que será enviado a través del teléfono; en el pin PB6, se mandara una señal l T L de 5 Vdc cuando se desee abrir la puerta de acceso; la señal del pin PB7 será la encargada de encender las luces; los pins PBO y PB1 son donde se mandarán las señales de marcaje de los números telefónicos; y por ultimo, en el pin PCO llega la señal del detector de cadencia, que nos indica si la línea telefónica esta desocupada, ocupada o se esta haciendo una llamada. La activación de 8255 se da cuando llega un nivel bajo de la lógica de circuitos integrados 74LS00, los cuales son activados mediante el direccionamiento en la computadora. 1.2.3 CIRCUITOS INTEGRADOS ANEXOS Primeramente hablaremos del c;ircuito integrado 74LS688, el cual es un comparador de dos palabras de 8 bits que sirve para asegurar que los puertos disponibles en la PC sean los correctos. Estos puertos van del 300H al 31FH, de los cuales se usan Únicamente de 300H al 305H. Como podemos observar en la tabla l a los Únicos bits que se modifican son AO, A l y A2, por lo tanto la palabra de 8 bits que N h w o hexadecimal N h e r o binario All Al0 AS A8 0 0 1 1 Ai 0 A5 A2 AS A6 U Al 0 0 0 O 0 0 0 3OOH 0 O 0 0 1 30lH A0 o o 1 0 0 1 1 0 0 0 0 O 0 1 0 jDZH 0 0 1 1 0 0 0 0 O 0 1 1 303H 0 0 1 1 0 0 0 0 0 1 0 0 M4H 0 0 1 1 0 0 0 0 O 1 0 1 3OSH 1 O 0 0 TABU la 17 AI0 A8 A t 0 1 1 A7 0 TABLA A l Aó M A3 0 0 0 0 lb se protege se muestra en la tabla I b . Esta palabra se encuentra permanente en las entradas QO a Q7 del comparador y cuando se recibe una palabra idéntica en las entradas PO a P7, entonces se manda una señal en bajo que pasa a traves de la lógica TTL de Cl's 74LSOO la cual activara el 8279 o el 8255. Otro CI anexo que se encuentra en la tarjeta controladora es el 7406, el cual es un TTL monolítico con seis inversores bufferddrivers que tiene como característica importante que sus salidas son de voltaje-alto en colector-abierto, de tal forma que nos dan una interface con circuitos de nivel-alto ( semejantes a los MOS ), o podemos tener cargas de corriente-alta ( como lamparas o relevadares ), y son también utilizados como buffers inversores para tener salidas lTL. Prácticamente en la tarjeta son utilizados como acopladores entre el CI 8255 y los periféricos, entre los que existen algunos relevadores y optoaisladores. También encontramos Cl's MOC3021, que son dispositivos optoaisladores y consisten en un diodo infrarrojo que se acopla a un detector de silicio monolítico, de tal manera que cuando se hace llegar un voltaje de 12Vdc al pin 1, el circuito funcionará como un interruptor cerrado que permitirá que circule una corriente de mas de 10 mA. Complemetanamente a estos circuitos y formando parte de la lógica para la generalización del uso de la tarjeta en cualquier PC desde una 8088 hasta una 80486 se deben utilizar los Cl's 74LS393 y el 741121. El primero de estos circuitos es un doble contador binario de 4 bits, el cual se utiliza para dividir la frecuencia del reloj del sistema, esto por que la amplia gama de PC's también implica el manejo de un amplio rango de frecuencias de reloj (4.4 Mhz a 66 Mhr.). Esta gran diferencia en la velocidad de los microprocesadores también se debe considerar en la variación que presenta en la velocidad del bus externo para accesar a los puertas, por lo que el CI 74121 que es un circuito multivibrador monoestable, lo utilizamos en la generación de una señal de retardo para proporcionar a los circuitos de nuestra tarjeta el tiempo suficiente para operar correctamente. 18 7 I !I 8t E1 I.3 SISTEMA DE COMUNICACI~NTELEF~NICA En esta parte se menciona todo lo referente a el control y funcionamiento de la línea telefónica. 1.3.1 LA LíNEA TELEFÓNICA La línea telefónica que llega a nuestras casas es una señal senoidal, la cual consta de diferentes tonos que explicaremos a continuación. TONO DE MARCAR. Este tono se percibe casi instantáneamente después de hacer el descolaado. El voltaje de la linea asciende a un nivel de 7 V, acompañado de un tono de 450 Hz sobre el mismo nivel con una amplitud de 2 volts pico a pico. Este se muestra en la figura 3. iP#rn Figura 3. Bono de marcar 19 do:: -TONO DE LLAMAR. Se oye en caso de que el abonado al que se llama esté desocupado; esta señal se presenta como en el caso antenor, sólo que con intervalos mudos de 4 segundos por 1 segundo de tono. La señal de este tono se muestra en la siguiente figura. Figura 4. Tono de llamar. 20 -TONO DE OCUPADO. Sucede en al caso de que la línea del abonado al que se llame esté ocupado y la señal permanecerá así aunque el abonado desocupe la línea. Esta señal tiene las mismas características que la del tono de llamar, con la salvedad de que los intervalos son diferentes ( 0.5 segundos de tono por 0.5 segundos de silencio ) . $egmdg$ I Figura 5. Tono de ocupado. Para saber si se ha contestado eri el otro lado de la línea, se ha tomado el criterio de que si tenemos ausencia de los tonos existentes, entonces se ha contestado. Se aplica este criterio, debido a que la línea no presente ningún cambio significativo en el nivel de voltaje cuando al abonado ai que se llama ha descolgado. 21 1.3.2 DETECTOR DE CADENCIA El detector de cadencia es la parte mas importante que indica a la computadora en que tono se encuentra la línea telefónica. La1 interpretación de los tonos a traves de la PC es mediante el reconocimiento de ausencia o no ausencia de la señal senoidal de la línea, y se lleva a cabo de la siguiente manera: cuando tenemos el tono de marcar a la salida del detector de cadencia encontraremos un 1 lógico, para el tono de llamar habrá un 1 lógico durante 1 segundo y un O lógico durante 4 segundos; en el tono de ocupado se encontrará durante 0.5 segundos un 1 lógico y un O en los siguientes 0.5 segundos; por Último para el contestado se tomara el criteric, descrito al final de la sección anterior. En la parte alta de la figura 6 tenemos el detector de cadencia y como podemos observar consta de una etapa preamplificadora, de dos etapas amplificadoras, de un detector de envolvente y de una etapa de conversión a lógica TTL. En la etapa preamplificadora tenemos que en su entrada va una bobina captadora, de la cual obtenemos la señal de la línea al aderirse con la bocina del telefono; aquí la señal una vez preamplificada, se enviará a las etapas de amplifmción, para obtener a la salida de estas, una mejor señal que llegara al detector de envolvente. Las etapas de amplificación se realizaron con el CI TL082, el cual contiene dos amplificadores operacionales. En el detector de envolvente tendremos en la salida una señal que es la envolvente de la señal que entra y cuando no entra ninguna serial, entonces habrá O Volts a la salida del detector. Para la conversión a la lógica TTL, es utilizado el circuito integrado LM311 que es un comparador de voltaje de alta velocidad, el cual esta configurado como,un comparador diferencial, que nos entrega 5 Volts cuando existe señal en el detector de envolvente y O Volts en su ausencia. Es importante mencionar que el O lógico se puede tomar hasta 2.4 Volts y el 1 lógico de 2.5 \/olts en adelante. 22 O a N 0) O J I- J Y m N I = Y H V 1.3.3 CONTROL DEL TELÉFONO El control del teléfono se lleva cabo mediante tres relevadores, los cuales son activados de acuerdo con una algoritmo que sigue la computadora; de los tres relevadores uno sirve para descolgar y poder obtener el tono de marcar, y los otros dos para marcar los números del teléfono a donde se desea llamar. De como se hacen las llamadas se hablara más ampliamente en la explicación del software, que es el que prácticamente controla. I.4 TECLADO, PUERTA, LUCES Y DETECTORES DE HUMO El teclado utilizado es un teclado matricial común que al pulsar cualquier tecla envía una señal a traves de sus salidas. De su control ya se habló en la descripción del CI 8279. En la puerta es usada una contra electnca, la cual es accionada por la PC mediante un optoaislador MOC3021, el cual se encuentra en uno de los alambres que unen la corriente con un transformador que antecede a la contra eléctrica, de tal forma que cuando se cierra dicho circuito es accionada y nosotros nos enteramos porque dicha contra eléctrica emite un sonido grave avisando que está lista. En cuanto al funcionamiento de la contra eléctrica, podemos decir que cuando es accionada, un pasador que detiene a la puerta queda movible, dejando a la puerta con libertad para que pueda ser abierta; cuando no es accionada el pasador esta rígido impidiendo que se pueda abrir la puerta. Las luces también son acciondas con un CI MOC3021, que al cerrarse provoca que las luces se enciendan y al permanecer abierto las luces estén apagadas. El control de encendido y apagado se encuentra ya programado. 23 Para tener la corriente suficiente en la contra electrica y en el encendido de luces se utilizan triacs de compuerta sensitiia (2N6073), los cuales son dispositivos que se diseñaron para aplicaciones de control en oiidas-completas de ac,tales como las luces de alumbrado público, control de motores, control de calentadores y suplementos de potencia. Los detectores de humo son circuitos que al haber humo en un lugar cerrado mandan un 1 lógico y en ausencia de humo mantienen un O lógico. 24 CAPíTULO 2 SOFWARE 2.1 ASPECTOS GENERALES DEL PROGRAMA El software de este proyecto se puede considerar como un "driver" para la tarjeta del sistema. El programa se puede dividir conceptualmente en dos partes, la primera es la que es altamente dependiente del hardware y la segunda la que no lo es. También podemos realizar una división funcional del programa que nos presenta dos bloques principales el de control de acceso y el de alarma. El programa se implanta utilizando el lenguaje de programación C,lo cual nos permite utilizar algunas de las ventajas de este lenguaje, como por ejemplo utilizar la directiva de compilación #define para indicar los valores determinados por el hardware como lo son las direcciones de los puertos y los códigos de las teclas. En el programa se utiliza el método de muestre0 para realizar el monitoreo, aunque unas pequeñas modificaciones al hardware permitirían implantar vía software rutinas que respondieran a una interrupción con lo que se podría tener un driver residente. El utilizar un método de muestre0 para el monitoreo nos lleva a crear una rutina en la que se permanece en un ciclo infinito , del cual solo se sale debido a alguna condición externa. El procedimiento de acceso es de naturaleza secuencial, por lo que el control mediante la PC es ideal en este caso. 25 2.2 MANEJO DE LA TARJETA Como se indico anteriormente los valores determinados por el hardware se distinguen mediante la directiva de compilación Wefine. Estos parametros incluyen la dirección de los puertos y los códigos de : - Teclas de la puerta - Alarmas - Encendido automático de luces - Activación de la contra electrira de la puerta - Descuelgue del telefono - Entrada del detector de cadencia - Reproductora de Mensaje de alerta - Marcaje del telefono Todos estos códigos están asociados con las terminales de los puertos implantados con el 8255, por lo que sus códigos se determinan por la posición en su puerto asignado. Para obsewar como se determinan estos valores, pongamos por ejemplo a la REPRODUCTORA, que se encuentra asociada con la terminal PB5 del 8255 es decir su valor sera de 2exp5 = 32 y este valor solo se asociara al puerto B. Los valores de los puertos a su vez están determinados por el mapeo Hardware que se les asigno a los dispositivos 8255 y 8279. Para el caso de los códigos del teclado de la puerta, sus valores están asignados por su posición en la matriz que determina el 8279 mediante sus terminales SL y RL (renglón y columna respectivamente). Por ejemplo para determinar el código de la tecla 8 (Tecla-8) se tiene CTL SHFT SL RL 1 1 O1 o o1o 26 = OxD2 Los valores de CTL Y SHFT es de 1 por estar así determinados en el hardware ( CTL y SHFT, sin conexión presentan nivel alto pues internamente tienen resistencias de carga ). SL=OlO indica que la tecla esta conectada a la terminal S U , análogamente RL=010 indica la terminal RL2 , de esta manera se pueden determinar todas > y cada uno de los códigos de las teclas, así como de las alarmas de la puerta, ventanas y detector de humo. La siguiente tabla muestra la asignación de códigos. RL2 RL1 RLO I I I I RL3 SLO - 1 2 3 sw1 - SL1 - 4 5 6 sW2 SL2 --- 7 8 9 sw3 - * O # sw4 I I I SL3 - CTL CHFT SI, RL HEX TECLA-1 1 1 000 o11 c3 TECLA-2 1 1 O00 o1o c2 TECLA-3 1 1 O00 O01 c3 TECLA-4 1 1 001 o11 CB TECLA-5 1 1 O 01 o1o CA TECLA-6 1 1 O 01 O01 c9 TECLA-7 1 1 O1o o11 03 TECLA-8 1 1 0'1o O10 D2 TECLA-9 1 O10 O01 D1 TECLA-O 1 1 1 o1 1 o1o DA TECLA-* 1 1 o1 1 o1 1 DB TECLA-# 1 1 o11 O01 D9 SWl 1 1 O00 O00 co SW2 1 1 OQ1 O00 C8 sw3 1 1 O10 O00 DO sw4 1 1 o1 1 O00 D8 27 Los códigos mencionados anteriormente están asociados con el hardware de la tarjeta del sistema, por lo que las rutinas que utilizan estos valores las podríamos clasificar como altamente dependientes del hardware y de uso exclusivo para este sistema en particular. La primera parte del programa realiza una inicialización de los dispositivos 8279 y 8255, programando al 8255 en el modo O, puertos A y B de salida y el puerto C de entrada. Para la programación del 8279 se deben hacer algunas consideraciones, como primer paso se debe programar el preescalar del reloj. Este prescalar debe ser tal que (Fp) / ( 16 x Prescalar) = 100 Khz. donde Fp = Frecuencia del microprmesador. El prescalar se considera cuando se desea instalar la tarjeta en un sistema de diferente Fp ya que este ultimo valor puede variar desde 4.25 Mhz en los microprocesadores 8088 hasta 66Mhz en 110s procesadores de uso mas reciente. Como caso particular ( dado que la tarjeta se probó e instaló en una 80386 ) tomemos Fp = 33 Mhz nuestro valor de prescalar sera de O0001b = 1 . Como siguiente paso se programa al 8279 en el modo decodificado de bloqueo por pulsación de dos teclas. Después de establecer los códigos correspondientes a los diferentes eventos del sistema, como paso lógico se necesitan rutinas de decodificación para obtener valores significativos para el programa y posleriormente significativos para el usuario. Una rutina representativa de este tipo es la función LeeTecla(), la cual realiza una lectura a la FIFO del 8279 obteniendo un código y decodificandolo para obtener el carácter correspondiente a la tecla o alarma activada. Los códigos asignados a cada uno de los dispositivos a controlar, nos permiten de una manera practica utilizar las wentajas de la aritmética de bits para combinar 28 los diferentes estados que son necesarios para el control de dispositivos como el teléfono. El control del teléfono es un modulo de uni alto grado de elaboración dentro de nuestro proyecto , además de que nuestro control es altamente dependiente de otro sistema (el telefónico) , el cual tiene una amplia gama de estados y condiciones que complican su control. En el software lo anterior se refleja en nitinas como la del detector de cadencia , que se crearon de una manera un tanto empírica basándose en las condiciones de la línea telefónica que aunque teóricamente de patrones fijos, comúnmente presentan un amplio rango de variación, como en el cruce de líneas, interrupción de la comunicación, gran cantidad de ruido etc., .Como se busca la sencillez en el diseño, en el detector de cadencia se implementaron unas simples rutinas de presencia y no presencia de tonos, mediante la lectura a un puerto en tiempo real de la presencia o no presencia del tono, con lo que según la duración de estos tonos se puede determinar los estados de línea, ocupado, llamando e incluso el estado de contestado mediante la determinación de un patrón irregular en los tonos. Este método rio es 100 % seguro , pero un sistema que si lo fuera requeriría una interacción más profunda con el sistema telefónico, que incluso nos podría conducir hasta interaccionar con circuitos de la central telefónica. 2.3 ALMACENAMIENTO DE INFORMACI~N El software que no es dependiente del hardware y que esta orientado al control de acceso, fue implementado para cumplir las siguientes especificaciones: - Una clave de acceso siempre comienza con un asterisco. - Todas las claves tienen 4 dígitos (sin incluir al asterisco) - Si se teclean dos claves de acceso incorrectas consecutivamente el sistema se debe bloquear durante cinco minutos. - AI teclear una clave valida se activara el control de la puerta, se almacenarán la hora y fecha en un registro de accesos de usuario que contendra sus últimos 30 accesos. 29 Estas especificaciones debido a su independencia del hardware son susceptibles a mantenimiento. Para realizar el almacenamiento de información se usa un arreglo de apuntadores para realizar una asignación dinámica de los nuevos registros, con los datos de fecha y hora de entrada de cada uno de los usuarios. A continuación se muestra el código fuente completo del programa para el manejo del sistema. 30 I *I UNIVERSIDAD AUTONOMA METROPOLITANA *I UNIDAD IZTAPAIAPA *I *I *I r *I /* VlGlIA : Software para el sistema de control de acceso y *I I* vigilancia del laboratorio T-327. *I r */ I* *I I* Realizado por: *I I* - González Carrillo Ricardo 89327293 *I I* - Solís Ramírez Ricardo Alejandro 88226933 *I *I I* I* *I *I I* lmplementado con Turbo C, versión 2.0 I* *I I* *I /* *I r VIGILA Versión 1.0 -Junio de 1994*I ........................................................................ I ~*i********i*********r*********r**rr*4rr*************~b***************** I* I* I* I* I* #include <stdlib.h> #include <stdio.h> #include <alloc.h> #include <conio.h> #include <ctype.h> #include <time.h> #include <math.h> #include <bios.h> #include <dos.h> #include <string.h> #define #define #define #define #define #define ESTABLE O ACTIVO 1 TRUE 1 FALSE O ON 1 OFF O 31 /* Definición de puertos y dispositivos */ #define #define #define #define #define #define PUERTOA 0x0300 PUERTO6 0x0301 PUERTOC 0x0302 CTL8255 0x0303 DAT8279 0x0304 INS8279 0x0305 P Parámetros de inicialización para los puerlos */ #define IN18255 0x89 /* puertos A y B de salida, puerto C entrada */ #define MOD8279 0x11 /* 8 caracteres 8 bits, entrada por la derecha exploración de teclado decodificada, bloqueo */ por pulsación de dos teclas. #define DIVCLOCK Ox21 r" divide la frecuencia del reloj ( X Mhz/32 ) debe obtenerce aproximadamente 1O0 khz 001 O0001 para 4 Mhz se tienen 125 Khz. */ #define CLR8279 OxD6 P borra registros internos del 8279 */ P Parámetros de control */ #define LEE8279 0x80 /* Instrucción de lectura del 8279 010xxxxx */ #define ESC8279 OxFO P Instrucción de escritura 1OOOPPPP */ P Definición de codigos del teclado externo */ #define #define #define #define #define #define #define #define #define #define #define #define #define #define Mefine ##define TECL-1 TECL-2 TECL-3 TECL-4 TECL-5 TECL-6 TECL-7 TECL-8 TECL-9 TECL-O TECL-A TECL-G SW1 SW2 SW3 SW4 OxC3 OxC2 OxCl OxCB OxCA OxC9 OxD3 OxD2 OxDl OxDA OxDB OxD9 OxCO OxC8 OxDO OxD8 32 P Define las salidas de control para el puerto B */ #define #define #define #define #define #define AMARILLO Ox01 P Salidas para control el */ AZUL 0x02 P marcaje del número telefónico */ DESCOLGAR 0x1O REPRODUCTORA Ox20 ABRIR-PUERTA 0x40 LUCES 0x80 #define NUMUSUARIOS 30 #define NUMACCESOS 30 #define MENSAJE 25 P Tiempo del mensaje */ P Estados de la línea telefónica */ #define #define #define #define #define OCUPADO 1 LLAMANDO 2 LINEA 3 NOLINEA 4 CONTESTADO 5 #define NUMTEL "4813" r" Este es el número telefónico */ typedef struct { int ClaveUsuario; int indice; char *FechaHora[NUMACCESOS]; } DATOS; DATOS Usuario[NUMUSUARIOS]; int oportunidad=O ; P arreglo global */ void Control (int *Estado, char *clave ); void ActualizaEstado( int *Estado, char Tecla, char *clave ); void VerificaClave(char *clave); void Consulta(void); void Accesos(void); char LeeTecla(void); int Cadencia(void); void Alarma(char Tecla); int GetEstado(void); void Reactivar(v0id); 33 r****---**-**- *******rm* Función : Inicializar Esta función inicializa al 8255 y 8279. Además se inicializa el arreglo global y se dan de alta algunas claves. -*-*mr*cHcc*****cic I void Inicializar(void) 1 int i, j; outportb( CTL8255 , IN18255 ); outportb( INS8279 , MOD8279 ); outportb( INS8279 , DIVCLOCK ); outportb( INS8279 , CLR8279 ); P inicialización de variables globales *I for (¡=O; ic30; i++) { Usuario[il.ClaveUsuario = -1 ; Usuario[TJ.indice= O ; for (j=O; j<30;j++) Usuario[TJ.FechaHora[j][O]= "; 1 P inicializa algunas claves *I Usuario[l].ClaveUsuario = 1324 ; Usuario[2].ClaveUsuario = 1492 ; Usuario[3].ClaveUsuario = 7424 ; Usuario[4].ClaveUsuario = 8324 ; Usuario[5].ClaveUsuario = 8932 ; Usuario[G].ClaveUsuario = 7293 ; Usuario[7l.ClaveUsuario = 9510 ; Usuario[8].ClaveUsuario = 8451 ; Usuario[9].ClaveUsuario = 5924 ; Usuario[l O].ClaveUsuario = 4545 ; return; 1 34 Función : Control Paramétros: &Estado, *clave. Regresa : nada. Esta función monitorea constantemente el estado del sistema actualizando los parametros de tiempo transcurrido. Tambien maneja el muestre0 de los puertos del teclado de la puerta y teclado de la PC. *******ccc*m***********mcc*m**hmht*****m***** I void Control (int *Estado, char *clave ) { struct time t l , t2; gettime(&t1); while( *Estado == ESTABLE ) { gettime(&t2); if ( t l .tjmin+2 42.tjmin ) oportunidad= O;; r' inicializa oportunidades *I if ( t l .tjmin+5 c t2.ti-min ) strcpy( clave, /* limpia buffer de teclas *I if ( bioskey(1) != O ) Consulta(); r' se desactiva temporalmente el sistema *I 'I"); gotoxy(32, 22); printf("%s", clave); *Estado = GetEstadoO; ................................ Función : ActualizaEstado Parametros: *Estado, char Tecla, char *clave. Regresa : nada. Esta función realiza la actualizan del estado del sistema despues de identificar que evento provoco su llamada. I *************H*CCmm-*--***-- void ActualizaEstado( int *Estado, char Tecla, char *clave ) { 35 switch (Tecla) { case 'A': return; /* estados de alarma */ case 'B': return; case IC': return; case ID': { *Estado = ESTABLE ; /* Aqui se incluye la rutina de alarma de fuego */ return; 1 case :{ *Estado = ESTABLE ; /* tecla sin proceso */ return; 1 case '*' :{ strcpy( clave , "*" ); /*inicio de clave */ *Estado = ESTABLE ; return; 1 case '1' : ; case '2' : ; case '3': ; case '4' : ; case '5' : ; case '6': ; case '7' : ; case '8' : ; case '9' : ; case 'O' :{ if ( *clave == ) I# { stmcat( clave, &Tecla, 1); /* aumenta clave */ if ( strien(c1ave) >= 5 ) { /* Si la clave esta clompleta verificala */ Verificaclave( clave*l ); strcpy( clave, "" ); 1 gotoXy(1 22); printf(" '7; gotoXy(1, 22); printf("1ntroduzca la clave de acceso *Estado = ESTABLE ; return; I 1 else *Estado=ESTABLE; default : {*Estado= ESTABLE; retum; 1 3 1 . . . . . . . . . . . . . . . . . . . . . . . . **m*m** Función : VerificaClave Parametros: clave, es una cadena de cuatro digitos. Regresa : nada. 36 :'I); Esta función verifica la clave y monitorea e1 número de intentos, si la clave es valida permite el acceso. P*******c*mccHn*********m ++- I void Ve rificaClave(char "clave) int NumClave, i, Index; time-t It ; char *temp; NumClave = atoi(c1ave); for (¡=O; ic30; i++) { if ( Usuario[il.ClaveUsuario == NumClave ) { It = time(NULL); Index = Usuario[il.indice ; temp = malloc(40); strcpy ( temp, ctime(&it) ); Usuario[il.FechaHora[lndex]= temp; Usuario[il.indice++; outportb( PUERTOB, ABRIR-PUERTA); gotoXy(1, 22); printf(" PUERTA ABIERTA DURANTE 5 SEGUNDOS sleep@); gotoXy(1 22); printf("1ntroduzca la clave de acceso outportb( PUERTOB, O ); /* cerrar puerta *I oportunidad = O; return; "); I :I1); 1 1 gotoXy(1, 22); printf('lt\t ii CLAVE INVALIDA sleep(1); oportunidad++; if ( oportunidad== 3 ) { gotoXy(1, 22); printf("it\t ii PUERTA BLOQUEADA !!"); sleep(300); /* bloquea la puerta 5 minutos *I outportb( INS8279 CLR8279 ); /*limpia el buffer del teclado *I oportunidad = O; !!I1); I return; 1 37 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Función : Consulta Esta función interrumpe la vigilancia para proporcionar la interface al sewicio de consulta de accesos. I *.H*******-**m***CWC***C*********** void Consulta(void) { char Op; clrscr(); printf('ln\nolbs\n\n\n\n\n%s\n%s\n%s\nolbs\n%s\n0lbs\n%s", SISTEMA TEMPORALMENTE SUSPENDIDO II 11 I 11 11 1 CONSULTA DE ACCESOS 11 11 11 , 11 1 <1> Accesos de un usuario. " , <2> Salir", 11 11 11 II I Introduzca su opción o"); II do { Op = toupper(getch()); } while (!( (Op=='l')ll(Op=='2*))); if ( o p == Ill) Accesos(); clrscr(); printf('W\n\n\n\n\n\n\n\n\n\t\t SISTEMA DE CONTROL Y ACCESO ACTIVADO'); gotoxy(1 22); printf("1ntroduzca la clave de acceso :"); return ; I /******m********cccmCLC**CCCCCC*cm**r*cm**** Función : Accesos Esta función proporciona el sewicio de consulta de accesos de un usuario. ***P**m-*mmmn**m**w*++*****m* I void Accesos(void) { char Clave[200]; int NumClave, i=O,j=O, Index ; printf('7n\n\ Teclee la clave del usuario scanf("%s", Clave ); NumClave = ato¡( Clave ); if ( NumClave != O ) :'I); for (¡=O; ic30; i++) if ( Usuario[il.ClaveUsuario == NumClave ) { Index = Usuario[il.indice; if ( Index==O) printf('7nSin accesos\n\n"); else printf('7nSus accesos fueron \n\n"); for (j=O; j Index ; j++) printf (,,%s", Usuario[il.FechaHora[jl ); printf('7nohs\n", oprima cualquier tecla para continuar "); II getch0 ; return; 1 printf('7nClave no encontrada."); printf('7noprima cualquier tecla para continuar."); 9etch(); return; 1 printf('7nENTRADA INVALIDA oprima cualquier tecla para continuar."); getch0; return; /*****H***C*H*******H***~*H***H** ***H****H* Función : LeeTecla Parametros: nada. Regresa : un unsigned char con la tecla oprimida. -- Esta función obtiene el codigo de la tecla oprimida, compara su codigo y regresa su valor de tecla decodificada. **c*Hm*m**m** ++**** I char LeeTecla(void) { unsigned char Codigo; outportb( INS8279, LEE8279); Codigo = inportb( DAT8279 ); switch (Codigo) { 39 case TECL-1 : return( '1' ); case TECL-2 : return( '2'); case TECL-3 : return( '3' ); case TECL-4 : return( '4' ); case TECL-5 : return( '5' ); case TECL-6 : return( ' 6 ); case TECL-7 : return( '7'): case TECL-8 : return( '8' ); case TECL-9 : return( '9' ): case TECL-O : return( 'O' ); case TECL-A : return( ); case TECL-G : return( Y ); case SW1 : return( 'A' ); case SW2 : return( 'B' ); case S w 3 : return( 'C' ); case SW4 : return( 'D ): '*I default : return( " ); 1 i*******H1*cn**m*******P L***H**Hw Función : GetEstado Parametros: nada. Regresa : El estado actual del 8279. 1 (ACTIVO) si se han oprimido teclas, O (ESTABLE) en otro caso. m ++***cHc**H -*****--* I int GetEstado(void) { unsigned char Status; Status = inportb( INS8279 ); i* lee estatus del 8279 *I Status = ( Status & Ox07 ) ; r" existen carácteres en la FIFO *I if ( Status ) return( ACTIVO ) ; P se pulso alguna tecla *I else return( ESTABLE ); P no hay teclas *I 1 i***********H********H**HwH**H**** Función : Reactivar Parametros: nada. Regresa : nada. Esta función debe dar instrucciones para reactivación del 40 sistema dependiendo del lugar de instalación. . . . . . . . . . . . . . . . . . . . . . . . ++- I void Reactivar(void) { clrscr(); printf('7nEs necesario reactivar el sistema"); printf("in\n%s", oprima cualquier tecla para terminar"); getch0; return; II I p*******************c*m****m***+cm*****n Función : Cadencia Parametros: nada. Regresa : La cadencia obtenida del puerto C. Esta función realiza de una detección de la cadencia precente en la línea telefónica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ++-* I int Cadencia(void) { struct time t l , t2; long int Centesimas; int tgno, ocupado=O, contestado=O, Ilamando=O; while(1) { gettime(&tl); tono = ( inport(PUERT0C) & Ox01 ); r" lee bit PCO */ while( tono == (inport(PUERTOC)&Ox01) ) { gettime(&t2); if (tl .tjsec+65 < t2.tjsec+60 ) if (tono == 1 ) return(LINEA) ; else retum(N0LINEA); I Centesimas = t2.tjsec*l O0 + t2.tjhund - ( t l .ti-sec*l O0 + t l .ti-hund); if ( Centesimas < 2 ) continue; i* posible ruido parametro 2 *I else if (Centesimas 200) {contestado++ ; if ( contestado > 10 ) return (CONTESTADO); 1 else if (Centesimas < 400) {ocupado++ ; if ( ocupado > 8 ) return (OCUPADO): 41 1 else if (Centesimas c 1500) { llamando++ ; if ( llamando > 5 ) return (LLAMANDO); 1 1 1 Función : Alarma. Parametros: char Tecla. Regresa : nada. Esta función toma la acción requerida segun los siguientes codigos: A .- (SWI) Forzamiento de la puerta. B .- ( S W )Alarma ventana 1. C .- ( S W ) Alarma ventana 2. D .- (SW4) Detector de humo. Las salidas AZULES y AMARRILLOS se refieren a los contactos que tienen el teléfono en el disco rotatorio para el marcaje. Nota : La condicion D no esta implementada. ........................................... I void Alarma(char Tecla) { char *Telefono, Digito; int continuar=TRUE , Tono, i, Numero ; do { do { outportb( PUERTOB, DESCOLGAR ); printf('7ntelefono dbscolgado\n"); Tono= Cadencia(); delay(5000); if ( Tono != LINEA ) { continuar= FALSE; outportb( PUERTOB, O ); 1 42 else continuar = TRUE; }while ( continuar == FALSE ); Telefono = NUMTEL ; while ( *Telefono != NULL ) /* Marcaje del número telefónico */ Digito = *Telefono ; Numero = ato¡( &Digit0 ); if ( Numero==O ) Numero=lO; printf('7nMarcando el digito %do',NumeroohlO); outportb(PUERTOB, DESCOLGAR+AMARILLO); /* se cierran los amarillos */ delay(500); for (¡=O; ¡<Numero ; i++) { outportb(PUERTOB, DESCOLGAR+AMARILLO+AZUL);/* abrir azul */ delay(50); outportb(PUERTOB, DESCOLGAR+AMARILLO); /* cerrar azules */ delay(50); ' 1 outportb(PUERTOB, DESCOLGAR); delay(1000); Telefono++; 1 delay(6000) ; P espera que reaccione la linea */ Tono = Cadencia(); while( Tono == LLAMANDO ) { printf('7nLlamando ..."); Tono = Cadencia(); 1 if ( Tono == CONTESTADO ) break; else if ( Tono == OCUPADO ) { continuar = FALSE; 1 break; }while( continuar == FALSE ); P el telefono se contesto */ outportb( PUERTOB, DESCOLGARIREPRODUCTORA ); printf('7ntelefono contestado"); sleep(MENSAJE); outportb( PUERTOB, DESCOLGAR ); 1' apaga la reproductora */ sleep(1); /* espera un segundo */ outportb( PUERTOB, OFF ); r" cuelga el teléfono */ return; 1 43 FUNCION PRINCIPAL ****CH*****-H********H*****-*****-**** I *** P***-*-*-**Función : main (Principal). Parametros: Nada. Regresa : Codigo de terminación. - - * int main(void) { ++- I int Estado = ESTABLE ; char Tecla, clave[6]="" ; Inicializar(); clrscr() ; printf('ln\n\n\n\n\n\n\n\n\n\t\t SISTEMA DE CONTROL Y ACCESO ACTIVADO"); gotoxy(1, 22); printf("1ntroduzca la clave de acceso :"); do { Control( &Estado, clave ) ; Tecla = LeeTecla() ; ActualizaEstado( &Estado, Tecla, clave ); } while ( Estado == ESTABLE ) ; if ( Estado == ACTIVO ) Alarma( Tecla ) ; Reactivar(); return (O); 1 o 44 CAPíTULO 3 I NSTALACIÓN 3.1 INSTALACIÓN DE SOFTWARE Y TARJETA Para instalar el sofware es necesario verificar el parametro de la velocidad del procesador y actualizarlo en el código fuente, tambien se debe especificar el número telefónico al que se realizará la llamada en caso de activarse la alarma, tambien deben declararse las claves de acceso validas y finalmente recompilar el programa, teniendo listo el pograma executable para correrse una vez instalada la tarjeta. La instalación de la tarjeta la podemos hacer con los siguientes pasos: 1.- Se estacionan las cabezas magnéticas de escnturdlectura del disco duro. Esto se hace con el fin de proteger la información del disco duro. 2.- Se apaga la computadora. 3.- Procedemos a abrir el CPU de la PC. 45 4.- Una vez abierto el CPU, buscamos las ranuras de expansión como se muestra en la imagen y procedemos a instalar la tarjeta teniendo cuidado que los pins sean los correspondientes. La tarjeta entra a presión. 5.- Se coloca todo como al inicio. 3.2 INSTALACIÓN DE PERIFÉRICOS Aquí es necesario tener a la mano la tabla de alambrado y la tarjeta controladora para poder hacer las conexiones indicadas. Para conectar la tarjeta controladora y la tabla de alambrado, se tiene un bus que es físicamente un cable plano de 40 alambres. Dicho bus cuenta con conectores hembras en los extremos, y cada conector tiene una parte en blanco, la cual se hace coincidir a la hora de conectarse la tarjeta y la tabla con otra parte en blanco que se encuentra en los conectores respectivos. 46 Las otras partes que se necesitan instalar se muestran en la siguiente tabla: Símbolo Significado cx-1 Conexión 1 Par de terminales que van directamente con la línea telefónica. cx-2 Conexión 2 Par de terminales quese conectan con la contra eléctrica. cx-3 Conexión 3 Par de Tipo de Conexión terminales que van al interruptor de las luces. cx-4 PB-1 Conexión 4 Par de terminalesque se encargan Push Boton 1 de alimentar a la reproductora. Par de terminales donde se instala lo equivalente a un circuito abierto que al cerrarse indica que se esta forzando la puerta vigilada. PB-2 Push Boton 2 lo equivalente a un circuito abierto Y PB3 En cada par de terminales se instala Push Boton 3 de tal forma que cuandosecierre nos indique que hay algún cristal roto. PB-4 Push Boton 4 En este par de terminales se conectan los detectores de humo. De tal manera que vasta uno de los detectores, que se encuentran en diferentes parteqpara que se accione la alarma. RV-1 Relevador 1 Control telefónico. RV-2 Relevador 2 Control telefónico. RV-3 Relevador 3 Relevador que al cerrarse da línea. RV-4 Relevador 4 Relevador que reproductora. 47 acciona la Para conectar el teclado a más distancia, basta con desalambrar cada uno de los pins del teclado, agregar más alambre hasta donde se desee y volver a alambrar cada pin. 3.3 RECOMENDACIONES Se incluyó esta sección para tener un mejor funcionamiento y mantenimiento del sistema de vigilancia. -Si al instalar el sistema las llamadas telefónicas no se realizan, cheque primeramente el buen funcionamiento de la línea, y si esta bien, haga una observación en los relevadores RV-7, RV-2 y RV-3 teniendo como objetivo que por lo menos cada uno debe accionarse una vez. -Para hacer el estacionamiento de las cabezas magnéticas de la PC, puede utilizarse la instrucción de Parking del PCTOCILS. -Debe tenerse cuidado de no tocar la circuiteria de la tarjeta o del CPU al hacer la instalación de la tarjeta, ya que existen C:l MOS que pueden ser dañados con una carga estática que provenga de su mano. Puede usar una pulsera que este aterrizada para que lo anterior no suceda y se tenga mayor seguridad a la hora de hacer las instalaciones. -Cheque las instrucciones que vienen en el programa para la instalación del sistema de vigilancia. -Revisar los manuales de la bibliografía en caso de alguna duda con un circuito integrado. -Para asegurar que el sistema de vigilancia permanesca activado a pesar de la falta de comente en el lugar, instalar un NO BREAK a la computadora. 48 BIBLIOGRAFíA - APUNTES DE COMUNICACIONES. Yudiel Perez Espejo. UAM-I . México 1994. - TECHNICAL REFERENCE IBM. PERSONAL COMPUTER HARDWARE REFERENCE LIBRARY. USA 1984. - TTL LOGIC. STANDARD TTL SCHOTTKY, LOW POWER SCHOTTKY. TEXAS INSTRUMENTS. USA 1988. - PERIPHERALS. INTEL. U.S.A. 1989. -MICROPROCESSORS. INTEL. U.S.A. 1989. 49 -1486 PROCESSOR PROGRAMMER'S REFERENCE MANUAL. INTEL. U.S.A. 1990. -THYRISTOR DATA. MOTOROLA. U.S.A. 1991. -INTEGRATED ELECTRONICS. Jacob Millman * Chnstos C. Halkias. Ed. Mc Graw Hill. -TURBO C /C++. MANUAL DE REFERENCIA. Herbert Schildt. Ed. Mc Graw Hill. Mexico 1992. 50