First off, I got loads of inspiration for this unit from Random Nerd Tutorials who provide superb guidance on all manner of things microcontroller related. No commercial or other links, just genuine appreciation. I recommend that you view their work on this platform in the link, everything here adds to that so isn't a duplication but there's no point in me attempting to replicate their excellent work.
I had already purchased one of these units to run as a DIY remote camera, the ESP32 examples in the ArduinoIDE provide the code to get this unit working in a range of scenarios and then it just needs customising, but RNT had already done a significant amount of work on it so I used their code . The rest of this is about implementing it.
The picture above shows the standard unit above, with identification sticker over the logo which just says 'ESP32-CAM' anyway. A battery holder/camera mount was design and 3D printed to make the unit usable.
At the rear of the unit, a small piece of matrix board is used to mount a switch and connections to the batteries, buck boost power supply, with pins for battery power, 5V stabilised power and ground. A divider in the middle houses two 3.7V, 650mAh lithium batteries connected in series, and in the front partition is a 2A buck boost power supply set to 5V. The intention is that this should also be able to power motors, servos and sensors in a larger robot.
On the front is a small piece of matrix board with a soldered socket for the ESP32-CAM and angled breakout pins for connectivity. Once programmed, this unit only requires the +5V and ground connections for basic operation. In practice, the unit has a measured power consumption of 250mA but with the battery configuration has run for over 4 hours so this may be variable depending on conditions.
Finally, two lugs were placed at either side of the front plate to provision mounting to a robot, as well as slots in the base.