Skip to content

控制继电器 - 虚拟物联网硬件

在本节课程中,您将为虚拟物联网设备添加一个继电器,除了土壤湿度传感器外,还可以根据土壤湿度水平来控制继电器。

虚拟硬件

虚拟物联网设备将使用模拟的 Grove 继电器。这使得本实验与使用带有物理 Grove 继电器的 Raspberry Pi 的操作保持一致。

在物理物联网设备中,继电器通常是常开型继电器(即当没有信号发送到继电器时,输出电路是断开的或未连接的)。这种继电器可以处理高达 250V 和 10A 的输出电路。

将继电器添加到 CounterFit

要使用虚拟继电器,您需要将其添加到 CounterFit 应用中。

任务

将继电器添加到 CounterFit 应用。

  1. 如果尚未打开,请在 VS Code 中打开上一节课中的 soil-moisture-sensor 项目。您将基于此项目进行添加。

  2. 确保 CounterFit 网页应用正在运行。

  3. 创建一个继电器:

    1. Actuators 面板的 Create actuator 框中,点击 Actuator type 下拉框并选择 Relay

    2. Pin 设置为 5

    3. 点击 Add 按钮,在 Pin 5 上创建继电器。

    继电器设置

    继电器将被创建并显示在执行器列表中。

    创建的继电器

编程继电器

现在可以为土壤湿度传感器应用编程以使用虚拟继电器。

任务

编程虚拟设备。

  1. 如果尚未打开,请在 VS Code 中打开上一节课中的 soil-moisture-sensor 项目。您将基于此项目进行添加。

  2. 在现有的导入代码下方,将以下代码添加到 app.py 文件中:

    python
    from counterfit_shims_grove.grove_relay import GroveRelay

    此语句从 Grove Python shim 库中导入 GroveRelay,以与虚拟 Grove 继电器交互。

  3. ADC 类的声明下方添加以下代码,以创建一个 GroveRelay 实例:

    python
    relay = GroveRelay(5)

    这将在 Pin 5 上创建一个继电器,这是您连接继电器的引脚。

  4. 为测试继电器是否正常工作,在 while True: 循环中添加以下代码:

    python
    relay.on()
    time.sleep(.5)
    relay.off()

    代码将继电器打开,等待 0.5 秒,然后关闭继电器。

  5. 运行 Python 应用。继电器将每 10 秒打开和关闭一次,打开和关闭之间有半秒的延迟。您将在 CounterFit 应用中看到虚拟继电器随着继电器的打开和关闭而闭合和断开。

根据土壤湿度控制继电器

现在继电器可以正常工作了,可以根据土壤湿度读数来控制它。

任务

控制继电器。

  1. 删除您添加的用于测试继电器的 3 行代码。用以下代码替换它们:

    python
    if soil_moisture > 450:
        print("Soil Moisture is too low, turning relay on.")
        relay.on()
    else:
        print("Soil Moisture is ok, turning relay off.")
        relay.off()

    此代码从土壤湿度传感器检查土壤湿度水平。如果湿度值高于 450,则打开继电器;如果低于 450,则关闭继电器。

    💁 请记住,电容式土壤湿度传感器的读数越低,土壤中的湿度越高,反之亦然。

  2. 运行 Python 应用。您将看到继电器根据土壤湿度水平打开或关闭。更改土壤湿度传感器的 ValueRandom 设置以查看值变化。

    text
    Soil Moisture: 638
    Soil Moisture is too low, turning relay on.
    Soil Moisture: 452
    Soil Moisture is too low, turning relay on.
    Soil Moisture: 347
    Soil Moisture is ok, turning relay off.

💁 您可以在 code-relay/virtual-device 文件夹中找到此代码。

😀 恭喜!您的虚拟土壤湿度传感器成功控制了继电器程序!