Portable CNC and Pen Plotter firmware designed for ESP32-class microcontrollers with a layered architecture, web control interface, G-code execution, coordinated motion planning, and pen control support.
Current development and testing are performed on ESP32-S2 hardware using both Arduino IDE and PlatformIO environments.
Firmware Repository:
https://github.com/Deaptayan/PlotterNC
Companion Software:
https://github.com/Deaptayan/PlotterNCStudio
✅ Coordinated XY Motion
✅ DDA/Bresenham Motion Planner
✅ G0 / G1 Linear Interpolation
✅ G2 / G3 Arc Support
✅ Stepper-Driven Pen Lift
✅ Web-Based Control Interface
✅ Pause / Resume / Emergency Stop
✅ Hardware Abstraction Layer (HAL)
✅ Portable Architecture
Warning
PlotterNC Firmware is currently in v0.3 Alpha and under active development.
While core functionality is implemented, the firmware is not yet considered stable or production-ready. Motion quality, drawing accuracy, hardware compatibility, and reliability are still being improved.
Users may encounter:
- Motion inaccuracies
- Drawing quality issues
- Unexpected firmware bugs
- Incomplete hardware support
- Missing safety features
- Unfinished functionality
This release is intended primarily for development, testing, and experimentation.
PlotterNC Firmware is an experimental open-source firmware for pen plotters and lightweight CNC machines.
Current development focuses on:
- Motion planner improvements
- Hardware abstraction layer expansion
- Web-based machine control
- Plotter-specific workflow features
- Multi-platform support preparation
| Item | Value |
|---|---|
| Version | v0.3 Alpha |
| Status | Experimental |
| Firmware Architecture | Portable HAL-Based Design |
| Current Supported MCU | ESP32-S2 |
| Current Supported Motors | 28BYJ-48 |
| Current Supported Drivers | ULN2003 |
| Pen Actuation | Stepper Motor Driven |
| Supported IDEs | Arduino IDE, PlatformIO |
| Tested Hardware | ESP32-S2 + 28BYJ-48 + ULN2003 |
| License | AGPL-3.0 |
| Development | Active |
- ESP32-S2
- 28BYJ-48
- ULN2003
- Stepper Motor Driven Pen Lift
- Cartesian Pen Plotters
- Arduino IDE
- Visual Studio Code + PlatformIO
- Arduino Framework for ESP32
Developers may use either Arduino IDE or PlatformIO depending on their preferred workflow.
Coming Soon
- Coordinated X/Y motion using DDA/Bresenham-style step generation
- True linear interpolation for G0/G1 moves
- Diagonal and multi-axis movement
- Non-blocking motion execution
- Basic acceleration and deceleration ramping
- Microsecond timing using
hal_micros()
| Command | Function |
|---|---|
| G0 | Rapid Move |
| G1 | Linear Move |
| G2 | Clockwise Arc |
| G3 | Counter Clockwise Arc |
| M3 | Pen Down |
| M5 | Pen Up |
| M9 | Pen Up |
| M0 | Pause |
| M1 | Pause |
| M2 | End Job |
| M30 | End Job |
| M112 | Emergency Stop |
Pen actuation is currently performed using a dedicated stepper motor mechanism.
M3 ; Pen Down
M5 ; Pen Up
M9 ; Pen Up! Pause
~ Resume
M112 Emergency Stop
M0 Pause
M1 Pause
M2 End Job
M30 End Job
- G0
- G1
- G2
- G3
- M3
- M5
- M9
- M0
- M1
- M2
- M30
- M112
- !
- ~
Web UI
│
Net Layer
│
Core Layer
│
Driver Layer
│
OS Layer
│
HAL Layer
│
Platform Layer
| Layer | Responsibility |
|---|---|
| Core | G-code parsing, planner, homing, storage |
| Drivers | Motors, displays, encoders, endstops |
| OS | Scheduler, timers, queues, synchronization |
| HAL | Hardware abstraction interfaces |
| Platform | Board-specific implementation |
| Net | WiFi and Web Server |
| Data | Web UI assets |
- Endstop integration
- Hard limit handling
- Persistent calibration storage
- SD card support
- Trapezoidal acceleration
- Look-ahead motion planning
- R-format arc support
- First stable release
- Multi-board support
- Production-ready web interface
- Full job recovery support
- ESP32-S3
- ESP32-C3
- STM32
- RP2040
- AVR
- A4988
- DRV8825
- TMC2208
- TMC2209
- Cartesian Plotters
- CoreXY Plotters
- Lightweight CNC Machines
https://github.com/Deaptayan/PlotterNCStudio
PlotterNC Studio is the companion CAM and G-code generation software for PlotterNC Firmware.
Features include:
- SVG Import
- Toolpath Generation
- Path Optimization
- G-code Export
- Plotter Configuration
- Web-Based Interface
Bug reports, feature requests, and pull requests are welcome.
Please open an issue before making major architectural changes.
Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
If you distribute modified versions of PlotterNC Firmware or provide it as a network-accessible service, you must also make the complete corresponding source code available under the same license.
Deaptayan Bondopadhay
Creator of PlotterNC Firmware
Made with ❤️ for DIY Plotters, CNC Machines, and Open Hardware.