diff options
Diffstat (limited to 'content/blog/thors-hammer')
-rw-r--r-- | content/blog/thors-hammer/images/thors_hammer_breadboard.jpg | bin | 0 -> 3229178 bytes | |||
-rw-r--r-- | content/blog/thors-hammer/images/thors_hammer_schematic.jpg | bin | 0 -> 1822573 bytes | |||
-rw-r--r-- | content/blog/thors-hammer/index.rst | 60 | ||||
-rw-r--r-- | content/blog/thors-hammer/video/thors_hammer.mkv | bin | 0 -> 3799797 bytes | |||
-rw-r--r-- | content/blog/thors-hammer/video/thors_hammer.mov | bin | 0 -> 33979697 bytes | |||
-rw-r--r-- | content/blog/thors-hammer/video/thors_hammer.webm | bin | 0 -> 4868825 bytes |
6 files changed, 60 insertions, 0 deletions
diff --git a/content/blog/thors-hammer/images/thors_hammer_breadboard.jpg b/content/blog/thors-hammer/images/thors_hammer_breadboard.jpg Binary files differnew file mode 100644 index 0000000..4504d83 --- /dev/null +++ b/content/blog/thors-hammer/images/thors_hammer_breadboard.jpg diff --git a/content/blog/thors-hammer/images/thors_hammer_schematic.jpg b/content/blog/thors-hammer/images/thors_hammer_schematic.jpg Binary files differnew file mode 100644 index 0000000..3061f61 --- /dev/null +++ b/content/blog/thors-hammer/images/thors_hammer_schematic.jpg diff --git a/content/blog/thors-hammer/index.rst b/content/blog/thors-hammer/index.rst new file mode 100644 index 0000000..ba851a5 --- /dev/null +++ b/content/blog/thors-hammer/index.rst @@ -0,0 +1,60 @@ +--- +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 + diff --git a/content/blog/thors-hammer/video/thors_hammer.mkv b/content/blog/thors-hammer/video/thors_hammer.mkv Binary files differnew file mode 100644 index 0000000..c9581e9 --- /dev/null +++ b/content/blog/thors-hammer/video/thors_hammer.mkv diff --git a/content/blog/thors-hammer/video/thors_hammer.mov b/content/blog/thors-hammer/video/thors_hammer.mov Binary files differnew file mode 100644 index 0000000..fff65a8 --- /dev/null +++ b/content/blog/thors-hammer/video/thors_hammer.mov diff --git a/content/blog/thors-hammer/video/thors_hammer.webm b/content/blog/thors-hammer/video/thors_hammer.webm Binary files differnew file mode 100644 index 0000000..2bcf1ca --- /dev/null +++ b/content/blog/thors-hammer/video/thors_hammer.webm |