超声波测距仪是电子爱好者入门和教学演示中的经典项目。借助TpyBoard开发板和Micropython编程语言,我们可以快速实现一个功能完整、易于理解的测距装置。本教程将详细介绍其工作原理、硬件连接和代码实现,非常适合在“电子产品世界”等论坛分享或作为教学演示用品。
一、 项目简介与原理
本项目使用HC-SR04超声波传感器和TpyBoard(一款兼容Micropython的开发板)来测量前方障碍物的距离。HC-SR04模块通过发射超声波并接收回波,根据时间差计算距离。其公式为:距离 = (声速 × 时间差) / 2。声速在常温下约为340米/秒。
二、 所需材料清单
- TpyBoard开发板 x1(或其他支持Micropython的ESP32/ESP8266开发板)
- HC-SR04超声波传感器模块 x1
- 面包板 x1
- 杜邦线 若干
- 可选:OLED显示屏(用于直接显示距离数值)
三、 硬件连接
将HC-SR04模块与TpyBoard按以下方式连接(以TpyBoard的GPIO引脚为例,请根据具体板型调整):
- VCC -> 开发板 5V 或 3.3V(根据模块规格)
- GND -> 开发板 GND
- Trig(触发)-> 开发板 GPIO15(或其他任意数字输出引脚)
- Echo(回波)-> 开发板 GPIO2(或其他任意数字输入引脚)
注意:部分HC-SR04模块工作电压为5V,若TpyBoard的IO口为3.3V电平,可能需要电平转换电路或使用电阻分压,以避免损坏开发板。
四、 Micropython代码实现
在TpyBoard上运行以下代码。确保开发板已刷入Micropython固件,并能通过串口工具(如PuTTY、Thonny)连接。
`python
from machine import Pin, Timer
import time
初始化引脚
trig = Pin(15, Pin.OUT) # 触发引脚,输出
echo = Pin(2, Pin.IN) # 回波引脚,输入
定义测量函数
def measure_distance():
# 确保触发信号为低电平起始
trig.low()
time.sleep_us(2)
# 发送一个10微秒的高脉冲作为触发信号
trig.high()
time.sleep_us(10)
trig.low()
# 等待回波引脚变为高电平(开始接收回波)
while echo.value() == 0:
pass
pulsestart = time.ticksus() # 记录回波开始时间
# 等待回波引脚变为低电平(回波结束)
while echo.value() == 1:
pass
pulseend = time.ticksus() # 记录回波结束时间
# 计算时间差(微秒)
pulseduration = time.ticksdiff(pulseend, pulsestart)
# 计算距离:时间差 * 声速(340 m/s) / 2,转换为厘米
声速 340 m/s = 0.034 cm/微秒。公式为:距离 = (脉冲时间 * 0.034) / 2
distancecm = (pulseduration * 0.034) / 2
return distance_cm
主循环,持续测量并打印距离
while True:
dist = measure_distance()
# 通常有效测距范围为2cm-400cm,可做简单过滤
if dist > 2 and dist < 400:
print("距离: {:.2f} cm".format(dist))
else:
print("测量值超出有效范围或无效")
time.sleep(1) # 每秒测量一次`
五、 功能扩展与教学演示建议
- 增加显示:连接一个I2C接口的OLED屏幕,将距离数值实时显示出来,视觉效果更直观。
- 增加报警:当距离小于设定阈值(如20厘米)时,让板载LED闪烁或蜂鸣器鸣响,实现简易防撞报警。
- 数据上报:利用TpyBoard的Wi-Fi功能,将距离数据上传到物联网平台,实现远程监控。
- 教学重点:在演示时,可以重点讲解超声波测距的物理原理、时间差测量方法、Micropython的GPIO控制以及简单的数据处理(如单位换算、范围过滤)。通过改变障碍物的位置,让学生直观理解传感器的工作原理和程序运行逻辑。
六、 常见问题排查
- 无输出或输出恒定:检查接线是否正确、牢固;确保传感器供电电压合适。
- 测量值不稳定:避免传感器正对着柔软或吸音材料测量;检查环境中是否有强烈的声波干扰。
- 程序报错:确认引脚编号与物理连接一致;检查Micropython固件版本。
通过这个项目,学习者不仅可以掌握Micropython的基本编程和硬件控制,还能深入理解超声波传感器的应用,为后续更复杂的物联网或智能硬件项目打下坚实基础。此装置成本低廉、效果直观,非常适合作为电子实训课程或兴趣小组的演示与DIY项目。