i2c scanning all the devices can confuse some of them,
such as the OV* camera's. Better to selectively scan just the ones
we want to know about, plus, it's also faster.
M5Stack-Fire board detection should be:
i2c0 = I2C(0, sda=Pin(21), scl=Pin(22))
if {0x68} <= set(i2c0.scan()): # IMU (MPU6886)
return "m5stack-fire"
But there are some pin incompatibilities between ESP32 and ESP32-S3 boards that don't allow I2C scan.
- Natural orientation: camera on top, USB ports on bottom
- OV3660 camera works (but colors are off and it breaks the touch input)
- Improve board detection
Currently, the file is a bit too small and there are interruptions,
probably from the timer stopping and starting to tweak it.
I guess this should be done in C rather than pure MicroPython.
It seems to cause SSL/TLS session corruption on ESP32.
There is a performance impact, so maybe it should be reintroduced again later,
but for now, let's keep it simple and fix this bug.