Botón de apagado con led de control a través de un puerto serial

ArticleCategory: [Choose a category for your article]

Hardware

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in en Guido Socher 

en to esJuan José Marí 

AboutTheAuthor:[A small biography about the author]

Hace mucho tiempo que Guido es fan de linux. La mayor parte de su tiempo desarrolla programas o trabaja para LinuxFocus, pero de vez en cuando, disfruta diseñando piezas de hardware.

Abstract:[Here you write a little summary]

En este artículo diseñaremos un pequeño botón para conectar tu servidor en un puerto serial. Lo podrás emplear para apagar la máquina cuando sea necesario.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Introducción

Normalmente, un servidor no necesita teclado, monitor o ratón. Necesita un buen sistema operativo, como Linux y una tarjeta de red. Los periféricos externos como el ratón o el teclado tan sólo estorban. Con Linux corriendo en la máquina, la administración remota es la mejor y más conveniente solución.

Cuando compro un equipo verifico siempre que en el BIOS exista la opción para que compruebe al iniciar la existencia de teclado. Todas las placas madre buenas tienen esa opción hoy en día. Todavía queda gente que solo usa Windows en sus máquinas que creen que es necesario conectar un teclado para arrancar, pero eso es una historia diferente y no recomiendo comprar hardware malo.

Un ordenador sin teclado y monitor es la maquina perfecta para un cortafuegos, un servidor web, una puerta de enlace de ADSL, etc. No es necesario que sea una máquina especialmente potente. Un viejo Pentium/100 Mhz con suficiente RAM puede fácilmente servir a cientos de máquinas.

El no tener un teclado conectado es conveniente porque el servidor es sólo una pequeña caja que cabe en cualquier parte, en una esquina o en otro lugar. En ocasiones seguro que te gustaría disponer de un botón para apagar apropiadamente la máquina sin necesidad de tener que autentificarte y ejecutar el comando de apagado. Puede ocurrir que estés en la habitación del servidor y la siguiente estación de trabajo se encuentre a 100 metros más allá, o te encuentras con alguien que tiene acceso físicamente al servidor pero no cuenta con las claves de root, pero esa persona necesita apagar el ordenador antes de desconectarlo de la corriente eléctrica.

La solución de desconectarlo de la corriente, no parece una buena idea porque es posible que exista pérdida de datos y además, la revisión que se realiza durante el inicio puede llevar mucho tiempo.

La solución es este pequeño y económico artilugio serial presentado en este artículo.

El aparato

Construiremos un pequeño aparato con 2 LEDs y un pulsador. Un LED de color verde indicará cuándo el botón pulsador estará activado y un LED amarillo de parpadeo lento indicará que el servidor está funcionando o que aún se encuentra en proceso de apagado. Para apagar el servidor será necesario presionar el botón durante 3 segundos.

Cuando presiones el botón, entonces la luz verde se apagará indicando que el apagado se encuentra en progreso. El comando "/sbin/shutdown -t2 -h now" se está ejecutando en ese mismo momento. El LED amarillo continúa parpadeando mientras el servidor se está apagando. Cuando el LED amarillo deje de parpadear entonces se debería esperar 10 segundos antes de desconectar la máquina. El LED se apagará cuando todos los procesos estén cerrados y los discos estén desmontados.
Si el servidor soporta el apagado automático, entonces uno no se debe preocupar por los 10 segundos. Únicamente espera a que las luces se desconeten por sí solas.

La línea serial

Lo interesante de las interfaces seriales es que disponen de un número de pines que puedes controlar mediante llamadas al sistema ioctl. Esto significa que no es necesario modificar nada en el kernel para controlar un LED conectado a un puerto serie o para leer el estado de un botón. El puerto serial tiene suficiente energia para controlar los 2 LEDs de bajo consumo. Utilizaremos los pines RTS y DTR para conectar los LEDS y la línea de detección de carrera será empleada para leer el estado del botón.
9 PIN D-SUB MACHO

9 PIN D-SUB MACHO en el ordenador.

9 PIN-conector 25 PIN-conector Nombre Dir Descripción
1 8 CD Entrada Detector de carrera
2 3 RXD Entrada Recepción de datos
3 2 TXD Salida Transmisión de datos
4 20 DTR Salida Terminal de datos lista
5 7 GND -- Base del sistema
6 6 DSR Entrada Ajuste de datos listo
7 4 RTS Salida Petición de envío
8 5 CTS Entrada Autorizado a enviar
9 22 RI Entrada Indicador de llamada


El circuito

Para construir este botón de apagado automático con LEDS son necesarias las siguientes partes.

Diagrama del circuito Las partes se conectan juntas como se muestra en el diagrama del circuito. Los niveles de voltaje en los puertos seriales son más o menos de 10 voltios. Las resistencias de 1.5k Ohm son las más recomendadas para los LEDS de bajo consumo pero también son válidas para los LEDS normales. No recomiendo cambiar las resistencias o utilizar una fuente de alimentación externa puesto que los pequeños circuitos de los puertos seriales son parte del conjunto de circuitos de la placa madre. Si se quema alguno de ellos, tendrás que cambiar la placa madre.


pcb

La siguiente imagen muestra la placa del circuito soldado. No dispongo de un modelo predefinido puesto que prefiero realizar soldaduras como si dibujase a mano sobre la placa.

El circuito final con todas las partes se muestra en la fotografía que está al principio de este artículo. Puedes taladrar con mucho cuidado y precaución la parte frontal del panel de tu servidor para hacer 3 agujeros. Dos agujeros de 3mm. para los LEDS y otro para colocar el botón pulsador. El circuito es muy ligero así que el simple enganche del botón será suficiente para sostenerlo.

El programa

El programa es un pequeño demonio, que puede ser arrancado desde un script de /etc/rc.d/rc3.d/. Utiliza las funciones ioctl (fd, TIOCMSET,...) y ioctl (fd, TIOCMGET, ...) para leer y escribir en el puerto serie. Aquí puedes descargarlo, sled-0.1.tar.gz. Un creador de archivos e instrucciones están incluídas.

Felices soldaduras