完成这项有趣的实验,你所需要的材料有:
其实也可以改造220V风扇,但是比较复杂,需要多一个继电器,我们下一篇讲改造台灯的时候会说到。建议开始之前先阅读上一篇文章:Python利用智能音箱语音控制电脑开关机 你会得到控制流程的整体思路。
首先是改造风扇,利用树莓派控制开关,我们的改造对象:
完成这项有趣的实验,你所需要的材料有:
1.电烙铁
2.一个8050三极管
3.一个路由器
4.一个树莓派
5.一个智能音箱 (我使用的是亚马逊 Echo Dot2)
6.一个普通的5V风扇
其实也可以改造220V风扇,但是比较复杂,需要多一个继电器,我们下一篇讲改造台灯的时候会说到。
首先是改造风扇,利用树莓派控制开关,我们的改造对象:
像这种风扇,内部电路其实就是一个开关,它使用USB连接的5V电压,其实和树莓派的5V是一样的。所以我们可以直接使用树莓派供电。但是怎么样才能控制它开关呢?这时候我们就需要8050三极管了。
如图所示,从8050的正面(平)的这一面看过去,三极管中间的那一根即b可以作为控制端,我们可以将它连接到树莓派上的GPIO口,三极管的原理我们可以先跳过,大致先这样理解:当b端为低电平时,电路不通;当b端为高电平时,电路连通;因此,通过控制GPIO口的高低电平便能控制它的开关。我们放弃它原先的电路,使用三极管作为一个新的开关电路,如下图所示,树莓派的5V接风扇,出来后接三极管,然后接负极,b端接GPIO的第12号口,如图所示。
这样,我们通过树莓派控制Pin12#的高低电平就能控制风扇的开关。现实版焊接如图所示(没错,红色的不用管,只是线不够长我又延长了,黑色那块就是三极管,棕色那条是控制端,接树莓派的PIN12#):
进去后,只要把正负连线分别焊接到风扇的正负极即可,如图(其实我这个甚至不用焊,直接连到风扇的正负极就可以了,焊接是怕它掉下来):
大家如果心里没底,可以先用个LED灯接个电阻试一下三极管的控制,成功后就可以大胆上了!
下面是我们的控制代码GPIO12.py:
# -*- coding: utf-8 -*- import RPi.GPIO as GPIO import time import sys # BOARD编号方式,基于插座引脚编号 GPIO.setmode(GPIO.BOARD) # 输出模式 GPIO.setup(12, GPIO.OUT) def turnOn(): GPIO.output(12, GPIO.HIGH) def turnOff(): GPIO.output(12, GPIO.LOW) if sys.argv[1] == 'on': turnOn() elif sys.argv[1] == 'off': turnOff()
文件接收一个参数即 on 或 off. 当参数是on的时候,运行turnOn函数,向pin12#发送高电平,风扇开启。off的时候,则执行turnOff函数,向pin12#发送低电平,风扇关闭。
前面我们已经讲过如何用树莓派控制风扇的开关,接下来是语音控制部分。
在上一篇推送中《利用智能音箱语音控制电脑开关机》我已经介绍了模拟WEMO智能家居软件Fauxmo是如何和亚马逊Echo dot2一起工作的,所以我们这里就不再介绍了,大家如果不理解,可以仔细琢磨一下上一篇推送。
根据前面的代码,我们知道控制风扇开关的是一个Python文件,那么我们可以以这样的逻辑思路完成语音控制。
“echo, turn on the fan” -> Echo -> 向树莓派发送指令,执行Python文件,向Pin12#输出高电平,风扇启动
“echo, turn off the fan” -> Echo -> 向树莓派发送指令,执行Python文件,向Pin12#输出低电平,风扇关闭
因此在这里,我们可以继续使用之前提到的commandlineplugin.py文件。音箱收到指令后便查找有没有一个叫 fan 的设备,然后发现(树莓派上)有这样一个设备,便让它通过commandlineplugin.py执行一个文件(GPIO12.py on/off)。
在config.json的PLUGINS下添加下面的代码,注意,port可以随意设置,只要不重复就可以了,Fan 是音箱识别的名字,如果你把它改成baby,那就要 turn on (the) baby 才执行,GPIO12.py你可以放在任何你想要的位置,只要执行的时候写清楚即可,另外如前面所述,文件后面记得写上传递给它的参数。
"MyLight": { "path": "/home/pi/Documents/fauxmo/src/fauxmo/plugins/commandlineplugin.py", "DEVICES": [ { "name": "Fan", "port": 49918, "on_cmd": "python2 /home/pi/Documents/Automatic/GPIO12.py on", "off_cmd": "python /home/pi/Documents/Automatic/GPIO12.py off", "state_cmd": "" } ] }
大功告成,重启fauxmo, 然后试试echo, turn on the fan. 你会发现风扇成功运转起来了。如果你是使用的其他智能音箱,请注意,Fauxmo只适用于Echo, 你可以找一个适合于你的智能音箱的,并能让你的树莓派模拟智能家居的工具。
风扇只是牛刀小试,下一篇我们将改造台灯,那才是真正的大工程。
我们的文章到此就结束啦,如果你希望我们今天的Python 教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典