閱讀這篇文章前,這兩篇文章可能對你會有所幫助:
利用智慧音響語音控制電腦開關機 (必讀,否則你可能不知道我在說什麼)
語音控制 - 改造普通風扇 (選讀)
先看看效果:
完成這項有趣的實驗,你所需要的材料有:
1.電烙鐵
2.一個8050三極體
3.一個繼電器
4.一個路由器
5.一個樹莓派
6.一個智慧音響 (我使用的是亞馬遜 Echo Dot2)
7.一個普通檯燈
我使用的是最基本的開關臺燈,所以它只有一個開關按鈕,也只有一個功能,那就是開關臺燈(廢話),現在我們需要讓它能夠被語音控制。由於我們可以讓智慧音響和樹莓派通訊,所以只需要讓檯燈連線樹莓派就能達成我們的目的,因此我們需要有一個能和這個檯燈並聯,並且能夠接線出來讓樹莓派控制的器件。那就是繼電器。
PS:為什麼不能讓樹莓派像控制風扇一樣,直接控制檯燈呢?
因為檯燈接的是220V電壓,樹莓派最大電壓只有5V,樹莓派是較小電流,較小電流要控制大電流則必須用繼電器。
加上繼電器後,其電路圖就如同下面所示。
我們使用的繼電器是這個小東西:
但由於我的檯燈裡的空間不夠大(如下圖所示,我還打了個孔,方便接出線),我只好拆出這個繼電器的核心,當然如果你的檯燈夠大,就不需要考慮這一點了。
接下來講一下繼電器的使用(原理可見上方動圖),其實是很簡單的,把點燈開關的兩條線接到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實用寶典
本作品採用《CC 協議》,轉載必須註明作者和本文連結