ARTICLE DETAIL

资讯详情

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

IoT-For-Beginners 虚拟设备测温实战:使用 CounterFit 模拟 DHT11 温度传感器

IoT-For-Beginners 虚拟设备测温实战:使用 CounterFit 模拟 DHT11 温度传感器 IoT-For-Beginners 虚拟设备测温实战使用 CounterFit 模拟 DHT11 温度传感器【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本文是微软开源课程《IoT-For-Beginners》「2-farm / 第 1 课用 IoT 预测植物生长」中虚拟设备测温环节的完整技术指南。在没有实体硬件的前提下本文将带你基于 CounterFit 虚拟 IoT 平台模拟 Grove 数字温湿度传感器DHT11通过 Python 代码采集环境温度为后续计算作物生长度日GDD提供数据基础。读完本文你将掌握 CounterFit 虚拟传感器的创建流程、counterfit-shims-seeed-python-dht垫片shim库的用法以及温度轮询应用的完整编写与调试方法。课程背景为什么 IoT 要测温度在农业生产中植物需要水分、光照、二氧化碳、养分以及热量才能生长。温度直接决定了植物的生长与成熟速度每一种植物都有基准温度base temperature、最适温度optimum temperature与最高温度maximum temperature通过测量空气温度并计算生长度日Growing Degree Days, GDD农场主可以预测作物的生长和成熟时间从而减少人工巡查成本。本课2-farm/lessons/1-predict-plant-growth的总体架构是IoT 设备测量温度 → 通过 MQTT 发布遥测数据 → 服务端订阅并存储为 CSV → 夜间任务计算 GDD。本文聚焦第一步中的虚拟设备方案使用电脑模拟树莓派加 DHT11 的硬件环境。虚拟硬件原理模拟的 Grove 温湿度传感器本实验使用的虚拟 IoT 设备搭载一个模拟的 Grove 数字温湿度传感器DHT11这使得虚拟实验与「树莓派 实体 Grove DHT11」的流程完全一致——相关实体硬件接线与代码可对照 pi-temp.md 阅读。DHT11 将温度传感器与湿度传感器合二为一本实验只关心其中的温度分量。在真实设备中温度传感器通常是热敏电阻thermistor通过感知温度变化引起的电阻变化来测量温度DHT11 的温度分量属于负温度系数NTC热敏电阻即温度升高时电阻下降。温度传感器多为数字传感器内部会将测量到的电阻转换为摄氏或开尔文、华氏温度值。而这里使用的虚拟传感器则由 CounterFit 在软件层面完全模拟。关于 CounterFit 的整体安装Python、VS Code、Pylance 扩展、虚拟环境创建、CounterFit/counterfit-connection/counterfit-shims-grove三个 pip 包以及启动counterfit命令可参考第 1 课文档 1-getting-started/lessons/1-introduction-to-iot/virtual-device.md。第一步在 CounterFit 中添加虚拟传感器要使用虚拟温湿度传感器需要先在 CounterFit Web 应用中创建两个传感器。请先在电脑上按以下步骤准备项目新建名为temperature-sensor的文件夹内含唯一文件app.py并配置好 Python 虚拟环境安装 CounterFit 相关 pip 包若需要可回看上文第 1 课文档的详细步骤。在已激活虚拟环境的终端中安装 DHT11 传感器对应的 CounterFit 垫片包pip install counterfit-shims-seeed-python-dht该包提供counterfit_shims_seeed_python_dht模块让代码可以用与实体seeed-python-dht完全相同的 API 去操作虚拟 DHT11。确认 CounterFit Web 应用正在运行终端执行counterfit浏览器会打开 CounterFit 界面。创建湿度传感器在Sensors传感器面板的Create sensor创建传感器区域按以下参数配置配置项取值Sensor type传感器类型Humidity湿度Units单位Percentage百分比Pin引脚5点击Add按钮后湿度传感器创建在 Pin 5 上并出现在传感器列表中创建温度传感器同样在Create sensor区域配置配置项取值Sensor type传感器类型Temperature温度Units单位Celsius摄氏度Pin引脚6点击Add按钮后温度传感器创建在 Pin 6 上 关键约定CounterFit 用两个独立虚拟传感器模拟 DHT11 这一「温湿度二合一」器件——湿度传感器位于创建DHT类时指定的引脚温度传感器位于下一个引脚。因此湿度传感器在 Pin 5垫片就要求温度传感器在 Pin 6。在 CounterFit 中 Pin 是虚拟引脚不必担心与真实板卡的 GPIO 冲突。第二步编写温度传感器应用用 VS Code 打开temperature-sensor项目编辑app.py按以下步骤逐步完善代码最终完整代码见仓库 code-temperature/virtual-device/temperature-sensor/app.py。1. 连接 CounterFit在app.py顶部添加连接代码from counterfit_connection import CounterFitConnection CounterFitConnection.init(127.0.0.1, 5000)CounterFitConnection.init()将应用连接到本机127.0.0.1即 localhost5000 端口运行的 CounterFit 服务。若 5000 端口被占用可修改端口并用CounterFit --port 端口号重新启动 CounterFit。2. 导入所需库import time from counterfit_shims_seeed_python_dht import DHTfrom counterfit_shims_seeed_python_dht import DHT通过counterfit_shims_seeed_python_dht模块中的垫片导入用于操作虚拟 Grove 温度传感器的DHT类——其用法与实体板上的from seeed_dht import DHT完全一致对照 pi-temp.md 中的实体写法即可验证这一点。3. 实例化传感器sensor DHT(11, 5)第一个参数11告诉代码使用的是虚拟DHT11传感器第二个参数5指定传感器连接到虚拟端口5对应前文湿度传感器所在的 Pin 5。4. 轮询温度并输出while True: _, temp sensor.read() print(fTemperature {temp}°C)sensor.read()返回一个包含湿度和温度的元组本实验只需温度值因此用_忽略湿度。随后将温度打印到控制台。5. 降低功耗的休眠time.sleep(10)温度不需要持续不间断地检测在循环末尾加入十秒休眠可显著降低设备或虚拟机功耗同时也能控制遥测数据频率。6. 运行应用在 VS Code 终端已激活虚拟环境中运行python app.py若终端未激活虚拟环境需要先执行source ./.venv/bin/activatemacOS/Linux或对应的 Windows 激活命令。7. 在 CounterFit 中修改传感器值程序运行后回到 CounterFit 应用通过两种方式改变温度传感器将返回给程序的值固定值在温度传感器的Value值输入框中填入数字点击Set设置按钮该数字即为传感器每次返回的值随机值勾选Random随机复选框填写Min最小值与Max最大值点击Set此后传感器每次读取都会返回该区间内的随机数。修改后控制台会实时打印变化的值典型输出如下(.venv) ➜ temperature-sensor python app.py Temperature 28.25°C Temperature 30.71°C Temperature 25.17°C 在后续「发布温度数据」环节single-board-computer-temp-publish.md中为了让一天内采集到的温度数据有所变化以便计算 GDD官方建议勾选Random复选框并设置合理范围参见 select-the-random-checkbox-and-set-a-range.png。源码佐证与后续延伸本节的完整可运行代码存放在 code-temperature/virtual-device/temperature-sensor/app.py共 13 行结构与本指南讲解完全一致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)在此基础上课程还提供了「采集温度并发布到 MQTT」的进阶版本 code-publish-temperature/virtual-device/temperature-sensor/app.py它复用DHT(11, 5)与sensor.read()读取温度将{temperature: temp}序列化为 JSON 后通过paho.mqtt.client发布到test.mosquitto.org的{id}/telemetry主题并把轮询间隔调整为 10 分钟time.sleep(10 * 60)以贴合真实农业遥测场景。这份代码直观展示了「虚拟测温 → MQTT 遥测 → 服务端存储CSV→ GDD 计算」的完整数据链路可作为下一步学习的参考实现。小结至此你已经完成虚拟 IoT 设备的温度传感器编程在 CounterFit 中创建湿度Pin 5与温度Pin 6两个虚拟传感器通过counterfit-shims-seeed-python-dht垫片以与实体树莓派完全一致的 API 读取温度并在十秒周期内持续打印。这一能力是后续计算生长度日GDD、实现精准农业的基础——结合课程 README 中的 GDD 公式GDD (Tmax Tmin) / 2 - Tbase与 CSV 存储方案即可用本实验采集到的温度数据驱动作物的成熟度预测。⚠️ 说明本文依据的原始文档translations/ar/2-farm/lessons/1-predict-plant-growth/virtual-device-temp.md由机器翻译生成本中文指南以仓库内英文原版 virtual-device-temp.md 为事实基准编写。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表