树莓派Zero 2 W也拥有着40针的引脚,支持着I2C、SPI、串口等总线功能。这里使用外设对这些总线进行测试。
I2C使用。I2C,Inter-Integrated Circuit。它是一种同步、串行、半双工的通信总线。同步,即发送端和接收端要求严格同步,通信双方使用的是同一个时钟源。串行,即使用一根数据线传输,数据一位一位地传输。而半双工,指的是接收数据和发送数据不可同时进行。这里我使用一个Unit ENV-III 环境传感器来测试I2C总线。这款传感器内部集成 SHT30 和 QMP6988,用于检测温度、湿度、大气压值数据。SHT30 是高精度低功耗的数字温湿度传感器,并支持 I2C 接口 ( SHT30: 0x44,QMP6988: 0x70 )。QMP6988 是一款专为移动应用而设计的绝对气压传感器,具有较高的精准度与稳定性,适用于环境数据采集检测类型的项目。
使用I2C总线,首先要在数码派中打开I2C接口。
sudo raspi-config



通过i2c-tools工具可以查看系统的I2C总线,可以看见有两个I2C总线,传感器挂载在I2C1上。这里传感器我是连接在3、5脚上。

系统中已经有python 3.13,所以可以直接使用python进行编程。
# @Author :Aramy
# 温湿度计,使用SHT30
import time
import smbus
BUS = smbus.SMBus(1)
addr=0x44
# sht30
def read_value():
BUS.write_byte_data(addr,0xe0,0x0)
time.sleep(1)
data = BUS.read_i2c_block_data(addr,0x0,6)
rawT = ((data[0]) << 8) | (data[1])
rawR = ((data[3]) << 8) | (data[4])
temp = -45 + rawT * 175 / 65535
RH = 100 * rawR / 65535
return temp,RH
def init_sht30():
try:
BUS.write_byte_data(addr,0x23,0x34)
time.sleep(0.5)
except:
return False
else:
return True
if __name__ == '__main__':
init_sht30()
while True:
temp,rh=read_value()
strtemp="温度:{:.1f}".format(temp)
strrh="湿度:{:.1f}".format(rh)
print(strtemp,' ',strrh)
time.sleep(1)
串口使用。树莓派 Zero2W 板载两个 UART,分别是:UART0:PL011 硬件串口(/dev/ttyAMA0)UART1:mini UART(/dev/ttyS0,功能受限,默认关闭)。但是折腾了好久,我这里只看见一个串口ttyS0,不知道是哪里做错了。
首先使用"sudo raspi-config"进行串口配置:





然后编辑文件"sudo vi /boot/firmware/config.txt",交换主/辅串口(把高性能 PL011 还给 GPIO)

最后将一个USB转TTL模块,与Zero2W的8、10脚进行连接。

使用python,做个简单的测试程序:
import serial, time
ser = serial.Serial('/dev/serial0', 115200, timeout=1)
while True:
ser.write(b'Hello UART\r\n')
time.sleep(1)
if ser.in_waiting:
print('Recv:', ser.readline())
即可实现串口通讯。但是这个Zero2W的串口资源,与树莓派比起来,少了很多。
SPI总线使用。这里SPI总线外设我是使用一块3寸4色墨水屏。

首先打开Zero2W的SPI总线。



微雪的墨水屏,有提供很详细的例子。直接运行微雪提供的例子,就能驱动起这个漂亮的墨水屏了。
| e-Paper | Raspberry Pi | |
| BCM2835编码 | Board物理引脚序号 | |
| VCC | 3.3V | 3.3V |
| GND | GND | GND |
| DIN | MOSI | 19 |
| CLK | SCLK | 23 |
| CS | CE0 | 24 |
| DC | 25 | 22 |
| RST | 17 | 11 |
| BUSY | 24 | 18 |
wget unzip E-Paper_code.zip -d e-Paper cd e-Paper/RaspberryPi_JetsonNano/python/examples python epd_3in0g_test.py


SPI总线驱动成功。
我要赚赏金
