如何在Raspberry Pi專案中添加Siri控制

1. 目的
本教程旨在教您如何使用SiriControl開源Python框架在RaspberryPi專案中添加Siri功能和控制功能。

2. 概述

在本教程中,我將介紹如何設定和使用SiriControl Python框架。我將利用SiriControl模組和Raspberry Pi 3來點亮和熄滅一個LED。學完本教程之後,您將能夠使用SiriControl將Siri語音命令添加到任何Raspberry Pi專案中。開始學習之前,請確保您擁有以下裝置和材料,並確保已經安裝RaspberryPi且軟體能夠正常運行。

3. 裝置

  1. Raspberry Pi 3 – Raspberry Pi 連結
  2. HDMI 線 – HDMI 線連結
  3. LED – LED的Adafruit連結
  4. 滑鼠 + 鍵盤 – 鍵盤/滑鼠的Amazon連結
  5. 顯示器/TV – 任何帶HDMI介面的TV或顯示器
  6. 跳線 – 跳線的Amazon連結
  7. Micro USB 電纜 – Micro USB 電纜的Amazon連結
  8. 麵包板 – 麵包板的Amazon連結

4. 目錄

  1. 為SiriControl創建一個Gmail帳戶
  2. iOS裝置設定
  3. SiriControl
    1. 設定 SiriControl
    2. 創建自己的模組
  4. 電路接線
  5. 上傳並運行程式

程式

1.0 為SiriControl創建一個Gmail帳戶

SiriControl模組需要一個Gmail帳戶才能工作。我創建了一個新的Gmail帳戶,僅供SiriControl使用。我建議您也這樣做。這是一個好主意,因為Python腳本可以包含該帳戶的用戶名和密碼。

創建帳戶後,我們需要允許不太安全的應用程式訪問Gmail。這是因為Gmail伺服器將Python腳本視為不太安全的應用程式。我們可以在Sign-in & Security(登錄和安全)部分進行設定。

圖1:應用程式訪問(斷路)

圖2:應用程式訪問(開啟)

設定Gmail帳戶的最後一步是啟用IMAP協議。設定路徑如下:Gmail->Settings->Gear Part->Settings->Forwarding and POP/IMAP->IMAP Access.

圖3:IMAP(禁用)

圖4:IMAP(啟用)

2.0 IOS 裝置設定

將iOS裝置上的“Notes”連至已經設定好與SiriControl配合使用的Gmail帳戶。選擇Settings->Accounts & Passwords->Add Account(設定->帳戶和密碼->添加帳戶),添加剛才設定好的Gmail帳戶。添加該帳戶後,選擇它並啟用Notes(圖6:Gmail帳戶下的Notes)。接下來,選擇Settings->Notes 並啟用 “On My iPhone” Account(我iPhone上的帳戶)。然後,將Default Account(默認帳戶)改為Gmail帳戶。現在,我的iOS裝置設定完畢。

圖5:帳戶和密碼

圖6:Gmail帳戶下的Notes

圖7:默認帳戶-Notes

3.0 Siri 控制

3.1 設定 SiriControl

要使用SiriControl,我們需要將模組的資源庫克隆到RaspberryPi。要做到這一點,請打開端子視窗並輸入以下命令:

1. sudo apt-get update
2. sudo apt-get install git-core
3. git clone https://github.com/theraspberryguy/SiriControl-System

圖8:克隆資源庫

克隆資源庫之後,打開腳本siricontrol.py。在腳本中輸入Gmail帳戶的用戶名和密碼,然後保存腳本。

3.2 創建自己的模組

Siricontrol.py 運行時,會從模組(modules)資料夾中載入模組腳本。執行不同的任務時,按照範本編寫新的模組腳本很重要。因為我想控制一個LED,所以我寫了一個腳本來打開LED(LED_on.py)和一個腳本來斷路LED(LED_off.py)。

要製作自己的模組,請在範本腳本中執行以下步驟:

1. 在“moduleName”中命名該模組
2. 為模組提供“commandWords”,以便讓Siri執行命令。
3. 在execute(command) 函數下寫入想要執行的功能。
4. 確保將腳本保存在模組資料夾中。

4.0 連接電路

為了讓SiriControl執行命令,我搭建了一個簡單的LED電路。我總是喜歡用Fritzing繪製接線圖。Fritzing是一款開源原理圖設計和PCB佈線軟體。Fritzing的下載位址(可選)如下:http://fritzing.org/home/

圖9:Raspberry Pi LED原理圖

LED和電阻應串聯在引腳11(GPIO17)和引腳25(地)之間。電阻的作用是限制流過LED的電流,並應根據您的LED進行相應調整,以防止電流過大將LED燒壞。請記住,LED較長的引腳是正極,應連接到引腳11。

5.0 上傳並運行程式

完成上述步驟後,我使用以下命令運行SiriControl腳本:

python siricontrol.py

該腳本開始運行,並使用模組資料夾中的所有模組進行初始化。

圖10:執行LED點亮

圖11:執行LED熄滅

現在我命令Siri,“Note: Turn on LED(注意:打開LED)”,LED燈亮起,同時腳本會告訴我它執行了我的命令並且正在傾聽另一個命令。我現在說,“Note: Turn off LED(注意:斷路LED)”,LED熄滅。只要符合以下條件,該腳本就會執行我(不管在任何地方)對Siri發出的命令:

1. Raspberry Pi正在運行該腳本。
2. Raspberry Pi已連至互聯網,以便可以輪詢Gmail帳戶。

現在,您可以為任意Raspberry Pi專案添加任何SiriControl控制模組。雖然我在這個專案中使用了Pi,但是該教程在安裝了Python的其他Linux研發板上同樣可以工作。

6.0 附件:腳本

6.1 Siricontrol.py

 

6.2 Led_on.py

#You can import any modules required here
import RPi.GPIO as GPIO #import GPIO module
import time

#This is name of the module – it can be anything you want
moduleName = “LED_on”

#These are the words you must say for this module to be executed
commandWords = [“turn”, “on”, “led”]

#This is the main function which will be execute when the above command words are said
def execute(command):
LED = 11 # Set LED pin to pin 11

GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED, GPIO.OUT) #configure LED as an output

print(“\n”)
print(“LED is On.”)

6.3 Led_off.py

#You can import any modules required here
import RPi.GPIO as GPIO #import GPIO module
import time

#This is name of the module – it can be anything you want
moduleName = “LED_off”

#These are the words you must say for this module to be executed
commandWords = [“turn”, “off”, “led”]

#This is the main function which will be execute when the above command words are said
def execute(command):
LED = 11 # Set LED pin to pin 11

GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED, GPIO.OUT) #configure LED as an output

print(“\n”)
print(“LED is off.”)
GPIO.output(LED, GPIO.LOW) #turn LED on

Deviceplus 編輯團隊
Deviceplus 編輯團隊
Device Plus適合所有電子設計和機電一體化發燒友。

Check us out on Social Media