遥控开关
=================
在这个项目中,我们将学习使用 Cloud4RPi 的开关来控制继电器,从而控制继电器的负载 LED。您也可以将继电器的负载更改为家用电器,但要注意安全。
实验步骤
-------------------------
搭建电路。
.. image:: img/relay1.png
:align: center
打开代码。
.. raw:: html
.. code-block:: shell
cd /home/pi/cloud4rpi-raspberrypi-python
sudo nano remote_switch.py
找到下面的部分并填写正确的设备令牌。
.. code-block:: python
DEVICE_TOKEN = '__YOUR_DEVICE_TOKEN__'
运行代码。
.. raw:: html
.. code-block:: shell
sudo python3 remote_switch.py
转到 Cloud4RPi 页面,添加一个名为 project2 的新控制面板,然后单击 **Add Widget** 添加一个 **Switch** 小部件。
.. image:: img/relay2.png
:align: center
添加后,您可以使用 “Switch” 小部件来控制继电器。
.. image:: img/relay3.png
:align: center
代码说明
----------------------
.. code-block:: python
RELAY_PIN = 18
继电器连接到 T 型扩展板的 GPIO18 引脚。
.. code-block:: python
GPIO.setmode(GPIO.BCM)
GPIO.setup(RELAY_PIN, GPIO.OUT)
选择 BCM 命名模式并设置 ``RELAY_PIN`` 为输出模式。
.. code-block:: python
def relay_control(value=None):
GPIO.output(RELAY_PIN, value)
return GPIO.input(RELAY_PIN)
该函数通过 ``value`` 控制继电器,并返回继电器当前的电平。
.. note::
由于继电器工作在高电平,当开关状态为Ture时继电器闭合,当开关状态为False时继电器打开
.. code-block:: python
variables = {
'LED On': {
'type': 'bool',
'value': False,
'bind': relay_control
},
}
通过设置 ``'value'`` 键的值, 我们可以设置Switch部件的初始值, 然后循环读取 ``'value'`` 键的值,并将继电器当前电平 ``RELAY_PIN`` (函数 ``relay_control()`` 的返回值) 发送到Cloud4RPi。