With any new board, you have to apply power to it at some point, so after removing all the modules (ESP32, Pi Zero, GPS, etc), since they are expensive to replace if things go wrong. I then temporarily removed some current sensing resistors (bottom of the board, R115, R115, R117), as this allowed me to isolate sections of the board to limit damage if things went wrong.
Next was measuring all the important rails to make sure that nothing is shorted and I'm ready to apply power. I set my bench power supply to a low current limit, to protect against anything bad happening, connected up the 12V power in, turned it on and listened.
No fizz, no pop, no bang, no current limit on the power supply. Well, that was thankfully uneventful, so what's next ?
The next step was to check the 12V rail was going to the expected places, then adding back in the current sensing resistors on the 5V rail, re-adjusting the power output, as its now got a load applied to it, then check 5V power across the board, rinse and repeat for the 3.3V power rail and finally we have a board that is powered up and ready to do things with.
Next, I need power control for the Raspberry Pi, which means programming up IC4, the PIC16F626A via its ICSP plug, JP3, but in all the excitement of the previous weeks, I've not even considered that. So, time to update the MPLab IDE, which is out of date, having not been used in ages, then find the source code from the old V1 board for this device, recompile it and program the chip via the PicKIT3 programmer. Now, we have the ability to power up the Pi, except it doesn't work.
Close investigation shows the first problem on the board, Transistor TR2 is not working as expected, this provides the switched power feed to the Raspberry Pi. After a bit of debugging, it turns out that the wrong transistor was used, I had a P channel MOSFET in, since I was providing high side switching, however, in the circuit I brought forward from the version 1 design, I actually needed an N channel MOSFET and to make things worse, the pinouts are different, so it won't fit, so what to do ?
I also found a problem with the reset circuitry, I had neglected to add some pull up resistors on some of the reset lines, leaving them as a simple open collector output.
This is when you get into creative thinking. Clearly, I'm not going to respin the board for one or two defects as the manufacturing costs and component costs for one are high and there are going to be more defects. But, I can't power up the Pi and that's going to make things difficult until I get everything else working, at which point the Pi should not actually be necessary as the ESP32 should be able to run everything on its own.
The need for the Pi is for expansion later on, to provide a USB socket that I can use for connecting to the ESP32's USB interface for UART mode for a serial console into the ESP, along with a firmware download mechanism - once I get all the right software in place. Minicom as the go-to serial terminal program and esptool.py along with the supporting files to allow firmware download.
The Pi is also my insurance for when things inevitably go wrong and I don't want to have to stand in the chicken coop with a laptop and a cable, particularly as this means disassembling the unit as you can't easily have connectors on the box, since red mites will infest it and the Diatomaceous earth powder used in poultry keeping to control the mites and bugs will contaminate it and make it unusable, assuming mud or chicken poo doesn't get in there first - which it will.
Now we enter the realm of change management on a development project and that is the next topic.