Lösung 1
Sie bauen sich den auf der Internetseite
http://macetech.com/blog/?q=node/46 vorgestellten USB-Tastatur-Stick mit dem Atmel-Microcontroller Tiny45-20 oder Tiny85-20 nach und programmieren statt der Taste Caps Lock (0x39) die Taste Scroll Lock (0x47) und geben ein festes Zeitintervall vor. Den Quellcode finden Sie auf der verlinkten Seite.
Bei mir drückt das Gerät alle paar Minuten doppelt die Scroll Lock Taste und der Bildschirmschoner ist Geschichte. Dies hat übrigens keinen Einfluss auf die sonstige Nutzung des Rechners.
Gleichzeitig habe ich programmiert, dass Caps Lock immer aus und Num Lock immer an ist. Diese Tasten drücke ich höchstens irrtümlich und zumindest bei Caps Lock passiert mir das häufig. Man merkt es immer erst, wenn das Passwort nicht akzeptiert wird oder man bereits viel falschen Text getippt hat. Diese Zusatzfunktion ist wohl mit Apple-Geräten nicht kompatibel.
Testen konnte ich meine Sticks allerdings nur an PCs und Notebooks mit dem Betriebssystem Windows.
|
Schaltplan für den Stick. Die beiden Z-Dioden fehlen im Projekt der verlinkten Seite. |
|
Meine ersten beiden Hardwareversionen. (Das kann ja noch besser werden.) |
Nachdem ich seit Jahren keinen Lötkolben mehr genutzt habe, war dies übrigens mein erster Kontakt mit der Programmierung von Mikrocontrollern. Das hat mir Spaß gemacht und kaum zwei Wochen nach der Idee zur Adaption des Sticks war mein erster Prototyp funktionsbereit. Zum Programmieren habe ich die Software Atmel Studio 6.2 in Verbindung mit dem ATeVal Evaluationsboard (
http://ateval.eHaJo.de) genutzt. Dieses Board ist sehr praktisch, weil man den Chip zum Programmieren einfach in eine Fassung stecken kann. Inzwischen weiß ich aber auch, wie man ein ISP-Kabel nutzt.
|
Screenshot aus Atmel Studio mit den Fuse-Einstellungen im Auslieferungszustand des Mikrocontrollers |
|
Die richtigen Einstellungen der Fuses für den Stick. |
Lösung 2
Sie bauen einen elektronischen "Zeitschalter" direkt in die Tastatur ein. Dies ist allerdings mit einem höheren Aufwand verbunden als der Nachbau des Sticks, bietet aber die gleiche Funktionalität und ist garantiert virenfrei. Die Schaltung wertet hierfür die Caps Lock LED und die Num Lock LED aus. Das kann man natürlich auch weglassen, wenn es nur um den Bildschirmschoner geht.
|
Schaltplan für die Tastaturvariante |
|
Um die Tasten abzugreifen habe ich fertig gekaufte 1mm breite Kupferfolie verwendet. Mit Hilfe eines Computerausdruckes wurde diese richtig positioniert und in Laminierfolie eingelegt. Die obere der beiden Folien habe ich zudem dort gelocht, wo später die Kabel angelötet werden.
|
|
Hier sind die Kupferfolien bereits fertig einlaminiert und es passt schon ganz gut auf die richtigen Originalkontakte. |
|
Die Programmierung des Controllers gestaltet sich nicht sehr professionell aber das geht schon mal so. Da meine Tastatur in der Höhe wenig Platz ließ, wurden die Bauelemente in SO- bzw. SMD-Bauweise gewählt. |
|
Die fertige Platine beim Funktionstest. Diese ist übrigens erst meine zweite selbst belichtete Platine. Früher habe ich die Leiterbahnen vor dem Ätzen mit dem Pinsel aufgemalt. |
|
der fertige Einbau |
Quellcode
#define F_CPU 1000000UL /* 1MHz */
#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>
#define SCROLL (1<<PB0)
#define CAPS (1<<PB1)
#define NUM (1<<PB2)
#define CAPS_IN (1<<PB4)
#define NUM_IN (1<<PB3)
void long_delay(uint16_t ms)
{
for(; ms>0; ms--)
_delay_ms(1);
}
int main(void)
{
DDRB |= SCROLL | CAPS | NUM; // PB0, PB1 und PB2 als Ausgang
DDRB &= ~ NUM_IN | CAPS_IN ; // PB3 und PB4 als Eingänge
PORTB |= ( NUM_IN | CAPS_IN ); // Pullups bei der Optokoppler-Variante einschalten
PORTB &= ~ SCROLL ; // Loslassen
PORTB &= ~ CAPS ; // Loslassen
PORTB &= ~ NUM ; // Loslassen
unsigned int tastdauer=50; // Dauer, wie lange eine Taste gedrückt wird in Millisekunden.
unsigned int leuchtdauer=10; // Dauer, wie lange die Scroll Lock LED aufleuchtet in Millisekunden.
unsigned long x=0; // Variable zum Hochzählen
unsigned long intervall=240; // Zeitspanne bis zum Drücken der Scroll Taste in Sekunden.
intervall*=1000;
while(1)
{
long_delay(1);
x++;
// Falls an, Caps Lock ausschalten.
if ( !(PINB & CAPS_IN) )
{
PORTB |= CAPS ; // Drücken
long_delay(tastdauer);
PORTB &= ~ CAPS ; // Loslassen
}
// Falls aus, Num Lock einschalten.
if ( PINB & NUM_IN )
{
PORTB |= NUM ; // Drücken
long_delay(tastdauer);
PORTB &= ~ NUM ; // Loslassen
}
//Regelmäßig die Scroll Lock Taste doppelt drücken
if(x==intervall)
{
x=0;
PORTB |= SCROLL ; // An
long_delay(tastdauer);
PORTB &= ~ SCROLL ; // Aus
long_delay(tastdauer);
long_delay(leuchtdauer);
PORTB |= SCROLL ; // An
long_delay(tastdauer);
PORTB &= ~ SCROLL ; // Aus
}
}
return 0;
}
Lösung 3
Wenn Sie über eine optische Maus verfügen, können Sie es mit einem Analogwecker mit Sekundenzeiger versuchen. Legen Sie die Maus in Pausen dann einfach auf das Ziffernblatt.
Lösung 4
Sie legen die Maus auf eine Ablage, die regelmäßig von einem Vibromotor gerüttelt wird. Das sollte dann auch mit einer alten Kugelmaus funktionieren aber wer hat so was schon noch.
Oder man baut den Vibomotor direkt in die Maus ein.
Ich habe meine Schaltung mit drei (Magnet-) Hallsensoren ausgestattet. Dadurch ist der Umbau äußerlich nicht sichtbar. Mit einem Magnet kann die Vibrationsfunktion an- und ausgeschaltet und die Intervalldauer im Minutentakt erhöht oder vermindert werden.
Die genutzte Maus ist eine Ergomaus, die es derzeit bei Amazon von verschiedenen Anbietern gibt. Sie ist mit zwei Metallplatten ausgestattet, zwischen die man den Motor hervorragend anschrauben kann.
Da der Motor für 3 Volt ausgelegt ist, wurde die Diode zum Senken der Spannung eingebaut. Wegen der Hallsensoren muss diese aber bei mindestens 3,7 Volt liegen. Oder man hätte die Sensoren vor der Diode anschließen müssen.
Schaltplan
Platine
spätere Position der Platine
Motor und Einbauposition
Weitere Lösungen
Was haben Sie für Ideen?