尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

使用 CounterFit 搭建虚拟单板计算机:在 PC 上零硬件完成 IoT 课程实战(IoT-For-Beginners)

使用 CounterFit 搭建虚拟单板计算机:在 PC 上零硬件完成 IoT 课程实战(IoT-For-Beginners) 使用 CounterFit 搭建虚拟单板计算机在 PC 上零硬件完成 IoT 课程实战IoT-For-Beginners【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本篇指南围绕开源课程 IoT-For-Beginners 中 虚拟单板计算机Virtual single-board computer 这一课时展开详细讲解如何借助开源项目 CounterFit在无需购买任何物理 IoT 硬件的前提下用普通 PC 模拟传感器与执行器并运行与 Raspberry Pi 物理硬件上完全一致的 Python 代码。读完本文你将掌握从环境安装、Python 虚拟环境配置、Hello World 验证到打通 CounterFit 虚拟「硬件」连接的完整实操路径为后续「夜灯nightlight」项目及整个课程其余 23 课扫清起步障碍。为什么需要一台「虚拟」单板计算机IoT 课程的传统做法是购买开发板如 Arduino 或 Raspberry Pi配合传感器与执行器动手实践。但 IoT-For-Beginners 项目为所有课程提供了三种硬件选型路径其中一条就是「虚拟设备」完全不需要采购任何硬件用你自己的电脑模拟出单板计算机环境。该方案的核心是开源项目CounterFit——它允许你在本地运行一个应用模拟温度、湿度、光线、土壤湿度等传感器以及 LED、继电器等执行器随后用本机 Python 代码以访问物理硬件完全相同的方式访问这些虚拟设备。正如课程 第一课 README 所强调的 你不必购买任何 IoT 硬件来完成作业可以完全使用虚拟单板计算机来做。而且虚拟设备路径与 Raspberry Pi 路径共享同一个 Grove 传感器生态后续如果购买了实体树莓派与传感器绝大部分代码可以直接迁移。环境准备三件免费软件使用 CounterFit 前需要在电脑上安装以下免费软件软件作用Python编写虚拟设备代码的运行时环境Visual Studio Code (VS Code)编写 Python 代码的编辑器教程以 VS Code 为例Pylance 扩展为 VS Code 提供 Python 语言支持智能提示、类型检查等 如果你有其他偏好的 Python IDE 或编辑器完全可以自由使用但课程内所有指令均基于 VS Code 编写。需要注意CounterFit 应用本身不在本步骤安装它按项目单独安装相关指令会在后续「Hello World」阶段给出。第一课 Hello World验证工具链在进入具体硬件或模拟逻辑之前先按编程学习传统创建Hello World应用用来确认三件事Python 与 VS Code 安装正确能够连接到 CounterFit 的虚拟传感器与执行器服务整个开发链路端到端可用。这个应用会被创建在名为nightlight的文件夹中并在后续课程中不断复用、逐步演化为一个完整的「夜灯」IoT 应用。配置 Python 虚拟环境Python 的 Pip 包是别人编写并发布到互联网上的代码包一条命令即可安装并使用。但默认情况下 Pip 包会安装到系统全局容易出现版本冲突——例如应用 A 依赖某个包的旧版本应用 B 安装新版本后 A 就坏了。Python 虚拟环境venv本质上是放在专用文件夹里的一个 Python 副本Pip 包只安装到该文件夹内从而彻底隔离依赖。 如果你日后使用 Raspberry Pi则无需也不建议在那台设备上设置虚拟环境——Grove 相关包已由安装脚本全局安装。任务创建虚拟环境并安装 CounterFit 相关 Pip 包。在任意位置创建并进入项目目录mkdir nightlight cd nightlight在.venv文件夹中创建虚拟环境python3 -m venv .venv 必须显式调用python3而非python以防系统同时装有 Python 2 时python指向旧版本。激活虚拟环境Windows命令提示符 / Windows Terminal 的命令提示符.venv\Scripts\activate.batWindowsPowerShell.\.venv\Scripts\Activate.ps1若提示「在此系统上禁止运行脚本」请以管理员身份启动 PowerShell 并执行Set-ExecutionPolicy -ExecutionPolicy Unrestricted输入Y确认然后重新启动 PowerShell 重试该执行策略之后可按需重置。macOS 或 Linuxsource ./.venv/bin/activate 这些命令都应在创建虚拟环境的同一位置运行。永远不需要进入.venv文件夹激活、装包、跑代码都从创建环境时的那个目录进行。验证虚拟环境中的 Python 版本python --version输出形如(.venv) ➜ nightlight python --version Python 3.9.1 版本号可以不同只要是 3.6 或更高即可否则删除该文件夹、安装更新版 Python 后重试。安装 CounterFit 的三个 Pip 包pip install CounterFit pip install counterfit-connection pip install counterfit-shims-grove这三个包的分工如下Pip 包作用CounterFit主应用提供本地模拟服务与浏览器 UIcounterfit-connection提供CounterFitConnection类负责代码与 CounterFit 应用建立连接counterfit-shims-grove提供 Grove 硬件的 shim垫片层让你写出与使用 Grove 物理传感器/执行器完全一致的代码这些包只安装进当前虚拟环境在该环境外不可用。编写 Hello World 代码任务创建输出Hello World的 Python 应用。在虚拟环境内创建app.py文件Windowstype nul app.pymacOS / Linuxtouch app.py用 VS Code 打开当前文件夹code . 若 macOS 提示command not found说明 VS Code 未加入 PATH按 VS Code 文档「从命令行启动」章节配置后再试Windows 与 Linux 默认已加入 PATH。VS Code 启动后会自动激活 Python 虚拟环境所选环境会显示在底部状态栏状态栏与终端提示符中都会出现.venv前缀如果 VS Code 启动时终端已存在则该终端不会自动激活虚拟环境最稳妥的做法是用Kill the active terminal instance终止活动终端实例按钮关掉它通过Terminal - New Terminal或快捷键CTRL新建终端新终端会自动加载虚拟环境终端中会出现激活调用且提示符带.venv前缀➜ nightlight source .venv/bin/activate (.venv) ➜ nightlight在 VS Code 中打开app.py并写入print(Hello World!)print函数会把传入的内容输出到控制台。在 VS Code 终端运行python app.py输出(.venv) ➜ nightlight python app.py Hello World!至此第一个 Hello World 验证成功工具链就绪。连接「硬件」打通 CounterFit 虚拟设备这是 Hello World 的第二个阶段启动 CounterFit 应用并把代码连接上去——相当于把物理 IoT 硬件插到开发套件上的虚拟等价操作。任务启动 CounterFit 并建立连接。在 VS Code 终端启动 CounterFitcounterfit应用启动后会在浏览器中打开界面此时显示为Disconnected未连接右上角 LED 处于熄灭状态在app.py开头加入连接代码from counterfit_connection import CounterFitConnection CounterFitConnection.init(127.0.0.1, 5000)第一行从counterfit_connection模块来自之前安装的counterfit-connection包导入CounterFitConnection类第二行初始化到 CounterFit 应用的连接——127.0.0.1是永远指向本机的回环地址即localhost5000为默认端口。 若端口 5000 被其他程序占用可同时修改两处代码中的端口号以及启动命令CounterFit --port port_number将port_number替换为目标端口。由于当前终端正被 CounterFit 占用需要点击Create a new integrated terminal新建集成终端按钮开启新终端在新终端中再次运行python app.pyCounterFit 界面状态会变为Connected右上角 LED 亮起连接成功后你就拥有了一个「虚拟」IoT 硬件环境。从 Hello World 到真实传感器源码级印证Hello World 阶段只是建立了连接、尚未访问任何模拟硬件。在本课之后的 第 3 课传感器与执行器 中会在nightlight应用里真正读取虚拟传感器其示例代码与本次配置一脉相承。课程提供的完整参考实现在 code/virtual-device/nightlight/app.pyfrom counterfit_connection import CounterFitConnection CounterFitConnection.init(127.0.0.1, 5000) print(Hello World!)该文件正是本文所讲步骤的最终落盘结果。而后续课程中虚拟设备读取光线传感器的典型写法见 第 3 课 code-sensor 参考实现则展示了如何把 shim 层用起来import time from counterfit_connection import CounterFitConnection from counterfit_shims_grove.grove_light_sensor_v1_2 import GroveLightSensor CounterFitConnection.init(127.0.0.1, 5000) light_sensor GroveLightSensor(0) while True: light light_sensor.light print(Light level:, light) time.sleep(1)可以看到代码模式与在树莓派上操作 Grove 物理光线传感器完全一致——这正是counterfit-shims-grove的核心价值同一份业务代码既可在虚拟环境调试运行也能无缝移植到真实 Grove 硬件。从源码结构上看CounterFitConnection.init(host, port)是建立连接的统一入口counterfit命令行则以--port参数控制模拟服务的监听端口二者端口必须一致才能握手成功这是排查「一直 Disconnected」时最值得优先检查的点。常见问题与排查要点结合文档中的提示与源码调用关系整理如下排查清单现象可能原因处理方式python版本异常系统同时装有 Python 2创建环境时用python3 -m venv .venvPowerShell 拒绝运行激活脚本系统执行策略受限管理员身份执行Set-ExecutionPolicy -ExecutionPolicy Unrestrictedpython --version低于 3.6Python 版本过旧删除.venv安装新版 Python 后重建command not foundmacOSVS Code 不在 PATH按 VS Code 文档将code加入 PATH终端提示符无.venv前缀虚拟环境未激活使用 Kill terminal New Terminal 重新加载CounterFit 一直 Disconnected端口不一致或未监听统一代码端口与CounterFit --port端口虚拟环境外找不到包包仅装进 venv始终在激活状态下的.venv环境安装与运行结语通过本文你已完成虚拟单板计算机的三步走环境安装 → Hello World 验证 → CounterFit 连接打通。这套流程是 IoT-For-Beginners 课程中「零硬件起步」路径的地基——后续每一课从夜灯传感器到云连接、再到机器学习边缘推理都会在这个nightlight项目与 CounterFit 虚拟硬件之上持续演进。现在打开你的终端把counterfit跑起来开始属于你的 IoT 之旅吧。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表