Giter Club home page Giter Club logo
Please see the GeekHack thread on this topic for details.

http://geekhack.org/index.php?topic=41422.0

This project is built around the Teensy 2.0 and is currently using
debug tools from PJRC. Please find the hid_listen tool from PJRC
in order to receive the debug messages from the test DodoHand 
firmware.

At attempt at some more coherent notes:

A Brief History

The DataHand keyboard is a design that I have come to rely heavily
upon and do not want to be without. It allows me to type pain-free
for hours at a time, day after day. DataHand Systems has been out
of production for some 10 years now, and their website has even
recently been taken down so I feel left to my own devices to ensure
a long-term future of pain-free typing. This has spawned the DodoHand
project - an attempt to resurrect the now-extinct DataHand.

So you want to create a DodoHand

Current status: The finger switch design is usable. The thumb cluster 
is not yet designed. A case has been designed by Turbinia, but has 
never been built. There are provisions in hardware for supporting an 
EasyPoint or another joystick but these have not been implemented in
software.

The first step is to get all the parts headed your way. There is 
a BOM.ods (Bill of Materials) in the documentation folder which 
contains a list of the parts needed. That should be your guide.

- Electronics:

There are part numbers and links to Digikey which should make
it easier to get the electronics order placed. 

- 3D-printed parts:

In the 3D_models directory the files plf.scad and show_prf.scad 
should be opened with a recent version of OpenSCAD, compiled, and 
exported as .STL files. These can then be uploaded to Shapeways 
and printed in the "Black, Strong and Flexible" material. Please 
note that there are some fairly tight tolerances and that the 
design requires a bit of flexibility in the printed models in 
order to retain the magnets and center button clips, so don't 
try to print them in an inflexible, or fragile material, or one
with less fidelity than the SLS Nylon "Black, Strong and Flexible".

- PCB:

In the sch_and_pcb folder open up kicad_fingers.brd with a recent
build of KiCAD (I have been working with a build from sources
downloaded in November, 2013) and plot the Gerber files. Verify 
that the drill file matches up with the other files using gerbview
or another Gerber file viewer, then send to a suitable PCB fab
operation like OSH Park, pcbwing, etc. Note that OSH Park will
silently drop overlapping holes so the double-sided TRRS connector
footprint will not be manufactured exactly correctly, but is very
usable anyhow.

Note that you're likely going to need to edit the KiCAD library 
settings in order to point KiCAD at the appropriate library files
in the component_lib directory.

- Metal "clips" which serve as a magnetic attractor

These you'll need to fabricate on your own until/unless I (or you!) 
can find a shop to make them. There is a drawing: tooling/clip_bending_jig.dxf
which I used to create a bending jig. LibreCAD was used to create 
this drawing (turn various layers on/off to help see what's going on).
I substituted 1mm pins for all positions since that is what I was 
able to find from McMaster-Carr, and have been satisfied with the 
results. I used 7075 aluminum IIRC for the body of the jig. Be 
certain to order several drill bits of these small sizes - they're 
very fragile. Also, find a drill press or mill - you aren't likely 
to be successful trying to drill these holes by hand. I think that
0.045"x0.015" strips of mild steel will generate about the right 
force. Some experimentation will likely be needed to get that perfect.
This material can be sourced as a roll of 0.015" shim stock. Please be 
careful when releasing the coiled shim-stock from the strap that
holds it. It will jump out and try to cut your face off if you give
it half a chance to do so.

I am working towards getting a manufacturer lined up for the metal
clips. The first step is a clear mechanical drawing and I hope that
tooling/clip_1_mech.dxf fits that description.

Assembly

The only challenging part of assembly is fitting the 3D-printed parts
together. The Shapeways process has varied enough that some batches
fall right together without much work while others require quite a 
bit of time with a hobby knife, pick, and pin vise. These tools are
needed to re-open the passages for the infrared LED and phototransistor
leads, remove partially sintered material that was not cleaned away
by shapeways, and trim away excess material when their process is 
running on the extra-material end of the spectrum. You are likely
to spend between 2 and 15 minutes on each finger, depending upon 
your luck with Shapeways. Be thorough with the pick in removing
partially sintered material, or each time you insert a part, it
won't go well and you'll end up picking out another little batch
of dust to clear up the void that should have been there.

You should consider ordering a solder-paste stencil for each side
of the PCB. I did the 160 0-Ohm jumpers by-hand, meting out little
dabs of paste onto each pad. That went fine, but I would really
have liked to be able to just squeege across and get on to dropping
those little buggers onto their homes. If you do this, let me know
how it goes!

Don't be afraid of SMD soldering if you haven't done it before.
Particularly with a hot-air wand, it is magically easy. Just a dab
of paste on each pad, drop the part into position, warm it up, and 
when the solder flows the part is pulled into the right spot by
surface tension in the solder. It is just so cool!

Tools used for Assembly:

Here is the list of tools that I recall using so-far in this process:

- a file for cleaning up the little tabs left on the edge of the PCB
  which inevitably get placed right in front of the TRRS connector 
  which is the one spot that they cannot be tolerated.
- no-clean flux
- no-clean wire solder (leaded)
- no-clean solder paste (leaded) (in a syringe)
- no-clean de-soldering braid
- temperature controlled iron - small chisel tip
- hot-air re-work wand
- flush-cut lead snips
- various curved and straight tweezers
- bench shear for cutting metal clips
- dial calipers for measuring and setting metal clip dimensions
- combination square for controlling cuts on bench shear
- diagonal cutters for trimming metal clips to length.
- digital multimeter for testing solder joints
- dental pick
- hobby knife
- Mill for accurately placing holes in bending jig
- tiny drill bits for holes for 1mm pins in bending jig
- pin vise and assorted pin vise drill bits for opening IR lead passages

Software Tools used in project:
- OpenSCAD (build from recent sources) [3D models of switch mechanicals]
- KiCAD (build from recent sources - November, 2013 or later) [schematic, PCB]
- LibreCAD (version 1.0.1) [2D mechanical drawings]
- LibreOffice [Bill of Materials]
- Blender [case design, .stl file validation]
- Inkscape [documentation, logo]
- avr-gcc [compiling software for ATMega32U4 micro]
- GNU make [controlling build process]
- teensy_loader_cli [flashing ATMega32U4 through USB via teensy bootloader]
- simavr (optional) [extreme AVR debugging]
- git [distributed version control]

Programming the keyboard

Yeah, about that... I don't have the actual keyboard firmware written
quite yet. src/led_test.c scans the matrix of the right-hand side of
the keyboard via I2C and recognizes switch presses, and also scans the
left-hand side, but that is as far as I have currently taken it. Soon...

In any case, the Teensy 2.0 comes with a nice bootloader, and the
tactile switch SW1 is hooked to the teensy reset switch which starts
the bootloader. If you get the paths set correctly in Makefile for 
your system, and type make test_prog, the source will build and then
wait to recognize the Teensy bootloader - just press that reset at
that time and away you go.



dodohand's Projects

commsdsl-specification icon commsdsl-specification

Please refer to original CommsDSL-Specification project. This is intended just to serve as a source for Pull-Requests to it. Specification of Domain Specific Language (DSL) to define binary communication protocol for comms_champion project.

rtclib icon rtclib

A fork of Jeelab's fantastic RTC library

viv-prj-gen icon viv-prj-gen

tcl scripts used to build or generate vivado projects automatically

voronusers icon voronusers

Voron Community mods, slicer profiles and firmware configurations.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.