I'd like to introduce gsp32-httpd (screenshots in the link):
Want to try it out?
- Plug in your board to your computer
- Install the firmware via the web flasher, above
- Configure your WiFi and access the UI
I'm a 23-year veteran python developer and have worked with microcontrollers for several years now - exclusively with micropython on various ESP32 boards. I teach microcontroller classes at a local makerspace and have countless projects I've made over the years.
I've been working with AI to create this tool to make the process of deploying, accessing, and maintaining these projects as easy as possible.
DISCLAIMER: This is a beta software/firmware that changes daily. I've done my best to ensure that it's reliable and stable, but I'm just one guy with an AI. If you ever want to stop using it, just download your program files, reflash your board to standard micropython, and re-upload your code. It should still work without GSP32 with the exception of remote pairing to other boards.
WHAT IS IT?
It's a micropython firmware with a custom web-based user interface for uploading and managing your programs directly on your device. Whenever you want to change or update your code, there's no resetting, no re-uploading changed files, and no physically connecting to the board via USB cable (unless you want to).
Your main.py runs concurrently in the background as something akin to a virtual machine. You can change it and restart it in real-time and your changes take effect immediately without having to reboot the board.
When users are not actively accessing the web UI, the overhead is almost nothing aside from RAM usage.
Additionally, the web UI framework that runs this system can be used to make your own web-based user interface, populating your HTML with values directly from your python program that can be viewed or updated from that interface as you see fit. The default home page (above) is a fully commented, working version of this for your reference.
WHY DID I MAKE IT/HAVE IT MADE?
For several reasons.
ESP32 boards are usually overkill in terms of specs; so why are we still interacting with them like other older/inferior boards? I wanted to put those specs to good use and make my life easier in the process.
In addition to that, I found that bridging the gap from something like microblocks to micropython is very difficult for most of my students, so I wanted to create a system that would make setup, accessibility, and maintainability as easy, simple, and expandable as possible.
For me, personally, I wanted the fastest level of iteration possible, wireless access to my projects to configure and maintain them, easier file management, and an easy way to deploy and backup code.
WHAT DOES IT DO?
Well, reiterating a bit here, but it does a lot - and it does it surprisingly quickly. I had the AI focus heavily on optimization, caching, memory management, and GSP32's overhead. Basically, if you're not actively browsing the web UI, there's almost no overhead for your programs (aside from the memory usage).
It provides a framework for your own web pages that can be filled with live data from your micropython program. So, you can write your own HTML and use it to host web interfaces for your project for control, monitoring, etc.
It uses that same framework to run itself and includes password protection.
It includes a full-featured file management system that is drag and drop compatible with bulk uploads and downloads divided into two sections - one for your code, and one for your html.
It includes an onboard file editor with autocompletion and code inserting for many commonly used components as well as a pairing wizard that automatically exchanges encryption keys to make secured pairing with other GSP32 systems trivial.
Additionally, and this is one of my favorite features, it wraps your main.py with its code, so you can reload your project almost instantly without rebooting your board, which results in iteration rates that I don't know if any other system can beat.
It includes a mip package manager for quickly downloading micropython libraries.
It includes a backup and restore system for taking snapshots of your deployments.
It also includes a pin panel for real-time debugging of your physical pins based on the board you're flashing to.
Finally, it has a host of performance settings that can be toggled on or off.
WHAT BOARDS DOES IT WORK WITH?
It's compatible with most classic ESP32 (32S, 32C, etc.) and ESP32-S3 boards and there is a web flasher to take care of installing the firmware and configuring the WiFi.
Once configured, you may access the web UI.
Not supported: ESP32-S2 | C2 | C3 | C5 | C6 | H2 | P4
WHAT'S NEXT?
I'm still adding new features almost daily. In general, I just want a highly polished, easy/fun to use micropython system that's not a pain in the ***.
If you try it out, please feel free to let me know your thoughts.