Gesture Controlled Robotic Car

by Upside Down Labs in Circuits > Sensors

150 Views, 0 Favorites, 0 Comments

Gesture Controlled Robotic Car

demo gif.gif

In this project, we’ll build a wireless EMG gesture controller to control a microbots.io ProtoBot using your forearm muscles.

The 3-channel EMG armband detects three simple gestures:

  1. Fist → Forward → Backward → Stop
  2. Flex → Turn Left
  3. Pinch → Turn Right

The armband detects your muscle activity, processes the gestures, and sends commands to the ProtoBot wirelessly using Bluetooth Low Energy (BLE).

No joystick. No buttons. No ProtoBot firmware changes. Just muscle-controlled movement.

You can also use the web-based configuration interface to view your EMG signals live and adjust gesture thresholds without reflashing the firmware.

Let’s build it!

Supplies

Sequence 01.00_01_30_30.Still008.png

Hardware

  1. ORIC OSEM armband
  2. ProtoBot
  3. USB-C data cable
  4. Computer or Android device for configuration

Software

  1. Chromium-based browser such as Chrome, Edge, or Brave
  2. NPG Lite Web Flasher
  3. ProtoBot armband firmware
  4. Companion Web Bluetooth configuration page

Firefox and Safari do not support the Web Serial/Web Bluetooth features required by this project.

How It Works?

demo gif.gif

The armband is built using the NPG Lite (Neuro PlayGround Lite), an ESP32-C6-based board designed for capturing biosignals.

It includes:

  1. 3 EMG channels to read muscle activity
  2. Dry electrodes for detecting muscle signals
  3. 512 Hz sampling rate for capturing EMG data
  4. BLE connectivity for wireless communication
  5. 6 NeoPixel LEDs for status and feedback
  6. Built-in accelerometer
  7. BOOT button to enter Config Mode

All gestures are detected using the three EMG channels.

To use the armband, wear it around your forearm and make sure all three dry electrodes have good contact with the muscles you want to measure.

Gesture Detection

pinch.gif
flex.gif
fist.gif

The three EMG channels work together to recognize different hand gestures.

  1. Ch1 (A0) is used to detect Fist and Flex.
  2. Ch2 (A1) is used to detect Flex.
  3. Ch3 (A2) is used to detect Fist and Pinch.

Fist

  1. Uses Ch1 + Ch3.
  2. Each time you make a fist, the ProtoBot changes its movement:
  3. Stop → Forward → Backward → Stop → ...

Flex

  1. Uses Ch1 + Ch2.
  2. The ProtoBot turns Left while the gesture is detected.
  3. When you release the gesture, it returns to the previous movement.

Pinch

  1. Uses Ch3.
  2. The ProtoBot turns Right while the gesture is detected.
  3. When you release the gesture, it returns to the previous movement.

Gesture Priority

If multiple gestures are detected at the same time, the controller follows this order:

Fist → Flex → Pinch

This makes sure a Fist is detected correctly instead of being mistaken for a Pinch.

Flash the Armband Firmware

01.png
02.png
03.png
04.png
05.png
06.png

You can install the armband firmware directly from your web browser using the NPG Lite Web Flasher. No Arduino IDE or extra software is required.

Step 1 — Connect the Armband

  1. Connect the NPG Lite armband to your computer using a USB-C data cable.
  2. Make sure the cable supports data transfer. Charging-only cables will not work.

Step 2 — Open the Web Flasher

  1. Open the NPG Lite Web Flasher using Chrome, Edge, or Brave.

Step 3 — Connect the Board

  1. Click Connect.
  2. Select the serial port for your NPG Lite armband.

Step 4 — Select the Firmware

  1. Open the Get From GitHub tab.
  2. Find and select Protobot_armband.
  3. The firmware will download automatically.

Step 5 — Flash the Firmware

  1. Click Flash.
  2. Wait for the progress bar to reach 100%.
  3. Do not disconnect the USB cable while the firmware is being flashed.
  4. Once the process is complete, the armband will restart automatically.

Board Not Detected?

If the armband doesn't appear, try these:

  1. Use a different USB-C data cable.
  2. Try another USB port on your computer.
  3. Hold the BOOT button while connecting the armband.
  4. Click Connect again.

Connect the Armband to the ProtoBot

turn onprotbot.gif

Now let’s connect the EMG armband to the ProtoBot.

  1. Turn on the ProtoBot.
  2. Make sure the ProtoBot is running its normal firmware. No changes are needed.
  3. The armband will automatically search for the ProtoBot.
  4. Once it finds the ProtoBot, it will connect automatically using BLE.

Check the Connection

The ProtoBot LED will turn white, and the armband LED will turn green when they are successfully connected.

Put on the Armband

wear armband.gif

Wear the armband comfortably around your forearm.

Place the three dry electrodes over the target muscles.

Make sure the electrodes have good and steady contact with your skin.

Correct electrode placement is important for getting clear EMG signals and reliable gesture detection.

Once the armband is connected to the ProtoBot, try each gesture one at a time to check that everything is working correctly.

Control the ProtoBot With Gestures

fist.gif
flex.gif
pinch.gif

Now that the armband is ready, you can control the ProtoBot using your hand gestures.

Fist — Change Movement

Make a fist to change the robot's movement.

Each time you make a fist, it moves to the next state:

Stop → Forward → Backward → Stop →

Flex — Turn Left

Make a Flex gesture to turn the ProtoBot Left.

When you release the gesture, the robot returns to its previous movement.

Pinch — Turn Right

Make a Pinch gesture to turn the ProtoBot Right.

When you release the gesture, the robot returns to its previous movement.

Sensitivity Tuning (Config Mode)

09.png
10.png
Sequence 01.00_05_30_26.Still011.png
Sequence 01.00_05_31_30.Still012.png
013.png
014.png
  1. Enter Config: Hold BOOT for 1 second (all LEDs turn blue).
  2. Calibrate: Open index.html in Chrome/Edge, click Connect, and drag sliders to adjust thresholds (Default: 150).
  3. After changing the threshold it have the joystick on web page you can see the action on that by doing the gesture after that you control the car it is only for prechecking all this is working correct or not
  4. Save & Exit: Hold BOOT for 1 second again to resume driving.


Status Indicators & Diagnostics

1.png
2.png
3.png
  1. Pixel 0 LED: Red (Disconnected), Green (Connected), Blue Flash (Command Sent)

Setup Checklist & Troubleshooting

1.Pre-Flight Checks:Verify firmware is flashed, ProtoBot is powered on with stock firmware, and electrodes make firm skin contact.

2.Verify Connection:Ensure Pixel 0 turns Green. If stuck on Red, type status in Serial Monitor.

3.Adjust Sensitivities:Raise thresholds if gestures trigger randomly; lower them if contractions are missed.