智能窗帘
=================
在这个项目中,我们将模拟一个根据房间亮度自动打开或关闭窗帘的场景。当光敏电阻检测到房间亮度过亮时,树莓派会驱动电机关闭窗帘;当房间亮度太暗时,窗帘会被拉开。
您也可以通过 Cloud4RPi 上的文本小部件查看室内亮度变化,或使用开关小部件控制灯(为了用电安全,本实验使用 LED 代替)。
实验步骤
-------------------------
搭建电路。
.. image:: img/window1.png
:align: center
打开代码。
.. raw:: html
.. code-block:: shell
cd /home/pi/cloud4rpi-raspberrypi-python
sudo nano smart_curtain.py
找到下面部分并填写正确的设备令牌。
.. code-block:: python
DEVICE_TOKEN = '__YOUR_DEVICE_TOKEN__'
运行代码。
.. raw:: html
.. code-block:: shell
sudo python3 smart_curtain.py
转到 Cloud4RPi 页面,添加一个新的控制面板命名为 **project4**,并通过点击 **Add Widget** 添加3只小部件( **Switch**, **Text** 和 **Chart**)。
.. image:: img/window2.png
:align: center
添加后,您可以使用开关小部件来控制 LED;Text 小部件上的光敏电阻值每1分钟更新一次,当值> 100时,电机顺时针旋转5秒;如果该值小于 20,则电机逆时针旋转 5 秒。
你可以在 Chart 部件中看到随着时间推移发生的变化。
代码说明
----------------------
.. code-block:: python
def getValue():
analogVal = ADC0834.getResult()
if analogVal > 100:
move.clockwise()
sleep(5)
move.stop()
elif analogVal < 20:
move.contrarotate()
sleep(5)
move.stop()
return analogVal
读取 ADC0834 的 CH0 通道(连接光敏电阻)的值。如果该值 >100,则电机顺时针旋转 5 秒。如果该值小于 20,则电机逆时针旋转 5 秒。
.. code-block:: python
'CPU Temp': {
'type': 'numeric',
'bind': getValue
},
将 ``getValue()`` 函数放在 ``'bind'`` 键的值中,使led的亮度( ``getValue()`` 函数的返回值)可以被发送到 **Text** 部件。