物聯(lián)網(wǎng)(IoT)是當今的流行語之一,作為軟件開發(fā)人員,我很好奇關(guān)于它,并將嘗試將我認為是實現(xiàn)它的最簡單方法放入此處。當然,這意味著您可能會比我所知道的更簡單,更有效地了解不同的方法。
首先,我必須承認我不是硬件專家,實際上我是我真的很不好對于我和處于相同情況的其他人來說,幸運的是,您可以使用許多工具來構(gòu)建電子設(shè)備。就我而言,我使用:
Arduino Breakout開發(fā)板。
英特爾愛迪生。
看到了Studio Grove盾牌。
使LED發(fā)光。
Grove Button。
作為快速參考,英特爾愛迪生與Arduino Breakout板一起提供了與Arduino UNO相同的軟件和硬件接口,但功能更強大因為它正在運行Yocto,這是為嵌入式設(shè)備創(chuàng)建的基于Linux的發(fā)行版。另一方面,Grove是Seeed Studio創(chuàng)建的工具集,使制造商和發(fā)明者能夠以即插即用的方式創(chuàng)建具有簡單構(gòu)件的設(shè)備。您可以說這就像電子樂高。
在軟件方面,我使用了Node-Red,它是一種工具,可通過可視化地連接流程來協(xié)調(diào)流程。網(wǎng)絡(luò)瀏覽器將用于測試服務(wù)和操作LED。
在第一部分中,我將向您展示如何連接電路并發(fā)送命令以打開或關(guān)閉連接到LED的LED。通過HTTP請求進行Grove屏蔽。當然,當與Edison處于同一WiFi中時,這將允許您與LED交互。在第二部分,我將向您展示如何將電路連接到云IoT實例,以及如何通過Internet將命令發(fā)送到Edison。
步驟1:開始之前
確保已安裝以下組件。
Edison已配置為連接到WiFi。如果尚未設(shè)置Edison,請按照Intel Edison網(wǎng)站中的步驟進行操作。
您可以登錄Edison。配置WiFi后,您可以使用SSH登錄。我發(fā)現(xiàn)本教程非常有用。
Node-Red已安裝在Edison中。請遵循Node-Red文檔中的說明。
Node-red-contrib-gpio模塊安裝在Node-Red中。請遵循GitHub官方文檔中的說明。
離子已安裝在您的計算機上。請遵循Ionic網(wǎng)站上的說明。
步驟2:組裝電路
組裝非常簡單:
將Edison和Grove屏蔽插入Arduino Breakout。
將電纜插入Grove LED板。
將電纜插入Grove屏蔽,我選擇了D6插槽,但是您可以使用任何數(shù)字引腳。
將微型USB電纜插入Arduino電源并連接到計算機以將其打開。
步驟3:在Node-Red中創(chuàng)建流
在這里,我假設(shè)您已經(jīng)在Edison中啟動并運行Node-Red,并且可以通過Web瀏覽器訪問。
在Node-中紅色,您將創(chuàng)建將處理GET HTTP請求的流程,提取LED上的操作參數(shù),打開或關(guān)閉LED,格式化消息并將其以HTTP響應(yīng)的形式發(fā)送回客戶端。
完整流程應(yīng)該像這樣。請按照以下步驟完成操作。
步驟4:HTTP請求
在Node-Red的 Input 抽屜中,選擇 HTTP節(jié)點,將其拖放到畫布上。雙擊畫布中的節(jié)點并指定以下參數(shù):
方法:GET
URL :/led/:state
不要錯過URL中的冒號(:)。設(shè)置完這些屬性后,單擊完成。
我使用GET方法,因為起初我想嘗試使用網(wǎng)絡(luò)瀏覽器。由于這是一條命令,因此我認為POST方法更適合該目的,但我會保留正確的體系結(jié)構(gòu)術(shù)語。
步驟5:從HTTP請求中提取操作
您可以在上面的URL中看到,該操作作為URL的最后一部分作為路徑參數(shù)傳遞。因此,我們需要提取它。 Node-Red使您可以使用標準Express API從請求中獲取變量。
從 Function 抽屜中選擇 function 節(jié)點并拖動放到畫布上雙擊它,然后放入以下JavaScript代碼。
if (msg.req.path == “/led/on”) {
msg.payload = 1;
msg.httpMsg = “On”
} else if (msg.req.path == “/led/off”) {
msg.payload = 0;
msg.httpMsg = “Off”
} else {
msg = null;
}
return msg;
輸入代碼后,點擊完成。
請注意,消息中的新屬性將傳遞一個可讀字符串,該字符串將用于通知客戶端。
現(xiàn)在,該功能已完成,將兩個節(jié)點彼此連接。在HTTP請求節(jié)點上,單擊小灰色方塊,然后將其拖放到函數(shù)的灰色方塊上?,F(xiàn)在就可以連接流了,就這么簡單!
步驟6:控制LED
是時候添加一個節(jié)點來控制屏蔽板上的LED了。在輸入抽屜中,選擇 gpio 節(jié)點并將其拖放到畫布上。雙擊它以指定該節(jié)點的屬性。
首先,您需要指定您所擁有的電路板類型。為此,請點擊委員會字段中的鉛筆圖標。在出現(xiàn)的向?qū)е?,?Nodebot 指定板。在這種情況下,請選擇 Galileo/Edison 并設(shè)置一個名稱。單擊更新保存更改。
配置板卡后,請指定用于控制LED的屬性:
板卡:您剛剛配置的電路板。
類型:數(shù)字(0/1)。
Pin :如上所述,我使用了引腳6。
設(shè)置完這些屬性后,點擊完成并將該節(jié)點連接到上面創(chuàng)建的功能節(jié)點。
請注意,單擊 Deploy 后,Node-Red將嘗試連接物理板。成功后,它將在節(jié)點下方顯示 connected ?。?! 消息。
步驟7:為客戶端格式化消息
從 Function 抽屜中選擇 function 節(jié)點并將其拖放到畫布中。雙擊它,然后放置以下JavaScript代碼。
msg.payload = {
message: “LED was turned ” + msg.httpMsg,
led_state: msg.payload
}
return msg;
輸入代碼后,單擊完成,然后將此節(jié)點連接到上面創(chuàng)建的另一個功能節(jié)點。
步驟8:發(fā)送回響應(yīng)
由于此請求是通過HTTP請求發(fā)起的,因此您必須以HTTP響應(yīng)完成。為此,在 Output 抽屜中選擇一個 HTTP Response 節(jié)點并將其拖放到畫布上。將此節(jié)點連接到先前創(chuàng)建的功能以形成客戶端消息。
單擊 Deploy 使更改生效。
第9步:測試流
現(xiàn)在,流已創(chuàng)建,您可以使用Web瀏覽器或任何其他處理HTTP請求的程序,例如cURL或WGET ,對其進行測試。
打開您的網(wǎng)絡(luò)瀏覽器,然后使用這兩個URL之一。確保您的IP地址是您在Edison中配置的IP地址。在我的情況下,IP地址為 192.168.1.71 。
http://192.168.1.71:1880/led/off
http://192.168.1.71:1880/led/on
步驟10:局限性
在這里我只能發(fā)現(xiàn)一個對實際功能的限制。在直接從網(wǎng)絡(luò)瀏覽器使用HTTP請求打開LED的情況下,網(wǎng)絡(luò)應(yīng)用程序中的UI不會反映該狀態(tài),因為連接是異步的并且已斷開連接。也就是說,不會向Web應(yīng)用程序通知LED狀態(tài)的變化。
要解決此問題,您可以使用其他方法,例如使用WebSockets代替HTTP請求來建立雙向通信并保持同步在HTTP請求和UI之間。也許您可以使用MQTT作為預(yù)訂和發(fā)布事件的協(xié)議。
在任何情況下,您都將需要修改Node-Red中的流以適應(yīng)新的傳輸協(xié)議,當然也要包含JavaScript代碼。
責(zé)任編輯:wv
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44741瀏覽量
374510 -
Arduino
+關(guān)注
關(guān)注
188文章
6472瀏覽量
187322
發(fā)布評論請先 登錄
相關(guān)推薦
評論