This camera indeed works with the M5Stack, and is indeed very easy to hook up. This post is to document what I did.
Simply buy the cam at the link supplied and hook it up with the pin-socket-wires that come with the camera as follows:
Then clone https://github.com/ArduCAM/ArduCAM_ESP32S_UNO and copy the ArduCAM and ESP32WebServer libraries to your Arduino/libraries directory, add the client or AP data to the example script from the github (ArduCAM_ESP32S_UNO/libraries/ArduCAM/examples/ESP32/ArduCAM_ESP32_Capture/ArduCAM_ESP32_Capture.ino). Also make sure you uncomment #define OV2640_CAM and #define OV2640_MINI_2MP in the memorysaver.h file in the Arducam library dir, run the script and a webcam webserver works. (Surf to <ip>/stream or <ip>/capture).
I tried PlatformIO and didn't like it, maybe I should have tried longer. But if you're making something to be this easy to use, the Arduino IDE is where the users are, so I would always create for it as the primary way for people to use it.
I know the JPGs take up space in flash (but 1 byte per byte, not more than they need, right?) I'd also like to know what the space in the compiled image is used for, can you also list that? There were some weird jumps in how big the image got while I was developing.
NTP time and also an inactivity power-off
A settings menu with
link to the wifi menu
NTP on/off, which server(s) and sync interval
clock display in header on/off
display backlight brightness
FACES keyboard support on/off
Setting up the M5Stack peripherals (which GPIOs etc)
But everything I add adds code size. So there probably there will be a few more code blocks like the present #ifndef M5EZ_WITHOUT_WIFI to allow people to not compile what they do not need.
But before I get to this I need to figure out why the .setTimeout method does not seem to affect the https transfers for the firmware because they timeout way too often.
Everyone: please feel free to suggest new features or tell me what you think about the proposed ones above.