ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Raspberry Pi 距离检测实战:在 IoT-For-Beginners 中驱动 VL53L0X 飞行时间传感器

2026/9/15 16:46:00 拓冰建站 浏览量
Raspberry Pi 距离检测实战:在 IoT-For-Beginners 中驱动 VL53L0X 飞行时间传感器 Raspberry Pi 距离检测实战在 IoT-For-Beginners 中驱动 VL53L0X 飞行时间传感器【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本文基于 IoT-For-Beginners 开源课程4-manufacturing/lessons/4-trigger-fruit-detector一课的 Raspberry Pi 章节整理而成讲解如何为树莓派接入 Grove Time of Flight飞行时间距离传感器并读取距离数据。该能力是水果品质检测器原型中用接近传感器触发拍照分类环节的第一步读完本文你将掌握 VL53L0X 传感器在树莓派上的接线方法、rpi-vl53l0xPython 库的安装与调用以及完整的可运行示例代码。为什么需要接近传感器在完整的 IoT 应用中系统往往由多个设备协同工作传感器采集物理世界数据、云服务分析决策、执行器或可视化做出响应。4-manufacturing项目的最后一课 触发水果品质检测 就围绕水果在传送带上到达指定位置后自动拍照、调用图像分类模型判断成熟度这一场景展开。其中接近传感器proximity sensor承担触发器的角色它通过发射激光或红外光束并计算光束被物体反射回来的时间来测量传感器到物体之间的距离。当水果到达传送带上的正确位置时距离值发生明显变化设备据此判断水果已就位进而触发后续的拍照与分类流程。这也是智能手机贴近耳朵时关闭屏幕所用的同类技术。硬件Grove Time of Flight 距离传感器树莓派需要外接一个接近传感器。本课选用的是 Seeed 的Grove Time of Flight distance sensor基于 ST 的 VL53L0X 芯片要点如下特性说明测距原理激光测距模块laser ranging module通过激光往返时间计算距离测量范围10mm ~ 2000mm即 1cm ~ 2m范围内读数较为准确超范围行为距离超过 1000mm 时读数会报告为8109mm用于标识超出有效范围通信接口I²C 总线传感器地址硬编码为0x29朝向注意激光测距模块位于传感器背面即与 Grove 插座相反的一侧接线将传感器连接到 Grove Base Hat连接步骤非常简单全程只需要一根 Grove 线缆将 Grove 线缆的一端插入距离传感器的插座——该插座只有一个方向能插入在树莓派断电的状态下将线缆另一端插入 Grove Base Hat 上标记为I²C的插座。这些插座位于底座的最下一排与 GPIO 引脚相对的一端紧邻摄像头排线插槽。接线完成后即可给树莓派上电并等待系统启动。需要说明的是Grove Base Hat 通过 I²C 与树莓派的 GPIO 通信VL53L0X 芯片在硬件上固定使用0x29地址因此无需额外配置地址。编程安装 rpi-vl53l0x 并读取距离树莓派端使用 Python 编程。完整的可用代码已收录在本仓库的 code-proximity/pi/fruit-quality-detector/distance_sensor.py 中下面按原课程的实操步骤逐步还原。第一步安装依赖包在树莓派上直接在设备上或通过 VS Code 的 Remote SSH 扩展连接打开fruit-quality-detector项目然后安装rpi-vl53l0xPip 包——这是一个专门与 VL53L0X 飞行时间距离传感器交互的 Python 包pip install rpi-vl53l0x第二步创建脚本文件在项目中新建distance-sensor.py。课程特别提示模拟多台 IoT 设备的一个简单方法就是把每台设备各自放在一个独立的 Python 文件中然后同时运行它们——本课后续正是用这种方式让树莓派同时扮演接近传感器设备与摄像头设备。第三步导入依赖import time from grove.i2c import Bus from rpi_vl53l0x.vl53l0x import VL53L0Xgrove.i2c.Bus来自 Grove I²C 总线库用于访问树莓派上的 I²C 总线rpi_vl53l0x.vl53l0x.VL53L0X是 Grove Time of Flight 传感器内部核心芯片VL53L0X的驱动库。第四步初始化传感器distance_sensor VL53L0X(bus Bus().bus) distance_sensor.begin()第一行通过 Grove I²C 总线声明一个距离传感器实例第二行调用begin()启动传感器。第五步编写无限读取循环while True: distance_sensor.wait_ready() print(fDistance {distance_sensor.get_distance()} mm) time.sleep(1)循环的逻辑是先调用wait_ready()等待传感器产生一个可读的测量值再通过get_distance()取出距离单位毫米打印到控制台最后sleep(1)让每秒采样一次。仓库中的 distance_sensor.py 与上述代码逐行一致可直接对照阅读。第六步运行并验证运行该文件注意文件名是distance-sensor.py不要误用app.pypython3 distance_sensor.py在传感器前方摆放物体即可看到距离读数变化piraspberrypi:~/fruit-quality-detector $ python3 distance_sensor.py Distance 29 mm Distance 28 mm Distance 30 mm Distance 151 mm⚠️ 激光测距模块在传感器背面测量距离时请务必使用正确的一侧朝向被测物体。从单设备到多设备如何模拟多台 IoT 设备本课原型需要多台设备协同工作接近传感器检测水果到达、摄像头设备拍照分类、LED 设备告警。由于树莓派属于单板计算机Single Board Computer可以同时运行多个应用程序因此模拟多台 IoT 设备的方式就是为每台设备写一个独立的 Python 文件再在不同终端会话中同时运行它们——这正是本课把代码拆成独立文件的原因。与之相对微控制器如 Wio Terminal无法同时运行多个应用需要在单个程序中用类如DistanceSensor、ClassifierCamera、LEDController组织各设备的逻辑并在主loop中用计数器协调不同设备的不同处理周期。课程在 README 的 Using developer devices to simulate multiple IoT devices 一节 有详细说明。其他硬件路径对照同一课还提供了另外两条硬件路径思路一致、API 高度相似可按手头设备选用Wio Terminal微控制器使用 PlatformIO 工程通过seeed-studio/Grove Ranging sensor - VL53L0X ^1.1.1库依赖和Seeed_vl53l0x类完成测距完整工程见 code-proximity/wio-terminal/distance-sensor其 main.cpp 使用PerformSingleRangingMeasurement单次测距并打印RangeMilliMeter字段每 1000ms 采样一次虚拟 IoT 设备无硬件通过 CounterFit 应用添加一个 I²C 地址为0x29的Distance传感器安装counterfit-shims-rpi-vl53l0xshim 包以VL53L0X()无参方式初始化因为 shim 会接管总线模拟对应代码见 code-proximity/virtual-iot-device/fruit-quality-detector/distance_sensor.py。距离数据如何融入完整流程传感器读出的距离值并不是终点。在水果品质检测的参考架构见 README 中 Design a fruit quality control system 一节中距离数据会被进一步用于触发拍照与分类设备端需要判断距离是否足够近并发送触发消息还是把原始距离全部上报云端由 IoT Hub 决策——这需要在消息成本与设备可配置性之间权衡是架构设计阶段就要定义好的消息结构与决策点。本课原型后续会在此基础上接入 IoT Hub 与图像分类构建出完整的多设备链路。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考