學會掌控板+Siri語音控制智能家居,只要半小時

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

話不多說,先上效果演示視頻:

前言

前段時間,我在頭條上面發了一篇文章:

在這篇文章中,我使用了還處於測試階段的掌控板 V1.1 寫了一篇語音識別的教程。好多老師看了後,都迫不及待想要玩一下掌控板語音識別功能,但無奈掌控板目前在售的最新版本(V1.0.1)還不支持這個功能,只能作罷。而且從我測試的結果來看,目前掌控板語音識別效果不是很理想。

於是我就想,還有沒有其他方案可以做到語音識別呢?

看著手裡的 iPhone,是時候輪到人工智障 Siri 上場了!

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

可是怎麼做才可以讓 Siri 完成智能家居的控制呢?可能很多人會說,加一個 Raspberry Pi (樹莓派),在上面運行 Home Assistant 框架,變成智能家居網關,然後再用掌控板(ESP32)做外設,就可以實現了 DIY 的 Siri 語音控制智能家居方案了。

的確,我們可以用這種方法去實現很複雜的智能家居控制系統,而且我之前就利用過 Home Assistant 框架、樹莓派和 ESP8266 做過智能家居系統,具體教程可以查看:

  • Hey Siri,打開 HAY 旋轉燈:http://mc.dfrobot.com.cn/thread-26865-1-1.html
  • Hey Siri,請告訴我傳感器數據:http://mc.dfrobot.com.cn/thread-28859-1-1.html

以下是這個方案的演示視頻。頭條裡面只能放一個視頻,所以放上視頻鏈接:

https://www.bilibili.com/video/av14986294/

既然掌控板的主控芯片是 ESP32,而 ESP32 又是 ESP8266 的升級版,那麼 ESP32 當然也同樣可以接入 Home Assistant 系統。隨著時間的推移,Home Assistant 系統也有了很多升級,功能也越來越全面,大家可以自行去嘗試學習下這種方法。

Home Assistant 雖然是一個很強大的框架,但是如果我們只是做一些簡單的燈光控制,而且還要用到樹莓派,未免有點大材小用了。

所以這篇教程用的卻是另一種方法,我們讓掌控板或 ESP32 不用樹莓派就可以直連 IPhone 上的 Siri。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

具體怎麼做呢?請繼續往下看。

重要的事情說三遍:

以下教程基於 Windows 系統!

以下教程基於 Windows 系統!

以下教程基於 Windows 系統!

如果你用的是 Linux 系統……你都用 Linux 系統了,這還難得倒你麼?

如果你用的是 macOS 系統……土豪,你不需要折騰,直接買買買那些支持 Siri 的設備就行!

準備工作

如果你是高手,可以直接看這裡:快速入門——ESP-IDF 編程指南:https://docs.espressif.com/projects/esp-idf/zh_CN/stable/get-started/index.html

ESP-IDF 是 Espressif IoT Development Framework 的縮寫,是樂鑫 ESP32 開發的一套框架,樂鑫所研發的軟件開發環境 ESP-IDF 能夠幫助用戶快速開發物聯網 (IoT) 應用,滿足用戶對於 Wi-Fi、藍牙、低功耗等性能的需求。框架裡面包含很多例程,是入門和進階ESP32的優秀參考。

如果你只想看精簡版的,請繼續往下看。你需要準備:

  • 文本編輯器:編寫 C 語言程序,例如 VS Code、Eclipse、Notepad++等;
  • 掌控板或其他 ESP32 開發板;
  • Git:用於後續安裝 ESP32 編譯工具鏈、ESP-IDF 以及示例代碼;
  • 工具鏈:用於編譯下載調試 ESP32 程序;
  • ESP-IDF:包含 ESP32 API 和用於操作工具鏈的腳本;
  • ESP HomeKit Demo 程序:包含蘋果智能家居 HomeKit 的 API 框架和適用於 ESP 系列芯片的例程 。

安裝 Git 環境

首先你需要安裝 Git 環境。Git 是做什麼的呢?說的簡單點,就是快速從 GitHub 下載代碼的工具。安裝方案很簡單,從 Git 官網(https://git-scm.com/)下載最新的安裝包,然後雙擊打開 exe 安裝文件,一路 Next 就行。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

設置 ESP32 工具鏈

快速設置的方法是從 dl.espressif.com 下載集成在一起的工具鏈和 MSYS2 壓縮文件。下載鏈接為:

https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20181001.zip

將 zip 壓縮文件解壓到 `C:\\` (或其它路徑,我邊邊是 `D:\\esp`),它會使用預先準備的環境創建一個 `msys32` 目錄,如下圖所示:

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

然後打開 `D:\\esp\\msys32\\mingw32.exe` 程序,這將會打開一個 MSYS2 的終端窗口,該窗口的環境是一個 bash shell。後面會多次用到這個程序,請一定要記住!後面會多次用到這個程序,請一定要記住!後面會多次用到這個程序,請一定要記住!

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

運行如下命令,創建一個 `esp` 目錄作為開發掌控板(ESP32) 應用的默認地址:

mkdir -p ~/esp

輸入 `cd ~/esp` 就進入到新創建的目錄。如果沒有錯誤信息出現則表明此步驟已完成。

cd ~/esp
掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

請不要關閉這個窗口,後續步驟將會使用這個窗口來為掌控板(ESP32)設置開發環境。

下載 ESP-IDF 框架

工具鏈安裝完後,你還需要 ESP32 相關的 API 庫。API 庫在ESP-IDF 倉庫:https://github.com/espressif/esp-idf 中。

繼續在 MSYS2 的終端窗口中輸入以下命令,使用 `git clone` 命令克隆(下載) ESP-IDF 遠程倉庫:

cd D:\\esp
git clone -b v3.2.2 --recursive https://github.com/espressif/esp-idf.git

該命令首先切換到 `D:\\esp` 目錄下,然後將 ESP-IDF 被下載到 `D:\\esp` 目錄下。

`git clone` 命令的 `-b v3.2.2` 選項告訴 git 從 ESP-IDF 倉庫中克隆與此版本的文檔對應的分支版本,目前最新的穩定版本為 `v3.2.2`。

下載需要一段時間,請耐心等待。我這邊大概下載了 20 分鐘。

接著開始設置 ESP-IDF 路徑。工具鏈程序使用環境變量 `IDF_PATH` 來訪問 ESP-IDF。這個變量應該設置在你的 PC 中,否則工程將不能編譯。用戶配置文件腳本存放在 `D:/esp/msys32/etc/profile.d/` 目錄中。每次打開 MSYS2 窗口時,系統都執行這些腳本。

在 `D:/esp/msys32/etc/profile.d/` 目錄下創建一個新的腳本文件。將其命名為 `export_idf_path.sh`。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

然後確定 ESP-IDF 目錄的路徑,也就是我們剛才安裝 ESP-IDF 的路徑,此處為 `D:\\esp\\esp-idf`。在 `export_idf_path.sh` 腳本中加入 `export` 命令:

 export IDF_PATH="D:/esp/esp-idf"
掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

然後保存並關閉該文件即可。

至此 ESP-IDF 所有準備工作就完成了。

下載 ESP HomeKit Demo 程序

ESP HomeKit Demo 程序是 GitHub 上的一位大神開源的,原地址為:https://github.com/maximkulkin/esp-homekit-demo

但是上面的教程寫的比較簡單,所以我就做了一下搬運。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

還記得前文在 MSYS2 的終端窗口下創建了一個 `~\\esp` 路徑麼?這個路徑是一個相對路徑,它是相對 `msys2` 目錄而言的,這個目錄的具體位置為:`D:\\esp\\msys32\\home\\ironpanda\\esp` ,其中 `ironpanda` 是我的電腦用戶名,每個人電腦用戶名不一樣。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

我們將把 ESP HomeKit Demo 例程下載到 `~\\esp` 這個目錄中,在 MSYS2 的終端窗口運行一下命令:

cd ~/esp
git clone https://github.com/maximkulkin/esp-homekit-demo.git
cd esp-homekit-demo
git submodule update --init --recursive

然後進入 `esp-homekit-demo` 目錄,複製一份 `wifi.h.sample` 文件,並將其修改為 `wifi.h` 文件。這個文件主要用於設置掌控板聯網時的 WiFi 賬號密碼。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

打開 `wifi.h` 文件,修改為你自己的 WiFi 賬號密碼,如下圖所示:

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

至此,所有的準備工作都完成了,下面正式開始燒寫程序。

快速入門:第一個掌控板 Siri 項目

在快速入門的第一個項目中,我們主要希望實現 Siri 可以控制掌控板上外接的 LED 燈模塊。

硬件連接

這裡我通過掌控擴展板連接外部的 LED 燈模塊,擴展板隨便選,可以用 DF 出的擴展板,也可以用掌控寶,此處繪製電路圖時使用了 DF 出品的擴展板,如下圖所示,我們將 LED 模塊連接到擴展板的 P13 引腳。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

修改例程

在剛剛下載的 `esp-homekit-demo` 文件夾下,有一個 `examples` 文件,裡面提供了非常多的可以與蘋果 Homekit 交互的案例(也就是可以用 Siri 控制),我們在裡面找到 `esp32` 文件夾,這個文件夾裡面提供了 ESP32 相關的例程,可以適用於掌控板。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

我們打開 `esp32` 文件夾,注意到裡面的 `led` 文件了麼?這篇教程,我就將教大家上傳這個程序,實現 Siri 控制 LED 燈亮滅的程序。當然學會這個後,控制家裡的電燈也是一樣的道理,加個繼電器開關即可。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

我們進入這個文件夾,找到 `led.c` 文件,這裡面編寫的就是主要程序,用你熟練的文本編輯器或 IDE 打開它。具體的程序原理,這篇文章暫時就不講了,涉及到比較多的內容,後面有時間慢慢講,我們主要關注下面幾個地方。

第一個地方是連接 LED 的 GPIO 引腳設置。注意這裡是 GPIO 引腳編號,而不是掌控板上的 Px 引腳編號。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

由於我們前面電路連接的是掌控板 P13 引腳,查看掌控板 ESP32 的引腳定義,發現 P13 對應的 GPIO 編號是 IO18,所以修改程序中的 `led_gpio = 18`。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

然後再來看一下設備設置信息。如下圖所示,其中 1 和 2 是用於設置 HomeKit 外設參數的,包括名字、廠商、序列號、型號、固件號等,可以不用修改。3 是用來設置**配對密碼**的,待會要將這個外設加入 iPhone 的“家庭”軟件時會用到, **請記住配對密碼**!這兩個地方修改完之後,程序就完成了。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

下面我們將進入程序編譯以及上傳環節。

上傳程序

先用 USB 線將掌控板連上電腦,然後打開 MSYS2 的終端窗口,還記得在哪裡打開麼?忘了的話,往前翻一下。然後切換到 `esp-homekit-demo` 路徑下

cd ~/esp/esp-homekit-demo/
掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

然後輸入以下命令,並回車。`menuconfig` 命令主要用於對項目程序進行編譯和上傳設置:

make -C examples/esp32/led menuconfig
掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

輸入上述命令後,會彈出 `menuconfig` 配置界面。

menuconfig 使用技巧:

- 使用 up & down 組合鍵在菜單中上下移動

- 使用 Enter 鍵進入一個子菜單,Escape 鍵退出子菜單或退出整個菜單

- 輸入 `?` 查看幫助信息,Enter 鍵退出幫助屏幕

- 使用空格鍵或 `Y` 和 `N` 鍵來使能 (Yes) 和禁止 (No) 帶有複選框 “`[*]`” 的配置項

- 當光標在某個配置項上面高亮時,輸入 `?` 可以直接查看該項的幫助信息

- 輸入 `/` 搜索配置項

我們主要修改其中的 `Serial flasher config` ,也就是上傳程序的串口參數,如下圖所示:

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

將其中的 `Default serial port` 修改為掌控板連接電腦的端口號,如下圖所示,然後保存退出即可。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

然後繼續在 MSYS2 的終端窗口輸入以下命令,對程序進行編譯:

make -C examples/esp32/led all
掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

這個過程時間比較長,約 2 分鐘左右,請耐心等待。編譯完成後,如果程序沒有錯誤,就會出現類似下圖界面:

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

接著擦除掌控板上原來已有的程序:

make -C examples/esp32/led erase_flash
掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

**擦除程序過程中,出現 Connecting…… 時,注意要按一下掌控板上的 A 鍵 1 秒左右**。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

擦除完成後,如下圖所示:

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

接著正式開始上傳剛剛修改的 led 程序,繼續輸入以下命令:

make -C examples/esp32/led flash
掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

**上傳程序過程中,出現 Connecting…… 時,同樣也要按一下掌控板上的 A 鍵 1 秒左右**。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

上傳完成後,你的程序就已經在掌控板裡面了。在 MSYS2 的終端窗口輸入以下命令:

make -C examples/esp32/led monitor

這個命令可以讓我們類似串口助手一樣,查看相應的調試信息,如下圖所示:

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

接下來就可以掏出你的 iPhone 或 iPad 進行配對啦。

配對 iPhone

首先找到 iPhone 上自帶的**家庭 App**,我的手機系統是英文,可能顯示稍有不同,大家對照圖片即可。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

打開**家庭 App**,這是蘋果生態系統裡的智能傢俱控制程序,可以用 Siri 去控制接入其中的設備、查看傳感器信息等。可以在家庭 App 主頁上看到,我已經接入了一個 LED 燈(紅燈)設備,下面我將教你如何接入另一個設備。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

點擊 App 右上角的 “**+**” 號,在彈出的選擇按鈕中選擇 Add Accessory。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

點擊箭頭所指處,選擇使用配對密碼進行配對。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

可以看到有一個 LED-XXXX 的設備等待我們連接,點擊選擇:

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

接下來會彈出警告提醒,不用管它,點擊 Add Anyway,然後輸入配對密碼。還記得配對密碼嗎?忘了的話,回到程序中看看。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

輸入配對密碼之後,系統就會提示你設備添加成功。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

為了方便記憶,我們可以修改設備默認的名字和所在房間的名稱,比如我將 LED 名稱修改為“藍燈”,房間名稱修改為“掌控板”。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

回到家庭 App 主頁面,看到剛剛添加的“藍燈”了麼?

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

Hey Siri

接下來就盡情用 Siri 玩耍吧!

Siri 是支持自然語言識別的,如果你像我一樣添加了多個設備,比如兩盞燈,你就可以用語音命令控制兩盞燈同時打開或關閉。比如:

- Hey Siri,打開所有燈;

- Hey Siri,關閉掌控板;

- Hey Siri,打開紅燈。

掌控板教程 | 學會掌控板+Siri語音控制智能家居,只要半小時

搞定!


分享到:


相關文章: