This page discusses my process for designing the printed circuit board that forms the core of my project.

As discussed in the Components page, I decided on the following scheme to control as many sensors as possible:

The four banks of chips will be powered by GPIO lines from the microcontroller. I'll use filter capacitors to ensure a stable power source if necessary.

I will reprogram the I2C addresses by sequentially powering on a bank of chips, assigning their I2C addresses, then turning on the next bank of chips. In my design, I I have labeled the sensors: "U1A3" refers to the sensor on I2C interface #1, chip model A, power bank 3. Here's a layout of how the system will work:

Sensor layout
Sensor layout. I2C0 and I2C1 are the RP2040's two I2C interfaces, VDD1-VDD4 are four separate power sources run from the RP2040's GPIO pins, and A,B,C are the three different models of TMAG5273 chip I'm using.

In addition to the sensors, I will need to implement an SPI interface to control the TFT display and touchscreen. The final schematic for my board looks like this: Routing traces for the board was quite difficult, given the complexity of the circuit. I was forced to make two design compromises to get the routing to work: In routing the traces on the back side, I chose to put only traces, no components. This way, if the 2-layer board design doesn't work out, I will be able to use pieces of wire to manually route the back-side traces. Also, this gives the back side a "clean" appearance so it can be used as the floor of the project case.

My final board layout looks like this:

Here it is with some layout annotation: It has about 48 vias. Yikes. Hopefully that won't be too bad to solder.

Here's a close-up of some of the details of the final board design: