树莓派5截止发稿时间(2025-11)最新的OS版本是基于Debian Trixie。前一版本基于Debian Bookworm

我在最新版的Raspberry Pi OS ( Debian Trixie)下反复调试都没有驱动成功,遂安装了上一版本的 Raspberry Pi OS ( Debian Bookworm)。

以下所有的操作都是在  Raspberry Pi OS ( Debian Bookworm)执行的。

1. SPI硬件配置

$ sudo raspi-config
> 3 Interface Options > I4 SPI > YES
 
 
$ ls -l /dev/spi*
 
#你应该看到如下的信息:
crw-rw---- 1 root spi 153, 0 11月23日 01:50 /dev/spidev0.0
crw-rw---- 1 root spi 153, 1 11月23日 01:50 /dev/spidev0.1
crw-rw---- 1 root spi 153, 2 11月23日 01:50 /dev/spidev10.0

2. python环境设置

$ sudo apt-get update
 
$ sudo apt-get install python3 python3-pip python3-pil libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libopenjp2-7 libtiff6 -y

3. 创建虚拟环境

我使用的是“--system-site-packages”,虚拟环境 myenv 会继承系统全局的 Python 包(即 /usr/lib/python3/dist-packages/ 中的包,如 RPi.GPIO, picamera2, lgpio 等)。
这在树莓派上很常见,因为很多硬件库只能通过 apt 安装(如 python3-rpi.gpio),不能用 pip 装。

#创建虚拟环境
$ python -m venv testenv --system-site-packages

#运行虚拟环境
$ source testenv/bin/activate

#安装luma库
$ pip install luma.lcd

4. 权限设置

uma.lcd使用需要权限才能访问的硬件接口。请先 成功安装后,你可能需要添加一个用户账户 你的程序会运行给哪些组允许访问这些内容接口。

$ sudo usermod -a -G spi,gpio,i2c pi
# pi用你的用户名代替

5. 接线

ST7735引脚    Raspberry Pi引脚
SCL        GPIO11 (Pin 23)
SDA        GPIO10 (Pin 19)
CS          GPIO8 (Pin 24)
DC          GPIO24 (Pin 18)
RST        GPIO25 (Pin 22)
BLK        直接连3.3V或GPIO18(Pin 12),如果需要控制背光的话
VCC        3.3V (Pin 1 or 17)
GND        Ground (e.g., Pin 6)
————————————————

6. 运行测试代码

# luma_cpu_temp.py
from luma.core.interface.serial import spi
from luma.lcd.device import st7735
from luma.core.render import canvas
from PIL import ImageFont
import time
import os
import psutil


# 初始化 SPI 接口(根据你的接线)
serial = spi(
    port=0,
    device=0,
    gpio_DC=24,
    gpio_RST=25,
    gpio_LIGHT=18
)

# 初始化 ST7735 屏幕(请根据你的屏幕实际方向调整 width/height)
device = st7735(
    serial,
    width=160,
    height=128,
    rotate=0,
    h_offset=0,
    v_offset=0
)

# 加载字体
try:
    font_large = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 18)
    font_small = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 14)
except OSError:
    font_large = ImageFont.load_default()
    font_small = font_large


# 主循环
try:
    while True:
        with canvas(device) as draw:

            # 设置背景颜色为浅灰色
            draw.rectangle(device.bounding_box, fill="lightgray")
            # 绘制文本内容
            draw.text((10, 10), "Raspberry Pi 5", fill="black", font=font_large)

            draw.text((10, 40), "Test ST7735S", fill="blue", font=font_large)

        time.sleep(2)  # 每2秒刷新一次

except KeyboardInterrupt:
    pass
finally:
    print("Exiting....")

7. 运行效果

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐