]> git.armaanb.net Git - atreides.git/blobdiff - README.org
Clarify non-canonical openscad case.
[atreides.git] / README.org
index 2c7e944d5d00f9124f947a05c4daef57a9a60b65..61028e8e8e826382a5fd30c5c0792229c9a483a6 100644 (file)
@@ -1,50 +1,62 @@
 * 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 be 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.html][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. It also allows for quicker iteration on
-design changes since alterations only require cutting a new case.
+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.
+versatile of the fingers. This design avoids both these problems while
+taking a more couch-friendly single-piece approach.
 
-[[atreus.jpg]]
+[[./atreus.jpg]]
+
+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) available
-unshifted, and all the modifiers are on the bottom row.
+Only a handful of punctuation marks (and no digits) are available
+unshifted, and all the modifiers are on the bottom row:
 
  :    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    fn  shift bksp ctrl || alt space enter super pgup  pgdn
+ :   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:
 
-The numbers and most punctuation are on the fn layer:
+ :    !     @     {     }     |       ||     pgup    7     8     9    *
+ :    #     $     (     )     `       ||     pgdn    4     5     6    +
+ :    %     ^     [     ]     ~       ||       \     1     2     3    ?
+ :   L2  insert super shift bksp ctrl || alt space   fn    .     0    =
 
- :    1     2     3     4    5        ||       6     7     8     9    0
- :    -     +     (     )    =        ||       /     [     ]     {    }
- :    !     @     #     $    %        ||       ^     &     *     ?    ~
- :                                    ||       `     _     \
+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.
+ :  insert home    ↑    end  pgup     ||       ↑     F7    F8    F9   F10
+ :    del   ←      ↓     →   pgdn     ||       ↓     F4    F5    F6   F11
+ :                                    ||             F1    F2    F3   F12
+ :              super shift bksp ctrl || alt space   L0             reset
+
+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
 
@@ -52,96 +64,168 @@ laptop's internal keyboard.
 
 This layout has five modifiers and 37 non-modifiers.
 
-I strongly prefer the feel and sound of tactile [[http://www.digikey.com/product-detail/en/MX1A-E1NW/CH197-ND/20180][Cherry MX blue]]
-switches for typing. However, I like having linear switches on the
-modifier keys (ctrl, alt, super, shift, and fn). [[http://www.wasdkeyboards.com/index.php/products/keyboard-parts/cherry-mx-red-keyswitch-mx1a-l1nn-linear.html][Cherry MX red
-switches]] are nice and light but are expensive and difficult to
-find. [[http://www.digikey.com/product-detail/en/MX1A-11NW/CH160-ND/91134][Cherry MX black switches]] are cheaper and easier to source, but
-may be too heavy, especially for keys under pinky fingers.
+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 [[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.
 
-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.
+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 [[http://www.digikey.com/product-detail/en/1N4148TR/1N4148FSTR-ND/458811][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]] from Signature Plastics has 52 1x keys plus a
-few extras we won't use. It claims on that page to contain only one
-deep key, but my shipment contained two, which I put under the index
-finger keys to help guide your hands without looking.
+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.
+
+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.
 
-*** Screws
+** Circuit Board
 
-Seven M3 machine screws and nuts hold the whole thing together. The
-length of the screws depends on the thickness of the materials you use
-for the case.
+TODO: describe
 
 ** Case
 
-Layered laser-cut acrylic; see [[file:case.svg][case.svg]].
+bottom side. The [[http://geekhack.org/index.php?topic%3D54759.msg1304117#msg1304117][mark II case]] (in the `case/dxf` directory) is
+available as a DFX file that you can convert to SVG or EPS for a laser
+cutter using 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]]
+TODO: the logo is missing from some of the case files and needs to be added back in.
+
+There is also a programmatically-implemented version of the case
+written in OpenSCAD; it is more flexible (you can tweak the number of
+rows/cols, etc and recompile) but it doesn't match the canonical case
+exactly; in particular the screw holes are placed differently.
+
+[[./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 micro USB cable you
-connect to the microcontroller.
+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, but with the recommended 4.5mm thickness it should
-be closer to four or five.
+nearly 6 minutes.
+
+Wood cases should be finished with sandpaper and finishding oil/wax.
 
 ** Firmware
 
-My [[https://github.com/technomancy/tmk_keyboard/tree/atreus][fork of the tmk firmware]] has support for the Atreus
-layout. Currently only supports software-dvorak--the default layer is
-all qwerty, but the punctuation keys send keycodes assuming that the
-qwerty->dvorak transformation will be applied to them, so they don't
-make sense otherwise.
+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
+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 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, 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: $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
+
+Recommended but optional:
+
+- 5 MX Red or MX Black switches: $8.50 - $10.00
+- additional 1.5x DSA keycap: $1 plus $8 shipping
+
+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, 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
+
+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
+
+These fine projects all provided inspiration for various aspects of
+the Atreus, as well as the folks on the =#geekhack= freenode channel.
 
-** Recommended Bill of Materials
+- [[http://ergodox.org][Ergodox]]
+- [[http://deskthority.net/workshop-f7/onehand-20-keyboard-t6617.html][OneHand]]
+- [[http://blog.fsck.com/2013/12/better-and-better-keyboards.html][keyboard.io]]
+- [[http://geekhack.org/index.php?topic=48718][ErgoT]]
 
-- 37 MX Blues @ $1.00
-- 5 MX Blacks @ 0.80
-- 42 diodes @ $0.052
-- Base keycap set: $18.00
-- Teensy 2: $16 OR Arduino Micro: $25
-- Acrylic materials: $11
-- Acrylic laser cutting: 6 at $3/min (varies by thickness of acrylic)
+** Builds
 
-=(+ 37 (* 5 0.8) (* 42 0.052) 18 16 11 (* 3 6))= -> 106.18 plus tax/shipping
+If you've built an Atreus, please add your name to [[https://github.com/technomancy/atreus/wiki/BuildLogs][the build logs wiki]].
 
-- Digikey (switches, diodes, arduino?) US shipping: $5.32
-- Signature Plastics (keycaps) shipping: $8.00
-- PJRC (teensy) shipping: $3.03
+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.
 
-** Cost-saving Options
+** Orestes
 
-There are a few ways to get the cost under $100. Using all black
-switches brings the total to $98, but I strongly recommend against
-this unless you're already familiar with the feel of the various
-Cherry switches. 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.
+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]]