This project integrates Firmware (Arduino Uno), Backend (FastAPI + AI services), Frontend (Vue 3) and Hardware (PCB + 3D printed parts) to build an interactive XY plotter.
The system allows three modes:
- ✏️ Drawing Mode: create vector shapes (lines, rectangles, text) in a 35mm work area.
- 🤖 AI Mode: generate vector drawings from AI prompts.
- 🎮 Mimic Mode: manually control the head using keyboard input.
flowchart LR
User -->|Draw / Prompt / Mimic| Frontend[Vue 3 WebApp]
Frontend -->|REST / WebSocket| Backend[FastAPI Server]
Backend -->|G-code over Serial| Firmware[Arduino Uno]
Firmware -->|Stepper Signals| Hardware[XY Plotter Mechanics]
firmware/ → Arduino Uno firmware (PlatformIO)
backend/ → FastAPI server (AI services + G-code streaming)
frontend/ → Vue 3 web interface
hardware/ → PCB design + 3D printed components (WIP)
- Frontend: Vue 3 + Vite + Composition API
- Backend: FastAPI, WebSocket, OpenAI integration
- Firmware: Arduino Uno + G-code interpreter
- Hardware: PCB (WIP), 3D printed mounts (WIP)
cd backend
pip install -r requirements.txt
uvicorn main:app --reloadcd frontend
npm install
npm run devcd firmware/arduino_uno
pio run --target upload- Planned PCB for stepper drivers and Arduino integration.
- 3D printed clamps for holding the plate.
- [TODO: upload schematics and STL files]
- Full WebSocket integration (real-time AI and G-code streaming).
- PCB design for integrated controller.
- Improved AI prompt pipeline (multi-variant + seeds).
- Export SVG directly from frontend.
[MIT] or [Insert your license here]