ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用 CounterFit 虚拟 VL53L0X 距离传感器触发水果质检:IoT-For-Beginners 制造业课程实战

用 CounterFit 虚拟 VL53L0X 距离传感器触发水果质检:IoT-For-Beginners 制造业课程实战 用 CounterFit 虚拟 VL53L0X 距离传感器触发水果质检IoT-For-Beginners 制造业课程实战【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本篇技术指南围绕 IoT-For-Beginners 制造业Manufacturing课程的传感器触发水果质检实验讲解如何在虚拟 IoT 硬件上通过 CounterFit 添加并读取 VL53L0X 飞行时间Time-of-Flight距离传感器的数据。完成本篇后你将掌握在 CounterFit 中创建 I²C 距离传感器、安装counterfit-shims-rpi-vl53l0x模拟库、编写 Python 代码持续读取距离值并理解该能力如何服务于水果质检流水线的到位触发场景。课程背景为何需要距离传感器本部分对应 4-trigger-fruit-detector 课程 中的从传感器触发水果质检实验。在水果质检原型系统中传送带上的水果需要被检测到到达正确位置后才能拍照、分类。一种常见的触发方案就是用距离传感器测量水果与传感器之间的距离距离传感器proximity sensor通常发射激光束或红外线等电磁辐射并检测物体反射回来的信号通过计算激光发出与反射回波到达之间的时间差即可推算出物体到传感器的距离当距离低于某个预设阈值时判定水果已到位从而触发后续的拍照与图像分类流程。在物理设备上本实验使用带激光测距模块的 Grove 飞行时间距离传感器 VL53L0X而在虚拟 IoT 硬件上我们将使用 CounterFit 中模拟的距离传感器来完成同样的数据读取实验。这也是本篇对应的 虚拟设备指南原文 的核心内容。硬件方案虚拟距离传感器与 VL53L0X虚拟 IoT 设备使用的是一个模拟距离传感器。物理设备中你会使用带激光测距模块的传感器来检测距离而在虚拟环境中CounterFit 应用提供图形化的虚拟传感器面板模拟器会生成对应的数据流。VL53L0X 是一款典型的飞行时间Time-of-Flight距离传感器它具备以下特征特征说明测量原理发射激光并测量光从物体反射回来所用的时间据此计算距离通信方式I²C 总线传感器物理器件地址固定为0x29测量单位通常以毫米Millimeter为单位报告读数虚拟化方式由 CounterFit shim 库模拟rpi-vl53l0xPip 包的行为 你可能已经在不知不觉中使用过距离传感器大多数智能手机在通话时将手机贴近耳边时会自动熄灭屏幕防止耳朵误触挂断电话这正是利用距离传感器检测到屏幕附近有物体从而临时禁用触摸功能。步骤一安装 CounterFit 距离传感器 shim 库要让 Python 代码能够对话虚拟的距离传感器需要先安装一个 CounterFit shim 包它通过模拟rpi-vl53l0xPip 包来对接距离传感器。操作前提在 VS Code 中打开fruit-quality-detector代码目录确保 Python 虚拟环境已激活安装必须在激活虚拟环境的终端中进行例如提示符中带有(.venv)。执行安装命令pip install counterfit-shims-rpi-vl53l0x安装完成后确认 CounterFit 的 Web 应用正在运行接下来即可在面板中创建虚拟传感器。步骤二在 CounterFit 中创建距离传感器在 CounterFit Web 应用中创建距离传感器的步骤如下在Sensors传感器面板的Create sensor创建传感器区域展开Sensor type传感器类型下拉框选择Distance距离将Units单位保持为Millimeter毫米由于这是一个 I²C 传感器将地址设置为0x29。如果使用物理 VL53L0X 传感器它的地址也固定为0x29两者保持一致点击Add添加按钮创建距离传感器。创建成功后距离传感器会出现在传感器列表中即可在列表中看到并随时修改其模拟读数。关键参数小结传感器类型Distance、单位Millimeter、I²C 地址0x29。这三个参数在后面的 Python 代码中分别对应 shim 库的选择、读数单位以及底层 I²C 地址约定。步骤三编写距离传感器读取程序在fruit-quality-detector项目中新建文件distance-sensor.py。 模拟多个 IoT 设备的一个简单做法是把每个设备写成独立的 Python 文件然后同时运行它们。这正契合课程中用开发设备模拟多个 IoT 设备的思想——例如把距离传感器、摄像头、LED 控制器各写成一个 Python 文件分别运行。1. 连接到 CounterFit首先建立与 CounterFit 的连接from counterfit_connection import CounterFitConnection CounterFitConnection.init(127.0.0.1, 5000)CounterFitConnection.init指定 CounterFit 服务的地址本机回环地址127.0.0.1与端口5000。这一连接代码与本课程前面 摄像头实验 中的用法一致是整个虚拟设备程序的标准入口。2. 导入时间库与 VL53L0X shim在连接代码下方追加import time from counterfit_shims_rpi_vl53l0x.vl53l0x import VL53L0X这行代码导入了 VL53L0X 飞行时间传感器的shim模拟库。它模拟了真实树莓派上rpi-vl53l0x包中VL53L0X类的行为但底层数据来源于 CounterFit 中虚拟传感器而非真实 I²C 硬件。3. 声明并启动传感器继续追加访问传感器的代码distance_sensor VL53L0X() distance_sensor.begin()第一行声明一个距离传感器对象第二行调用begin()启动传感器使其进入可读取状态。4. 无限循环读取距离最后添加一个无限循环持续读取距离值while True: distance_sensor.wait_ready() print(fDistance {distance_sensor.get_distance()} mm) time.sleep(1)各调用的作用如下调用作用distance_sensor.wait_ready()阻塞等待直到传感器准备好一个新的可读测量值distance_sensor.get_distance()读取当前距离值返回以毫米为单位的整数print(fDistance ... mm)将读数打印到控制台time.sleep(1)每秒读取一次避免循环过密占用资源5. 运行程序运行该文件注意文件名是distance-sensor.py不要误运行成app.pypython distance-sensor.py正常输出示例(.venv) ➜ fruit-quality-detector python distance-sensor.py Distance 37 mm Distance 42 mm Distance 29 mm此时在 CounterFit 界面中修改距离传感器的模拟值或启用随机值模式即可看到控制台中的读数随之变化——这模拟了现实中物体靠近/远离传感器时距离读数的变化。仓库中的完整参考代码本实验的完整代码已随仓库提供路径为 code-proximity/virtual-iot-device/fruit-quality-detector/distance_sensor.py内容与上面逐步拼装的代码完全一致from counterfit_connection import CounterFitConnection CounterFitConnection.init(127.0.0.1, 5000) import time from counterfit_shims_rpi_vl53l0x.vl53l0x import VL53L0X distance_sensor VL53L0X() distance_sensor.begin() while True: distance_sensor.wait_ready() print(fDistance {distance_sensor.get_distance()} mm) time.sleep(1)从源码结构可以推断这个文件遵循了与 摄像头模拟示例 相同的模式先CounterFitConnection.init建立连接再实例化 shim 类并调用对应方法读取虚拟硬件数据。这种连接 shim 实例 数据循环的结构是 CounterFit 虚拟设备编程的统一范式。从距离传感器到水果质检触发仅能打印距离读数还不足以构成完整的质检系统。按照 课程主文档 的设计距离传感器是Things物层级中的检测器后续需要判断到位当测得距离小于预定义阈值时判定水果已到达传送带上的拍照位置触发拍照分类通过云服务向带摄像头的设备下发命令拍摄照片并交给边缘侧 AI 模型分类结果存储与告警将分类结果存储到云端若水果未成熟则通过命令点亮 LED 提醒工人。关于在哪里做决策设备端判定还是云端判定是一个值得权衡的设计点如果由云端判定设备需要上传多次距离测量值会增加 IoT Hub 消息数量与带宽成本如果在设备端判定则需要为设备提供可配置的阈值以便现场调参。本课程要求你在最终作业中把所有这些能力组合成一个完整原型——详见 assignment.md 中的评测量表Rubric。进阶同时模拟多个 IoT 设备如课程主文档所述单板计算机如树莓派可以同时运行多个应用因此可以用不同的 Python 文件模拟不同的 IoT 设备并在不同终端会话中同时运行它们。例如distance-sensor.py模拟距离传感器设备持续上报距离camera.py模拟带摄像头的分类设备接收触发命令后拍照并分类led.py模拟带 LED 的告警设备收到命令后点亮/熄灭 LED。⚠️ 需要注意某些真实硬件在被多个同时运行的应用访问时可能无法正常工作因此多文件模拟主要适用于虚拟硬件与单板计算机场景。本实验也可对照硬件版指南完成Raspberry Pi 硬件版 使用真实的rpi-vl53l0x包与 Grove I²C 总线Wio Terminal 硬件版 则面向 Arduino 微控制器平台。三者读取距离的核心逻辑wait_ready()→get_distance()→ 每秒打印保持一致差异仅在于底层硬件访问方式便于你对照理解虚拟化 shim 的作用。小结通过本篇实验你完成了虚拟 IoT 硬件上距离传感器从配置到编程的完整闭环在 CounterFit 中创建类型为 Distance、单位为 Millimeter、I²C 地址为0x29的虚拟距离传感器安装counterfit-shims-rpi-vl53l0xshim 库以 Python 方式访问模拟的 VL53L0X 传感器编写distance-sensor.py通过wait_ready()/get_distance()每秒输出一次距离读数理解了该能力在水果质检触发链路中的定位以及多设备模拟的实现思路。这为接下来构建完整的水果质检原型距离触发 → 拍照分类 → 云端存储 → LED 告警打下了第一块基石。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表