基于物聯(lián)網(wǎng)的語(yǔ)音控制新像素LED -在谷歌助手上使用語(yǔ)音命令設(shè)置任何顏色
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著谷歌助理、亞馬遜Alexa和蘋(píng)果Siri等虛擬助手的發(fā)展,家庭自動(dòng)化和語(yǔ)音控制應(yīng)用變得相當(dāng)流行。我們以前建立了許多家庭自動(dòng)化項(xiàng)目,從簡(jiǎn)單的Alexa控制的家庭自動(dòng)化到語(yǔ)音控制的家庭自動(dòng)化使用樹(shù)莓派。在這個(gè)項(xiàng)目中,我們將使用谷歌助手和Blynk應(yīng)用程序來(lái)控制Neopixel LED條。Blynk應(yīng)用程序是一個(gè)免費(fèi)的物聯(lián)網(wǎng)平臺(tái),鏈接到IFTTT(如果這樣,那么那個(gè))網(wǎng)站,該網(wǎng)站用于創(chuàng)建if-else條件語(yǔ)句,或者換句話說(shuō),applet。谷歌助手的語(yǔ)音命令已經(jīng)通過(guò)IFTTT小程序添加。通過(guò)谷歌助手給出的命令被解碼,然后使用IFTTT Webhooks發(fā)送到Blynk。然后微控制器訪問(wèn)Blynk應(yīng)用程序中的數(shù)據(jù)。這里使用的微控制器是ESP-01,因?yàn)樗w積小,具有Wi-Fi功能。
使用NodeMCU控制新像素所需的組件
?新像素LED帶
?LM1117穩(wěn)壓器
?直流電源插孔(母)
?2x10μf電容器
用Arduino Uno編程ESP8266-01
而不是使用FTDI板,在這里我使用Arduino Uno來(lái)編程ESP8266-01。使用Arduino編程ESP8266-01的電路圖如下:
將ESP-01的VCC和GND連接到3.3V, Arduino的GND, CH_PD連接到3.3V, GPIO_0連接到Arduino的GND。將ESP-01的RX和TX分別連接到Arduino Uno的RX和TX。GPIO_0接地,使能ESP8266的編程模式。按圖完成電路后,將Arduino的Reset引腳連接到GND上,繞過(guò)Arduino。它將禁用Arduino并將代碼直接上傳到ESP8266板。連接ESP-01的RST引腳到地,半秒后取下RST(藍(lán)色LED閃爍幾毫秒)。
現(xiàn)在,啟動(dòng)Arduino Uno并打開(kāi)Arduino IDE。在“Board type”中選擇“Generic ESP8266 Module”,上傳代碼。
Neopixel與ESP8266接口的電路圖
上傳代碼后,拆除Arduino Uno,按照?qǐng)D將Neopixel LED帶與ESP-01連接。
ESP-01的VCC和CH_PD引腳接LM1117的輸出引腳,GND引腳接5V電源的-ve導(dǎo)軌。Neopixel LED的數(shù)據(jù)引腳連接到ESP-01的GPIO2引腳上。這個(gè)完整的設(shè)置將由一個(gè)5V適配器供電。LM117穩(wěn)壓器用于調(diào)節(jié)ESP8266-01板的3.3V電壓。
焊接完穿孔板上的所有組件后,它看起來(lái)像下面這樣:
設(shè)置Blynk應(yīng)用程序
Blynk是一個(gè)可以在Android和iOS設(shè)備上運(yùn)行的應(yīng)用程序,可以控制任何物聯(lián)網(wǎng)設(shè)備。通過(guò)使用Blynk應(yīng)用程序,用戶可以創(chuàng)建自己的圖形用戶界面來(lái)設(shè)計(jì)物聯(lián)網(wǎng)應(yīng)用程序GUI。我們以前在許多其他基于物聯(lián)網(wǎng)的項(xiàng)目中使用過(guò)Blynk。
在安裝之前,從Google Play商店下載Blynk應(yīng)用程序(iOS用戶可以從Apple store下載),如果你沒(méi)有帳戶,請(qǐng)注冊(cè)。
創(chuàng)建新項(xiàng)目:
安裝成功后,打開(kāi)應(yīng)用程序,點(diǎn)擊“新建項(xiàng)目”。在下一個(gè)屏幕上設(shè)置項(xiàng)目名稱、板類(lèi)型和連接類(lèi)型等參數(shù)。本項(xiàng)目選擇設(shè)備為“ESP8266”,連接類(lèi)型為Wi-Fi,點(diǎn)擊“創(chuàng)建”。
創(chuàng)建GUI:
在Blynk中打開(kāi)項(xiàng)目,單擊“+”符號(hào),它將顯示許多小部件。在我們的例子中,我們需要一個(gè)RGB顏色選擇器,它被列為“zeRGBa”和一個(gè)按鈕,將用于改變LED條的操作模式。
在Widgets中設(shè)置參數(shù):
添加完所有小部件后,現(xiàn)在設(shè)置用于向ESP-01發(fā)送控件值的顏色和模式的小部件參數(shù)。
點(diǎn)擊ZeRGBa,我們將看到一個(gè)名為ZeRGBa Settings的屏幕。將輸出選項(xiàng)設(shè)置為“合并”,并將引腳設(shè)置為“V2”,如下圖所示。同樣,在按鈕設(shè)置中,將輸出引腳設(shè)置為“V3”,如下圖所示。
獲取認(rèn)證令牌:
創(chuàng)建新項(xiàng)目后,Blynk會(huì)將該項(xiàng)目的認(rèn)證令牌發(fā)送給您。您還可以從項(xiàng)目頁(yè)面獲取Blynk認(rèn)證令牌。只需單擊堅(jiān)果圖標(biāo)并使用復(fù)制所有選項(xiàng)復(fù)制驗(yàn)證令牌并將其粘貼到安全的地方。我們?cè)诰幊蘀SP-01時(shí)需要它。
使用Google Assistant和Blynk設(shè)置IFTTT
IFTTT又名“If This, Then That”,是一個(gè)基于網(wǎng)絡(luò)的服務(wù),用于創(chuàng)建簡(jiǎn)單條件語(yǔ)句鏈,稱為applet。它使用戶能夠創(chuàng)建觸發(fā)器并基于觸發(fā)器執(zhí)行操作。在這個(gè)項(xiàng)目中,當(dāng)我們使用Google Assistant說(shuō)出特定的一行時(shí),我們將使用IFTTT來(lái)創(chuàng)建一個(gè)觸發(fā)器。為此,我們必須創(chuàng)建一個(gè)applet,其中我們將使用Webhooks將谷歌助手與Blynk應(yīng)用程序集成在一起。
首先,在IFTTT上創(chuàng)建一個(gè)帳戶。要做到這一點(diǎn),請(qǐng)瀏覽IFTTT網(wǎng)站并點(diǎn)擊注冊(cè)。然后填寫(xiě)您的詳細(xì)信息并點(diǎn)擊創(chuàng)建帳戶?,F(xiàn)在,當(dāng)你登錄你的賬戶時(shí),點(diǎn)擊你的個(gè)人資料,然后點(diǎn)擊“創(chuàng)建”。
注意:登錄到IFTTT使用相同的電子郵件ID在您的Android手機(jī)的谷歌帳戶。例如,如果您的手機(jī)使用xyz@gmail.com電子郵件ID登錄,那么使用相同的電子郵件ID登錄IFTTT。
現(xiàn)在使用If ' This ' Then ' That創(chuàng)建一個(gè)小程序。這里的“This”是服務(wù)名,我們將通過(guò)它提供輸入,而“That”將根據(jù)輸入生成觸發(fā)器。所以在這個(gè)項(xiàng)目中,我們將谷歌Assistant作為“this”,Webhooks作為“That”。所以要?jiǎng)?chuàng)建一個(gè)小程序,點(diǎn)擊“This”圖標(biāo)并搜索“谷歌助手”。在這里,IFTTT將請(qǐng)求允許使用你的谷歌賬戶。
現(xiàn)在在谷歌助手中,點(diǎn)擊“說(shuō)一個(gè)帶有文本成分的簡(jiǎn)單短語(yǔ)”。
現(xiàn)在在下一個(gè)窗口中,它會(huì)詢問(wèn)你想對(duì)你的谷歌助手說(shuō)什么短語(yǔ),以及你想聽(tīng)到什么作為對(duì)該短語(yǔ)的回應(yīng)。你也可以添加一些可選的短語(yǔ)?,F(xiàn)在點(diǎn)擊“創(chuàng)建觸發(fā)器”。
現(xiàn)在,這個(gè)applet的一部分已經(jīng)完成。對(duì)于第二部分,點(diǎn)擊“That”。
在搜索窗口中,搜索“webhooks”,然后在下一個(gè)窗口中點(diǎn)擊“Make a web request”。
在下一個(gè)窗口中,輸入U(xiǎn)RL。API的語(yǔ)法如下:
式中:188.166.206.43為Blynk在印度的IP地址,He3ot0ZXrYQcROYlwOIuVu-F為Auth令牌,V1為虛擬pin1。
3D打印ESP-01外殼
我測(cè)量了使用規(guī)模的設(shè)置的尺寸,也測(cè)量了桶千斤頂?shù)某叽?,為我的設(shè)置設(shè)計(jì)一個(gè)套管。完成后,我的設(shè)計(jì)看起來(lái)是這樣的。
完成設(shè)計(jì)后,我將其導(dǎo)出為STL文件,并根據(jù)打印機(jī)設(shè)置進(jìn)行切片,最后進(jìn)行打印。STL文件也可以從Thingiverse下載,你可以使用它打印你的大小寫(xiě)。打印完成后,我繼續(xù)將項(xiàng)目組裝在一個(gè)永久的外殼中,并將其安裝在一個(gè)設(shè)施中。與完整的連接,我組裝電路到我的外殼,一切都是一個(gè)很好的適合,你可以看到在這里。
控制新像素的ESP-01編程
使用谷歌助手控制新像素的完整代碼可以在本頁(yè)底部找到。對(duì)這個(gè)問(wèn)題的解釋如下。在這個(gè)項(xiàng)目中,我們將使用Adafruit_NeoPixel.h和BlynkSimpleEsp8266.h庫(kù)。這些庫(kù)可以直接從Arduino IDE下載。為此,轉(zhuǎn)到Sketch > Include Library > Manage Libraries。在搜索框中搜索“Adafruit Neo”下載并安裝Blynk ESP8266庫(kù)。
請(qǐng)按照與ESP8266相同的步驟安裝Blynk庫(kù)。
安裝庫(kù)之后,開(kāi)始編寫(xiě)代碼,包括所有必需的庫(kù)文件并定義輸入和輸出引腳
在接下來(lái)的幾行中,輸入Blynk和Wi-Fi憑據(jù),如認(rèn)證令牌,以及ESP-01應(yīng)該連接的Wi-Fi的Wi-Fi名稱和密碼。blink驗(yàn)證令牌可以從Blynk應(yīng)用程序獲得。
之后,聲明NeoPixel strip對(duì)象,其中參數(shù)1是NeoPixel strip中的像素?cái)?shù),參數(shù)2是連接LED strip的ESP-01引腳。
BLYNK_WRITE()函數(shù)用于檢查V1, V2和V3虛擬引腳的傳入數(shù)據(jù)。虛擬pin V1用于接收來(lái)自webhooks URL的Google Assistant數(shù)據(jù),而V2和V3 pin用于更改來(lái)自Blynk應(yīng)用程序的Neopixel顏色和模式。
在loop()函數(shù)內(nèi)部,Blynk.run()檢查來(lái)自Blynk GUI的傳入命令。然后將輸入的字符串保存到一個(gè)變量中,并使用if條件執(zhí)行相應(yīng)的操作。
控制新像素與Blynk和谷歌助理
一旦你的代碼和硬件準(zhǔn)備好了,使用Arduino Uno在ESP-01上上傳代碼。之后,連接Neopixel LED并對(duì)你的谷歌助手說(shuō)“ok Google,打開(kāi)彩虹模式”或“打開(kāi)影院模式”。谷歌助手將識(shí)別該短語(yǔ)并響應(yīng)“ok開(kāi)啟”,Neopixel將根據(jù)命令照亮。您還可以使用Blynk來(lái)控制新像素的顏色。
這就是如何用谷歌助手控制ESP8266。
本文編譯自iotdesignpro