介绍
超小型SBC,RP3A0四核Cortex-A53 1GHz、512MB LPDDR2、Mini-HDMI 1080p、双频WiFi 4/BT 4.2、Micro-USB OTG、40Pin GPIO(需焊接)、CSI摄像头接口,尺寸仅65×30mm
超小型SBC,RP3A0四核Cortex-A53 1GHz、512MB LPDDR2、Mini-HDMI 1080p、双频WiFi 4/BT 4.2、Micro-USB OTG、40Pin GPIO(需焊接)、CSI摄像头接口,尺寸仅65×30mm
| 参数 | 值 |
|---|---|
| CPU | RP3A0 四核 Cortex-A53 @ 1GHz (Pi3架构封装) |
| CSI | Mini CSI摄像头接口 |
| GPU | VideoCore IV |
| RAM | 512MB LPDDR2 |
| USB | 1×Micro-USB OTG |
| GPIO | 40Pin(未焊接焊盘) |
| 存储 | MicroSD卡槽 |
| 尺寸 | 65×30×5mm |
| 电源 | 5V/2A (Micro-USB) |
| 网络 | 802.11n WiFi 4 + BT 4.2 |
| 重量 | 9g |
| 视频输出 | Mini-HDMI 1080p30 |
# 树莓派 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+ 并降频。长时间满载建议加散热片。
暂无参考文献