Enviro+ can't get the display to work

I’ve just got an Enviro+ with the particulate matter sensor and unfortunately I can’t get the LCD display to work. Running the lcd.py example I get a tiny multi-coloured ring which you can just make out in the photo

My Set-up:
new Pi Zero WH with latest raspbian os
Official raspberryPi power supply so power should be OK.
Enviro + Air Quality
PMS5003 Particulate Matter Sensor
Followed GitHub - pimoroni/enviroplus-python: Python library for the Enviro+ environmental monitoring board and Getting Started with Enviro+ - Pimoroni Yarr-niversity to install, configure and test the board.

The sensors appear to be working correctly in that I can obtain readings from the PMS and from the board (gas, temp, proximity, light). I have run the python examples.
The LCD backlight is coming on and off when the program finishes. The display displays a tiny multi-coloured ring when running lcd.py.

SPI is definitely enabled.
I have checked all the python libraries including the ST7735 library.

I’ve tried the enviro+ on a Pi4 and the results are the same. I ran the lcd.py in debug and added all the requested libraries until it ran without error.



I don’t have an Enviro+ but I am running the all-in-one-mini example of that screens Breakout Garden breakout and a BME280 breakout.
curl https://get.pimoroni.com/st7735 | bash should install everything needed for it to run.
I usually run the scrolling text example as a test from here,
st7735-python/examples at master · pimoroni/st7735-python · GitHub
The others should work too, you’ll have to edit the screen setup bit for them to work though. This “should” work on the enviro+ screen.

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import time

import ST7735

MESSAGE = "Hello World! How are you today?"

# Create ST7735 LCD display class.
disp = ST7735.ST7735(

# Initialize display.

WIDTH = disp.width
HEIGHT = disp.height

img = Image.new('RGB', (WIDTH, HEIGHT), color=(0, 0, 0))

draw = ImageDraw.Draw(img)

font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 30)

size_x, size_y = draw.textsize(MESSAGE, font)

text_x = 160
text_y = (80 - size_y) // 2

t_start = time.time()

while True:
    x = (time.time() - t_start) * 100
    x %= (size_x + 160)
    draw.rectangle((0, 0, 160, 80), (0, 0, 0))
    draw.text((int(text_x - x), text_y), MESSAGE, font=font, fill=(255, 255, 255))

You may also want to install this font. I had to for one of the examples to work.
sudo pip3 install fonts
sudo pip3 install font-roboto

I don’t know if it’s just me but when I look good at the image and zoom in it looks like the LCD display has a crack, which might be the cause of the problem? Also because the right side of the crack in the display has a somewhat multicoloured line?

Hi aplhanumeric,
Thanks for your help.
I’ve run your code in debug and when I execute the line disp.begin() the display shows the multi-coloured ring

Picking up on placebo83’s comment on a crack it does look like there’s a crack but it’s not visible when the screen is off.
Running the rest of the code doesn’t change what is displayed.

Hi Alphanumeric,
Yes I had the same issue and had installed the fonts. Trying the install again gave;

pi@raspberrypi4:~ sudo pip3 install fonts Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already satisfied: fonts in /usr/local/lib/python3.7/dist-packages (0.0.3) pi@raspberrypi4:~ sudo pip3 install font-roboto
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: font-roboto in /usr/local/lib/python3.7/dist-packages (0.0.1)

Everything seems to be there

Hi placebo83,
Thanks for your help.
I can’t see a crack when the dislay is off, but you’re right it does look like it’s cracked when lit here’s the latest phot when running alphanumeric’s python

Yeah, it looks like the screen is cracked / broken.