python改造并语音控制普通台灯教程
改造普通台灯 - 语音控制
阅读这篇文章前,这两篇文章可能对你会有所帮助:
利用智能音箱语音控制电脑开关机 (必读,否则你可能不知道我在说什么)
语音控制 - 改造普通风扇 (选读)
先看看效果:
完成这项有趣的实验,你所需要的材料有:
1.电烙铁
2.一个8050三极管
3.一个继电器
4.一个路由器
5.一个树莓派
6.一个智能音箱 (我使用的是亚马逊 Echo Dot2)
7.一个普通台灯
我使用的是最基本的开关台灯,所以它只有一个开关按钮,也只有一个功能,那就是开关台灯(废话),现在我们需要让它能够被语音控制。由于我们可以让智能音箱和树莓派通信,所以只需要让台灯连接树莓派就能达成我们的目的,因此我们需要有一个能和这个台灯并联,并且能够接线出来让树莓派控制的器件。那就是继电器。
PS:为什么不能让树莓派像控制风扇一样,直接控制台灯呢?
加上继电器后,其电路图就如同下面所示。
我们使用的继电器是这个小东西:
但由于我的台灯里的空间不够大(如下图所示,我还打了个孔,方便接出线),我只好拆出这个继电器的核心,当然如果你的台灯够大,就不需要考虑这一点了。
接下来讲一下继电器的使用(原理可见上方动图),其实是很简单的,把点灯开关的两条线接到COM端(共接点)和NO端(常开端),此外DC+, DC-分别连树莓派的5V电源和接地即可。然后从树莓派任意GPIO引脚中引线接继电器的控制端,这个控制端能控制NO端的开闭,当输入1的时候就是闭合,电路连通,灯亮。
不过需要注意的是,树莓派的GPIO口是3.3V的,你需要把它转化成5V才能进行控制,怎么转化呢?那就要使用上我们上一节 语音控制 - 改造普通风扇 讲的三极管了。
接完后如下图所示
这样,硬件方面的工作我们就做完了,接下来是软件方面的工作。
其实也就是让智能音箱识别到一个控制开关的命令,跟 利用智能音箱语音控制电脑开关机 中提到的一样。让树莓派使用fauxmo,模拟成许多智能设备,模拟的配置如下:
"MyLight": {
"path": "/home/pi/Documents/fauxmo/src/fauxmo/plugins/MyLight.py",
"DEVICES": [
{
"name": "Light",
"port": 49919,
"on_cmd": "python2 /home/pi/Documents/Automatic/GPIO13.py on",
"off_cmd": "python /home/pi/Documents/Automatic/GPIO13.py off",
"state_cmd": ""
}
]
}
这样,智能音箱就会把这个设备的名字识别为 Light. 因此,当你说
" turn on the light ",
它就会执行on_cmd命令,(在这个例子中,我们的path指向的文件MyLight.py即只是启动一个cmd命令而已)即执行 python GPIO13.py on . 相应地,"turn off the light"则执行off_cmd命令。
GPIO13.py 内只是控制树莓派的开关而已,如下所示,它接收两个参数,on或off. 当参数是on的时候,向树莓派的GPIO33口输出高电平,灯亮。Off的时候则输出低电平,灯灭。
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
import sys
# BOARD编号方式,基于插座引脚编号
GPIO.setmode(GPIO.BOARD)
# 输出模式
GPIO.setup(33, GPIO.OUT)
def turnOn():
GPIO.output(33, GPIO.HIGH)
def turnOff():
GPIO.output(33, GPIO.LOW)
if sys.argv\[1\] == 'on':
turnOn()
elif sys.argv\[1\] == 'off':
turnOff()
重启fauxmo,让智能音箱重新搜索,就能找到这个Light的设备,然后说一句 “turn on the light”,就能享受这份折腾的成就感了。
最近我还发现,Amazon Alexa 的手机软件,还支持外网控制这些室内设备,如图。
因此,现在每当我要回到宿舍的时候,在宿舍楼下时,我都会先点击Fan,让它帮我开个风扇,然后根据我是要玩游戏还是要干活,再点击PC或Laptop. 如果是晚上,我还可以点击Light打开点灯。这就是新时代的生活,你得Catch Up。
无论是多么普通的设备,你都可以用一个树莓派把它变得智能。
我们的文章到此就结束啦,如果你希望我们今天的Python 教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦
有任何问题都可以在下方留言区留言,我们都会耐心解答的!
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典
推荐阅读