谷歌助手使用NodeMCU控制基于物聯(lián)網(wǎng)的寵物喂食器
如果你家里有一只寵物,當你離開家的時候,你沒有人喂它,那么你肯定需要某種機器來做這項工作。因此,我們正在構(gòu)建一個簡單,高效且具有成本效益的物聯(lián)網(wǎng)寵物喂食機。使用這臺機器,你可以喂你的寵物谷歌助手從世界任何地方。你只需要說:“好的,谷歌。喂我的寵物”和其他的事情將由這臺機器完成。你也可以設(shè)置一個特定的時間使用谷歌助手喂養(yǎng)你的寵物。例如,說“好的,谷歌?!拔刮业膶櫸锝裉煸缟稀保鼤谑孪戎付ǖ臅r間喂你的寵物。像這樣,你也可以為中午和晚上設(shè)定一個特定的時間。
在這個項目中,我們使用了一個NodeMCU ESP8266作為主控制器,一個伺服電機來打開和關(guān)閉喂瓶,一個16*2的LCD來顯示時間。我們將從NTP服務(wù)器獲取時間。這里我們使用NTP服務(wù)器來減少硬件組件,而不是使用RTC模塊來處理時間和日期。與RTC相比,NTP服務(wù)器是獲得時間的更好解決方案,因為它更準確,可以提供世界上任何地理區(qū)域的時間。這里是建立一個互聯(lián)網(wǎng)時鐘的完整教程。
組件的要求
?NodeMCU ESP8266
?16x2液晶顯示模塊
?LCD I2C模塊
?伺服電機
線路圖
下面給出了這個基于物聯(lián)網(wǎng)的寵物喂食器項目的電路圖。在這個電路圖中,一個伺服電機和LCD模塊與NodeMCU ESP8266連接。
伺服電機和LCD I2C模塊的Vcc和GND引腳與NodeMCU的Vin和GND引腳相連。I2C模塊的SCL和SDA引腳分別與NodeMCU的D1和D2引腳相連。
這里我們使用了一個塑料瓶作為寵物食品容器:
Adafruit IO設(shè)置物聯(lián)網(wǎng)寵物喂食器
Adafruit IO是一個開放的數(shù)據(jù)平臺,允許您在云中聚合、可視化和分析實時數(shù)據(jù)。使用Adafruit IO,您可以在互聯(lián)網(wǎng)上上傳,顯示和監(jiān)控數(shù)據(jù),并使您的項目啟用物聯(lián)網(wǎng)。您可以使用Adafruit IO控制電機,讀取傳感器數(shù)據(jù),并通過互聯(lián)網(wǎng)制作酷的物聯(lián)網(wǎng)應(yīng)用程序。為了測試和嘗試,有一些限制,Adafruit IO是免費使用的。我們以前也在樹莓派上使用過Adafruit IO。
1. 對于Adafruit IO設(shè)置,您需要做的第一件事是注冊Adafruit IO。登錄Adafruit IO的網(wǎng)站,點擊屏幕右上方的“Get started for Free”即可注冊。
2. 在此之后,將彈出一個窗口,您需要在其中填寫詳細信息
在注冊窗口填寫您的詳細信息,如您的姓名,郵件id,用戶名等。然后點擊保存設(shè)置,你的賬戶就創(chuàng)建好了。要獲得你的AIO密鑰,點擊“查看AIO密鑰”。
3. 一個窗口將彈出與您的Adafruit IO AIO密鑰。復(fù)制此鍵,稍后在代碼中需要它。
4. 現(xiàn)在,在此之后,您需要創(chuàng)建一個提要。要創(chuàng)建提要,請單擊“feed”。然后點擊“Actions”,你會看到一些選項,點擊“Create a New Feed”。
5. 在此之后,將打開一個新窗口,您需要輸入:
名稱-在名稱中,選擇為提要寫一個簡短的描述性名稱。你可以用
字母、數(shù)字和空格。
描述-對數(shù)據(jù)的長格式描述。這個字段不是必需的,但是你
可以寫你的數(shù)據(jù)的描述。
6. 點擊“創(chuàng)建”,你將被重定向到你的新提要。
IFTTT設(shè)置物聯(lián)網(wǎng)寵物喂食器
IFTTT又名“If This Then That”,是一個免費的基于網(wǎng)絡(luò)的服務(wù),用于創(chuàng)建簡單條件語句鏈,稱為applet。IFTTT允許用戶創(chuàng)建觸發(fā)器并基于這些觸發(fā)器執(zhí)行操作。
在這個物聯(lián)網(wǎng)貓喂食器項目中,當我們使用谷歌助手說出特定的線路時,我們使用IFTTT來創(chuàng)建觸發(fā)器。為此,我們必須創(chuàng)建一個applet,我們將在其中集成谷歌助理與Adafruit IO。我們以前使用谷歌助手來構(gòu)建物聯(lián)網(wǎng)項目。
首先,在IFTTT上創(chuàng)建一個帳戶。要做到這一點,請瀏覽IFTTT網(wǎng)站并點擊注冊。然后填寫所需的詳細信息并單擊“創(chuàng)建帳戶”。
現(xiàn)在,當你登錄你的賬戶時,點擊你的個人資料,然后點擊“創(chuàng)建”。
注意:使用與Android手機谷歌帳戶相同的電子郵件ID登錄IFTTT。例如,如果您的手機使用xyz@gmail.com電子郵件ID登錄,那么使用相同的電子郵件ID登錄IFTTT。
現(xiàn)在用If ' This ' Than ' That創(chuàng)建一個小程序。這里的“This”是服務(wù)名,我們將通過它提供輸入,而“That”將根據(jù)輸入生成觸發(fā)器。所以在這個項目中,我們將使用Google Assistant作為“this”,而Adafruit IO作為“That”。
因此,要創(chuàng)建一個applet,請單擊“This”圖標。然后搜索b谷歌助手。在這里,IFTTT將請求允許使用您的谷歌帳戶。
現(xiàn)在在谷歌助手中點擊“說一個簡單的短語”。
現(xiàn)在在下一個窗口中,它會詢問你想對谷歌助手說的短語,以及你想聽到什么作為對該短語的回應(yīng)。你也可以添加一些可選的短語。現(xiàn)在單擊Create Trigger。
現(xiàn)在,這個applet的一部分已經(jīng)完成。對于第二部分,點擊“That”。
現(xiàn)在在搜索窗口中,搜索Adafruit
在下一個窗口中,選擇要為其創(chuàng)建觸發(fā)器的提要名稱,然后輸入在說出指定短語時要發(fā)送到提要的單詞/數(shù)據(jù)。之后點擊“Create Action”。之后,它會讓你點擊finish按鈕來完成設(shè)置?,F(xiàn)在applet就可以使用了。
當我們對谷歌助手說一句話時,這個小程序就會給寵物喂食。
現(xiàn)在我們將創(chuàng)建另一個applet,通過這個applet,我們可以在特定的時間通過說一個帶有文本的短語來喂養(yǎng)我們的寵物,例如,“Ok Google喂養(yǎng)我的寵物今天早上?!蓖ㄟ^使用這個小程序,我們可以在特定時間向ESP8266發(fā)送觸發(fā)器。對于這個小程序,請遵循相同的步驟:單擊profile,然后單擊“Create”。之后,在“This”選項中選擇“Google assistant”?,F(xiàn)在在谷歌助手點擊“說一個文本成分的短語”。
在下一個窗口中,單擊“That”并選擇Adafruit。在Adafruit中,選擇與前一個applet相同的feed名稱。然后點擊“Create action”和“Finish”來完成這個過程
代碼的解釋
這個寵物喂食器的完整代碼以及演示視頻在這個項目的最后給出,在這里我們解釋它的幾個部分。
通過包含此項目所需的所有庫開始編寫代碼。Arduino IDE預(yù)裝了用于伺服電機和LCD模塊的庫。但是你必須從下面給出的鏈接下載并安裝其余的庫:
?Adafruit MQTT
?NTP Client
?Wire.h
為了從NTP服務(wù)器獲得準確的時間,需要初始化服務(wù)器位置。這里我使用的是“pool.ntp.org”,這是一個全球服務(wù)器池。
在這部分代碼中,我們定義了Adafruit服務(wù)器地址、端口號、Adafruit帳戶用戶名和您從Adafruit帳戶復(fù)制的唯一AIO密鑰。這用于在ESP和Adafruit IO之間建立MQTT連接。
在這部分代碼中,使用前面的信息設(shè)置MQTT和WiFi客戶機,即adafruit用戶名、AIO密鑰、服務(wù)器地址和端口號。
現(xiàn)在我們用名稱“onoff”設(shè)置提要并訂閱它。
timeClient.begin ();函數(shù)用于啟動NTP客戶端,以便它可以向ESP8266發(fā)送數(shù)據(jù)。
在void循環(huán)中,timeClient.update()函數(shù)用于在我們向NTP服務(wù)器請求時更新日期和時間。獲取數(shù)據(jù)后,我們將小時、分鐘和秒存儲為三個不同的整數(shù)。
這里我們直接檢查訂閱提要中的特定單詞,如果該單詞與我們指定的單詞匹配,即‘ ON ’,它將調(diào)用open_door()和close_door()函數(shù)。
通過使用if條件為“Morning”、“Afternoon”和“Evening”字符串指定特定的時間。之后,使用另一個if條件來匹配當前時間和饋送時間。因此,每當我們說“喂我的寵物今天早上”時,它將在當前時間等于10:30時調(diào)用open_door()和close_door()函數(shù)。對于“Evening”和“Afternoon”字符串將遵循相同的過程。
Void open_door()和Void close_door()函數(shù)用于向伺服電機發(fā)送打開活板門的命令。開角定義為60°,閉角定義為0°。
物聯(lián)網(wǎng)寵物喂食器的工作原理
將代碼上傳到NodeMCU后,當前時間和饋入時間將顯示在16*2的LCD上。最初,它將顯示0:0的飼料時間,因為我們沒有輸入任何飼料時間。現(xiàn)在說“好的,谷歌。把我的寵物喂給你的谷歌助手。谷歌助手會識別出這個短語,并回答“喂你的寵物”。之后,它將伺服電機從其初始位置0?旋轉(zhuǎn)到60?,并在延遲后返回到其初始位置。你也可以在特定的時間喂你的寵物。為此,我們使用了三個字符串,即“Morning”,“Afternoon”和“Evening”。這些字符串被分配了不同的時間,所以當你說“今天早上喂我的寵物”時,它會把分配給“早上”字符串的時間作為喂食時間,當輸入的時間與當前時間匹配時,它會將伺服電機從初始位置0?旋轉(zhuǎn)到60?,并在延遲后返回到初始位置。
這是如何使用谷歌助手喂養(yǎng)你的寵物。如果你想在特定的時間喂你的寵物,而不是早上、下午和晚上,去IFTTT,把谷歌助手的設(shè)置從“說一個帶文字成分的短語”改成“說一個帶數(shù)字的短語”。
本文編譯自iotdesignpro