X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=README.org;h=182527b40403fe1b5cb83db91fea65f8ad45a79d;hb=d240e6d81824ac93f9bc4525738bb6805b6e4111;hp=f5a2320bead3a1aff4d03370e124e89ee3314b1d;hpb=ea592cb07ffc818d5d1fd30cfaf2c8cb2ba58dd3;p=atreides.git diff --git a/README.org b/README.org index f5a2320..182527b 100644 --- a/README.org +++ b/README.org @@ -23,15 +23,23 @@ take into account the fact that the thumb is the strongest and most versatile of the fingers. This design avoids both these problems while taking a more couch-friendly single-piece approach. -[[atreus.jpg]] +[[./atreus.jpg]] Having so few keys, this board is pretty idiosyncratic. It works very well for the kind of work that I do, but it probably wouldn't be a good fit for you if you do a lot of numerical data entry or make heavy use of function keys, arrows, or home/end. If you primarily use -programs with good key rebinding functionality, you're probably in -good shape. For instance, =enter= is in a bit of an awkward position, -but many programs treat =control-m= as the same. +[[https://github.com/technomancy/dotfiles/commit/856a638350a26b0cdb0bcc82042ed77a3fa4bdea][programs with good key rebinding functionality]], you're probably in +good shape. For instance, =enter= and =tab= are in a bit of an awkward +position, but many programs treat =control-m= and =control-i= as +=enter= and =tab= respectively. + +** Kits + +You can buy [[http://atreus.technomancy.us][Atreus kits]] that have all the parts you need along with +detailed assembly instructions from http://atreus.technomancy.us. If +you'd rather round up all the parts yourself, that's possible too; see +the bill of materials below. ** Layout @@ -76,20 +84,11 @@ after the fact. This layout has five modifiers and 37 non-modifiers. I strongly prefer the feel and sound of tactile [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=651][Cherry MX blue]] -switches for typing. However, I like having linear switches on the -modifier keys (ctrl, alt, super, shift, and fn). [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=102][Cherry MX red switches]] -are nice and light but are expensive and difficult to -find. [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=103][Cherry MX black switches]] are cheaper and easier to source, but -may be too heavy, especially for keys under pinky fingers. - -One trick is take the springs from some of your blue switches and -trade them with the springs from your black switches. The blacks then -become the equivalent of reds, and the blues become MX green switches, -which are a heavier variant of blues. These are typically used for -space bars on boards that otherwise use blues. They could be suitable -for non-modifier thumb keys like backspace, space, and enter. However, -the recommended layout above has all its modifiers under the thumbs, -so this is not an issue. +switches for typing. However, I like having linear [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=103][Cherry MX black +switches]] switches on the modifier keys (ctrl, alt, super, shift, and +fn) because the tactile effect has no benefit for keys that are held +down, and giving a different response helps you learn the layout more +quickly. *** Diodes @@ -97,8 +96,8 @@ In order to avoid ghosting, each switch needs a [[https://www.radioshack.com/pro *** Microcontroller -An [[http://www.digikey.com/product-search/en/programmers-development-systems/evaluation-boards-embedded-mcu-dsp/2621773?k=arduino%20micro][Arduino Micro]] or [[http://www.pjrc.com/teensy/index.html][Teensy 2]] is recommended. Be sure to get one -without headers so it will fit in between the bottom layer and the plate. +A [[http://www.pjrc.com/teensy/index.html][Teensy 2]] is recommended. Be sure to get one without headers so it +will fit in between the bottom layer and the plate. *** Keycaps @@ -111,170 +110,77 @@ get a single 1.5x keycap, and the middle two thumb keys both use them, so you might want to pick up an extra. (You can buy a single DSA 1.5x keycap from [[http://www.keycapsdirect.com/key-capsinventory.php][Signature Plastics]].) -If you want labels on your keycaps, you can get a full labelled -standard 104-key set from [[http://elitekeyboards.com/products.php?sub=access#cherrymxkeys][Elite Keyboards]] as well. However, the -modifiers in that set are larger than what the Atreus uses, so you'll -have to place some mis-labelled caps on the bottom row. - ** Case -Layered laser-cut acrylic; see [[file:case.svg][case.svg]]. +Layered laser-cut wood or acrylic. The original case (=case-mk-i.svg=) +is slightly less wide and has a minor asymmetry with the screws on the +bottom side. The [[http://geekhack.org/index.php?topic%3D54759.msg1304117#msg1304117][mark II case]] (in the `case` directory) is implemented +programmatically in openscad, though dxf files are available as a +convenience, which can be converted to SVG or EPS for laser cutting +with Inkscape. Mark II features 8 screw holes and a kind of "stair +step" design around the top and bottom of the key clusters; mark I is +pictured below. -[[layers.jpg][layers.jpg]] +[[./layers.jpg]] -The first two shapes in the case file are the top and bottom covers; -these should be cut on 3mm acrylic (black in the photo). The third is -the spacer that goes under the fourth, which is the plate on which the -switches are mounted. These should be cut in 6mm, especially the -spacer, which needs to be at least as thick as the mini USB cable you -connect to the microcontroller. I recommend using a mini USB cable -with as thin a connector as you can find or sanding the connector -down to the required thickness. The switch plate could be thinner, but -not under 3mm. +The bottom and top covers (black in the photo) should be cut in 3mm. +The switch plate (frosted in the photo) can be cut in 4.5mm or +3mm. The spacer should be cut in 6mm; it needs to be at least as +thick as the mini USB cable you connect to the microcontroller. I +recommend using a mini USB cable with as thin a connector as you can +find or sanding the connector down to the required thickness. -On a 100W Epilog laser, the 3mm layers cut in about a minute and a -half. I did a run with 6mm acrylic of the other layers which took -nearly 6 minutes. +TODO: describe finishing process for wood. ** Firmware -My [[https://github.com/technomancy/tmk_keyboard/tree/atreus][fork of the tmk firmware]] has support for the Atreus layout. You -should be able to change into the =keyboard/atreus= directory and run -=make KEYMAP=atreus= (or whichever variant you want) to produce a -qwerty =atreus.hex= file. You will probably want to create your own -layout once you've gotten a chance to try it and see what works for -you. Use the =.hex= file with the [[http://www.pjrc.com/teensy/loader.html][teensy loader]] or Arduino tools to -upload to the microcontroller. +The [[https://gitlab.com/technomancy/atreus-firmware/blob/master/readme.md][custom Atreus firmware]] is a small C project which +implements matrix scanning and debouncing with user-customizeable +layers and macro functions. Another option is the much more complex +TMK firmware. My [[https://github.com/technomancy/tmk_keyboard/tree/atreus][fork of the tmk firmware]] has support for the Atreus +layout. You should be able to change into the =keyboard/atreus= +directory and run =make KEYMAP=atreus= (or whichever variant you want) +to produce a qwerty =atreus.hex= file. You will probably want to +create your own layout once you've gotten a chance to try it and see +what works for you. + +In either case you would use the =.hex= file produced with the [[http://www.pjrc.com/teensy/loader.html][teensy loader]] to upload to the microcontroller. Once the firmware is loaded and the keyboard is assembled, pressing the onboard reset button to update new versions of the firmware is -pretty cumbersome; instead use the "reset" button on the lower left -of the layout which has the same effect. - -I'm working on an experimental Forth-based firmware in the [[https://github.com/technomancy/orestes][Orestes]] -project, but that project is still in its infancy at the time of this -writing. +pretty cumbersome; instead use the "reset" button on the layout, which +has the same effect. ** Bill of Materials - 50 MX Blue switches: $29.00 (mechanicalkeyboards.com) - 50 diodes: $3.45 (radio shack, should be able to buy in-person) -- Base blank DSA keycap set: $18.00 (signatureplastics.com) -- Teensy 2: $16 (pjrc.com or mechanicalkeyboards.com) -- Acrylic materials: $11 -- Acrylic laser cutting: 7.5 at $3/min (varies by thickness of acrylic) - -- Labelled 104 keycap set: $20.00 (optional, replaces DSA set above) -- 5 MX Black switches: $8.50 (optional) -- 5 MX Red switches: $10.00 (optional) -- additional 1.5x DSA keycap: $1 (optional) +- Base blank DSA keycap set: $23.00 (signatureplastics.com) +- Teensy 2: $16, $3 shipping (pjrc.com) +- Acrylic materials: ~$16, varies by source +- Acrylic laser cutting: 7.5 minutes on a 100W Epilog laser; varies by source +- USB Mini-B cable: $5, various sources -=(+ 29 3.45 18 16 11 (* 3 7.5))= $99.95 plus tax/shipping +Recommended but optional: -- mechanicalkeyboards.com: free shipping in the US -- Signature Plastics (keycaps) US shipping: $8.00 -- PJRC (teensy) shipping: $3.03 +- 5 MX Black switches: $8.50 OR 5 MX Red switches: $10.00 +- additional 1.5x DSA keycap: $1 plus $8 shipping -*** Cost-saving Options - -There are a few ways to lower the cost further. Using [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=482][Matias]] key -switches could save you a fair bit if you go in on a 90-pack with -someone else, but they're a little harder to find keycaps for; the MX -caps won't work on them. Using wood for the case will reduce both the -materials cost as well as the amount of time needed to cut the case. - -Replacing the colored acrylic with transparent might also save a few -dollars. You could also use thinner acrylic for the switch plate too; -I cut mine in 4.5mm. A thinner spacer is inadvisable; even with 6mm -it's pretty tight. - -Another common trick is scavenging keycaps and switches from used -keyboards; something with Cherry or Alps switches should work. This -can be time-consuming though. +The base keycap set only has one 1.5x key, which is used for the inner +thumb keys. You can use a 1x key for one of them, but it looks kind of +tacky, so I recommend getting a second 1.5x keycap separately. *** Other Tools -You'll need a soldering iron, solder, a glue gun, a multimeter, wire, -wire strippers, and a 5-pin USB Mini-B cable. You'll also need seven M3 -machine screws with nuts; the length of the screws depends on the -thickness of the acrylic you use. You can add rubber feet to the -bottom to prevent the board from sliding around when placed on a desk. +You'll need a soldering iron, solder, a glue gun, a multimeter, hookup +wire, and wire strippers. You'll also need eight M3 machine screws +with nuts; the length of the screws depends on the thickness of the +acrylic you use. You can add rubber feet to the bottom to prevent the +board from sliding around when placed on a desk. ** Assembly -Once you have all the parts, the first thing to do is glue the -switches to the switch plate since there's no PCB to hold them in -place. Be aware that the screw holes unfortunately are not -symmetrical, so before inserting the switches it's important to ensure -that the plate is right-side-up. Use a drop of hot glue on the top and -bottom of each switch to affix it in place. - -[[wires.jpg]] - -Once the switches are in place, the matrix must be created. I -recommend getting red wire for the (positive) rows and black for the -(negative) columns. The rows need eight wires with the insulation -exposed at intervals matching the spacing of the switches; see the -above photo for details. You could also just use many short stripped -segments of wire instead of a contiguous piece. - -[[thumb-diagram.jpg]] - -Most of the row wires will need four segments of insulation, but -you'll need two with five for the rows with the inner thumb -keys. Physically the inner thumb keys look like two additional -columns, but logically they are treated as if they're both in column -number 6; the left key in row 3 and the right one in row 4. - -[[matrix.jpg]] - -The exposed sections of row wire should be connected to the higher of -the pins on the switch using a diode. Be aware that diodes are -directional! The band around the diode should point to the top of the -board. Take care with the upper row that you don't let the wire go too -close to the top edge of the board; avoid getting in the way of the -spacer layer. Once the rows are wired, the remaining (negative) pin of -each switch should be wired into the negative pin of the switch above -and below it with black wire. This should be slightly easier since no -diode is necessary. The photo above shows the completed matrix for one -side. Test each row and column as you go with a multimeter. You should -be able to get continuity from row to column when the corresponding -switch is activated. - -After the matrix has been wired on both sides, the next step is to -connect the microcontroller. The TMK firmware has the rows in pins D0, -D1, D2, and D3 of the microcontroller. - -|------------+----+----+----+----| -| row number | 1 | 2 | 3 | 4 | -|------------+----+----+----+----| -| pin number | D0 | D1 | D2 | D3 | - -You'll need to connect the rows -from both the left and right sides into the proper pin. There are more -columns than rows, so I used ribbon cable to bring the column -connections back to the microcontroller from the outside in. The -columns go to pins F0, F1, E6, C7, C6, B6, D4, B1, B0, B5, and -B4. - -|---------------+----+----+----+----+----+----+----+----+----+----+----| -| column number | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -|---------------+----+----+----+----+----+----+----+----+----+----+----| -| pin number | F0 | F1 | E6 | C7 | C6 | B6 | D4 | B1 | B0 | B5 | B4 | - -It's important to realize that when you flip over the board -in order to solder it, you have to flip over the schematic in your -mind too. If you count your columns from the left, you'll get them -backwards. (Which I actually did for the first half.) - -[[controller.jpg]] - -Once you've wired one side of the microcontroller in, it would be a -good time to test it. You'll need to compile and upload as per the -"Firmware" section above. At this point you should be reading real -keycodes from the half of the keyboard that you've wired. Once you've -confirmed that's working, continue with the other half. Then screw the -other layers in place and you're all set! +See the [[http://atreus.technomancy.us/assembly.pdf][assembly instructions]] PDF ** Inspiration @@ -294,9 +200,15 @@ otherwise) and get your name and link added here: - [[http://technomancy.us/173][Phil Hagelberg]] - [[http://blog.tarn-vedra.de/2014/04/reproducing-keyboard-science_1707.html][Moritz Ulrich]] - [[http://geekhack.org/index.php?topic=57007.0][Constantine]] +- [[http://blog.mattgauger.com/blog/2014/08/19/atreus-my-custom-keyboard/][Matt Gauger]] + +** Orestes + +A new [[https://www.flickr.com/photos/technomancy/14654421878][experimental build]] uses the [[http://pjrc.com/store/teensy31.html][Teensy 3]] microcontroller and +[[https://github.com/technomancy/orestes/tree/teensy3][Forth-based]] firmware, but this is not yet suitable for general-purpose use. ** License -Copyright © 2014 Phil Hagelberg +Copyright © 2014 Phil Hagelberg and contributors Released under the [[https://www.gnu.org/licenses/gpl.html][GNU GPL version 3]]