加班时,记得为家里的她点亮一盏灯
最后编辑于: 2017-12-10最近加班多,回家迟,希望家里能有一盏灯,在她打开门的那一刻,自动点亮,驱除黑暗。
物料清单
- 树莓派
- USB供电装饰灯
- 红外感应模块
连线
红外感应模块的 VCC 连接树莓派 3.3V 针脚,GND 连接 GROUND 针脚,REL 连接 GPIO 3 号针脚(物理编号)。树莓派的 GPIO 针脚编号分为 GPIO编号 和 物理编号 两种,这里使用物理编号,即 REL 连接 5 号针脚。
装饰灯连接树莓派的 USB 端口 2
程序控制
控制思路
红外感应模块感应到有人体靠近时,会在 REL 输出高电平,使用这个信号来控制 USB 口的供电,进而控制装饰灯的熄灭和点亮。
USB 端口供电控制
USB 端口控制,采用 hub-ctrl 来实现。
打开 USB 端口 2 供电
./hub-ctrl -h 0 -P 2 -p 1
关闭 USB 端口 2 供电
./hub-ctrl -h 0 -P 2 -p 0
自动控制USB端口供电
当检测到 GPIO 5 号针脚高电平时,打开 USB 端口 2 供电,并延时 5 秒,当 GPIO 5 号针脚低电平时,关闭 USB 端口 2 供电。16 行的 Python 程序可以轻松地帮我完成这个控制流程。
import RPi.GPIO as GPIO
import os
import time
def task_entry():
GPIO.setmode(GPIO.BOARD)
GPIO.setup(5, GPIO.IN)
while(True):
if GPIO.input(5) == 1:
os.system('/home/guanhao/usb_hub/hub-ctrl -h 0 -P 2 -p 1')
time.sleep(5)
else:
os.system('/home/guanhao/usb_hub/hub-ctrl -h 0 -P 2 -p 0')
if __name__ == '__main__':
task_entry()
效果
动图为开门后,自动触发装饰灯点亮的效果图
The night is dark and full of terrors, but love burns them all away.