01 Overview 02 Why 03 Hardware 04 Software 05 Integration 06 Review 07 Labs
01 Overview

Ender Refab:
Accessible
Pen Plotter

An Ender 3 3D printer converted into a gesture-controlled pen plotter — enabling people with limited hand or arm mobility to draw and create using only a webcam and their hand.

2025–2026 Project Timeline
3 Members Team Size
Assistive Tech Domain
Pen plotter blueprint
02 Why Authored by Miles

The Problem

[Miles — describe the problem here. What barrier do people with limited hand or arm mobility face when it comes to drawing, writing, or creative expression?]

[Continue here — why does this barrier matter socially, emotionally, academically?]

[Stat or fact about affected population]

[Miles — fill in with a real number or finding.]

[Stat or fact about creative access]

[Miles — fill in with a relevant finding.]

[Cost / availability of existing solutions]

[Miles — existing AT tools for drawing, their price point, and limitations.]

Authored by Miles

Who Experiences This Problem?

[Miles — describe the target users. Specific conditions: cerebral palsy, muscular dystrophy, spinal cord injuries, ALS. How does motor impairment affect the ability to draw, write, or create?]

[Did you research or speak with anyone? What did you learn about what creative access means to them?]

[Miles — add a photo or illustration here]
Authored by Miles

How It Helps.

[Miles — explain how gesture-controlled drawing removes the barrier you described. What does this device actually give someone with limited motor control?]

[Connect back specifically to the conditions and people you described in the previous section.]

No Physical
Contact
Real-Time
Response
Actual Ink
on Paper
Standard
Webcam
[Demo video — add when recorded]
03 Hardware Authored by Troy

Hardware Design & Build

Design Process

[Troy — overview of design decisions and iterations. What were you trying to solve mechanically? What didn't work? What's the final approach?]

Electronics & Wiring

[Troy — Ender 3 mainboard, servo, Arduino Leonardo for solenoid / E-stop, relay, power. How does it all connect?]

Assembly

[Troy — step-by-step assembly. Order of operations, anything tricky to get right.]

[Troy — CAD render or model screenshot]
[Wiring diagram]
[Build photo]
Authored by Jacob

Y-Axis Extension

The stock Ender 3 has a 220 × 220 mm build area — just short of letter paper (216 × 279 mm). For a plotter used with real paper, that gap matters. The Y-axis was extended to close it.

01

Custom extension mount

3D-printed Y-axis bed extension mount repositions the carriage attachment for extra travel.

02

Longer guide rods

Replaced stock Y rods with longer ones to support the full range of motion.

03

Firmware

Updated Y_MAX_POS in Marlin's Configuration.h from 220 → 279.

04

Software bed dimensions

Control software updated to match — drawings now scale correctly to full letter paper.

Download STL ↓
[Photo of extended Y-axis — add from your photos]
[Extension mount]
[Guide rods]

Firmware change

#define Y_MAX_POS 220  // stock
#define Y_MAX_POS 279  // extended
04 Software Authored by Jacob

The Control Software

A custom Python desktop app built around one goal: let someone with limited hand or arm mobility create drawings without ever touching a mouse or keyboard.

Input Modes

  • Hand gesture drawing — the primary accessible input. Pinch to draw, open hand to lift. No physical contact required.
  • Freehand canvas — mouse or touchscreen drawing converted to G-code paths.
  • Geometric patterns — spirographs, fractals, Lissajous curves. Complex drawings with zero motor input.
  • Handwriting generation — type any text; the app converts it to realistic pen strokes.
  • SVG import — load any vector file; the plotter draws it scaled to the paper.
  • AI drawing — upload an image to Gemini API; it generates plottable paths from the image.
Python 3 PySide6 MediaPipe OpenCV PySerial Gemini API Arduino C++ Marlin
[Screenshot of control software UI — add when available]
[Hand tracking panel with landmark overlay]
Authored by Jacob

Hand Tracking.

MediaPipe detects 21 key points on the hand each frame. The software measures thumb-to-index distance — close = pen down, open = pen up. A 200 ms debounce prevents false triggers.

01

Camera → MediaPipe

Webcam frames fed to the landmark model at up to 30 FPS on a background thread.

02

Coordinates remapped

Normalized webcam XY (0–1) mapped to plotter bed dimensions (0–216 × 0–279 mm).

03

G-code generated

Each position becomes a G1 draw or G0 travel move with feed rate and Z height.

04

Streamed over serial

G-code sent to Marlin over USB serial in real time as the user moves their hand.

[Hand tracking visualization — landmark overlay screenshot]
Authored by Jacob

Safety System.

An Arduino Leonardo acts as a dedicated hardware safety controller. It enforces a 20-second solenoid cutoff in hardware regardless of software state — even if the app crashes or loses serial connection.

Safety limits that matter must live in hardware, not software.

20s hardware cutoff

Arduino enforces solenoid release — software state irrelevant.

15s software warning

Python app warns and can release the solenoid early via software command.

Physical E-stop + soft limits

Hardware button on Arduino pin 2. Marlin soft limits prevent out-of-bounds motion.

05 Integration Authored by Jacob

Making It All Work Together.

Getting hardware, firmware, and software to behave as one system took longer than building any individual part. These are the problems that only appeared when everything was connected at once.

Challenge 1 — [Title]

[Describe the first major integration problem — serial timing, coordinate mapping, latency, firmware edge cases, solenoid/servo conflicts, etc. What was the symptom? What caused it? How did you fix it?]

Challenge 2 — [Title]

[Second major problem and solution.]

Challenge 3 — [Title]

[Third challenge.]

Challenge 4 — [Title]

[Add as many as needed.]

[Diagram, photo, or screenshot related to integration work]
06 Review

Conclusion & Reflection.

Authored by Miles

[Miles — reflect on the outcome. Did the Ender Refab actually address the problem you described? What did you learn about accessibility design that surprised you?]

Authored by Troy

[Troy — reflect on the hardware build. What was hardest? What would you redesign? What are you most proud of?]

Authored by Jacob

The software side ended up being more about latency management than I expected. Getting hand tracking, serial buffering, and Marlin motion to feel like one connected system — rather than three separate things with delays between them — required minimizing processing time at every step: running MediaPipe on a background thread, using a lightweight serial buffer, and tuning feed rates to match the pace of gesture input.

The Y-axis extension taught something useful: a firmware change that looks trivial on paper — one integer in Configuration.h — requires recalibrating every assumption the software makes about the machine's geometry.

What I'm most glad we built in: hardware safety that doesn't depend on the software staying alive. The Arduino solenoid cutoff means a crash can never leave the pen stuck down. That was worth the extra wiring.

07 Labs

Additional Projects.

Authored by Jacob

Pen Plotter Control Software

Background & Need

Drawing requires fine motor control — holding a pen, operating a mouse. For people with limited hand or arm mobility, these are real barriers. The control software removes them: if you can move your hand in front of a camera, you can draw.

How It Works

Python app captures webcam frames, runs MediaPipe hand landmark detection on a background thread, maps the pinch gesture to pen-down/up, and streams G-code to the Ender 3's Marlin firmware over USB serial in real time.

Python 3MediaPipe PySide6OpenCV PySerialArduino
View on GitHub →
[App screenshot — add when available]
[Demo video — record when ready]

[Miles and Troy — add your lab projects below this line, following the same two-column pattern above. Each needs: Background & Need, How It Works, images, demo video, and code/files.]