传感器与执行器实战手册
每个传感器包含:外观照片 → 技术参数 → 详细接线 → Mind+步骤 → Python代码 → 常见坑点
通用接线规范
线色约定
红色/橙色 → VCC(电源正极,3.3V 或 5V)
黑色/棕色 → GND(电源负极)
黄色/绿色 → SIG(信号线)
蓝色 → SDA(I2C数据)
紫色/黄色 → SCL(I2C时钟)安全规则
⚠ 先接线、后通电。拔线前先断电
⚠ 行空板M10的3Pin口是3.3V电平,5V传感器需用扩展板
⚠ 舵机/电机不要直接接行空板IO口!必须走扩展板
⚠ 不确定VCC电压时,先用3.3V
⚠ 3Pin防呆线有方向(凸起对准槽口),不要硬插
⚠ I2C总线上的设备地址不能重复
⚠ USB-Type-C口只能从一个地方供电1. LED灯模块
DFRobot 型号:DFR0031

技术参数
| 项目 | 值 |
|---|---|
| 工作电压 | 3.3V - 5V |
| 控制方式 | 数字高/低电平 |
| 接口类型 | 3Pin Gravity防呆口 |
| 信号逻辑 | HIGH=亮, LOW=灭 |
接线
LED模块 行空板M10 3Pin口
红线(VCC) ─── 红线(3.3V)
黑线(GND) ─── 黑线(GND)
绿线(SIG) ─── 黄线(P21)Mind+ 步骤
- 扩展 → 官方库 → 行空板M10
- 拖出「设置引脚 P21 为 输出」
- 拖出「设置数字引脚 P21 输出 高电平」= 亮
Python代码
开关控制:
from pinpong.board import Board, Pin
Board().begin()
led = Pin(Pin.P21, Pin.OUT)
led.write_digital(1) # 开灯
led.write_digital(0) # 关灯呼吸灯(需接PWM引脚):
led = Pin(Pin.P21, Pin.PWM)
for i in range(0, 1024, 5):
led.write_analog(i)
time.sleep(0.01)2. 按钮模块
DFRobot 型号:DFR0029

技术参数
| 项目 | 值 |
|---|---|
| 工作电压 | 3.3V - 5V |
| 输出类型 | 数字信号 |
| 按下 | HIGH (1) |
| 松开 | LOW (0) |
接线
按钮模块 行空板M10
红线(VCC) ─── 3.3V
黑线(GND) ─── GND
绿线(SIG) ─── P23Python代码
查询式:
btn = Pin(Pin.P23, Pin.IN)
if btn.read_digital() == 1:
print("按下!")中断式(响应快):
from pinpong.extension.unihiker import *
def btn_pressed(pin):
print("触发!")
button_a.irq(trigger=Pin.IRQ_RISING, handler=btn_pressed)3. DHT11 温湿度传感器
DFRobot 型号:DFR0067

技术参数
| 项目 | DHT11 | DHT22 |
|---|---|---|
| 温度范围 | 0~50°C | -40~80°C |
| 温度精度 | ±2°C | ±0.5°C |
| 湿度范围 | 20~95%RH | 0~100%RH |
| 湿度精度 | ±5%RH | ±2%RH |
| 采样周期 | ≥1秒 | ≥2秒 |
接线
DHT11模块 行空板M10
VCC (红线) ─── 3.3V
GND (黑线) ─── GND
DATA (绿/黄) ─── P4(任意数字引脚)Mind+ 步骤
- 扩展 → pinpong库 → 搜索「DHT」→ 加载
- 拖出「初始化DHT11 引脚 P4」
- 拖出「读取温度(°C)」「读取湿度(%RH)」
Python代码
from pinpong.board import Board, Pin
from pinpong.libs.dfrobot_dht11 import DHT11
Board().begin()
dht = DHT11(Pin(Pin.P4))
temp = dht.temp_c() # 温度 °C
humi = dht.humidity() # 湿度 %
print(f"温度: {temp}°C 湿度: {humi}%")温控风扇(完整示例):
from pinpong.libs.dfrobot_servo import Servo
servo = Servo(Pin(Pin.P21)) # 模拟风扇
while True:
temp = dht.temp_c()
if temp >= 30:
servo.angle(180) # 高温→开风扇
else:
servo.angle(0) # 正常→关
time.sleep(2)常见坑点
| 问题 | 原因 | 解决 |
|---|---|---|
| 显示0或85 | 初始化失败 | 检查接线,等待1秒再读 |
| 数值跳跃 | 采样太快 | 至少间隔2秒 |
| 始终同一数值 | 上拉电阻缺失 | 用4Pin模块(自带电阻) |
Mind+示例项目:M10 DHT11温湿度编码.mp⬇ 下载
4. 超声波传感器 HC-SR04
DFRobot 型号:SEN0304(Gravity版)

技术参数
| 项目 | 值 |
|---|---|
| 工作电压 | 5V(3.3V不稳定) |
| 测距范围 | 2cm ~ 400cm |
| 精度 | ±3mm |
| 测量角度 | ≤15° |
| 触发信号 | 10μs TTL高电平 |
接线方案
接扩展板(推荐,5V供电稳定):
HC-SR04 扩展板
VCC (红) ─── 5V
GND (黑) ─── GND
TRIG(绿) ─── P16
ECHO(黄) ─── P15(建议串1KΩ电阻保护3.3V IO)Mind+ 步骤
- 扩展 → pinpong库 → 搜索「超声波」→ 加载
- 拖出「初始化超声波 Trig=P16 Echo=P15」
- 拖出「读取距离(cm)」
Python代码
from pinpong.board import Board, Pin
from pinpong.libs.dfrobot_ultrasonic import Ultrasonic
Board().begin()
sonic = Ultrasonic(Pin(Pin.P16), Pin(Pin.P15))
dist = sonic.distance_cm()
print(f"距离: {dist}cm")自动门禁(超声波+舵机):
from pinpong.libs.dfrobot_servo import Servo
servo = Servo(Pin(Pin.P21))
TRIGGER = 30 # 触发距离cm
while True:
dist = sonic.distance_cm()
if dist < TRIGGER:
servo.angle(180) # 开门
print("有人靠近!")
else:
servo.angle(0) # 关门
time.sleep(0.5)常见坑点
| 问题 | 原因 | 解决 |
|---|---|---|
| 距离始终0 | 5V供电不足 | USB口供电不稳,换外部5V |
| 跳变 | 被测物太软 | 对准硬表面 |
| ECHO烧IO | 5V→3.3V电平 | 串1KΩ电阻 |
| 多个超声干扰 | 同时发射 | 轮流使用 |

Mind+示例:超声波测距测试.mp⬇ 下载仰卧起坐计数完整示例.mp⬇ 下载
5. 舵机 (9g Servo)
DFRobot 型号:SER0039

技术参数
| 项目 | 值 |
|---|---|
| 工作电压 | 4.8V ~ 6V |
| 工作电流 | 100mA(空载) / 750mA(堵转) |
| 角度范围 | 0° ~ 180° |
| 控制信号 | PWM 50Hz |
| 扭矩 | 1.2kg·cm |
接线 ⚠ 必须用扩展板!
舵机杜邦线 扩展板
棕(GND) ─── GND
红(VCC) ─── 5V(扩展板供电!)
橙(SIG) ─── P21(PWM引脚)
🚫 绝对不要直接插行空板3Pin口!
电流不够,可能损坏行空板支持PWM的引脚
P21、P22、P23(3Pin口,最方便) P0、P2、P3、P10、P16(金手指)
Mind+ 步骤
- 扩展 → pinpong库 → 搜索「舵机」→ 加载
- 拖出「舵机初始化 引脚 P21」
- 拖出「舵机转动到角度 90」
Python代码
from pinpong.board import Board, Pin
from pinpong.libs.dfrobot_servo import Servo
Board().begin()
servo = Servo(Pin(Pin.P21))
servo.angle(0) # 0度(关)
servo.angle(90) # 90度(中间)
servo.angle(180) # 180度(开)平滑转动(避免抖动):
def smooth_move(servo, target, step=2, delay=0.02):
current = servo.angle() or 90
r = range(current, target+1, step) if target > current else range(current, target-1, -step)
for a in r:
servo.angle(a)
time.sleep(delay)6. 光线传感器
6A. 板载光线传感器(M10自带)
位置:M10正面屏幕上方左侧小孔
from pinpong.extension.unihiker import *
Board().begin()
val = light.read() # 0~4095,越大越亮6B. 外接模拟光线传感器
DFRobot 型号:DFR0026

| 项目 | 值 |
|---|---|
| 接口 | 模拟电压输出 |
| 工作电压 | 3.3V~5V |
adc = Pin(Pin.P21, Pin.ANALOG)
light_val = adc.read_analog()Mind+示例:自动控制灯.mp⬇ 下载光线值串口打印.mp⬇ 下载
7. 模拟声音传感器
DFRobot 型号:DFR0034

| 项目 | 值 |
|---|---|
| 类型 | 模拟输出 |
| 工作电压 | 3.3V~5V |
adc = Pin(Pin.P21, Pin.ANALOG)
sound_val = adc.read_analog()7B. 板载麦克风(M10自带)
from unihiker import Audio
audio = Audio()
level = audio.sound_level() # 环境音量 0~4095
audio.record("msg.wav", 5) # 录音5秒8. 蜂鸣器
8A. 板载蜂鸣器(M10背面)
from pinpong.extension.unihiker import *
Board().begin()
buzzer.play(buzzer.DADADADUM, buzzer.Once)
buzzer.pitch(440, 4) # 440Hz, 4拍预置音乐:DADADADUM, ENTERTAINER, PRELUDE, ODE, NYAN, RINGTONE, FUNK, BLUES, BIRTHDAY, WEDDING
8B. 外接有源蜂鸣器模块
DFRobot 型号:DFR0032
通电即响,只需高低电平控制。
9. 六轴加速度传感器(板载)
位置:M10背面,芯片 ICM20689/QMI8658C

from pinpong.extension.unihiker import *
Board().begin()
ax = accelerometer.get_x() # X轴加速度
ay = accelerometer.get_y() # Y轴加速度
az = accelerometer.get_z() # Z轴加速度(静止≈1.0g)
# 倾倒检测
if ax > 0.7 or ax < -0.7 or ay > 0.7 or ay < -0.7:
print("⚠ 设备倾倒!")10. OLED显示屏 128×64
DFRobot 型号:DFR0550

| 项目 | 值 |
|---|---|
| 驱动芯片 | SSD1306 |
| 分辨率 | 128×64 像素 |
| 协议 | I2C(地址0x3C) |
| 显示行数 | 4行(每行16像素高) |
接线
OLED 行空板 I2C口(4Pin白色)
VCC(红) ─── 红线(3.3V)
GND(黑) ─── 黑线(GND)
SCL(黄) ─── 黄线(SCL)
SDA(蓝) ─── 蓝线(SDA)Python代码
from pinpong.board import Board
from pinpong.libs.dfrobot_ssd1306 import SSD1306_I2C
Board().begin()
oled = SSD1306_I2C(128, 64)
oled.begin()
oled.set_cursor(0, 0); oled.print("温度: 25.5°C")
oled.set_cursor(0, 16); oled.print("湿度: 60%")
oled.set_cursor(0, 32); oled.print("光照: 800")
oled.set_cursor(0, 48); oled.print("状态: 正常")11. 语音合成模块
DFRobot 型号:DFR0760
| 项目 | 值 |
|---|---|
| 芯片 | XFS5152CE |
| 语言 | 中文/英文 TTS |
| 协议 | I2C |
| 音量 | 0~9可调 |
接线
语音合成模块 行空板 I2C口
VCC(红) ─── 3.3V/5V
GND(黑) ─── GND
SCL(黄) ─── SCL
SDA(蓝) ─── SDAPython代码
from DFRobot_SpeechSynthesis_I2C import DFRobot_SpeechSynthesis_I2C
sstts = DFRobot_SpeechSynthesis_I2C()
sstts.begin(sstts.eV2)
sstts.setVolume(8)
sstts.speak("欢迎使用智能系统")
sstts.speak(f"当前温度为{25}度")12. USB摄像头
插入M10 USB-A口即用。 Mind+示例:M10物体分类(采集/训练/识别).mp⬇ 下载
13. 直流电机/风扇模块
DFRobot 型号:DFR0332
通过扩展板 DFR1198 的 M1/M2 接口驱动。
motor_dir = Pin(Pin.P2, Pin.OUT) # 方向
motor_pwm = Pin(Pin.P10, Pin.PWM) # 速度
motor_dir.write_digital(1) # 正转
motor_pwm.write_analog(800) # 速度0~1023行空板M10引脚功能总表
| 引脚 | 数字IO | ADC | PWM | I2C | UART | 备注 |
|---|---|---|---|---|---|---|
| P0 | ✅ | ✅ | ✅ | RX | ADC+PWM | |
| P1 | ✅ | ✅ | ||||
| P2 | ✅ | ✅ | ✅ | ⚠与P8共用PWM | ||
| P3 | ✅ | ✅ | ✅ | TX | ||
| P4 | ✅ | ✅ | ||||
| P10 | ✅ | ✅ | ✅ | ⚠与P9共用PWM | ||
| P16 | ✅ | ✅ | 常用PWM | |||
| P19 | ✅ | SCL | I2C时钟 | |||
| P20 | ✅ | SDA | I2C数据 | |||
| P21 | ✅ | ✅ | ✅ | 推荐舵机脚 | ||
| P22 | ✅ | ✅ | ✅ | 推荐舵机脚 | ||
| P23 | ✅ | ✅ | 推荐舵机脚 | |||
| P24 | ✅ | 仅数字IO | ||||
| P25 | ✅ | 板载L灯 | ||||
| P29 | 内部 | 内部 | 板载光线传感器 |

传感器组合实战方案
| 方案 | 传感器组合 | 难度 | 时耗 |
|---|---|---|---|
| 温控风扇 | DHT11 + 舵机 | ★☆☆ | 1h |
| 自动灯 | 光线传感器 + LED | ★☆☆ | 0.5h |
| 智能门禁 | 超声波 + 舵机 + 蜂鸣器 | ★★☆ | 2h |
| 环境监测站 | DHT11 + 光线 + 麦克风 + OLED | ★★☆ | 3h |
| AI监控 | USB摄像头 + DHT11 + MQTT + 手机 | ★★★ | 6h |
| AI助手 | 麦克风 + 语音合成 + SIoT桥接AI | ★★★ | 8h |
AI守护+ 行空板终稿.py🔍 预览arduino程序.txt🔍 预览培训项目文件夹GitHub
参考:pinpong库官方文档 + DFRobot产品维库 + 2026培训资料