Summary of PSYLINK AN OPEN SOURCE NEURAL INTERFACE FOR NON-INVASIVE EMG
This article details "Prototype 8," an open-source neural interface using EMG signals for non-invasive PC control. The system combines muscle activity data with IMU readings to drive game inputs like Mario Kart via machine learning. It features a custom hardware setup communicating through Bluetooth to a Python-based software stack, aiming to translate hand gestures into keyboard and mouse events without invasive surgery.
Parts used in the Prototype 8:
- Main power board
- Arduino Nano 33 BLE Sense
- Boost converter
- AAA battery
- INA128 instrumentation amplifier
- EMG sensor
- IMU (on the Nano 33 BLE Sense)
- PC running PsyLink software
We don’t see many EMG (electromyography) projects, despite how cool the applications can be. This may be because of technical difficulties with seeing the tiny muscular electrical signals amongst the noise, it could be the difficulty of interpreting any signal you do find. Regardless, [hut] has been striving forwards with a stream of prototypes, culminating in the aptly named ‘Prototype 8’

The current prototype uses a main power board hosting an Arduino Nano 33 BLE Sense, as well as a boost converter to pump up the AAA battery to provide 5 volts for the Arduino and a selection of connected EMG amplifier units. The EMG sensor is based around the INA128 instrumentation amplifier, in a pretty straightforward configuration. The EMG samples along with data from the IMU on the Nano 33 BLE Sense, are passed along to a connected PC via Bluetooth, running the PsyLink software stack. This is based on Python, using the BLE-GATT library for BT comms, PynPut handing the PC input devices (to emit keyboard and mouse events) and tensorflow for the machine learning side of things. The idea is to use machine learning from the EMG data to associate with a specific user interface event (such as a keypress) and with a little training, be able to play games on the PC with just hand/arm gestures. IMU data are used to augment this, but in this demo, that’s not totally clear.
All hardware and software can be found on the project codeberg page, which did make us double-take as to why GnuRadio was being used, but thinking about it, it’s really good for signal processing and visualization. What a good idea!
Obviously there are many other use cases for such a EMG controlled input device, but who doesn’t want to play Mario Kart, you know, for science?
Checkout the demo video (embedded below) and you can see for yourself, just be aware that this is streaming from peertube, so the video might be a little choppy depending on your local peers. Finally, if Mastodon is your cup of tea, here’s the link for that. Earlier projects have attempted to dip into EMG before, like this Bioamp board from Upside Down Labs. Also we dug out an earlier tutorial on the subject by our own [Bil Herd.]
Source: PSYLINK AN OPEN SOURCE NEURAL INTERFACE FOR NON-INVASIVE EMG
- How does the system power the Arduino?
A boost converter pumps up the AAA battery voltage to provide 5 volts for the Arduino and connected EMG units. - What amplifier is used for the EMG sensor?
The EMG sensor is based around the INA128 instrumentation amplifier in a straightforward configuration. - Can I use this device to play games?
Yes, the project aims to allow users to play games on the PC with just hand or arm gestures after training. - Does the system use machine learning?
Yes, TensorFlow is used for the machine learning side to associate EMG data with specific user interface events. - How are data sent from the device to the computer?
Data is passed to a connected PC via Bluetooth running the PsyLink software stack. - What programming language powers the PC software?
The software stack is based on Python. - Which library handles Bluetooth communication?
The BLE-GATT library is used for BT comms. - What library manages input devices on the PC?
PynPut handles the PC input devices to emit keyboard and mouse events. - Why was GnuRadio mentioned in the project code?
GnuRadio is used because it is good for signal processing and visualization.
