I didn't notice this until I was trying to place the headers for the I2C bus. I had intended to use the footprint for a 1x4 100 mil pitch male header strip. Without noticing, I selected a footprint that was 2.0 mm pitch. Although that is definitely a mistake, I can pretend it was intentional.
I routed the pins in the same relative order as the I2C bus signals are arranged in the Seeed Studio Grove system mentioned in an earlier project log. My plan was to use standard Dupont jumper wires to connect to off-board I2C components. By sheer luck, the Grove system uses the same 2.0 mm pitch JST connectors, and I have an assortment of connectors, cables, and hubs on-hand already from an unrelated exploration of Grove interconnects. The only difference is that my pin numbering is reversed from Grove numbering, but that just means turning the 1x4 connector around 180 degrees.
Although I wasn't planning to use Grove wiring for I2C, it actually makes things tidier than my original plan (which is the whole point of the Grove system and others like it). The resulting solution is:
- PCB mounted 1x4 2.0 mm pitch JST connector on the main PCB.
- Grove cable from the PCB connector to a 4-port "Grove hub" (a completely passive component that just breaks out the 4 signals across 4 identical connectors.
- From one of the hub ports, a hybrid Grove cable that has standard Dupont female connectors on the other end. I connected the individual connections from the Dupont end to the appropriate pins on the BME280 breakout board.
I can use this same arrangement to attach up to 2 more I2C components. (I might eventually attach a gesture sensor via I2C.)
If I ever do a V4 of this design, I will probably run all 4 signals to both a Grove connector and a standard 100 mil pitch connector so that things can be connected either way. I might also put additional connectors of one kind or the other (or both) to act as a (passive) hub on the main PCB.