树莓派 Zero 2 W (Raspberry Pi Zero 2 W)

元器件
开发板
库存 95

介绍

超小型SBC,RP3A0四核Cortex-A53 1GHz、512MB LPDDR2、Mini-HDMI 1080p、双频WiFi 4/BT 4.2、Micro-USB OTG、40Pin GPIO(需焊接)、CSI摄像头接口,尺寸仅65×30mm

规格参数

参数
CPURP3A0 四核 Cortex-A53 @ 1GHz (Pi3架构封装)
CSIMini CSI摄像头接口
GPUVideoCore IV
RAM512MB LPDDR2
USB1×Micro-USB OTG
GPIO40Pin(未焊接焊盘)
存储MicroSD卡槽
尺寸65×30×5mm
电源5V/2A (Micro-USB)
网络802.11n WiFi 4 + BT 4.2
重量9g
视频输出Mini-HDMI 1080p30

代码例程

树莓派 Zero 2 W GPIO 编程 — Python + Gadget 模式.md
# 树莓派 Zero 2 W GPIO 编程例程

Zero 2 W GPIO 与标准树莓派完全兼容,所有 Pi 4B / 3B+ 的代码可直接使用。

---

## 示例 1:Python — GPIO 控制 LED + 按键(gpiozero)

```python
#!/usr/bin/env python3
"""Zero 2 W LED + 按键"""
from gpiozero import LED, Button
from signal import pause

led = LED(17)        # BCM 17 (Pin 11)
btn = Button(27, pull_up=True)  # BCM 27 (Pin 13)

btn.when_pressed = led.on
btn.when_released = led.off

print("按键按下 → LED亮,松开 → LED灭")
pause()
```

## 示例 2:配置 USB Gadget — 模拟以太网 (SSH 直连)

```bash
#!/bin/bash
# 在 Zero 2 W 的 boot 分区添加以下配置,实现 USB 直连电脑 SSH

# --- config.txt 追加 ---
echo "dtoverlay=dwc2" | sudo tee -a /boot/config.txt

# --- cmdline.txt 在 rootwait 后添加 ---
# modules-load=dwc2,g_ether

# --- 创建静态IP配置 ---
sudo tee /etc/network/interfaces.d/usb0 << EOF
auto usb0
allow-hotplug usb0
iface usb0 inet static
    address 192.168.7.2
    netmask 255.255.255.0
    gateway 192.168.7.1
EOF

echo "重启后,电脑可通过 192.168.7.2 SSH 连接 Zero 2 W(无需网线/WiFi)"
```

## 示例 3:Python — 低功耗传感器采集(带休眠)

```python
#!/usr/bin/env python3
"""Zero 2 W 低功耗温湿度采集 + MQTT上报"""
import time
import json
import paho.mqtt.client as mqtt
import Adafruit_DHT

DHT_PIN = 4
MQTT_BROKER = "192.168.1.100"
CLIENT_ID = "zero2w-sensor"
TOPIC = "home/sensors"

client = mqtt.Client(CLIENT_ID)
client.connect(MQTT_BROKER, 1883, 60)

while True:
    h, t = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, DHT_PIN)
    if h and t:
        payload = json.dumps({"temperature": round(t,1), "humidity": round(h,1)})
        client.publish(TOPIC, payload)
        print(f"上报: {payload}")

    time.sleep(60)  # 每分钟采集一次,降低功耗
```

## 示例 4:Shell — 一键配置 WiFi(无屏幕/无键盘)

```bash
#!/bin/bash
# 在 SD 卡 boot 分区创建 wpa_supplicant.conf,上电自动连 WiFi

cat > /boot/wpa_supplicant.conf << EOF
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN

network={
    ssid="你的WiFi名"
    psk="你的WiFi密码"
    key_mgmt=WPA-PSK
}
EOF

# 同时创建空 ssh 文件以启用 SSH
touch /boot/ssh

echo "配置完成!插入 SD 卡上电后自动连接 WiFi 并启用 SSH"
echo "用路由器后台或 nmap 查找 IP: nmap -sn 192.168.1.0/24"
```

## 示例 5:Python — I²C 连接 BMP280 气压传感器

```python
#!/usr/bin/env python3
"""Zero 2 W + BMP280 气压温湿度"""
import board
import busio
import adafruit_bmp280

i2c = busio.I2C(board.SCL, board.SDA)  # GPIO3, GPIO2
bmp = adafruit_bmp280.Adafruit_BMP280_I2C(i2c, addr=0x76)

# 设置海平面气压(根据当地气象站数据校准)
bmp.sea_level_pressure = 1013.25

print(f"温度: {bmp.temperature:.1f}°C")
print(f"气压: {bmp.pressure:.1f} hPa")
print(f"海拔: {bmp.altitude:.1f} m")
```

## 示例 6:Python — GPIO 驱动 WS2812 灯带

```python
#!/usr/bin/env python3
"""Zero 2 W WS2812B 灯带控制 — 使用 rpi_ws281x"""
from rpi_ws281x import PixelStrip, Color
import time

LED_COUNT = 8
LED_PIN = 18       # BCM 18 (Pin 12) — PWM0
LED_FREQ_HZ = 800000
LED_DMA = 10
LED_BRIGHTNESS = 128

strip = PixelStrip(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA,
                   False, LED_BRIGHTNESS)
strip.begin()

def color_wipe(color, wait_ms=50):
    for i in range(strip.numPixels()):
        strip.setPixelColor(i, color)
        strip.show()
        time.sleep(wait_ms / 1000.0)

try:
    print("WS2812 彩虹扫描...")
    while True:
        color_wipe(Color(255, 0, 0), 100)   # 红
        color_wipe(Color(0, 255, 0), 100)   # 绿
        color_wipe(Color(0, 0, 255), 100)   # 蓝
except KeyboardInterrupt:
    color_wipe(Color(0, 0, 0))  # 灭灯
    print("\n退出")
```

---

## ⚠️ Zero 2 W 特别注意

1. **GPIO 是 3.3V**:焊盘无保护,短接 5V 与 3.3V 会烧毁 SoC。
2. **焊接技巧**:推荐先在焊盘上锡,再用热风枪或低温烙铁快速焊接排针。
3. **OTG 供电限制**:仅 ~50mA,外接 USB 设备必须用有源 Hub。USB HAT 可解决此问题。
4. **功耗优化**:关闭 HDMI (`/usr/bin/tvservice -o`) 可节省 ~25mA;关闭 LED 可节省 ~5mA。
5. **散热**:Zero 2 W 没有散热片,满载可能达 80°C+ 并降频。长时间满载建议加散热片。

参考资料

暂无参考文献