Introduction: Somatic - Data Glove for the Real World
4mm-diameter neodymium cylinder magnets4mm-diameter neodymium cylinder magnetsThe Somatic is a wearable keyboard and mouse that's comfortable, unobstructive, and ready for all-day wear. It's loaded with all the hardware to translate hand signs and motions into actions, like the somatic component of a spell in Dungeons and Dragons.
For the most up-to-date design files, code, and utilities, visit the project page on GitHub.
Each knuckle has a Hall sensor, and the first segment of each finger has a magnet. Flexing a finger pivots its magnet out of position, allowing the Somatic to map your hand.
An EM7180SFP IMU near the thumb provides 9-degree tracking. Eventually, this will allow you to move a mouse cursor by pointing, and type letters by drawing them in midair.
The Somatic is still an early-stage project, and will be a challenging build for experienced makers.
The Somatic project's priorities are:
- Control any wearable computer with a heads-up display
- Ready to use all day, instantly, with no Internet
- Doesn't cause fatigue or interfere with other tasks
- Fast enough to do a quick search in less than 10 seconds
The Somatic will not:
- Reproduce your hand in 3-D space
- Let you type on a virtual keyboard
- Use any cloud services at all
The Somatic project is MIT licensed, copyright 2019 Zack Freedman and Voidstar Lab.
Thanks to Alex Glow for modeling the Somatic!
- 4x three-lead JST harnesses
- 4x A3144 Hall sensors
- At least 4 10mm x 4mm neodymium cylinder magnets
- One pair of weightlifter's half gloves
- 1/8" paracord
- 1/8" or 3/16" heatshrink tubing
- PLA or PETG filament
- TPU filament
- 4x 6mm M2.5 screws
- 4x 8mm M2.5 screws
- 8x M2.5 nuts
- 1x 303040 Li-Ion battery
- Electronic components (see schematic in repository)
- Stranded wire, preferably silicone-insulated and flexible
- Bus wire, for constructing stripboard circuits
- Recommended: Mannequin hand
You must have access to a printer that can print both a rigid material like PLA and a flexible material like TPU.
Step 1: Step 1: Construct the Hall Sensors
Clone or download the Somatic GitHub repo and load your 3D printer with rigid filament.
- 4x Hall Holder.stl
- 4x Hall Cover.stl
Clip the leads of an A3144 sensor to about 3mm.
Jam it into a JST harness' connector, as shown above. Note the orientation of the sensor and connector.
Thread the harness through a Hall Holder as shown. The connector and sensor should bottom out and be fully recessed into the Hall Holder.
Cut a section of paracord about the same length as the JST harness' wire. Remove its inner strings and slip the 'gutted' paracord over the wire.
Cut a piece of heatshrink about 10mm long and thread it all the way down the wire, nearly all the way into the Hall Holder. Shrink it so it seals the paracord's fibers, and push it into the Hall Holder. It should fit snugly.
Cut another piece of heatshrink about 10mm long and use it to seal the other end of the paracord, leaving about 20mm of exposed wire. The bunched-up paracord will shield the wires without restricting your movement.
Push a Hall Cover onto the Hall Holder to seal the sensor and connector inside. Friction should keep it in place, but you may need to apply a dab of glue.
Repeat three more times to create your set of Hall sensors.
Step 2: Step 2: Construct the IMU
Using rigid filament, print:
- 1x IMU Holder.stl
- 1x IMU Cover.stl
Solder wires to the VCC, SDA, and SCL pads of the EM7180SFP module. Solder another wire to GND, bridging it to the SA0 pad. The Host_Int pad is not used. I strongly recommend color-coding the wires to avoid confusion later.
Like the Hall sensors, insert the IMU assembly into the IMU Holder, bottom it out, sleeve the wires with gutted paracord, and apply heatshrink.
Press-fit or glue the IMU Cover onto the IMU Holder assembly.
Step 3: Step 3: Assemble Magnets and Mount Glove Elements
Using rigid filament, print four total Magnet Holders. The sizes needed (Short, Medium, and Large) will depend on the size of your glove - try to use the longest Magnet Holder on each finger that will fit between your knuckle and the end of the glove.
The Magnet Holders don't need support material.
Don't insert magnets into the Magnet Holders yet!
Put the left glove on your hand. The right glove is not used in this project.
Moving finger by finger, place a Hall sensor assembly and Magnet Holder and mark their positions.
- The sensor and Magnet Holder should nearly touch when your hand is as open as possible.
- Neither the sensor or Magnet Holder should be on your knuckle when you make a tight fist.
- It's more important that the sensor and Magnet Holder are not on your knuckle, than they are close together.
Mark a position for the IMU above your thumb.
Take the glove off, and put it on your mannequin hand if you got one. DO NOT APPLY GLUE TO SOMETHING YOU'RE WEARING!
Apply contact cement to the bottom of each Magnet Holder, Hall sensor assembly, and IMU assembly. Apply contact cement to the marked areas of the glove. Allow the adhesive to set up and assemble your glove. Allow plenty of time for the glue to cure.
I highly recommend using contact cement. It's the only adhesive I've used that strongly bonds PLA to cloth and leather.
Step 4: Step 4: Assemble the Electronics
Implement the circuit specified in the schematic. I wish I could provide better guidance for this step, but I haven't found a good utility to diagram stripboard circuits. At some point, I'll replace this with a custom PCB.
You'll need to build the main board on a piece of perfboard 36mm x 46mm, with a cutout for the Teensy. It'll be a tight fit.
The vibrating motor and its driver circuit fit in the left compartment, and the Bluetooth Mate fits in the right compartment. All other components - the Teensy, battery, charge controller, and other electronics - fit in the central compartment.
Once you've confirmed the fit, solder the Hall sensors and IMU onto the board.
Test all electronics thoroughly before moving forward!
Step 5: Step 5: Final Assembly
Using rigid filament, print:
- 1x Nameplate.stl
- 2x Cosmetic Plate.stl
- 1x Top Plate.stl
- 1x Power Switch
None of these parts require support materials.
Using flexible filament, print:
- 1x Buckle Strap.stl
- 1x Holey Strap.stl
- 1x Loop Brother.stl
The Strap components need support material. It's OK if their removal leaves sloppy surfaces - the supported areas are hidden inside the wristlet's body.
Insert a 2.5mm nut into each of the four pockets around the central compartment. Apply a tiny amount of contact cement to each nut to keep it from falling out.
Assemble the glove:
- Use Zap-a-Gap or another high-quality cyanoacrylate glue to mount the Nameplate and Cosmetic Plates on the Top Plate. Allow glue to cure.
- Place the Power Switch onto the SPDT switch.
- Mount the Top Plate. It should snap into place. Take care to guide the Hall and IMU sensor wires into their channels and prevent them from getting crossed or pinched.
- Install four 6mm M2.5 screws into the four holes around the Nameplate. They should mate with the nuts you installed earlier.
- Thread the Loop onto the Buckle Strap.
- Insert the Strap elements into the notches on the sides of the wristlet assembly. Use the remaining screws and nuts to secure them. The left side is thicker than the right side and needs the longer 8mm screws.
- Your Somatic glove is complete!
Step 6: What's Next?
The Somatic project is a work-in-progress. The objective is to acquire samples of each letter, so a TensorFlow Lite model running locally on the glove can detect handwriting. This is still a long way off, but you can install the provided firmware to stream data back to a computer over Bluetooth or USB.
The training utility is fully functional and can rapidly acquire plenty of test gestures. Soon, I'll add the ability to train a neural network against the collected data, and transmit the model to the glove.
Thanks for following along! I can't wait to see where you take the Somatic project.