On the basis that one of the goals is to incorporate all functionality (web/ground control and firmware) into the esp32, one of my concerns is the flash memory space that’s available. With the current branch of grbl_esp32, there’s very little room left in the program area and spiffs area when you retain OTA capability.
I think the OTA capability is pretty awesome and would love for it to stay, but I’m concerned that we will be limiting the functionality of ‘espcontrol’ just because we can’t fit the code into the program area. If the plan is to incorporate the esp32 directly into a custom controller board, then I think using an ESP32 with a bigger flash space is readily doable and would ease the concern over what can and cannot be incorporated. However, I believe most existing users of grbl_esp32 are using 4MB flash variants so the changes/improvements we make won’t be able to be incorporated into the main branch.
In a nut shell, I’m ok with sticking with the stock 4MB flash drive and making it work, understanding that some functionality will likely not be able to be incorporated and we’d need to find some other solution.
For example, if optical calibration is something desired (in whatever form/method it ultimately is), we could conceivably decouple it from the esp32 and make it a stand alone application that would run on an RPI, windows/mac computer, maybe phone?, and communicate with the esp32 over wifi/bluetooth or something. I don’t think eps32 can run opencv which is needed, so maybe the idea would be to use the esp32 to grab a picture, it gets sent over bluetooth or wifi to something else (i.e., pc/mac, phone? cloud???) to process and it responds back to the esp32 with location information. That actually sounds pretty cool…
Finally, another possibility is to include an additional eeprom directly on the custom controller to house ‘maslow’ specific data outside the esp32. For example, there maybe maslow-specific html/js/css code that won’t fit in the spiffs partition and we can put that data there… that would allow us to maintain compatibility with the main branch.