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!
Supplies
- 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)
- Stripboard
- Solder
- 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.
Print:
- 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.
13 Comments
11 months ago
Such a cool project. Thanks for sharing.
Question 1 year ago
That's a neat project. I'm ordering the components to make one for myself.
Can't wait to play with it :)
I was still wondering: do you think it could be possible, instead of drawing letters into space for writing, to use dactylology alphabet?
Question 2 years ago
if I modify the wrist portion, would a pi pico be able to run this?
2 years ago
im thinking in iterating on that . to anybody considering , what i see to be improved is that the signal cables can be much thinner like reusing thin scrap usb charger or even phone cales , they're slimm , packed in 2-4 ,blinded . and the housing if using only cloth/fabric , and sewiong things can made it slimmer , more weareable, maybe use thin sheet of plastic or eva to make more stiff .
Question 2 years ago
Hello, would you mind adding a pdf with the name/code of each electronic and a picture? I would love to do your project but I live in a European country where amazon isn't an option and I have to order from aliexpress. For this reason I would like to compare images before ordering because it takes ~3 months for each item to be delivered (before covid).
If that isn't possible, could you at least give me the code for "Bluetooth Mate Gold"? I thought that it was just an arduino bluetooth module but the pins are named differently.
Thank you, I love your work.
2 years ago
Im having a difficult time finding a complete component list, I see the schem but the componets are listed as custom user item in my program, is there a better place to find a list of componets.
Reply 2 years ago
I've updated the repo with a PDF printout of the schematic that should have all part names listed.
Reply 2 years ago
thank you so much for the response, love your content!
3 years ago
I have a question.
Is em7180sfp discontinued.
Reply 3 years ago
As of May 2020, it's out of stock in many distributors, but it's not discontinued. Supply chains are dysfunctional due to the pandemic, and distributors will probably be re-supplied eventually. I'd recommend getting in touch with your nearest distributor (that's Arrow here in North America) to get a lead-time.
You can also contact EM Micro directly to confirm availability and order samples: https://www.emmicroelectronic.com/about/contact-sales/order-now?product=EM7180SFP
3 years ago
Cool, dude! Reminds me of this project, but yours is waaayyyyy sleeker.
https://www.hackster.io/purdue-mind/purdue-exomind-glove-1b32dc
Question 3 years ago on Step 6
I am definitely waiting for more info about the electronics. Looking good
3 years ago on Step 5
I specially like that on top of the technical aspect, the device looks really cool. Not just a bunch of cables and components but the development of the whole concept. Good job!