diff options
author | jaseg <git@jaseg.de> | 2023-07-26 18:35:47 +0200 |
---|---|---|
committer | jaseg <git@jaseg.de> | 2023-07-26 18:35:47 +0200 |
commit | 74d7f5c965c55be28ea6da0e0e33f7f0fd5478f9 (patch) | |
tree | 22b51342a3de2c392d4c040120a0221a091145e8 /blog/thors-hammer/index.html | |
parent | d5d49f1e2e3ffa862c60d2147893de8bf7d83220 (diff) | |
parent | f33272ad761192e080c4bdbc579bafccceb64824 (diff) | |
download | blog-74d7f5c965c55be28ea6da0e0e33f7f0fd5478f9.tar.gz blog-74d7f5c965c55be28ea6da0e0e33f7f0fd5478f9.tar.bz2 blog-74d7f5c965c55be28ea6da0e0e33f7f0fd5478f9.zip |
deploy.py auto-commit
Diffstat (limited to 'blog/thors-hammer/index.html')
-rw-r--r-- | blog/thors-hammer/index.html | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/blog/thors-hammer/index.html b/blog/thors-hammer/index.html new file mode 100644 index 0000000..0030a1f --- /dev/null +++ b/blog/thors-hammer/index.html @@ -0,0 +1,88 @@ +<!DOCTYPE html> +<html><head> + <meta charset="utf-8"> + <title>Thor's Hammer | Home</title> + <meta name="description" content=""> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="mobile-web-app-capable" content="yes"> + <meta name="color-scheme" content="dark light"> + <link rel="stylesheet" href="/style.css"> +</head> +<body><nav> + <div class="internal"> + + <a href="/" title="Home">Home</a> + <a href="/blog/" title="Blog">Blog</a> + <a href="/projects/" title="Projects">Projects</a> + <a href="/about/" title="About">About</a> + </div> + <div class="external"> + <a href="https://git.jaseg.de/" title="cgit">cgit</a> + <a href="https://github.com/jaseg" title="Github">Github</a> + <a href="https://gitlab.com/neinseg" title="Gitlab">Gitlab</a> + <a href="https://chaos.social/jaseg" title="Mastodon">Mastodon</a> + </span> +</nav> + + <header> + <h1>Thor's Hammer</h1> +<ul class="breadcrumbs"> + <li><a href="/">jaseg.de</a></li> + <li><a href="/blog/">Blog</a></li><li><a href="/blog/thors-hammer/">Thor's Hammer</a></li> +</ul> + <strong>2018-05-03</strong> + </header> + <main> + <div class="document"> + + +<p>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 <a class="reference external" href="https://en.wikipedia.org/wiki/PS/2_port">PS/2</a> keyboards.</p> +<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><p>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.</p> +<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><p>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.</p> +<p>Built on a breadboard, the circuit looks like this.</p> +<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><p>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.</p> +</div> + </main><footer> + Copyright © 2023 Jan Sebastian Götte + / <a href="/about/">About</a> + / <a href="/imprint/">Imprint</a> +</footer> +<script> + if(navigator.getEnvironmentIntegrity!==undefined)document.querySelector('body').innerHTML=`<h1>Your browser + contains Google DRM</h1>"Web Environment Integrity" is a Google euphemism for a DRM that is designed to + prevent ad-blocking, and which Google has forced into their browsers against widespread public opposition. + In support of an open web, this website does not function with this DRM. Please install a browser such + as <a href="https://www.mozilla.org/en-US/firefox/new/">Firefox</a> that respects your freedom and supports + ad blockers.`; + </script> + </body> +</html> |