]> git.armaanb.net Git - atreides.git/blobdiff - README.org
Link to images of each revision in changelog.
[atreides.git] / README.org
index f6d64ac4e71bdd17e33736d13230bee8a9d7e557..e78bc5e58759c1815b083c99b43cb679f3b3f80d 100644 (file)
@@ -1,23 +1,14 @@
 * Atreus Keyboard
 
-The [[http://ergodox.org][Ergodox]] keyboard is an absolutely fantastic design; I use it every
-day at my office. However, I like to work away from the office
-frequently, and I thought I might try my hand at designing something a
-little more portable. The great thing about assembling my Ergodox is
-that it taught me there's really nothing magical about it; it's just a
-piece of circuitry with a bunch of switches read by a microcontroller
-that speaks the USB HID interface.
-
-The Atreus is meant to be complementary to the Ergodox as something
-smaller, cheaper, and more travel-friendly. The case measures 25x11cm
-and lacks even a number row, relying heavily upon the fn key. There is
-no PCB in this design, requiring [[http://wiki.geekhack.org/index.php?title=Hard-Wiring_How-To][a manual matrix wiring approach]].
-However, given that there are only 4 rows and 11 columns, this isn't
-as daunting as it could be.
+The Atreus is a mechanical keyboard designed primarily to match the
+shape of human hands and to be as portable as possible. The case
+measures 26x12cm and lacks even a number row, relying heavily upon the
+=fn= key. There is a circuit board for this design, but it's also
+possible to [[http://wiki.geekhack.org/index.php?title=Hard-Wiring_How-To][manually wire the matrix]].
 
 I've seen a number of existing DIY 40% keyboard designs, but most of
 them stagger the rows, which I find very annoying now that I've gotten
-used to the columnar layout of the Ergodox. In addition, many of the
+used to the columnar layout of the [[http://ergodox.org][Ergodox]]. In addition, many of the
 designs I've seen waste a lot of room on the space bar, failing to
 take into account the fact that the thumb is the strongest and most
 versatile of the fingers. This design avoids both these problems while
@@ -25,24 +16,26 @@ taking a more couch-friendly single-piece approach.
 
 [[./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
-[[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.
+See [[./changelog.md][the changelog]] for the various revisions made to the design since
+its initial release.
+
+** 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
+since the design is completely open source; see the bill of materials
+below.
 
 ** Layout
 
 Only a handful of punctuation marks (and no digits) are available
 unshifted, and all the modifiers are on the bottom row:
 
- :    '     ,     .     p     y       ||       f     g     c     r    l
- :    a     o     e     u     i       ||       d     h     t     n    s
- :    ;     q     j     k     x       ||       b     m     w     v    z
- :   esc   tab  super shift bksp ctrl || alt space  fn     -     /  enter
+ :    q     w     e     r     t       ||       y     u     i     o    p
+ :    a     s     d     f     g       ||       h     j     k     l    ;
+ :    z     x     c     v     b       ||       n     m     ,     .    /
+ :   esc   tab  super shift bksp ctrl || alt space  fn     -     '  enter
 
 The numbers and most of the punctuation are on the fn layer with a
 numpad-style arrangement under the right hand:
@@ -50,25 +43,20 @@ numpad-style arrangement under the right hand:
  :    !     @     {     }     |       ||     pgup    7     8     9    *
  :    #     $     (     )     `       ||     pgdn    4     5     6    +
  :    %     ^     [     ]     ~       ||       \     1     2     3    ?
- :  reset paste                       ||     hwdv          .     0    =
-
-An alternate layout has the numbers in a more traditional row across the top:
+ :   L2  insert super shift bksp ctrl || alt space   fn    .     0    =
 
- :    1     2     3     4    5        ||       6     7     8     9    0
- :    -     +     (     )    =        ||       .     [     ]     {    }
- :    !     @     #     $    %        ||       ^     &     *     ~    ?
- :  reset paste              `        ||     hwdv        pgup  pgdn   \
+The =L2= key switches it to the function layer, and tapping =L0= here
+brings it back to the first layer.
 
-I type in Dvorak but prefer to do the remapping in software rather
-than hardware so I don't have to change layouts when I switch to my
-laptop's internal keyboard. However, the =hwdv= key switches it to
-hardware Dvorak mode, which is useful for attaching to computers that
-may not have software Dvorak set up. The =paste= key sends
-shift+insert, while the =reset= button activates the bootloader,
-allowing easy reprogramming without opening the case.
+ :  home    ↑    end  insert pgup     ||       ↑     F7    F8    F9   F10
+ :    ←     ↓     →    del   pgdn     ||       ↓     F4    F5    F6   F11
+ :                                    ||             F1    F2    F3   F12
+ :              super shift bksp ctrl || alt space   L0             reset
 
-This is all a matter of firmware though; the layout is easy to change
-after the fact.
+The [[https://github.com/technomancy/atreus-firmware][firmware project]] includes a number of other options, including
+colemak, dvorak, and "software dvorak" which sends keycodes assuming
+the OS will perform the translation into dvorak. Adding new layouts or
+changing existing ones is easy.
 
 ** Parts
 
@@ -83,57 +71,62 @@ 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.
 
+For users that need to operate in sound-sensitive environments like
+open offices or libraries, [[http://deskthority.net/wiki/Cherry_MX_Clear][Cherry MX Clear]] switches are a popular
+choice since they still offer tactility withut the noise.
+
 *** Diodes
 
-In order to avoid ghosting, each switch needs a [[https://www.radioshack.com/product/index.jsp?productId=2062587][1N4148 diode]].
+In order to avoid ghosting, each switch needs a diode. The [[https://www.radioshack.com/product/index.jsp?productId=2062587][1N4148]] is a
+readily-available choice, but nearly any signal diode would work.
 
 *** 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.
+The circuit board design uses a [[http://www.pololu.com/product/3101][Pololu A-star micro]]. Hand-wired boards
+can also use a [[http://www.pjrc.com/teensy/index.html][Teensy 2]] or [[http://arduino.cc/en/Main/ArduinoBoardMicro][Arduino Pro Micro]].
+
+Be sure to get a microcontroller without headers so it will fit in
+between the bottom layer and the plate. USB micro is preferred over
+USB mini for this reason as well.
 
 *** Keycaps
 
-This [[http://keyshop.pimpmykeyboard.com/product/dsa-pbt-blank-sets][DSA-shaped base set]] (spherical indentations on the key, same
+This [[http://keyshop.pimpmykeyboard.com/products/full-keysets/dsa-blank-sets-1][DSA-shaped base set]] (spherical indentations on the key, same
 profile for each row) from Signature Plastics has 52 1x keys plus a
 few extras we won't use. There are two "deep dish" keys in that set
 which you can place under your index fingers on the home row to help
 guide your hands to the right spot without looking. However, you only
 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]].)
+so you might want to pick up an extra.
+
+Many keycap sets (not the one linked above) are "sculpted", meaning
+that keys that go in different rows have a different shape. While you
+can use these for an Atreus, it's unlikely you'll find a set with the
+correct number for each row, so it's more wasteful.
 
 ** Case
 
 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
+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. It features 8 screw holes and a kind of "stair step"
-design around the top and bottom of the key clusters.
+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]]
 
-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.
-
-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.
+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.5 or
+3mm. The spacer should be cut in 5mm; it needs to be at least as
+thick as the USB cable you connect to the microcontroller. I
+recommend using a USB cable with as thin a connector as you can
+find or sanding the connector down to the required thickness.
 
 ** Firmware
 
-The [[https://gitlab.com/technomancy/atreus-firmware/blob/master/readme.md][custom Atreus firmware]] is a small C project which
+The [[https://github.com/technomancy/atreus-firmware/][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
@@ -143,145 +136,52 @@ 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]] or Arduino tools to upload to the microcontroller.
+In either case you would use the =.hex= file you just produced with
+=avrdude= or the [[http://www.pjrc.com/teensy/loader.html][teensy loader]] to upload to the microcontroller. =make
+upload= should do what you need.
 
-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.
+Once the firmware is loaded and the keyboard is assembled, activating
+the hardware reset to upload new versions of the firmware is 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)
+- Base blank DSA keycap set: $23.00 (signatureplastics.com)
+- Teensy 2: $16, $3 shipping (pjrc.com)
+- Case materials: ~$16, varies by source
+- Case laser cutting: 7.5 minutes on a 100W Epilog laser; varies by source
+- USB micro cable: $5, various sources
 
-- 5 MX Black switches: $8.50 (optional)
-- 5 MX Red switches: $10.00 (optional)
-- additional 1.5x DSA keycap: $1 (optional)
+Recommended but optional:
 
-- mechanicalkeyboards.com: free shipping in the US
-- Signature Plastics (keycaps) US shipping: $8.00
-- PJRC (teensy) shipping: $3.03
+- 5 MX Red or MX Black switches: $8.50 - $10.00
+- additional 1.5x DSA keycap: $1 plus $8 shipping
 
-I haven't found a way to add the 1.5x keycap to an order of the DSA
-base set, so you might be stuck paying Signature Plastics shipping
-twice.
+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, and a wire cutter. A multimeter
+can come in handy for testing the connections but is optional. 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. You'll also need sandpaper and finishing oil for the
+wooden cases unless you have bought a kit.
+
+If you are building a hand-wired board you will also need a glue gun,
+hookup wire, and wire strippers.
 
 ** 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. Place all the switches in their holes, taking care to place the
-black switches where the modifiers go if applicable. Once the switches
-have been placed, flip the board over and place hot glue along the
-left and right side of each switch hole.
-
-[[./diodes.jpg]]
-
-Once the switches are in place, you'll need to solder the diodes
-in. For each side of the board start on the outside and work your way
-inward. Each switch has two metal contacts. The higher one is where
-you'll want to attach the diode. Each diode has a black ring on
-it. Cut the leg on the other side away from the ring and solder it to
-the higher switch contact. The other leg should point inward to the
-next switch. Once you've attached a diode to each switch in the row,
-you can start connecting them together. Solder the long leg of the
-diode to the long leg of the next diode in the row. The innermost
-diodes can have their long leg trimmed a bit; that's where you'll
-attach the hookup wire to connect it into the microcontroller.
-
-[[./wires.jpg]]
-
-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.png]]
-
-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. Both the Atreus and TMK firmwares have
-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 the right side to the left side,
-which then should be wired to 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.
-
-Depending on the firmware you want to use, you'll wire the columns
-differently. The simpler Atreus firmware simply starts at B0 and goes
-up to F4-6, while the more featureful TMK firmware jumps all over the
-place.
-
-Atreus:
-
-|---------------+----+----+----+----+----+----+----+----+----+----+----|
-| column number |  0 |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 | 10 |
-|---------------+----+----+----+----+----+----+----+----+----+----+----|
-| pin number    | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | F4 | F5 | F6 |
-
-TMK:
-
-|---------------+----+----+----+----+----+----+----+----+----+----+----|
-| 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 may be possible to adapt the TMK firmware to the consecutive pinout.)
-
-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.
+
+Hand-wired boards will want the [[http://atreus.technomancy.us/assembly-hand-wired.pdf][previous edition of the assembly instructions]].
 
 ** Inspiration
 
@@ -295,16 +195,20 @@ the Atreus, as well as the folks on the =#geekhack= freenode channel.
 
 ** Builds
 
-If you've built an Atreus, please let us know (pull request or
-otherwise) and get your name and link added here:
+If you've built an Atreus, please add your name to [[https://github.com/technomancy/atreus/wiki/BuildLogs][the build logs wiki]].
+
+There's also a [[http://librelist.com/browser/atreus/][mailing list]] for people who have built or ordered an
+Atreus or are interested in doing so. To join, simply email
+=atreus@librelist.com= with a subject of "join" and reply to the
+confirmation.
+
+** Orestes
 
-- [[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]]
+A new [[https://www.flickr.com/photos/technomancy/14654421878][experimental build]] uses the [[http://pjrc.com/store/teensy31.html][Teensy 3]] microcontroller and
+ARM [[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]]