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 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 add back in the current sensing resistor 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 PIC16F628A 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 several years, 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, what do I do to resolve that ?
Looking at other key areas of the board, I 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, hence they were low and some devices were not going to their normal operational state, since they were being held in a permanent reset state.
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 are high and there are going to be more defects in the coming weeks. But, I can't power up the Pi or get important IC's out of reset mode. Both of these are going to make things difficult until I can get them fixed. I could work around the Pi issue, by removing it, but I can't realistically do that until everything else is working, so I need a solution to the problem.
Right now, the Pi is for possible expansion purposes at some point in the future, but its also handy now to do things such as providing a USB socket that I can use that to connect to the ESP32's USB interface for UART mode for a serial console into the ESP. This interface also gives me a firmware download mechanism - once I get all the right software in place (Python and Espressif's esptool.py scripts, etc.) It also gives me an easy access to the console using Minicom as the go-to serial terminal program on Linux.
When I've got the system installed, 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 as most are not moisture or bug proof, 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 inevitably will.
Now we enter the realm of change management on a development project and that is the next topic.