PsyLink is experimental hardware for reading muscle signals and using them to e.g. control the computer, recognize gestures, play video games, or simulate a keyboard. PsyLink is open source, sEMG-based, neural-network-powered, and can be obtained here.

This blog details the steps of building it and shows recent developments. Subscribe to new posts with any RSS reader, and join the community on the Matrix chatroom.

Added Bills of Materials

This is long overdue, but the following prototypes now each have a BOM (bill of materials) in OpenDocument Spreadsheet (.ods) format, including a breakdown of the raw material cost, in case you'd like to replicate them:

3M Red Dot electrodes

Alex Lao suggested to try some 3M Red Dot electrodes, and so I got me some of the model 2248-50 (he actually suggested model 2660 but I mixed it up.) They are used for ECG patient monitoring, which is close enough, right?

photo of the electrodes

I connected two of them to EX1 and EX2 on an Electrode Module 3.1 and placed them on the flexor digitorum superficialis muscle (where I place the built-in PsyLink electrodes on most of the other pictures/videos too), and placed a third electrode on the radius bone near the wrist, and connected it to a Vref pin of a Power Module 4.2, which therefore acted as a ground electrode. The electrode module is the one from the previous blog post about the MCP6N11-100 instrumentational amplifier (for no good reason - I should have used INA128 for better comparability).

This is what they look like on my skin:

Photo of the electrodes on my skin

I recorded the following signals when pressing different fingers onto the table:

Screenshot of signals

The amplitudes of the wavelets were a little disappointing, but perhaps boosting the gain from 501x to 1001x-2001x would help.

The nice surprise was the specificity of the signals. I only saw signals when I actually used that muscle. Unrelated movements like twisting the wrist sometimes produce strong signals with the built-in PsyLink electrodes, but produced no signal with these. There could be many reasons for that:

It's good to see that it works, and there's clearly a potential, but I'm not blown away either. Next steps could be:

Note that before attaching the electrodes, I did not shave off hair and did not clean off skin oils with alcohol, but at least I was fresh out the shower. Ok, time to end this post, this is getting weird :).

Microchip 6N11-100

In my quest for premature optimization, I tried out yet another instrumentation amplifier chip: The Microchip MCP6N11-100. At 1.55€, this chip is about 4 times cheaper than the INA128 instrumentational amplifier (which is currently the cost bottleneck), and would make a 16-electrode-PsyLink about half as expensive. It also works with as little as 1.8V (while INA128 requires 4.5V), eliminating the need for power conversion if a 3.7V lithium battery is used.

Unfortunately the pin configuration is different from the INA128 that the Electrode Module 3.1 normally uses, so I had to jury-rig the board a little:

photo of a MCP6N11-100 on a PsyLink Electrode Module B3.1

But it worked, and the signal (the first one) is similar enough to those of INA128s (the last 4):

Screenshot 1 of signals with the MCP6N11-100 chip Screenshot 2 of signals with the MCP6N11-100 chip

These were recorded with a Prototype 9.1 with two Electrode Module 3.1, one with 1x MCP6N11-100 at a gain of x501, and one with 4x INA128 with gains of x501 as well. I'm wearing it much like on the P8 demo video, except that there's two electrode modules side by side, not just one.

In the top center of the first picture (light blue signal), you can see that there is some clipping in the negative peaks of the wavelet, which is not great, but other than that, it does seem to show very similar signals. (They shouldn't be identical, of course, because each signal measures electrodes at different locations on the arm)

There's also a similar chip, the MCP6N16, which has a smaller footprint size and better performance, but has slightly higher cost and worse availability. It's more difficult to solder, too. But it's good to know that there's the option to switch to that one if we ever need to.

I'm quite happy with this result, and perhaps the next iteration of the electrode module will be designed for this chip rather than the INA128. :)

Next Steps & Resources

The PsyLink Wiki now contains two new pages:

  1. Next Steps documents potential directions that he project could take in the future
  2. Resources points to external pages that are connected to PsyLink, similar projects, related news, papers, and educational material.

If you have suggestions for potential next steps or know about interesting links, please let me know, or add them to the wiki. :)

Mass production

More and more people are asking me to send them a PsyLink prototype! I've written some Tutorials to help the users to get started, and I'm working diligently to assemble them all. Can't wait to see the ways in which they will be used. :)

photo of 15 PsyLink modules

Request your own pre-assembled PsyLink now too!

Unlike software, unfortunately, you can't just download a PsyLink and use it right away. It takes me about 1-1.5 hours per module to assemble these. I wish I could automate and outsource more of the assembly process, but I don't see a low hanging fruit worth exploring so far. Still, I'm happy about the progress, since I'm now ~5x faster than when I sent out the first Prototype 7.

Currently, the assembly process consists of:

  1. File off the rough break-off points on the PCB to avoid scratching the skin
  2. Solder on the SMD components
  3. Do optical quality tests, as well as tests with a multimeter on critical parts
  4. Since my pin sockets have 16 pins and the Arduino has 15 pins, I cut off one of the pins of the socket
  5. Cut the downward-facing pins of all through-hole components down to ~1.4mm so that they don't stick out of the PCB and possibly scratch the skin
  6. Solder on the Through-hole components (except battery clips)
  7. Plug in the battery clips, bend its pins inward so that they don't scratch the skin, (the end may break off but that's ok), and solder them on
  8. Clean off solder flux stains with Isopropyl Alcohol on the sides that face the skin
  9. Cover the bottom of the power module with insulating tape to avoid skin contact
  10. Screw on the electrodes / legs
  11. Wire up everything as described in the wiki
  12. Push the elastic band through the respective holes to connect the boards together
  13. Do a test run of the entire system

Outsourcing pick&place and soldering of the components would be helpful, but the through-hole components (pin headers/sockets, switch, battery clip) need special treatment: I have to trim the pins so that they don't stick out of the PCB and scratch the skin. I doubt that any pick&place contractor will do this for me. This close-up shot of a Electrode Module 3.2 shows it well, that there are no sharp points under the pin headers, just round solder blobs:

Close-up of a B3.2 board

But I could at least outsource the soldering of SMD components. Let's see if I can find something cheap.

If you have tips to accelerate the assembly process, please reach out to us.

Page: 1 2 3 4 5 6 7 8 9 all