EMG V3.0 power guidance — November 4, 2026: For the current board shown below, the recommended operating setup is regulated split ±5 V (+5 V / GND / −5 V), with a nominal 0–5 V SIG design envelope. Use the current V3.0 manual for the supply wiring, ADC checks, isolation and evidence scope. This recommendation does not establish factory-certified minimum/maximum ratings. The older single-5 V and two-9 V examples remain withdrawn.
Project Overview
Arduino Nano + EMG muscle sensor servo control: In this project, an EMG sensor reads the small electrical signals your muscles generate when you flex, and an Arduino drives a servo in real time based on that activity. With electrodes on your forearm, you can open and close a servo-driven claw (or control a motor or LED) using your muscle signals.
This is foundation tech used in prosthetics, biofeedback, and gesture-controlled interfaces.
- Time: ~30 minutes
- Skill level: Intermediate
- What you will build: An Arduino-driven servo that opens and closes when you flex your forearm, a building block for a robotic claw.
Parts List
From ShillehTek
- EMG Muscle Signal Sensor Kit - reads muscle activity as an analog voltage.
- SG92R Micro Servo - actuates the claw based on muscle flex.
- Arduino Nano V3.0 Pre-Soldered - reads EMG on an analog pin and commands the servo.
- 120 PCS Dupont Jumper Wires - quick prototyping connections.
External
- EMG electrodes (the kit includes the leads and 3 sticky electrodes)
- Split supply for the EMG board: two 3×AA battery holders with six fresh alkaline AA cells (about ±4.5 V), or another battery-powered split supply of no more than ±5 V
- Meter for rail-polarity checks; ADC signal conditioning where required
- Optional: 3D-printed robotic claw or grabber
Note: This is a hobby/educational sensor. It can not replace medical-grade EMG equipment and should not be used for diagnostic purposes.
Step-by-Step Guide
Step 1 - Plan the Electrode Placement
Keep the electrodes disconnected from the body during wiring and bench checks. Identify the reference lead with the continuity check in the EMG V3.0 manual; connector colors alone do not establish their functions. Use an appropriately isolated body-connected measurement setup before placing electrodes on a person.

Step 2 - Connect the Supply and Analog Interface
With electrodes disconnected, follow the manual's regulated split-supply setup: +5 V to +Vs, 0 V to GND, and −5 V to −Vs. The simplest build is two 3×AA alkaline packs: pack A positive to +Vs, pack A negative joined to pack B positive on GND, and pack B negative to −Vs, which gives about ±4.5 V. Verify both rails with a meter. The −Vs pad is the negative rail, not ground. A single Arduino 5 V output is insufficient, and the earlier two-9 V example remains withdrawn.
SIG has a nominal 0–5 V design envelope at this supply. Check the actual signal against your Arduino's ADC limits and use any required scaling/protection before connecting it to A0; connect signal GND to the ADC ground within the isolated system. For 3.3 V controllers, suitable signal conditioning is required.
For body-connected operation, keep the complete system battery powered and electrically isolated from mains, chargers, grounded instruments and mains-connected USB. Disconnect electrodes for programming or bench tests. Power the servo according to its own specifications and connect its control signal to D9. See the EMG V3.0 manual for the full setup.
Step 3 - Upload the Sketch
Goal: Read the EMG analog value, compute movement vs baseline, and command the servo.
What to do: Only after the supply, isolation and ADC compatibility checks are complete, upload this sketch to your Arduino. The code captures a baseline at startup, prints the raw reading to Serial, and closes the servo when the signal difference exceeds a threshold (tune it for your skin).
Code:
// Requires verified sensor supply and ADC-compatible A0 input.
#include <Servo.h>
const int EMG = A0;
Servo claw;
const int CLOSED = 0, OPEN = 90;
const int THRESHOLD = 350; // tune for your skin
int baseline = 0;
void setup() {
Serial.begin(9600);
claw.attach(9);
long sum = 0;
for (int i = 0; i < 100; i++) { sum += analogRead(EMG); delay(10); }
baseline = sum / 100;
}
void loop() {
int v = analogRead(EMG);
Serial.println(v);
int diff = abs(v - baseline);
claw.write(diff > THRESHOLD ? CLOSED : OPEN);
delay(20);
}
Expected result: The servo responds once the signal exceeds the threshold. Observe Serial Monitor readings during body-connected measurements only with a battery-only, electrically isolated recording setup; keep chargers and mains-connected USB disconnected.
Step 4 - Flex and See It Move
Goal: Confirm your electrode placement, wiring, and threshold produce consistent motion.
What to do: Flex your forearm and watch the servo. If it triggers too easily or not at all, adjust THRESHOLD to match your signal strength.
Expected result: Flexing causes the claw to close (or move toward closed), and relaxing causes it to open.
Step 5 - Where to Take It Next
Goal: Explore safe, realistic next steps based on the same EMG-to-actuator concept.
What to do: Consider these extensions:
- Two electrode groups to distinguish flex vs extend for bidirectional control
- Drive a 3D-printed prosthetic hand with 5 servos for finger-by-finger movement
- Use as a gesture controller for video games (combine with Pro Micro HID)
- Log signals for biofeedback and rehab applications
Expected result: You have a clear direction for expanding the project after reviewing the power, input protection and isolation requirements for the expanded setup.
Conclusion
You built an Arduino Nano project that reads an EMG muscle sensor and uses that signal to move a servo claw in real time. Once your electrode placement and threshold are dialed in, this becomes a strong starting point for biofeedback demos, gesture controllers, and prosthetic-style mechanisms.
Want the exact parts used in this build? Grab them from ShillehTek.com. If you want help customizing this project or building something for your product, check out our IoT consulting services.
Project photo credit: Instructables (reference source for this version).







