This is my first designing an Arduino 'shield', so I wanted to get some input. This board interfaces with sensors using I2C. A Raspberry Pi interfaces with the Arduino, which reads magnetometer data from six to seven different sensors through an I2C expander. The schematic can be shown below:
I'm using KiCAD as my CAD software, and the following are the parts I'm using:
Arduino Uno Rev. 3 TCA9548A I2C Expander (Breakout) from Adafruit Adafruit HMC5883L Breakout - Triple-Axis Magnetometer from Adafruit
Link to Fabrication Print: https://learn.adafruit.com/adafruit-tca9548a-1-to-8-i2c-multiplexer-breakout?view=all
The magnetometer sensor breakout board consists of six pins, but I'm only using four of the pins. They'll connect to 4-pin headers which I will attach a ribbon cable to, so they will be used from a 1.5 meter distance in a box. The pin layout at the sensor is different but by crossing some wires on the connector at the sensor, I can get the 4-pin configuration shown in the schematic so SDA/SCL will be separated by +5V and GND. I'm designing the Arduino shield which will attach to the Arduino to eliminate the need of a breadboard.
So, for my design, I figured I would add some 10k pull up resistors to make the total pull up resistance be 5k for each sensor SDA/SCL line. The sensors already have a 10k pull up resistor, and by adding another 10k resistor, we can read the sensor from a long distance. I tested all of this on a breadboard with 1.5m wires, and it seems to work out well. I then added some capacitors from the +5V power pin from the Arduino to keep the voltage steady since it has to power a lot of devices. A first layout draft can be shown below:
For the board layout, I have a ground plane on both the top and bottom layer, but I turned it off for the picture to show the routing. For the capacitors and resistors, they're all SMDs using 0805 size standard, so I can easily hand solder them. I placed most of the pull-up resistors on the bottom of the board so as to use as much space as I can. Judging by the size of the Arduino, it shouldn't touch the parts (unless I'm mistaken by the distance from the shield to the board). As a first Arduino shield design, do you see anything wrong with the design that might be a concern? Design-wise, the multiplexer has 0.6 inches (15.24 mm) between the two sides of the pin, so there should be plenty of room for the 0805 resistors. But, would their placement like this have any issues that I don't know about? Similarly, the capacitor values were just picked based off another design that was working off of +5V. I was powering an OpAmp, and the reference design used those values, but now that I'm powering more items, should I go with a larger value?
EDIT: Apologies, but I wanted to clear something up. The part that I used for the TCA9548 I2C expander is a little strange, but I just used a 2x12 part in the schematic and labeled as the TCA9548. I didn't know that it was left to right rather than CCW. Nevertheless, I made sure that the pin placements matched up with the component shown on Adafruit's page, so it is fine.