The I2C bus can be shared as long as there aren’t any address conflicts, the Pimoroni Enviro already is using a couple of I2C sensors (check out this awesome resource: Enviro Plus at Raspberry Pi GPIO Pinout)
Since the PiicoDev adapter breaks out the two I2C communications pins (SDA - Data and SCL - Clock) along with the power connections you’ll be all good in-terms of the pins.
As for the senrors themselves, some of the PiicoDev range allows for new addresses to be selected through a solder pad (this would be very important for the BME as its normal address conflicts with one already on the Enviro, but can be changed to a new address).
The kit arrived, pretty much plug-and-play (pray), so far so good and no smoke…
I’ve got the Pimoroni Enviro and PiicoDev TMP117 working together, no address clashes. Not too sure about the PiicoDev BME280 (my preferred option but no stock) though, the default address is 0x77 (0x76 on the Enviro), but the following line of code in the Pimoroni library is a bit of a worry:
Not entirely sure what’s the implication of I2C_ADDRESS_VCC on 0x77.
Pimoroni Enviro is certainly very sensitive to the temperature of surround components (read the Pi), the temperature reading is quite a way off and Pimoroni’s Enviro sample code had some correction factor to compensate for the CPU temperature, not ideal and probably not very accurate for different setup
with a right angle GPIO header extender and having the Enviro sitting vertical to the Pi board made no difference, the conducted heat is probably still too great
with a 40-pin GPIO extension ribbon cable and having the Enviro far removed from the Pi board works a treat - how to solve the imposing ribbon cable is another matter…
the PiicoDev TMP117 for now is used as a reference temperature, with the Enviro on ribbon and the correction factor removed from the code, the two readings are pretty close
Anyway, will share more details when I get everything sorted, basic integration with Apple HomeKit (which is the main goal of this project) is progressing well but need a bit more refinement.
Thanks guys for your help thus far, it’s very helpful and much appreciated!
No worries, nothing to worry about, the default address of our PiicoDev BME280 is configured to 0x77 or 0x76 depending on what ADR is pulled to (the particular standard depends on the board, info should appear in their specs or datasheets). The Pimoroni BME280 also uses these addresses too:
The I2C_ADDRESS_VCC (VCC = Voltage Common Collector) refers to the address of the alternative address for the BME280 when the ADR connection is closed, this way, if you have two identical BME280 on the same I2C bus, the script can distinguish between them, you can see at line 123 in the class how these addresses are passed into some instance of the class and how they interact.