60 lines
2.8 KiB
ReStructuredText
60 lines
2.8 KiB
ReStructuredText
---
|
|
title: "Thor's Hammer"
|
|
date: 2018-05-03T11:59:37+02:00
|
|
---
|
|
|
|
In case you were having an inferiority complex because your friends' IBM Model M keyboards are so much louder than the
|
|
shitty rubber dome freebie you got with your pc... Here's the solution: Thor's Hammer, a simple typing cadence enhancer
|
|
for `PS/2`_ keyboards.
|
|
|
|
.. raw:: html
|
|
|
|
<figure>
|
|
<video controls loop>
|
|
<source src="video/thors_hammer.mov" type="video/h264">
|
|
<source src="video/thors_hammer.webm" type="video/webm">
|
|
Your browser does not support the HTML5 video tag.
|
|
</video>
|
|
<figcaption>A demonstration of the completed project.
|
|
|
|
<a href="video/thors_hammer.mov">h264 download</a> /
|
|
<a href="video/thors_hammer.webm">webm download</a>
|
|
</figcaption>
|
|
</figure>
|
|
|
|
The connects to the keyboard's PS/2 clock line and briefly actuates a large solenoid on each key press. An interesting
|
|
fact about PS/2 is that the clock line is only active as long as either the host computer or the input device actually
|
|
want to send data. In case of a keyboard that's the case when a key is pressed or when the host changes the keyboard's
|
|
LED state, otherwise the clock line is silent. We ignore the LED activity for now as it's generally coupled to key
|
|
presses. By just triggering an NE555 configured as astable flipflop we can stretch each train of clock pulses to a
|
|
pulse a few tens of milliseconds long that is enough to actuate the solenoid.
|
|
|
|
.. raw:: html
|
|
|
|
<figure>
|
|
<img src="images/thors_hammer_schematic.jpg" alt="The schematic of the PS2 driver">
|
|
<figcaption>The schematic of the driver stretching the PS/2 clock pulses to drive the solenoid.</figcaption>
|
|
</figure>
|
|
|
|
|
|
Since PS/2 sends each key press and key release separately this circuit will pulse twice per keystroke. It would be
|
|
possible to ignore one of them but I figure the added noise just adds to the experience.
|
|
|
|
Built on a breadboard, the circuit looks like this.
|
|
|
|
.. raw:: html
|
|
|
|
<figure>
|
|
<img src="images/thors_hammer_breadboard.jpg" alt="The circuit built on a breadboard">
|
|
<figcaption>The completed circuit built up on a breadboard and attached to a keyboard.</figcaption>
|
|
</figure>
|
|
|
|
|
|
Since my solenoid did not have a tensioning spring I used a rubber band and some vinyl tape to make an adjustable
|
|
tensioner. The small orange USB hub serves as an end-stop because I had nothing else of the right shape. The sound and
|
|
resonance of the thing can be adjusted to taste by moving the end stop, adjusting the tensioning rubber and tuning the
|
|
excitation duration using the potentiometer. My particular solenoid was a bit slow so I added some pieces of circuit
|
|
board as shims between the plunger and the case to limit the plunger's travel inside the solenoid core.
|
|
|
|
.. _`PS/2`: https://en.wikipedia.org/wiki/PS/2_port
|
|
|