Een uit-knop met LED op je seriële poort.

ArticleCategory:

Hardware

AuthorImage:

[Foto van de Auteur]

TranslationInfo:

original in en Guido Socher

en to nl Tom Uijldert

AboutTheAuthor:

Guido is al lang een Linux fan. Meestal ontwikkelt hij programma's of doet werk voor _LF_, maar zo af en toe vind hij het leuk om aan hardware te knutselen.

Abstract:

In dit artikel ontwerpen we een drukknop die je op de seriële poort van je machine aan kunt sluiten. Met deze knop kun je de machine afsluiten.

ArticleIllustration:

[Illustratie]

ArticleBody:

Inleiding

Een echte server machine heeft geen toetsenbord, muis of monitor nodig. Het heeft alleen een goed operating systeem nodig, zoals Linux, en een netwerkkaart. Externe apparatuur zoals muis en toetsenbord zijn hierbij alleen maar hinderlijk. Met Linux op de machine is systeembeheer op afstand de makkelijkste oplossing.

Als ik een computer koop kijk ik altijd of de BIOS een instelling heeft waarmee je de controle op de aanwezigheid van een toetsenbord kunt uitzetten. Iedere behoorlijke moederbord- fabrikant heeft die optie tegenwoordig. Sommige fabrikanten denken nog steeds dat mensen alleen maar Windows op hun PC hebben en deze PC's hebben dus een toetsenbord nodig om op te starten. Het is af te raden om dergelijke hardware aan te schaffen.

Een machine zonder toetsenbord en monitor is de ideale computer om te gebruiken als firewall, web-server, NFS bestandsserver, mail-server, ADSL-adapter enz. Het hoeft geen dikke machine te wezen. Een oude Pentium op 100 MHz met voldoende intern geheugen kan makkelijk honderd of meer machines bedienen.

De afwezigheid van externe apparatuur hiervoor is makkelijk want de server is dan gereduceerd tot een kleine doos die je overal neer kunt zetten. In een hoek of op een plank in de kelder. Soms echter, heb je de behoefte aan een knop waarmee je de machine op een nette manier neer kan halen zonder dat je hoeft in te loggen en het shutdown commando moet draaien. Wellicht omdat je al in de serverruimte bent en het dichtstbijzijnde werkstation 100 meter verder is. Of er is iemand die wel bij de machine kan maar het wachtwoord van de machine niet heeft en toch de machine af moet sluiten voordat hij de voeding eruit haalt.

Simpelweg de stekker eruit trekken is geen goede oplossing omdat je daarmee data kunt verliezen en een disk-check (fsck) bij opstarten duurt eindeloos.

De oplossing hiervoor is het kleine en goedkope apparaatje dat we hier bespreken.

Het apparaat

We gaan een apparaatje maken met 2 LED's en een drukknop. Groen geeft aan dat de knop gebruikt kan worden, langzaam knipperend geel geeft aan dat de machine aan het afsluiten is. Om het afsluiten te activeren moet de drukknop 3 seconden in worden gedrukt.

Na deze drie seconden zal het groene licht uitgaan om aan te geven dat het afsluiten is begonnen. Het commando "/sbin/shutdown/ -t2 -h now" wordt nu uitgevoerd. Het geel zal knipperen tijdens het afsluiten. Nadat het knipperen is gestopt moet je nog 10 seconden wachten voordat de stekker eruit gaat. Het knipperen stopt nadat alle processen gestopt zijn en de schijven offline worden gehaald.
Als je computer is uitgerust met automatische power off dan hoef je je niet druk te maken over de 10 seconden. Wacht gewoon totdat hij zichzelf uitschakelt.

De seriële poort

Het leuke van de seriële poort is dat hij een aantal aansluitpennen heeft die je aan kunt sturen met ioctl() systeemfuncties. Dat betekent dat je de kernel niet hoeft te veranderen om een LED aan te sturen of om de status van een drukknop af te lezen. De poort heeft net genoeg spanning om 2 kleine LED's aan te kunnen sturen. We zullen de pennen RTS en DTR gebruiken voor het aansluiten van de LED's en de Carrier Detect voor het uitlezen van de stand van de drukknop.
9 PIN D-SUB MALE

9 PIN D-SUB MALE aan de computerkant.

9 PIN-connector25 PIN-connectorAfkoRichtingBenaming
18CDinvoerCarrier Detect
23RXDinvoerReceive Data
32TXDuitvoerTransmit Data
420DTRuitvoerData Terminal Ready
57GND--System Ground
66DSRinvoerData Set Ready
74RTSuitvoerRequest to Send
85CTSinvoerClear to Send
922RIinvoerRing Indicator

De schakeling

Je hebt de volgende onderdelen nodig voor het bouwen van dit apparaatje: circuit diagram De onderdelen worden aangesloten zoals te zien in het diagram. De spanning op de seriële draden is +/- 10 Volt. De 1K5-weerstanden zijn precies voldoende voor laag-vermogen LED's maar gewone LED's kunnen ook. Het is niet aan te raden om te werken met andere weerstandswaarden of een voeding daar het geheel direct is aangesloten op de IC's van het moederbord. Als je die laat doorbranden kun je je hele moederbord vervangen.
pcb

Hierboven zie je de printplaat weergegeven. Ik heb geen precies schema voor je voor de inrichting van de plaat omdat ik kleine schakelingen het liefst uit de hand direct op de plaat teken met ets-ongevoelige inkt.

Het hele apparaatje is te zien op het plaatje aan het begin van dit artikel. Je kunt volstaan met voorzichtig 3 gaatjes in het voorpaneel van je server te boren. Twee gaten van 3 mm voor de LED's en eentje voor de drukknop. Het geheel is heel licht en de schroef van de drukknop is voldoende om het vast te zetten.

De software

Dit is een klein achtergrondproces wat via een script in /etc/rc.d/rc3.d kan worden gestart. De systeemfuncties ioctl(fd, TIOCMSET, ...) en ioctl(fd, TIOCMGET, ...) worden gebruikt voor het lezen en schrijven naar de poort. Je kunt sled-0.1.tar.gz van het net halen. Een makefile en gebruiksaanwijzing zijn er bij inbegrepen.

Veel plezier met solderen.