Chen-Jui (Ray) Chang Portfolio
TouchLens / Embedded robotics

A gripper you can
control and inspect.

I'm building a tactile gripper around an ESP32 and a servo-driven mechanism. I've assembled and tested the actuator, debugged its I2C wiring, and tested an FSR402 sensor on a breadboard. BLE firmware and a browser controller are prepared for the next round of testing.

Independent project · Jun 2026–present

Ray's assembled gripper showing gears, servo, and jaw linkages
My physical prototype / Servo, gears, and linkage

Physical prototype

01 / HARDWARE

This is my assembled gripper prototype. I used Nikodem Bartnik’s 3D Printable Modular Robot Gripper as the mechanical starting point, then worked on hardware integration, firmware, and testing.

Ray's physical 3D-printed gripper prototype, showing meshing gears, servo, bolted linkages, and jaws
My prototype photo. Base mechanical design: Nikodem Bartnik’s 3D Printable Modular Robot Gripper. My contribution is the assembly, system integration, control firmware, and bench testing.

How the system connects

02 / CONTROL
COMMANDSBrowser BLE controller

Prepared interface for position, hold, and PWM release; hardware connection test pending

CONTROLESP32

Command handling and sensor readings

ACTUATIONPCA9685 + servo

I2C commands drive PWM output

SENSINGFSR402 + 10 kΩ divider

Breadboard-tested sensor; firmware includes raw ADC telemetry

What I built and tested

  • Assembled the gripper using an existing mechanical design and connected an ESP32, PCA9685 driver, and DS3225MG servo with a separate 5 V supply.
  • Diagnosed an initial no-motion fault with an I2C scan. Correcting the control wiring made the PCA9685 respond at address 0x40, then the servo moved successfully.
  • Tested the bare mechanism across PWM counts 120–350 and tested an FSR402 separately using a 10 kΩ divider on GPIO34.
  • Prepared BLE command handling and a browser controller for position, hold, PWM release, and raw sensor readings. End-to-end BLE testing remains pending.

Firmware decisions

The firmware starts the gripper in an open position, constrains commanded pulse values, and drives the servo through the PCA9685 over I2C. BLE write commands control the actuator, while notifications report FSR readings and commanded state.

The FSR uses a 10 kΩ voltage divider on GPIO34 and 12-bit ADC readings. The code averages ten samples and schedules telemetry every 200 ms. These are raw sensor readings, not calibrated force measurements; actual communication timing has not been measured.

System structure

ControllerESP32 Dev Module / NodeMCU-32S
Actuation interfacePCA9685 at 0x40 · channel 0 · 50 Hz PWM
SDA GPIO21 / SCL GPIO22
ActuatorDS3225MG servo
SensorFSR402 / 10 kΩ divider / GPIO34
Wireless interfaceBLE writes and notifications implemented in code; hardware test pending

Current development stage

Next, I'll mount the FSR with a foam contact layer, measure its no-contact baseline, and record first-contact and gentle-grip readings. Then I'll test the BLE controller and use the measurements to develop automatic contact stopping.

Pulse 350 is the documented open position; 120 was tested only with the bare mechanism. The closing limit must be measured again after adding the sensor and foam. Pulse 250 is an initial test setting, not a validated force threshold.

The Days 1–2 notebook records wiring, debugging, servo tests, and breadboard sensing. Day 3 lists planned experiments. Source and test notes are available on request while the repository remains private.

Complete prototype wiring

03 / ELECTRICAL INTEGRATION

USB powers the ESP32 logic, while a separate 5 V supply powers the servo through the PCA9685. I²C carries actuator commands. The FSR402 and 10 kΩ resistor form a voltage divider for GPIO34, with a shared ground across the system.

Complete TouchLens wiring: ESP32 USB power, PCA9685 I2C and separate servo supply, channel 0 servo, and FSR402 voltage divider
Prototype wiring documented in the handoff. Click to view the full-size diagram. VCC is the driver's 3.3 V logic supply; V+ is the separate 5 V servo supply. This module-level diagram describes the wired prototype, rather than the proposed interface PCB.

The FSR was tested on a breadboard. Mounting it on the fingertip, measuring its baseline, and recalibrating the closing limit remain the next steps.

NEXT HARDWARE REVISION · UNBUILT

A proposed interface PCB

This new KiCad layout translates the prototype wiring into a small board connecting an external ESP32, PCA9685 module, and force sensor. The servo uses a separate power connection. It's a proposed revision prepared with coding assistance; fabrication and bench testing are still pending.

Actual KiCad top copper and silkscreen export of the proposed TouchLens interface PCB
KiCad 8 layout check: zero violations and zero unconnected items under default constraints. Electrical performance hasn't been tested. Native schematic and module pinout review remain required.

Download editable KiCad board, pin assignments, and review notes