Enviro not showing anything with i2cdetect

Hi all!

I recently purchased a Pimoroni Enviro indoor climate sensor and am currently going through the motions of getting it setup. I connected it directly onto the GPIO header of my Raspberry Pi 3 B+ and installed the required libraries as laid out in the getting started guide.

The lcd.py example works great, I’m able to display new messages through code. However, weather.py (and others) throw a RuntimeError where they can’t find bme280 on 0x76.
Running i2cdetect -y 1 shows that no addresses respond when probed across the board:

i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

So far I’ve already tried to do the following:

  • Running the install.sh and uninstall.sh scripts
  • Installing within virtualenv
  • Removing the module and placing it back on the Raspberry Pi
  • Installing python-smbus

I don’t have a multimeter so I can’t test to see weather the board itself is dead, but the LCD works.

Any help would be appreciated, thanks!

Fresh Pi OS image? If not, might want to start with a fresh image. Just in case something done in the past is messing things up?

Here’s the printout from neofetch:

  `.::///+:/-.        --///+//-:``    pi@raspberrypi 
 `+oooooooooooo:   `+oooooooooooo:    -------------- 
  /oooo++//ooooo:  ooooo+//+ooooo.    OS: Raspbian GNU/Linux 10 (buster) armv7l 
  `+ooooooo:-:oo-  +o+::/ooooooo:     Host: Raspberry Pi 3 Model B Plus Rev 1.3 
   `:oooooooo+``    `.oooooooo+-      Kernel: 5.10.63-v7+ 
     `:++ooo/.        :+ooo+/.`       Uptime: 4 hours 
        ...`  `.----.` ``..           Packages: 1431 (dpkg) 
     .::::-``:::::::::.`-:::-`        Shell: bash 5.0.3 
    -:::-`   .:::::::-`  `-:::-       Terminal: /dev/pts/0 
   `::.  `.--.`  `` `.---.``.::`      CPU: BCM2835 (4) @ 1.400GHz 
       .::::::::`  -::::::::` `       Memory: 185MiB / 923MiB 

I’m going to avoid wiping the image just to see if it works, as it’s not a guarantee and doesn’t help anyone running into the same problem in the future.

If you have a spare SD Card its not a big deal. Anytime I’ve had a hardware i2c issue i2c detect takes a very long time to run, and reports all addresses. In those cases I had a short to ground on SDA or SCL. Sloppy soldering usually.

I only have one MicroSD card, and have other projects that run on the current one so I’d like to avoid going through that process just to not know what the issue was.

Fair enough. Do any of those other projects use i2c?

No, this is the first project I’ve had which uses i2c

Is there anything extra that I would need to do in order to connect my Enviro to the Pi beyond plugging it into the GPIO header?

Is I2C enabled in sudo raspi-config?

i2cdetect won’t run if i2c isn’t enabled, and you get a weird file not found error in Thonny / Python when you run code that uses it.

Have to ask just to be sure, Enviro firmly attached to the GPIO header, correct way around?

1 Like

Were any of your other projects using UART or something that may have used the i2c pins for something else?

Yes, along with smi. I’ve also tried to disable and re-enable it a few times, to no luck.

Have to ask just to be sure, Enviro firmly attached to the GPIO header, correct way around?

I couldn’t find any images for reference with the larger Pis, but it’s so that the Enviro is directly over the raspberry Pi. I assume that it’s the correct way since the LCD works as expected.

Were any of your other projects using UART or something that may have used the i2c pins for something else?

I’ve only ever used GPIO pins 1 and 4 on this Pi for a little 5V brush-motor fan which cooled the fan.
I also have a much older Raspberry Pi model 1 but unfortunately it only has 26 pins.

It occurred to me after I posted that if SPI was working it must be on the correct way round.
If you have heatsinks on that Pi make sure they aren’t touching the back side of the Enviro board.

The heatsinks on the PI aren’t touching the enviro board, and I can’t push the Enviro any further onto the GPIO head.

Ok, sounds like a hardware issue to me?

This seems pretty plugged in to me, the only thing that’s stopping the Enviro from going further is the Power over Ethernet header.

I’m looking at some photos of the Raspberry Pi zero and it doesn’t have the same PoE header that my Pi has, but that still doesn’t seem like something that would entire block I2C from not working on the 3B+, unless that mm is what makes all the difference. Since the LCD works, this doesn’t seem to be the problem.

I don’t think that’s the issue. I ask the “firmly attached” question because believe it or not, there are a few new to Pi etc, that don’t know it has to be pressed on. They just rest it on top, pins touching, but not inserted etc. 1/3 or 1/4 of the way on and it will work. Might want to actually raise it a little bit so the POE pins aren’t touching the back side of the Enviro.

Yeah, Pi Zero doesn’t have the POE header, as it doesn’t have an Ethernet Jack onboard.
The Enviro should work with any Pi with a 40 pin GPIO header.