{"id":47612029,"url":"https://github.com/niwantha33/micropython-studio","last_synced_at":"2026-06-07T00:01:53.765Z","repository":{"id":304479551,"uuid":"1018508757","full_name":"niwantha33/micropython-studio","owner":"niwantha33","description":"open-source, micropython,circuitpython, vscode-extension, xbee, micropython debug","archived":false,"fork":false,"pushed_at":"2026-05-25T20:33:42.000Z","size":43837,"stargazers_count":2,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-25T22:06:15.858Z","etag":null,"topics":["circuitpython","esp32","ide","micropython","pico","xbee"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/niwantha33.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-12T12:14:33.000Z","updated_at":"2026-05-25T20:04:33.000Z","dependencies_parsed_at":"2026-05-25T22:03:25.054Z","dependency_job_id":null,"html_url":"https://github.com/niwantha33/micropython-studio","commit_stats":null,"previous_names":["niwantha33/micropython-studio"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/niwantha33/micropython-studio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niwantha33%2Fmicropython-studio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niwantha33%2Fmicropython-studio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niwantha33%2Fmicropython-studio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niwantha33%2Fmicropython-studio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/niwantha33","download_url":"https://codeload.github.com/niwantha33/micropython-studio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niwantha33%2Fmicropython-studio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34003814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["circuitpython","esp32","ide","micropython","pico","xbee"],"created_at":"2026-04-01T20:32:43.313Z","updated_at":"2026-06-07T00:01:53.753Z","avatar_url":"https://github.com/niwantha33.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MicroPython Studio - VS Code Extension\n### Supporting MicroPython, CircuitPython \u0026 XBee - Local Private AI Assistant\n\n\u003e [!IMPORTANT]\n\n\u003e **Major Migration (v1.0.0)**: A live, bytecode-level debugger for MicroPython on the Raspberry Pi Pico 2 W.\n  Set breakpoints, step through code, inspect named locals, view the call stack,\n  and use **conditional breakpoints** — all on a running board, over USB, with a\n  VS Code UI.\n\u003e No JTAG. No `sys.settrace`. No print-debugging.\n\n\u003e **Major Migration (v0.9.0)**: We have transitioned from standard `mpremote` subprocesses to a custom, high-performance `mps` backend. This migration resolves critical serial port conflicts and \"COM port busy\" errors on dual-CDC devices like the Raspberry Pi Pico 2 W.\n\n\n[![MicroPython](https://img.shields.io/badge/MicroPython-v1.20%2B-blue?logo=micropython\u0026logoColor=white)](https://micropython.org)\n[![CircuitPython](https://img.shields.io/badge/CircuitPython-v10.x-purple?logo=adafruit\u0026logoColor=white)](https://circuitpython.org)\n[![XBee](https://img.shields.io/badge/XBee-MicroPython-orange)](https://www.digi.com/xbee)\n[![YouTube](https://img.shields.io/badge/YouTube-Subscribe-red?logo=youtube\u0026logoColor=white)](https://www.youtube.com/@NiwanthaDev)\n\n[![MicroPython Studio Tutorial](https://img.youtube.com/vi/or_aG-Rhnb8/maxresdefault.jpg)](https://www.youtube.com/watch?v=or_aG-Rhnb8)\n\n\u003cp \u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/niwantha33/micropython-studio/main/resource/pico2w_micropython_live_debug.png\" alt=\"project\" width=\"900\"\u003e\n\u003c/p\u003e\n\n\u003cp \u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/niwantha33/micropython-studio/main/resource/pinout.png\" alt=\"project\" width=\"900\"\u003e\n\u003c/p\u003e\n\n\u003cp \u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/niwantha33/micropython-studio/main/resource/micro_ai.png\" alt=\"project\" width=\"900\"\u003e\n\u003c/p\u003e\n\n---\n\n\u003e **🐝 Now with full Digi XBee MicroPython support!** Create projects, upload files, and run scripts on XBee3 modules — Zigbee, DigiMesh, Cellular, Wi-SUN, and BLU — all from VS Code.\n\nA powerful IDE extension for MicroPython development with hardware integration, device management, and seamless workflow tools.\n\n## Features\n\n### Setup\n\n| # | Feature | How to Use | What Happens |\n|---|---------|-----------|--------------|\n| 1 | Setup Virtual Environment | Command Palette → *Setup Environment* | `.venv` created, `mpremote` installed |\n| 2 | Create New Project | Status bar *MPS vX.X* → Create New Project | Project folder + `device.cfg` created |\n| 3 | Open Existing Project | Command Palette → *Open Existing Project* | Workspace opens, `device.cfg` detected |\n\n### Connection\n\n| # | Feature | How to Use | What Happens |\n|---|---------|-----------|--------------|\n| 4 | Auto-detect device (USB) | Connect board via USB + click Refresh | Status bar shows COM port |\n| 5 | Auto-detect device (Wi-Fi) | Set `webrepl_enabled=true` in `device.cfg` | Status bar shows Wi-Fi IP |\n| 6 | Manual port override | Command Palette → *Update Device Port* | Port updates in status bar |\n| 7 | Port picker — USB vs Wi-Fi | Click device status bar button | QuickPick shows USB + Wi-Fi options |\n| 8 | WebREPL terminal | Click status bar *WebREPL* button | Terminal panel opens, shows `\u003e\u003e\u003e` prompt |\n\n### Run\n\n| # | Feature | How to Use | What Happens |\n|---|---------|-----------|--------------|\n| 9 | Run on Host (mount mode) | USB connected, target=Host, click *Run* | Script runs via mounted folder |\n| 10 | Run on MCU (USB) | USB connected, target=MCU, click *Run* | Script executed on device via serial |\n| 11 | Run via Wi-Fi | Wi-Fi port selected, click *Run* | Script runs over WebREPL |\n| 12 | Right-click Run script | Right-click `.py` → *Run on MCU Console* | Script runs in terminal |\n| 13 | Stop running script | Click *Stop* button during run | Device soft reset, `\u003e\u003e\u003e` prompt returns |\n| 14 | Switch Host / MCU target | Click Host/MCU toggle in status bar | Label updates, next run uses new target |\n\n### File Upload\n\n| # | Feature | How to Use | What Happens |\n|---|---------|-----------|--------------|\n| 15 | Upload single file | Right-click `.py` → *Upload Current File* | File copied to `/` on device |\n| 16 | Upload folder | Right-click folder → *Upload Folder to Device* | `/foldername` created + all files uploaded |\n| 17 | Upload folder with subfolders | Right-click folder with nested subdirs | Subdirs created first, all files uploaded correctly |\n| 18 | Upload — overwrite protection | Upload folder that already exists on device | Shows conflicting files, asks *Overwrite? Y/N* |\n| 19 | Upload entire project | Command Palette → *Upload Project to Device* | All `main/` files copied to device root |\n\n### Device File Explorer\n\n| # | Feature | How to Use | What Happens |\n|---|---------|-----------|--------------|\n| 20 | Browse device files | Expand *Device Files* panel tree | Files and folders listed |\n| 21 | Read file from device | Click a file in the tree | File contents open in editor (read-only) |\n| 22 | Delete file | Right-click file → *Delete File* | Confirm dialog, file removed, tree refreshes |\n| 23 | Delete folder (with contents) | Right-click folder → *Delete Folder* | Confirm dialog, folder + all contents removed |\n| 24 | Rename file/folder | Right-click → *Rename* | Rename items directly on hardware |\n| 25 | New folder | Right-click folder → *New Folder* | Create subdirectories on device |\n| 26 | Upload to specific folder | Right-click folder → *Upload to This Folder* | Select and upload files directly into that directory |\n| 27 | Refresh tree | Click refresh icon in panel header | Tree re-reads device filesystem |\n\n### Tools\n\n| # | Feature | How to Use | What Happens |\n|---|---------|-----------|--------------|\n| 25 | Open REPL Shell | Click *Shell* in status bar | mpremote interactive REPL opens |\n| 26 | Compile to bytecode | Right-click `.py` → *Compile to Bytecode* | `.mpy` file generated |\n| 27 | Generate flowchart | Right-click `.py` → *Generate Flowchart* | Flowchart panel opens |\n| 28 | Install package (mip) | Command Palette → *Install Package* | Package installed on device via mip |\n| 29 | Flash firmware | Click *Flash* in status bar | Firmware selection + flash to device |\n| 30 | Download firmware | Command Palette → *Download Firmware* | Firmware downloaded locally |\n| 31 | Private AI Assistant | Click *Hubot* icon in sidebar | Private, local AI helper (Ollama) |\n\n### Dashboard\n\n| # | Feature | How to Use | What Happens |\n|---|---------|-----------|--------------|\n| 31 | Open dashboard | Click *Dashboard* in status bar | Dashboard panel opens |\n| 32 | Wi-Fi Manager | Dashboard → Wi-Fi tab | Set SSID + password, save to device |\n| 33 | WebREPL config | Dashboard → Wi-Fi → enable WebREPL | `webrepl_enabled` saved to `device.cfg` |\n| 34 | Pinout view | Dashboard → Pinout tab | Board pinout diagram shown |\n\n## 🧠 Private \u0026 Local AI Assistance (v0.8.0+)\n\nMicroPython Studio now features a state-of-the-art **Private AI Assistant** that runs entirely on your local machine.\n\n- **100% Private**: Your code never leaves your computer. No cloud processing, no data tracking.\n- **Context Aware**: The AI automatically sees your active file content and understands your connected device (Port, Firmware, Config).\n- **Ollama Powered**: Uses high-performance local LLMs like `gemma4` (Google's latest), `qwen2.5-coder`, and more.\n- **MicroPython \u0026 CircuitPython Expert**: Specialized in embedded Python development.\n\n\u003e [!TIP]\n\u003e To get started, click the **AI Assistant** icon in the sidebar. The extension will automatically check for **Ollama** and help you set up the model.\n\n## Requirements\n\n- **VS Code**: Version 1.75.0 or higher\n- **Python**: 3.7+ installed and available in PATH\n- **Hardware**: MicroPython-compatible device (ESP32, RP2040, STM32, etc.)\n- **USB Drivers**: Appropriate drivers for your microcontroller\n\n## Extension Settings\n\nThe extension contributes the following settings:\n\n- `micropython-studio.autoConnect`: Automatically connect to last used device\n- `micropython-studio.defaultDeviceType`: Default microcontroller type\n- `micropython-studio.syncOnSave`: Auto-sync files to device on save\n- `micropython-studio.venvPath`: Custom path to Python virtual environment\n- `micropython-studio.terminalMode`: Preferred terminal type (PowerShell, CMD, Bash)\n\n## Known Issues\n\n- **Windows Path Handling**: Some commands require Git Bash for proper path conversion\n- **Device Recognition**: Certain ESP32 variants may require manual driver installation\n\n## Release Notes\n\n### 0.9.0 (mpremote to mps migration)\n- **New Features**:\n  - **Major Migration**: Successfully migrated all core operations from `mpremote` subprocesses to the dedicated **MicroPython Studio (mps)** backend. This provides sub-second responsiveness and absolute connection stability.\n  - **Advanced File Management**: Added **Rename**, **New Folder**, and **Upload to Specific Folder** support in the Device File Explorer.\n  - **Professional Logging**: Transitioned all terminal status logs to a clean, ASCII-only format for 100% compatibility with Windows terminals.\n- **Improved**:\n  - **Stability**: Eliminated the \"I/O operation on closed file\" and \"COM port busy\" crashes common with dual-CDC devices (RP2040/RP2350).\n  - **WebREPL Console**: Redesigned for professional focus, removing redundant file-transfer panels in favor of the unified File Explorer.\n  - **CircuitPython Stability**: Faster and more reliable file listings via local filesystem mapping when available.\n- **Fixed**:\n  - Resolved serial port race conditions between background telemetry and user commands.\n  - Scrubbed all problematic Unicode emojis from backend processes to prevent encoding failures.\n\n---\n\n### 0.4.0 (Initial Public Release)\n\n- **Core Features**:\n  - Project creation wizard\n  - Device detection and management\n  - Basic code execution\n  - Virtual environment setup\n- **Workspace Organization**:\n  - Dedicated device folder view\n  - Visual workspace separation\n- **Initial Device Support**:\n  - ESP32 series\n  - Raspberry Pi Pico (RP2040)\n  - STM32 boards\n  - XBee 3 Modules\n\n### 0.5.0\n\n- **Fixed**:\n  - COM port access conflicts\n  - Virtual environment setup on Windows\n  - Path handling in Git Bash terminals\n- **Improved**:\n  - Device detection reliability\n  - Error messaging for connection issues\n  - Workspace loading performance\n\n### 0.6.x \n\n- **New Features**:\n  - Circuitpython (partial support)\n  - Bytecode conversion \n  - Multiple device support\n  - Circuitpython -  (partial support)\n  - Bytecode conversion - Done\n  - Multiple device support - Done\n  - WebREPL terminal - (partial support)\n  - File upload and download - Done\n  - Device file explorer - Done\n  - Dashboard - Done\n  - Library Install - Done\n  - Pinout view - Done\n  \n- **Enhanced**:\n  - File sync performance \n  - IntelliSense\n\n### 0.7.0\n\n- **Complete Support**:\n  - Full CircuitPython compatibility (USB \u0026 Web Workflow)\n  - Enhanced Device Dashboard with live telemetry\n  - Hardware Pinout Diagram (RP2, ESP32, STM32, SAMD, etc.)\n  - High-performance File Upload/Download (Folder support)\n  - Device File Explorer with Overwrite Protection\n  - WebREPL Terminal for wireless debugging\n  - Integrated Package Management (`mip`, `circup`)\n  - Bytecode Compilation (.mpy)\n- **Enhanced**:\n  - File sync performance optimization\n  - Improved IntelliSense for MicroPython modules\n  - Unified command palette and status bar integration\n\n### 0.7.1 \n- **Added**:\n  - More detailed error messages and troubleshooting guides\n\n### 0.7.2\n- **Added**:\n  - Support device upload/download \n  - Improved error handling for file operations\n  - onclick library support for file upload/download\n\n### 0.7.3\n- **Added**:\n  - **Clean Terminal UI**: Automatic clearing of terminal command echo for a clean, professional execution experience.\n  - **Output Filtering**: Silent mounting and suppression of absolute local paths from `mpremote` output.\n  - Enable file manupulation (upload/download) via onclick library for WebREPL connections, providing a seamless wireless file management experience.\n\n\n### 0.8.0 (Modernized AI Update)\n- **New Features**:\n  - **Premium AI Assistance**: Completely redesigned UI with glassmorphism and modern aesthetics.\n  - **Conversation Memory**: Switched to multi-turn chat history (supports Ollama's `api/chat`).\n  - **Deep Context Sensitivity**: AI now automatically detects active file content and hardware environment (Port, Firmware, `device.cfg`).\n  - **High-Performance Communication**: Refactored backend to use `stdin` data streams for large chat histories.\n  - **History Persistence**: Chat sessions are saved and restored across VS Code reloads.\n- **Improved**:\n  - Enhanced connection status reporting for local LLMs.\n  - Modern typography (Inter) and Markdown/Syntax highlighting integration.\n\n### 0.8.1 (AI Context \u0026 Stability)\n- **Enhanced AI Context Awareness**: Improved situational awareness by dynamically detecting project root and connected device configuration.\n- **Interactive AI Code Actions**: Added \"Insert\", \"Run\", \"New File\", and \"Copy\" buttons directly in the AI Chat window for a seamless coding workflow.\n- **Structured Prompt Engineering**: Improved AI response quality through structured context injection (`[device]`, `[filePath]`).\n- **Stable WebREPL**: Resolved connection stability issues by enforcing mandatory WebSocket frame masking (RFC 6455).\n- **Robust Boot Configuration**: New `boot.py` template with improved Wi-Fi connectivity and a dedicated USB-detection window to prevent lockouts.\n- **UI Polishing**: Refined the AI Assistant interface with better markdown rendering and transition effects.\n\n### 0.8.2 (Private AI \u0026 Gemma 4)\n- **New**: Private AI now supports **Gemma 4** (`gemma4:e2b`) — Google's latest model, optimized for low-resource laptops (8GB RAM).\n- **Improved**: AI response speed — tuned Ollama parameters (`num_ctx 2048`, `num_predict 512`, `num_thread 4`) for faster local inference.\n- **Improved**: AI prompts refined — concise code-first responses with short explanations, no lengthy prose.\n- **Improved**: Greeting/non-code queries now receive a proper reply instead of being silently passed.\n- **Milestone**: 🎉 **200+ downloads** on VS Code Marketplace — thank you to all users!\n\n### 0.8.4 (AI Model Hotfix)\n- **Fixed**: Resolved a bug where AI code generation would abruptly stop halfway through. Increased the `num_predict` token limit from 512 to 2048 and `num_ctx` to 4096 in both MicroPython and CircuitPython models to allow for complete, longer code responses.\n- **Improved**: Renamed AI models from `mycoder` to `micro_ai` (`micro_ai-mpy` and `micro_ai-cpy`) for better branding. Added automatic model re-installation logic so updates apply seamlessly.\n\n### 0.8.6 (XBee MicroPython Support)\n- **New**: Full **Digi XBee MicroPython** support — create, upload, and run on XBee3 modules (Zigbee, DigiMesh, Cellular, Wi-SUN, BLU).\n- **Fixed**: XBee file upload — resolved `EEXIST` errors caused by XBee's restricted flash filesystem. Small files now upload in a single raw-REPL call; larger files use a robust delete-then-write strategy with flash-flush delays.\n- **Fixed**: XBee uploads now bypass `mpremote cp` entirely (XBee lacks `os.stat`), going straight to reliable serial transport.\n- **Fixed**: COM port labels — FTDI and CP210x chips no longer incorrectly labeled as \"ESP32\". Now shows actual chip type (FTDI Serial, CP210x Serial, CH340 Serial, etc.).\n- **Improved**: XBee project creation — dedicated board picker with all XBee3 variants, auto-configured stubs, and `/flash` filesystem routing.\n\n---\n\n## Working with MicroPython Studio\n\n### Getting Started\n\n1. Install the extension\n2. Connect your MicroPython device via USB\n3. Set up the development environment: `Ctrl+Shift+P \u003e MicroPython: Setup Development Environment`\n4. Create a new project: `Ctrl+Shift+P \u003e MicroPython: Create New Project`\n5. Update your device port: `Ctrl+Shift+P \u003e MicroPython: Update Device Port`\n6. Start coding and use `MicroPython: Run Script on Device` to execute\n\n### Key Commands\n\n| Command | Description |\n|---------|-------------|\n| `MicroPython: Setup Development Environment` | Initialize the Python virtual environment and install dependencies |\n| `MicroPython: Create New Project` | Start the new project wizard |\n| `MicroPython: Open Existing Project` | Open an existing MicroPython project folder |\n| `MicroPython: Update Device Port` | Select or update the COM port / Wi-Fi connection |\n| `MicroPython: Run Script on Device` | Execute current script on the device |\n| `MicroPython: Stop Running Script` | Stop the currently executing script |\n| `MicroPython: Open Device Shell` | Open an interactive REPL shell |\n| `MicroPython: Upload Current File to Device` | Upload the active file to the device root |\n| `MicroPython: Upload Project to Device` | Upload your entire project to the device |\n| `MicroPython: Mount \u0026 Run on Device` | Mount local folder and run directly on device |\n| `MicroPython: Refresh Device Files` | Refresh the device files tree view |\n| `MicroPython: Start Debug Session` | Start a debug session on the device |\n\n## 🤖 AI Usage Guide for Developers\n\nAs an open-source project, **MicroPython Studio** embraces and encourages the use of AI tools (like GitHub Copilot, ChatGPT, Claude, and our own Local AI Assistant) to accelerate development, improve code quality, and help solve complex implementation hurdles. \n\nIf you are contributing to this repository using AI tools, please follow these guidelines:\n1. **Understand What You Commit**: AI is a powerful assistant, but you remain the author and maintainer of the code. Ensure you fully understand any generated code before submitting a pull request.\n2. **Security \u0026 Privacy**: Avoid pasting sensitive credentials, API keys, or proprietary user data into public AI models.\n3. **Attribution**: If an AI model helped you solve a particularly complex architectural or algorithmic challenge, feel free to mention it in your PR description!\n4. **Code Quality**: Verify that AI-generated code matches the project's existing style guidelines, adheres to error-handling standards, and includes necessary comments.\n\nWe embrace AI as a core part of modern development and are excited to see what we can build together.\n\n## Acknowledgements\n\nMicroPython Studio is open source (MIT License) and builds on the following open source projects:\n\n| Library | Author | License | Role |\n|---------|--------|---------|------|\n| [mpremote](https://github.com/micropython/micropython/tree/master/tools/mpremote) | MicroPython project | MIT | Device communication, file transfer, REPL |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | websocket-client contributors | Apache 2.0 | WebREPL Wi-Fi connection |\n| [term.js](https://github.com/chjj/term.js) | Christopher Jeffrey | MIT | Terminal emulator in WebREPL panel |\n| [FileSaver.js](https://github.com/eligrey/FileSaver.js) | Eli Grey | MIT | File download in WebREPL panel |\n| [MicroPython WebREPL](https://github.com/micropython/webrepl) | MicroPython project | MIT | WebREPL client (modified for VS Code integration) |\n| [CircuitPython](https://github.com/adafruit/circuitpython) | Adafruit Industries | MIT | CircuitPython firmware and runtime support |\n| [circup](https://github.com/adafruit/circup) | Adafruit Industries | MIT | CircuitPython package management and library installation |\n| [adafruit-ampy](https://github.com/scientifichackers/ampy) | Scientific Hackers / Adafruit | MIT | CircuitPython file execution via serial REPL |\n| [CircuitPython Web Workflow](https://docs.circuitpython.org/en/latest/docs/workflows.html) | Adafruit Industries | MIT | Wi-Fi file access and REPL via HTTP/WebSocket API |\n| [xbee-micropython](https://github.com/digidotcom/xbee-micropython) | Digi International | MIT | XBee MicroPython typehints, stubs, and libraries |\n| [esptool](https://github.com/espressif/esptool) | Espressif Systems | GPL-2.0 | ESP32 firmware flashing |\n| [pyserial](https://github.com/pyserial/pyserial) | pyserial contributors | BSD | Serial port communication and device detection |\n\nA special piece of **project history**: This extension has been a work in progress for approximately three years. Early on, many complex implementation hurdles for hardware interactions seemed insurmountable. **AI development tools** provided the critical support, documentation insights, and breakthroughs needed to finally bring these concepts to life. AI is at the very heart of how MicroPython Studio was built.\n\nAll bundled files retain their original license headers.\n\n---\n\n## For More Information\n\n- [MicroPython Documentation](https://docs.micropython.org/)\n- [Extension GitHub Repository](https://github.com/niwantha33/micropython-studio)\n- [Contributing Guide](CONTRIBUTING.md)\n- [Code of Conduct](CODE_OF_CONDUCT.md)\n- [Submit Issues](https://github.com/niwantha33/micropython-studio/issues)\n- [MicroPython Community Forum](https://forum.micropython.org/)\n\n## Support \u0026 Contact\n\nHave a question, found a bug, or need help getting started?\n\n- **Email:** niwantha33@gmail.com\n- **GitHub Issues:** [github.com/niwantha33/micropython-studio/issues](https://github.com/niwantha33/micropython-studio/issues)\n- **YouTube:** [youtube.com/@NiwanthaDev](https://www.youtube.com/@NiwanthaDev)\n\n**Enjoy developing with MicroPython, CircuitPython and XBee!** 🚀\n\n---\n\n## License\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.md)\n\nThis project is licensed under the **MIT License** — see [LICENSE.md](LICENSE.md) for full details.\n\nXBee MicroPython typehints and libraries are sourced from [Digi International's xbee-micropython](https://github.com/digidotcom/xbee-micropython) repository, also under the MIT License. All third-party dependencies retain their original licenses as listed in the [Acknowledgements](#acknowledgements) section above.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniwantha33%2Fmicropython-studio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniwantha33%2Fmicropython-studio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniwantha33%2Fmicropython-studio/lists"}