A precise and elegant system for automated drawing using Arduino control.
- Modern Web UI: A sleek, user-friendly Electron application for easy control and visualization.
- High-Precision Movement: DC motors with encoders ensure accurate X/Y/Z-axis positioning.
- Interactive GUI: Built with Python and Tkinter for shape design and command execution.
- 3D-Printed Frame: Customizable modular structure for easy assembly.
- Automated Workflow: Converts digital designs into physical drawings via Arduino.
PDF cannot be displayed. Download it instead.
| Component | Quantity | Description |
|---|---|---|
| 416 DC Motor + Encoder | 3 | Controls X/Y/Z-axis movement |
| Arduino Uno R3 | 1 | Main microcontroller |
| 9V Battery | 1 | Power supply |
- Assemble the 3D-printed frame.
- Mount the motors and attach the pen mechanism.
- Wire components as per the circuit diagram.
# Clone the repository
git clone https://github.com/NacreousDawn596/Penplotter.gitnix-shellpython3 -m venv venv
source venv/bin/activate # On Windows, use 'venv\Scripts\activate'
pip install -r requirements.txt
arduino-cli core install arduino:avr
arduino-cli lib install Stepperinstall the imagemagick package as well if you wanna use the manual method, it's available in most package managers... or compile it from here.
The easiest way to use the Pen Plotter is via the bundled Electron application.
- Download the latest
PenPlotter-x.x.x.AppImagefrom the releases (or build it locally). - Make it executable:
chmod +x PenPlotter-1.0.0.AppImage
- Run it:
./PenPlotter-1.0.0.AppImage
If you want to build the application yourself:
-
Install Dependencies: Ensure you have
npm,python3, andarduino-cliinstalled.# Install Python dependencies pip install -r webui/backend/requirements.txt -
Build the App:
cd webui/electron npm install npm run distThe output will be in
webui/electron/dist.
python3 manual.py /path/to/imageControls:
- Middle Click: Show/hide the image.
- Right Click: Draw connected polygons.
- Left Click: Draw a separate point and start a new polygon.
- Close Window: Saves the drawing.
python3 main.py -h # Show help command, adjust the parameters as needed. almost every image needs its own parameters.Example:
python3 main.py criam.jpg criam # Convert 'criam.jpg' to a sketch and save the code to ./criam/criam.inoAlternatively, use an online AI tool to convert complex images to sketches before processing with main.py.
Simply navigate to the folder where you saved your file.ino then:
arduino-cli board listto show the available boards and finally upload using:
alias ards="sudo arduino-cli compile --fqbn <board, like arduino:avr:mega> ./
sudo arduino-cli upload -p <Port, like /dev/ttyACM0> --fqbn <board, like arduino:avr:mega> ./"Alternatively you can use the ArduinoIDE
Examples of drawings: faces, cars, landscapes, etc....
- โ Add SVG file support for more complex designs.
- โ Implement wireless control (Bluetooth/Wi-Fi).
- โ Enhance precision for intricate patterns.
- โ Integrate with Raspberry Pi or ESP32 for advanced functionality.
Crafted with โค๏ธ by the PenPlotter Team
๐ก CRIAM ยท LinkedIn Page