有沒有想過是否有一種方法可以制作簡單的物聯網解決方案原型,而無需花費數天時間編寫代碼或無需編碼即可構建實用的高級項目。是的,這可以通過 Node-Red 平臺實現。Node-RED由 IBM 開發,是一種開源編程工具,用于以新穎有趣的方式將硬件設備、API 和在線服務連接在一起。它提供了一個基于瀏覽器的編輯器,可以使用調色板中的各種節點輕松地將“流”連接在一起,只需單擊一下即可將其部署到其運行時。
它使用可視化編程,允許您將代碼塊(稱為節點)連接在一起以執行任務。在今天的教程中,我們將研究如何使用 Node-RED 在樹莓派上部署簡單的項目。樹莓派node-red 教程將涵蓋;
在 Raspberry Pi 上安裝 Node-RED。
Node-RED 用戶界面簡介
如何設置 Node-RED 流
如何使用 Node-RED 控制 Raspberry Pi GPIO 引腳
如何使用 Node-RED 輸入、輸出和 if-else,例如使用開關進行決策
先決條件
本教程將基于 Raspbian 伸展操作系統,我假設您熟悉使用它設置 Raspberry Pi,并且您知道如何使用終端軟件(如 putty)通過 SSH 連接到 Pi。
為了輕松完成本教程,我建議您使用連接到樹莓派的顯示器或使用 VNC 查看器軟件。
雖然 Node-Red 從 Web 瀏覽器運行,并且可以在通過 Pi 的 IP 地址連接到 Pi 的 PC 上訪問,但我相信 VNC/監視器體驗會給您帶來更好的體驗。
作為演示 Node-Red 工作原理的演示,我們將使用 Node-RED 對 Raspberry Pi 進行編程以控制連接到其 GPIO 的 LED,然后修改程序以允許通過連接到 Pi 的觸覺按鈕控制 LED通用輸入輸出接口。
所需組件
構建此項目需要以下組件;
帶有預加載 Raspbian Stretch 的 SD 卡的 Raspberry Pi 3
100 歐姆電阻 (1)
發光二極管 (1)
面包板 (1)
公對母跳線
觸覺按鈕 (1)
在樹莓派上安裝 Node-RED
雖然 Node-Red 預裝在 Raspbian Stretch OS 上,但我們需要升級它才能享受它的一些最新功能。升級 Node-Red將
將現有用戶升級到 LTS 8.x 或 10.x Node.js 和最新的 Node-RED
將任何現有的全局安裝節點遷移到用戶 ~/.node-red 空間,以便可以通過調色板管理器對其進行管理,它不會更新任何用戶安裝的現有節點。這必須由用戶手動完成(見下文)。
可以選擇(重新)安裝在完整 Raspbian Pi 映像上預安裝的額外節點。
但是,升級 Node-Red 的過程類似于安裝一個新的,所以為了本教程的目的,我們將把它視為一個新的安裝,以便使用其他操作系統版本的人可以跟隨。
按照以下步驟在您的 Raspberry Pi 上安裝/升級 Node-RED。
我們首先升級和更新 pi,以確保其上的所有內容都是最新的并避免兼容性問題。通過打開終端或通過 ssh 執行此操作,然后運行;
sudo apt-get 更新
其次是
sudo apt-get 升級
完成后,在終端上運行下面的 bash 腳本;
bash 《(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-NodeRed)
bash 腳本將執行以下操作
詢問您是否要(重新)安裝額外的 Pi 節點
保存在 /usr/lib/node_modules 中找到的任何全局安裝的 node- red-nodes 的列表
apt-get 刪除現有的 Node-Red
從 /usr/bin 和 /usr/local/bin 中刪除任何 node-red 二進制文件
從 /usr/lib/node_modules 和 /usr/local/lib/node_modules 中刪除任何 node-red 模塊
檢測 Node.js 是從 Node.js 包還是 Debian 安裝的
如果不是 v8 或更新版本 - 酌情刪除并安裝最新的 v8 或 v10 LTS(不使用 apt)。
清理 npm 緩存和 .node-gyp 緩存以刪除任何以前版本的代碼
安裝 Node-RED 最新版本
在用戶帳戶下重新安裝以前全局安裝的任何節點
如果需要,重新安裝額外的 Pi 節點
重建所有節點 - 重新編譯任何二進制文件以匹配最新的 Node.js 版本
將 node-red-start、node-red-stop 和 node-red-log 命令添加到 /usr/bin
添加菜單快捷方式和圖標
添加系統腳本并設置用戶
上面的 bash 腳本以sudo運行許多命令,并確實刪除了現有的 Node.js 和核心 Node-RED 目錄。您可以在運行之前檢查此GitHub 頁面上的腳本內容,以確保它不會影響您在 Pi 上已有的任何項目。
安裝完成后,您現在應該在菜單的編程應用程序列表下看到 Node-Red 圖標。
在 Raspberry Pi 中啟動 Node-RED
Node-Red 可以通過樹莓派桌面的菜單部分、終端或 ssh 啟動。
要在 raspberry pi 的桌面上啟動,請單擊 Raspberry 圖標,將鼠標懸停在 Programming 單擊 Node-RED ( Menu》Programming》NodeRed ) 以啟動它。
也可以通過ssh或終端運行啟動;
節點紅開始
您應該會看到一個類似下圖的窗口,在桌面上顯示節點紅色啟動。
一旦你看到這個,去menu-》internet并啟動 chromium web browser。雖然您的 Raspberry pi 不需要互聯網來運行 Node-Red,但它使用瀏覽器作為其界面。
啟動 chromium 后,在地址欄中輸入localhost:1880,然后按 Enter 鍵。1880 是樹莓派上的端口,Node-Red 預設在其上進行通信。這應該會顯示Node-Red 界面,如下圖所示。
了解 Node-RED 接口
Node-Red 界面包括流程面板、節點面板、調試控制臺和信息控制臺,如上圖所示。
流程面板是將節點連接在一起以創建程序的地方,在 Node-Red 中稱為流程,而節點面板由代表與設備相關的硬件、協議和軟件功能的對象組成。它包括用于 IoT 的 MQTT 等協議,以及用于 raspberry pi 等板的 GPIO 輸出和輸入模式。信息控制臺提供有關突出顯示/選定對象的信息,而調試控制臺就像 Arduino 串行監視器一樣工作,可以在流程運行時提供反饋。部署按鈕用于將流上傳到目標硬件。菜單按鈕包含不同的上傳類型,以幫助您充分利用您的項目。隨著 Node-Red 啟動并運行,我們現在可以繼續構建演示項目。
原理圖
正如在介紹中提到的,我們今天的演示項目將使用 Node-RED 流控制 Raspberry Pi 的 GPIO。為了顯示 GPIO 狀態的變化,我們將一個 LED 連接到 GPIO,這樣當特定的 GPIO 引腳打開時,LED 就會亮起,反之亦然。
如下圖所示,將 LED 連接到 Raspberry PI 。
我還使用面包板、LED、電阻器和一些連接線在我的硬件上構建了相同的東西。建立連接后,我的硬件設置看起來像這樣。
這個項目可以很容易地轉換成一個家庭自動化項目,只需用繼電器和任何交流電器替換 LED,通過各種家庭自動化項目了解如何做到這一點。
在 Node-RED 中創建流
連接 LED 后,我們可以繼續開發流程。NodeRed 中的程序稱為流,就像 Arduino IDE 將它們稱為草圖一樣。流是使用節點組合創建的。您可以創建多個可以同時運行的流程,但在本教程中,我們將創建一個流程來打開/關閉 LED。
首先,滾動到 Nodes 面板的底部,您將看到 raspberry pi 節點部分接近末尾,其中兩個節點標記為rpigpio。這些節點用于與樹莓派的 GPIO 通信。其中一個節點用于輸入,而另一個用于輸出,由樹莓派徽標的位置區分。對于輸入節點,徽標位于文本之前,而對于輸出節點,徽標位于文本之后,如下圖所示。
在本教程中,我們將使用輸出節點,將其拖到界面的流程部分。此步驟類似于使用pinMode()命令將 Arduino 的特定引腳聲明為輸出。雙擊輸出節點,將打開一個彈出窗口,如下所示,允許您編輯節點的屬性。
在 pin property 部分下,選擇 GPIO17(pin 11)。然后將類型屬性設置為“數字輸出”并勾選“初始化引腳狀態?” 復選框將“引腳的初始級別”選項保留為低 (0)。給節點起任何您喜歡的名稱,然后單擊完成按鈕。
節點的名稱應自動更改為您在屬性設置下輸入的名稱。例如,我將其命名為 LED,因此節點名稱也更改為 LED,如下所示。
要打開/關閉 LED,我們需要使用輸入來驅動動作。雖然我們可以使用按鈕,但我想用它來介紹 Node-RED 中允許將消息注入流的功能。這些功能稱為注入節點。我們將使用兩個注入節點。一個是打開 LED,另一個是關閉它。
轉到節點面板并將注入節點拖到流中。它是調色板中帶箭頭的第一個節點,下圖中突出顯示了注入節點。
雙擊它以編輯其屬性。通過單擊有效負載前面的下拉菜單將數據類型更改為字符串,然后在有效負載框中輸入 1。有效載荷框中的值是按下節點時將注入到流中的值。將節點名稱設置為“ON” 按“Done”按鈕保存。
對第二個節點重復上述操作,將有效負載值設置為“0”,并將其名稱設置為“off”,如下所示。
在屬性功能下,重復下拉菜單可用于自動注射,以便每隔一段時間按下按鈕。這可以用來創建眨眼效果。如下所示將節點連接在一起,方法是將其中一個節點上的灰點拖動到另一個節點以創建流。
完成后,我們現在已經完成了我們的第一個 Node-Red Flow。
下一步是讓我們在 raspberry pi 上部署流程。單擊紅色的部署按鈕。您應該會在屏幕頂部看到“成功部署”閃爍,如下所示。
單擊注入節點后面的灰色按鈕以激活每個節點。
通過單擊“on”注入節點,您應該看到成功注入“on”,并且 LED 亮起。單擊“關閉”注入節點時,LED 應熄滅。
而已。此設置的完整工作可以在此頁面底部鏈接的視頻中找到。
使用 Raspberry Pi 在 Node-RED 接口中添加按鈕/開關
為了解釋如何將輸入元素連接/添加到您的流程中,我們將通過添加按鈕來替換注入節點來進一步處理上述流程。
將按鈕連接到樹莓派,這樣,按鈕的一個腳接地,另一腳連接到樹莓派的 GPIO 引腳 4(引腳 11),如下圖所示。
完成此操作后,返回 Node-Red 并刪除我們之前使用的兩個注入節點,方法是單擊節點并按鍵盤上的刪除或雙擊節點并在彈出窗口中按刪除。完成后,向下滾動節點選項板到 raspberry pi 部分并選擇輸入節點。它是左邊有樹莓派圖標的那個,在節點名稱之前。
將節點拖到流中并雙擊它以編輯屬性。將引腳設置為 GPIO 4(引腳 11)并將電阻前面的下拉設置為上拉。這會將 GPIO 4“上拉”到高電平。設置好屬性后點擊完成按鈕。
為了讓我們在按下開關時做出合乎邏輯的決定,而不僅僅是將 GPIO4 短接到地,我們將使用開關節點。在節點面板中的功能部分下搜索它并拖動到流中。
切換節點允許您以類似于“if”語句的方式做出決策。它可以根據輸入值設置為具有不同的輸出。對于本教程,我們將為它配置兩個輸出路徑,這樣,當 msg.payload 屬性等于 1(未按下開關)時,它應該遵循第一個路徑,如果有任何其他輸入,則將遵循第二個路徑在輸入處觀察到除 1 以外的值(按下開關)。使用“+add”按鈕添加路徑。雙擊節點并按上述方式進行配置。完成后點擊完成。
一旦你點擊完成按鈕,你應該會看到兩條路徑反映在switch node的外觀中,因為它現在在輸出端有兩個連接點。
接下來,我們需要引入一個“更改”節點。更改節點將用于根據參數節點的結果設置 LED 的狀態。
我們將使用兩個變更節點。第一個的有效負載將設置為 0,如下圖所示,第二個的有效負載將設置為 1。編輯兩者的屬性后單擊完成。
為了更好地解釋,還記得我們使用了上拉電阻嗎?因此,當按鈕沒有被按下時,該引腳的輸出將為 HIGH(1),這意味著如果我們將其通過開關節點,LED 將“打開”,因為這不應該是這樣,我們將使用“更改”節點將其設置為 LOW(0)。第二個“更改”節點用于將值設置為 1,這樣當檢測到 GPIO 引腳 4 的高電平狀態以外的任何其他狀態時,它應該將 LED “打開”,因為這意味著按鈕已被按下。將更改節點和其余節點連接在一起,如下圖所示。
完成后,我們現在可以部署項目了。檢查連接以確保一切正常,然后單擊部署按鈕。像往常一樣,如果成功,您應該看到部署成功彈出窗口,現在可以使用開關控制 LED。
雖然 Node-Red 可以讓您輕松快速地構建原型,而無需擔心代碼,但它實際上可能不是最合適的,尤其是對于需要靈活性和控制程序的經驗豐富的開發人員而言。盡管如此,它還是一個很棒的工具,可以讓您在幾分鐘內構建原型。
-
led
+關注
關注
242文章
23347瀏覽量
662902 -
樹莓派
+關注
關注
117文章
1710瀏覽量
105848
發布評論請先 登錄
相關推薦
評論