)
IoT-For-Beginners使用 CounterFit 虚拟硬件测量环境温度Grove DHT11 模拟【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本指南聚焦微软开源课程《IoT-For-Beginners》中用 IoT 预测植物生长2-farm / lesson 1的虚拟设备温度测量实验讲解如何不依赖实体硬件仅用一台电脑 CounterFit 模拟器 Python完成 Grove 数字温湿度传感器DHT11的数据采集与温度监控。学完本文你将掌握 CounterFit 虚拟传感器的创建流程、counterfit-shims-seeed-python-dht的用法以及如何编写一个每 10 秒轮询一次温度并输出的完整 Python 应用为后续的积温Growing Degree DaysGDD计算实验铺路。实验背景虚拟 IoT 硬件与 CounterFit在《IoT-For-Beginners》课程体系中同一节课同时提供了三种硬件路径Wio TerminalArduino、Raspberry Pi单板计算机和虚拟设备Virtual device。本文对应的就是虚拟设备路径——它通过 CounterFit 应用在电脑上模拟传感器让没有实体硬件的学习者也能完成与树莓派 物理 Grove DHT11 完全一致的实验。相关入口课程 README 中的Measure ambient temperature一节列出了 Wio Terminal 路径、树莓派路径与本虚拟设备路径。本实验使用的虚拟传感器是模拟的 Grove Digital Humidity and Temperature数字温湿度传感器它把温度传感器与湿度传感器合二为一但本实验只关心其中的温度分量。温度测量原理从热敏电阻到数字输出在物理 IoT 设备中温度传感器通常是一个热敏电阻Thermistor——它利用温度变化引起电阻变化的特性来测温。温度传感器通常是数字传感器内部会把测量到的电阻值转换为摄氏度Celsius、开尔文Kelvin或华氏度Fahrenheit的温度读数。在本课程中虚拟的 DHT11 传感器同样对外提供数字化的温度与湿度读数因此你的应用代码无需关心电阻换算直接读取数值即可。准备工作创建 temperature-sensor 项目在开始之前需要建立一个干净的 Python 项目。完整步骤可参考第一课中的 CounterFit Python 项目创建指南核心要点如下在电脑上新建一个名为temperature-sensor的文件夹内含一个app.py文件为该文件夹创建 Python 虚拟环境并激活安装 CounterFit 基础 Pip 包counterfit与counterfit-connection使应用能连接到本地运行的 CounterFit 模拟服务。安装 DHT11 传感器的 CounterFit ShimCounterFit 本身是通用的传感器模拟平台不同厂商传感器需要通过shim垫片/适配层包接入。对于 Seeed Grove DHT11 传感器需要额外安装对应的 shimpip install counterfit-shims-seeed-python-dht⚠️ 务必在已激活虚拟环境的终端中执行上述安装命令避免包被安装到全局 Python 环境中。这个 shim 包提供了counterfit_shims_seeed_python_dht模块它内部复刻了真实 Grove 传感器驱动库seeed_dht的 API——也就是说同一份应用代码既可以跑在虚拟设备上也可以几乎原样跑在树莓派上这正是 CounterFit 设计的目标之一硬件无关、代码复用。安装完成后确保 CounterFit Web 应用处于运行状态通常通过counterfit命令启动并默认监听127.0.0.1:5000就可以开始添加传感器了。在 CounterFit 中添加湿度与温度传感器由于 DHT11 是组合传感器湿度 温度CounterFit 需要用两个独立传感器来模拟它一个湿度传感器和一个温度传感器它们分别占用相邻的两个引脚。创建湿度传感器Pin 5在 CounterFit 应用的Sensors传感器面板的Create sensor创建传感器区域中打开Sensor type传感器类型下拉菜单选择Humidity湿度保持Units单位为Percentage百分比确保Pin引脚设置为5点击Add按钮在 Pin 5 上创建湿度传感器。创建成功后湿度传感器会出现在传感器列表中。创建温度传感器Pin 6按照相同的方式创建温度传感器在Sensor type下拉菜单中选择Temperature温度保持Units为Celsius摄氏度确保Pin设置为6点击Add按钮在 Pin 6 上创建温度传感器。创建成功后温度传感器同样会出现在传感器列表中。引脚配对规则CounterFit 通过两个传感器模拟这个组合温湿度传感器——湿度传感器位于创建DHT类时指定的引脚上而温度传感器运行在下一个相邻引脚上。因此当湿度传感器位于 Pin 5 时shim 期望温度传感器位于 Pin 6。这也是为什么上面两步必须把引脚分别设置为 5 和 6。编写温度传感器应用第一步连接 CounterFit在 VS Code 中打开temperature-sensor应用在app.py顶部添加如下代码让应用与本地 CounterFit 服务建立连接from counterfit_connection import CounterFitConnection CounterFitConnection.init(127.0.0.1, 5000)CounterFitConnection.init()的两个参数分别是 CounterFit 服务的 IP 地址本机为127.0.0.1与端口默认5000需与 CounterFit Web 应用实际监听的地址保持一致。第二步导入所需库接着导入时间处理模块与 DHT shim 提供的传感器类import time from counterfit_shims_seeed_python_dht import DHTfrom counterfit_shims_seeed_python_dht import DHT通过 shim 引入了DHT传感器类用于与虚拟 Grove 温度传感器交互。该 API 与真实的seeed_dht库保持一致便于后续迁移到真实硬件。第三步实例化 DHT 传感器对象sensor DHT(11, 5)这行代码声明了一个DHT类的实例用于管理虚拟的数字温/湿度传感器第一个参数11指明所用传感器是虚拟的DHT11型号第二个参数5指明传感器连接在端口5上即湿度传感器所在引脚温度传感器会自动映射到 6 号引脚。第四步无限循环轮询温度并输出while True: _, temp sensor.read() print(fTemperature {temp}°C)sensor.read()返回一个由湿度与温度组成的元组。由于本实验只需要温度值因此使用_忽略湿度分量将温度值赋给temp并打印到控制台。第五步加入轮询间隔time.sleep(10)在循环末尾插入 10 秒的休眠。环境温度不需要连续不停地检测适当的间隔既能满足监控需求也能降低设备功耗——这一点与真实嵌入式设备上的节能实践一致。完整代码将以上片段组合后app.py的完整内容如下与仓库中 code-temperature/virtual-device 下的实现完全一致from counterfit_connection import CounterFitConnection CounterFitConnection.init(127.0.0.1, 5000) import time from counterfit_shims_seeed_python_dht import DHT sensor DHT(11, 5) while True: _, temp sensor.read() print(fTemperature {temp}°C) time.sleep(10)仓库中还提供了 树莓派硬件路径的对应实现 以及 Wio TerminalArduino的实现读者可对照观察虚拟设备与真实硬件在代码上的差异与共性。运行应用并模拟传感器读数在 VS Code 终端中确保虚拟环境已激活运行python app.py此时程序会每 10 秒读取一次温度并输出。接下来需要在 CounterFit 应用中改变温度传感器的返回值以模拟环境温度的变化共有两种方式固定值在温度传感器的Value数值输入框中输入一个数字点击Set按钮之后传感器就会返回该固定数值随机值勾选Random随机复选框并输入Min最小值与Max最大值然后点击Set。此后每次传感器被读取时都会在 Min 与 Max 之间返回一个随机数。在控制台中可以观察到你设置的数值被实时打印出来。修改Value或Random设置即可改变读数典型输出如下(.venv) ➜ temperature-sensor python app.py Temperature 28.25°C Temperature 30.71°C Temperature 25.17°C下一步把温度数据用于积温GDD计算完成温度测量只是本课程的一部分。在 课程 README 的后续小节中这个温度传感器应用将通过 MQTT 将温度遥测数据发布到服务端对应 single-board-computer-temp-publish.md服务端把数据以 CSV 文件形式落盘存储基于简化公式GDD (Tmax Tmin) / 2 − Tbase计算每日积温用于预测植物成熟期。其中虚拟设备路径建议在 CounterFit 中勾选 Random 并设置温度范围避免每次返回相同的温度值那样会导致后续 GDD 计算失去意义。因此本节掌握的传感器添加、随机值模拟与轮询采集技能是后续完整物联网农业实验链的基石。小结通过本指南你已完成理解虚拟 IoT 硬件与 CounterFit 模拟器的工作原理以及热敏电阻测温到数字输出的基本机制学会在 CounterFit 中按引脚配对规则湿度 Pin 5 / 温度 Pin 6创建虚拟 DHT11 组合传感器安装并使用counterfit-shims-seeed-python-dhtshim编写出可轮询、可模拟、可迁移到真实硬件的温度监控 Python 应用掌握 CounterFit 的固定值与随机值两种传感器模拟方式并验证输出。这套虚拟硬件先行、真实硬件后置的实验模式正是《IoT-For-Beginners》课程降低硬件门槛、让零基础学习者也能完整走通 IoT 开发流程的关键设计。说明本文对应的原始课程文档为 virtual-device-temp.md英文原版 及其德语翻译版文中实验步骤与代码以仓库中的实际源码与文档为准。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考