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

【正點(diǎn)原子STM32H7R3開發(fā)套件試用體驗(yàn)】4G聯(lián)網(wǎng)工業(yè)設(shè)備控制網(wǎng)關(guān)
負(fù)壓除塵設(shè)備物聯(lián)網(wǎng)智能管理系統(tǒng)方案
物聯(lián)網(wǎng)學(xué)習(xí)路線來啦!
MCU在物聯(lián)網(wǎng)中的應(yīng)用前景
如何選擇物聯(lián)網(wǎng)設(shè)備的PCB技術(shù)
如何測(cè)試物聯(lián)網(wǎng)設(shè)備的功耗

評(píng)論