{"id":26863758,"url":"https://github.com/nacreousdawn596/penplotter","last_synced_at":"2026-04-06T08:01:49.171Z","repository":{"id":285148690,"uuid":"957208732","full_name":"NacreousDawn596/Penplotter","owner":"NacreousDawn596","description":"a Robotics project that aims to create a Penplotter from scratch.","archived":false,"fork":false,"pushed_at":"2025-03-29T21:00:51.000Z","size":1511,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T21:23:10.308Z","etag":null,"topics":["arduino","arduino-mega","cpp","criam","html","latex","penplotter","robotics"],"latest_commit_sha":null,"homepage":"https://nacreousdawn596.github.io/Penplotter/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NacreousDawn596.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-29T20:09:00.000Z","updated_at":"2025-03-29T21:00:55.000Z","dependencies_parsed_at":"2025-03-29T21:23:12.628Z","dependency_job_id":"25851d0d-401e-42d1-b04f-66bf7cc88a91","html_url":"https://github.com/NacreousDawn596/Penplotter","commit_stats":null,"previous_names":["nacreousdawn596/penplotter"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NacreousDawn596%2FPenplotter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NacreousDawn596%2FPenplotter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NacreousDawn596%2FPenplotter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NacreousDawn596%2FPenplotter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NacreousDawn596","download_url":"https://codeload.github.com/NacreousDawn596/Penplotter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246413364,"owners_count":20773052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduino-mega","cpp","criam","html","latex","penplotter","robotics"],"created_at":"2025-03-31T03:32:40.249Z","updated_at":"2025-12-30T23:15:52.601Z","avatar_url":"https://github.com/NacreousDawn596.png","language":"Python","readme":"# Pen Plotter Project 🖋️\n\n![Pen Plotter in Action](rapport/image4.jpg)  \n*A precise and elegant system for automated drawing using Arduino control.*\n\n---\n\n## ✨ Features\n- **Modern Web UI**: A sleek, user-friendly Electron application for easy control and visualization.\n- **High-Precision Movement**: DC motors with encoders ensure accurate X/Y/Z-axis positioning.\n- **Interactive GUI**: Built with Python and Tkinter for shape design and command execution.\n- **3D-Printed Frame**: Customizable modular structure for easy assembly.\n- **Automated Workflow**: Converts digital designs into physical drawings via Arduino.\n\n---\n\n## ⚡ Circuit Diagram\n\u003cobject data=\"rapport/penplotter.pdf\" type=\"application/pdf\" width=\"100%\" height=\"600px\"\u003e\n    \u003cp\u003ePDF cannot be displayed. \u003ca href=\"rapport/penplotter.pdf\"\u003eDownload it\u003c/a\u003e instead.\u003c/p\u003e\n\u003c/object\u003e\n\n### Components List\n| Component               | Quantity | Description                  |\n|-------------------------|----------|------------------------------|\n| **416 DC Motor + Encoder**  | 3        | Controls X/Y/Z-axis movement |\n| **Arduino Uno R3**      | 1        | Main microcontroller         |\n| **9V Battery**          | 1        | Power supply                 |\n\n⚠️ **Note**: The report mentions *Arduino Mega* and *stepper motors*, but the BOM and circuit diagram specify *Arduino Uno* and *DC motors*. Ensure consistency in your hardware setup.\n\n---\n\n## 🚀 Installation \u0026 Usage\n\n### 🔧 Hardware Setup\n1. Assemble the \u003ca href=\"https://github.com/NacreousDawn596/PenPlotter/tree/master/components\"\u003e3D-printed frame\u003c/a\u003e.\n2. Mount the motors and attach the pen mechanism.\n3. Wire components as per the [circuit diagram](#⚡-circuit-diagram).\n\n### 💻 Software Setup\n```bash\n# Clone the repository\ngit clone https://github.com/NacreousDawn596/Penplotter.git\n```\n\n#### 🖥️ For NixOS Users:\n```bash\nnix-shell\n```\n\n#### 🏗️ For Non-NixOS Users:\n```bash\npython3 -m venv venv\nsource venv/bin/activate  # On Windows, use 'venv\\Scripts\\activate'\npip install -r requirements.txt\narduino-cli core install arduino:avr\narduino-cli lib install Stepper\n```\n*install the `imagemagick` package as well if you wanna use the manual method, it's available in most package managers... or compile it from \u003ca href=\"https://github.com/ImageMagick/ImageMagick\"\u003ehere\u003c/a\u003e.*\n\n### 🖥️ Electron Web UI (Recommended)\n\nThe easiest way to use the Pen Plotter is via the bundled Electron application.\n\n#### Linux (AppImage)\n1.  Download the latest `PenPlotter-x.x.x.AppImage` from the releases (or build it locally).\n2.  Make it executable:\n    ```bash\n    chmod +x PenPlotter-1.0.0.AppImage\n    ```\n3.  Run it:\n    ```bash\n    ./PenPlotter-1.0.0.AppImage\n    ```\n\n#### Building from Source\nIf you want to build the application yourself:\n\n1.  **Install Dependencies**:\n    Ensure you have `npm`, `python3`, and `arduino-cli` installed.\n    ```bash\n    # Install Python dependencies\n    pip install -r webui/backend/requirements.txt\n    ```\n\n2.  **Build the App**:\n    ```bash\n    cd webui/electron\n    npm install\n    npm run dist\n    ```\n    The output will be in `webui/electron/dist`.\n\n### ✏️ Legacy / Manual Usage\n#### 📌 Manual Drawing via GUI\n```bash\npython3 manual.py /path/to/image\n```\n**Controls:**\n- **Middle Click**: Show/hide the image.\n- **Right Click**: Draw connected polygons.\n- **Left Click**: Draw a separate point and start a new polygon.\n- **Close Window**: Saves the drawing.\n\n#### 🖼️ Automatic Image-to-Sketch Conversion\n```bash\npython3 main.py -h  # Show help command, adjust the parameters as needed. almost every image needs its own parameters.\n```\nExample:\n```bash\npython3 main.py criam.jpg criam  # Convert 'criam.jpg' to a sketch and save the code to ./criam/criam.ino\n```\nAlternatively, use an online AI tool to convert complex images to sketches before processing with `main.py`.\n\n#### Execute:\nSimply navigate to the folder where you saved your file.ino\nthen:\n```bash\narduino-cli board list\n```\nto show the available boards\nand finally upload using:\n```bash\nalias ards=\"sudo arduino-cli compile --fqbn \u003cboard, like arduino:avr:mega\u003e ./ \nsudo arduino-cli upload -p \u003cPort, like /dev/ttyACM0\u003e --fqbn \u003cboard, like arduino:avr:mega\u003e ./\"\n```\nAlternatively you can use the ArduinoIDE\n\n---\n\n## 📐 Results\n### Geometric Shapes\nExamples of drawings: **faces, cars, landscapes, etc...**.\n\n---\n\n## 🔮 Future Improvements\n- ✅ Add **SVG file support** for more complex designs.\n- ✅ Implement **wireless control** (Bluetooth/Wi-Fi).\n- ✅ Enhance **precision** for intricate patterns.\n- ✅ Integrate with **Raspberry Pi or ESP32** for advanced functionality.\n\n---\n\n**Crafted with ❤️ by the PenPlotter Team**\n\n💡 **CRIAM** · [LinkedIn Page](https://ma.linkedin.com/in/club-robotique-et-innovation-arts-et-m%C3%A9tiers-74018b209)\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnacreousdawn596%2Fpenplotter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnacreousdawn596%2Fpenplotter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnacreousdawn596%2Fpenplotter/lists"}