ode-Red是一個(gè)流行的基于Node的JavaScript工具庫,可以使用圖形化的方法快速進(jìn)行JavaScript項(xiàng)目開發(fā),用于網(wǎng)站、物聯(lián)網(wǎng)項(xiàng)目等不同場(chǎng)景。對(duì)于習(xí)慣LabVIEW一類圖形化編程語言的用戶,或者并非軟件專業(yè)的工程師與愛好者而言,是一個(gè)唄用于項(xiàng)目開發(fā)的非常方便的工具。Node-Red的開發(fā)需要依賴Node環(huán)境,因此,無論在Windows下還是Linux系統(tǒng)中,都需要安裝Node作為基礎(chǔ)。
Arduino是應(yīng)用非常廣泛的開源物聯(lián)網(wǎng)開發(fā)平臺(tái)之一, 在Node-red中可以通過幾個(gè)不同的發(fā)行包來連接Arduino,直接以圖形化的方式進(jìn)行物聯(lián)網(wǎng)項(xiàng)目開發(fā)。
目前大部分公開資料中關(guān)于Windows下安裝Docker的說明都是過期的,舊版Docker的安裝需要啟用HyperV虛擬機(jī),而新版的Docker對(duì)Windows的支持已經(jīng)要友好許多,Windows 10專業(yè)版和企業(yè)版可以直接安裝桌面版的Docker,家庭版的Windows則需要啟用WSL2功能來進(jìn)行安裝。Windows10專業(yè)版和企業(yè)版安裝Docker的步驟可參見,Windows家庭版安裝步驟同樣在Docker官網(wǎng)的 中可以看到。
一般來說,在國(guó)內(nèi)由于網(wǎng)絡(luò)環(huán)境的原因,需要配置Docker倉庫鏡像為國(guó)內(nèi)鏡像,以提高鏡像下載速度。提供了基于Docker安裝與使用Node-Red的方法。電腦中安裝Docker后,可在終端運(yùn)行以下命令來運(yùn)行Node-Red。為了實(shí)現(xiàn)運(yùn)行數(shù)據(jù)的持久化,在硬盤中新建文件夾(此處為D:\dockerdata\node_red_data)用于存儲(chǔ)Docker數(shù)據(jù)。也可以使用docker create volume node_red_data在Docker默認(rèn)的存儲(chǔ)路徑中創(chuàng)建卷node_red_data來存儲(chǔ)數(shù)據(jù)。
docker run -it -p 1880:1880 -v D:\dockerdata\node_red_data:/data --name mynodered nodered/node-red
以上命令各參數(shù)含義如下:
docker run //新建并運(yùn)行一個(gè)Docker容器
-it //給容器附著一個(gè)終端,用以監(jiān)視容器的運(yùn)行狀況
-p 1880:1880 //將宿主機(jī)的1880端口(前一個(gè))映射到容器內(nèi)部的1880端口
-v D:\dockerdata\node_red_data:/data //將外部存儲(chǔ)數(shù)據(jù)卷映射為內(nèi)部/data。以實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)持久化
--name mynodered //為容器命名
nodered/node-red //用于建立容器的鏡像(image) ,如果本地沒有該鏡像,則從Docker倉庫下載一個(gè)
--device=/dev/ttyS0 //將外部串口ttyS0映射給Docker鏡像,該命令在Windows版Docker下不可用
在創(chuàng)建完容器后,以后可以用以下命令管理容器:
docker start mynodered //啟動(dòng)mynodered容器
docker stop mynodered //停止mynodered容器
docker attach mynodered //為mynodered容器附著一個(gè)終端
docker rm mynodered //刪除mynodered容器
docker pull nodered/node-red //拉去一個(gè)node-red鏡像。如果要升級(jí)容器鏡像,可以執(zhí)行本命令拉取并重新生成容器
nodered啟動(dòng)后,打開瀏覽器輸入localhost:1880即可打開nodered編輯界面開始程序設(shè)計(jì)。
在windows下直接安裝node-red,需要先安裝nodejs。在windows下可以通過下載官網(wǎng)安裝包或通過nvm-windows安裝。安裝完nodejs后,可以通過運(yùn)行以下命令安裝node-red:
npm install -g --unsafe-perm node-red
注意: 上述命令中的--unsafe-perm參數(shù),是為了保證npm的運(yùn)行權(quán)限。出于安全考慮,npm默認(rèn)不支持以 root 用戶(或windows管理員)運(yùn)行,即使你用 root 用戶身份運(yùn)行了,npm 也會(huì)自動(dòng)轉(zhuǎn)成一個(gè)叫 nobody 的用戶來運(yùn)行,而這個(gè)用戶幾乎沒有任何權(quán)限。這樣的話如果你腳本里有一些需要權(quán)限的操作,比如寫文件(尤其是寫 /root/.node-gyp),就無法執(zhí)行。為了避免這種情況,要么需要專門建一個(gè)用于運(yùn)行 npm 的高權(quán)限用戶;要么加 --unsafe-perm 參數(shù),保證運(yùn)行時(shí)的用戶和npm用戶一致,而不會(huì)切換到 nobody 上。
安裝完成后,打開終端,運(yùn)行node-red即可啟動(dòng)nodered。nodered啟動(dòng)后,打開瀏覽器輸入localhost:1880即可打開nodered編輯界面開始程序設(shè)計(jì)。
注意:如果node是使用nvm-windows進(jìn)行安裝的,可能在運(yùn)行node-red時(shí)會(huì)由于缺少settings.js文件而無法啟動(dòng)的錯(cuò)誤。這是由于系統(tǒng)未下載安裝該文件造成的。需要下載settings.js文件,并復(fù)制到C:\Users\<用戶名>\.node-red文件夾下。
Windows10提供了功能非常強(qiáng)大的WSL功能,可以兼容各種主要發(fā)行版本的Linux,以Ubuntu18.04為例,在使用nvm安裝了node之后,可以通過以下命令來安裝并運(yùn)行node-red。
npm install -g --unsafe-perm node-red
node-red
nodered啟動(dòng)后,打開瀏覽器輸入localhost:1880即可打開nodered編輯界面開始程序設(shè)計(jì)。
Windows版本的Docker不支持訪問串口,這在Docker官方項(xiàng)目的Issue中以及Docker官方論壇多個(gè)主題下已經(jīng)經(jīng)過反復(fù)討論,截止目前,Docker的Windows版本也暫時(shí)并沒有支持串口和USB等外部設(shè)備的計(jì)劃,因此,對(duì)于在Windows下通過Docker安裝的Node-Red,目前是沒有辦法訪問串口的。如果是Linux下運(yùn)行Docker,則可能通過前節(jié)的--device參數(shù)將串口提供給Docker容器進(jìn)行操作。
在Windows或者WSL(或者Ubuntu系統(tǒng))下,要使用Node-Red通過串口連接Arduino,需要先安裝相應(yīng)的包,在Node-red下安裝附加包,一種方式是通過編輯界面菜單選擇節(jié)點(diǎn)管理,然后在安裝界面搜索需要的包(如下圖)。另外一種則是在在nodered的安裝目錄下運(yùn)行安裝命令npm install <安裝包名稱>來進(jìn)行軟件包安裝。
連接Arduino常用的包有兩個(gè),一個(gè)是node-red-node-arduino,另一個(gè)是基于流行的johnny-five包的npm install node-red-contrib-gpio。在WSL或者Ubuntu等linux發(fā)行版中,按照上述兩種方式中的任一種進(jìn)行安裝即可。
在windows下,需要先安裝windows-build-tools,否則可能出現(xiàn)node-gyp rebuild error編譯錯(cuò)誤導(dǎo)致軟件包安裝無法完成。windows-build-toos的安裝,需要在windows下以管理員權(quán)限運(yùn)行PowerShell,并在PowerShell中輸入以下命令:npm install --global --production windows-build-tools@4.0.0,等待系統(tǒng)下載并安裝python,jvm等編譯器即可。這里指定windows-build-tools版本為4.0.0是因?yàn)樵摪姹臼悄壳皽y(cè)試可用的,其他版本可能造成一些不穩(wěn)定。
除了該命令外,github上也有手動(dòng)進(jìn)行編譯環(huán)境搭建的方法(沒有測(cè)試):
1.輸入python --version檢查系統(tǒng)路徑中是否有安裝python,以及python的版本
2.下載并安裝python2.7 并進(jìn)行安裝,將python2的路徑添加的環(huán)境變量中
3.檢查并安裝 .NET 4.5.1+
4.下載并安裝Visual C++ Build Tools 2015 ,安裝Window 8.1或Windows 10 SDK。
5. 配置npm 參數(shù) msvs_version 為2015: npm config -g set msvs_version 2015
要使用Node-red通過串口操作Arduino,首先需要通過Arduino官方IDE下載Firmate固件到Arduino中。在Arduino官方IDE中打開示例,F(xiàn)irmate中的StandardFirmate并上傳到Arduino班子中。這樣Arduino即具備了通過串口遠(yuǎn)程操作的條件。
安裝完node-red-node-arduino包后,可導(dǎo)入官方的節(jié)點(diǎn)示例文件:
[{"id":"d7663aaf.47194","type":"arduino-board","device":""},{"id":"dae8234f.2517e","type":"inject","name":"0.5s tick","topic":"","payload":"","payloadType":"date","repeat":"0.5","crontab":"","once":false,"x":150,"y":100,"z":"359a4b52.ca65b4","wires":[["56a6f8f2.a95908"]]},{"id":"2db61802.d249e8","type":"arduino out","name":"","pin":"13","state":"OUTPUT","arduino":"d7663aaf.47194","x":570.5,"y":100,"z":"359a4b52.ca65b4","wires":[]},{"id":"56a6f8f2.a95908","type":"function","name":"Toggle output on input","func":"\n// If it does exist make it the inverse of what it was or else initialise it to false\n// (context variables persist between calls to the function)\ncontext.level = !context.level || false;\n\n// set the payload to the level and return\nmsg.payload = context.level;\nreturn msg;","outputs":1,"noerr":0,"x":358,"y":100,"z":"359a4b52.ca65b4","wires":[["2db61802.d249e8"]]}]
導(dǎo)入后節(jié)點(diǎn)示意如下圖,雙擊Pin13節(jié)點(diǎn)打開編輯界面,編輯Arduino節(jié)點(diǎn),配置串口為當(dāng)前連接的串口。在Windows系統(tǒng)下,可以通過控制面板-設(shè)備管理器看到Arduino對(duì)應(yīng)的串口編號(hào),如果該串口為COM5,則需要將端口號(hào)相應(yīng)配置為COM5,在Ubuntu等Linux子系統(tǒng)下,一般為類似/dev/ttyUSB1或者/dev/ttyS5的形式。
注意:在Windows10內(nèi)置的WSL子系統(tǒng)中,linux系統(tǒng)的串口號(hào)與Windows下一一對(duì)應(yīng),如果在Windows下看到Arduino的串口為COM5,則相應(yīng)的在WSL中的地址為/dev/ttyS5。
。
在Linux或者WSL系統(tǒng)中,由于串口權(quán)限默認(rèn)僅賦予dialout用戶組,因此,需要將當(dāng)前用戶添加到dialout用戶組中,才具備操作串口的權(quán)限。使用以下命令將當(dāng)前用戶添加到dialout用戶組中。adduser $(whoami) dialout。
在WSL下,可能需要修改串口文件的操作權(quán)限,如果windows下串口為COM5,則相應(yīng)地:sudo chmod 666 /dev/ttyS5。
修改完成后,即可通過終端命令操作串口,或者使用node-red等軟件通過串口來操作Arduino了。
工業(yè)控制中,MODBUS RTU以低成本、高可靠性始終占據(jù)著一定市場(chǎng),但通訊調(diào)試才是最頭疼的,今天就給準(zhǔn)備入手的工友們介紹一下通訊測(cè)試的使用方法:
需要準(zhǔn)備的硬件:筆記本電腦、USB轉(zhuǎn)MODBUS接口轉(zhuǎn)換器(我使用的是宇泰UT-890A);
宇泰UT-890A
第一步:電腦安裝驅(qū)動(dòng)
有很多工友說將串口轉(zhuǎn)換器插電腦上會(huì)自動(dòng)安裝,我的電腦系統(tǒng)是WIN10無法自動(dòng)安裝(啟用自動(dòng)更新也不行),虛擬機(jī)是WIN7(可以自動(dòng)安裝),為了避免無端頭痛,咱們還是老老實(shí)實(shí)的手動(dòng)安裝吧。
搜索:http://www.szutek.com/dowmser.html
下載安裝包里選擇對(duì)應(yīng)的驅(qū)動(dòng)傻瓜式安裝即可;
第二步:將串口USB插入電腦
以WIN10為例:右鍵 此電腦 選擇 設(shè)備管理 ,打開端口,顯示如下圖:USB Serial Port (COM3) 不同電腦 端口號(hào)(COM后邊數(shù)字)可能不同,但是不影響使用,這種情況是正常的,如果出現(xiàn)感嘆號(hào) 建議重新安裝對(duì)應(yīng)的驅(qū)動(dòng);
第三步:將USB轉(zhuǎn)MODBUS接口轉(zhuǎn)換器的端接至設(shè)備
串口通訊我們采用的是2線制,即兩線半雙工通訊方式,連接方式如下:
來自宇泰官網(wǎng)說明書
一定不要連錯(cuò),是T/R+、T/R- 分別連接至 RS485 + 、RS485-;
RXD+\RXD-在四線全雙工通訊下才會(huì)用到
注意:西門子PLC RTU 是用 A、B表示,其中A對(duì)應(yīng)RS485-,B對(duì)應(yīng)RS485+,可參考我的上篇文章:西門子PLC DB9插針 MOUDBUS接線圖
第四步:下裝串口測(cè)試軟件,建議MODSCAN32 ,原因就是簡(jiǎn)單粗暴無腦
其中:Modscan32 是筆記本作主站讀取設(shè)備的數(shù)據(jù),如果筆記本作從站則使用Modsim32
Modscan32界面
配置Modscan32,從站地址、波特率、奇偶校驗(yàn)等與設(shè)備保持一致即可,
使用的連接即用到步驟2中的端口號(hào)
然后就可以使用電腦進(jìn)行測(cè)試?yán)玻?/p>
這就是本次帶來的小白教程
*只要你有大病,我們就是工友*
歡迎各位指正、交流