This time I want to showcase a project that I have been working on for the past couple of weeks: A web based application to manage your ESCs, flash them with new firmware and adjust their settings.
The motivation for this project was the RPM capable, open source Bluejay firmware for BLHeli_S compatible ESCs. I was poking around in the Bluejay configurator which was forked from the BLHeli_S configurator and tried to refactor some things.
After speaking to Mathias - the main developer of Bluejay - it quickly became clear that refactoring the codebase would be very time consuming and one might be better off to simply rewrite it - so that’s basically what I did.
Before starting such a project it is important to define a couple of goals because it helps a lot in decision making during the development process:
- Fully web-based: No need to download anything, you should be able to flash your ESC directly from the browser
- Support for multiple firmwares: the adaptations in the Bluejay fork of the BLHeli configurator were initially not so big, so it made sense to rewrite it in such a way that it would support multiple firmware options
- Easy deployment: I did not want to spend too much time on deployment. So I decided to go with a fully automated deployment chain with netlify - once set up, it will automatically deploy your code when you push it to the master branch of your github repository - a great solution for front-end deployment
- Clean dependencies: The original BLHeli configurator depends on a lot of different UI frameworks which are statically included into the project itself, which makes updating them a real pain - this was what initially sparked the idea of a complete re-write
To use the online ESC confiugrator you need a Browser that implements the Web-Serial API, almost any current Browser which is based on Chromium will work here:
Other browsers might also work to a certain degree and I hope once the other browser vendors recognize the potential of using Serial and USB devices from within the browser, they will follow suite and also implement it. Firefox and Safari had security considerations that seem to have been worked out by google in the last 7 or so years it took to implement this functionality, unfortunately they did not seem to re-consider their opinion in the mean time.
The app will also work on most Android based mobile devices. Mostly, because there is an annoying feature that prevents claiming USB devices from Chrome on Android. It seems that mostly Samsung devices are affected by this, but the only way to know for sure, is to simply try it. If you want to help this issue get fixed, please upvote the issue in the chromium bugtracker.
If you find that your mobile device is not working, take the time and update this issue with details about you device. This information might help us to find a pattern in devices that will not work.
Currently ESC onfigurator supports the following firmwares:
BLHeli_S based ESCs
I initially also wanted to add support for BLHeli_M, but for the configuarator to support this too, BLHeli_M would need to be adapted and I am not sure if the project is still being maintained. The last time that Jazz Maverick posted in the BLHeli_M thread is now over half a year ago, so I did not put any time into it and I think that the project has actually been abandoned.
ARM based ESCs
AM32 can be run on BLHeli_32 based ESCs. In order to flash and adjust it from the configurator you first need to flash a bootloader via STLink adapter, which is a bit tedious. But the first manufacturers are already working on AM32 based ESCs, so in the future flashing and adjusting AM32 based ESCs will be a breeze too.
Add your firmware
If you are a firmware Maintainer and want to see your firmware added to the configurator, feel free to shoot me a message or open an issue on github.
The core features are obviously flashing and adjusting settings of your ESCs. I also added functionality to spin the motors, so you don’t need to switch between tools to get the motor direction properly set up. there is also a startup melody editor, that allows you to manage and edit start up sounds, at least on those firmwares that support it.
There is a couple of mayor features that I want to implement:
- Direct flashing: This will allow you to flash an ESC without a flight-controller, a feature that is mainly useful for people that want to flash a single ESC for example for RC cars via an FTDI adapter or an Arduino
- Flashing nightly builds: This allows testers to easily flash the latest development version directly from the configurator.
I am also open for any ideas that you have - if you want to see something improves, feel free open an issue.
To get a better overview of what is currently happening, check out the repository on github.
The web app should be pretty self explanatory, but in case you still need help, feel free to join us on discord.