制作一个夜灯 - 虚拟物联网硬件
在本节课程中,您将为虚拟物联网设备添加一个光传感器。
虚拟硬件
夜灯需要一个传感器,通过 CounterFit 应用程序创建。
这个传感器是一个光传感器。在实际的物联网设备中,它会是一个光电二极管,将光转换为电信号。光传感器是一种模拟传感器,它发送一个整数值,表示相对的光量,但这个值并不对应任何标准的测量单位,例如 lux。
将传感器添加到 CounterFit
要使用虚拟光传感器,您需要将其添加到 CounterFit 应用程序中。
任务 - 将传感器添加到 CounterFit
将光传感器添加到 CounterFit 应用程序中。
确保 CounterFit Web 应用程序正在运行(从本作业的上一部分开始)。如果没有,请启动它。
创建一个光传感器:
在 Sensors 面板的 Create sensor 框中,点击 Sensor type 下拉框并选择 Light。
将 Units 保持为 NoUnits。
确保 Pin 设置为 0。
点击 Add 按钮,在 Pin 0 上创建光传感器。

光传感器将被创建并显示在传感器列表中。

编程光传感器
现在可以对设备进行编程,以使用内置的光传感器。
任务 - 编程光传感器
对设备进行编程。
在 VS Code 中打开您在本作业上一部分中创建的夜灯项目。如果需要,请终止并重新创建终端,以确保它正在使用虚拟环境运行。
打开
app.py文件。在
app.py文件顶部的import语句部分添加以下代码,以导入一些所需的库:pythonimport time from counterfit_shims_grove.grove_light_sensor_v1_2 import GroveLightSensorimport time语句导入了 Python 的time模块,该模块将在本作业后续部分使用。from counterfit_shims_grove.grove_light_sensor_v1_2 import GroveLightSensor语句从 CounterFit Grove shim Python 库中导入了GroveLightSensor。该库包含与 CounterFit 应用程序中创建的光传感器交互的代码。在文件底部添加以下代码,以创建管理光传感器的类实例:
pythonlight_sensor = GroveLightSensor(0)light_sensor = GroveLightSensor(0)这一行创建了一个连接到 Pin 0 的GroveLightSensor类实例——这是光传感器连接到的 CounterFit Grove 引脚。在上述代码之后添加一个无限循环,用于轮询光传感器的值并将其打印到控制台:
pythonwhile True: light = light_sensor.light print('Light level:', light)这段代码将使用
GroveLightSensor类的light属性读取当前光照水平。该属性从引脚读取模拟值,然后将该值打印到控制台。在
while循环的末尾添加一个一秒的延迟,因为光照水平不需要被连续检查。延迟可以减少设备的功耗。pythontime.sleep(1)在 VS Code 的终端中运行以下命令以运行您的 Python 应用程序:
shpython3 app.py光照值将输出到控制台。初始值将为 0。
在 CounterFit 应用程序中更改光传感器的值,该值将被应用程序读取。您可以通过以下两种方式更改:
在光传感器的 Value 框中输入一个数字,然后点击 Set 按钮。您输入的数字将是传感器返回的值。
勾选 Random 复选框,并输入 Min 和 Max 值,然后点击 Set 按钮。每次传感器读取值时,它将读取一个介于 Min 和 Max 之间的随机数。
您设置的值将输出到控制台。更改 Value 或 Random 设置以使值发生变化。
text(.venv) ➜ GroveTest python3 app.py Light level: 143 Light level: 244 Light level: 246 Light level: 253
💁 您可以在 code-sensor/virtual-device 文件夹中找到这段代码。
😀 您的夜灯程序成功了!