在上一章《我的第一個(gè)物聯(lián)網(wǎng)應(yīng)用 2》中,我們完成了 Ruff SDK 的安裝,開發(fā)環(huán)境已經(jīng)準(zhǔn)備就緒,這一章我們的目標(biāo)是:
- 新建一個(gè) Ruff 項(xiàng)目,熟悉項(xiàng)目結(jié)構(gòu)
- 以繼電器為例學(xué)會(huì)添加連接外設(shè),并控制外設(shè)
下面有請這一期的主角入場。
- Ruff 開發(fā)板:
繼電器
繼電器的作用
為了方便理解后面的內(nèi)容,這里先簡單科普一下繼電器的工作原理,如果你已經(jīng)知道繼電器的作用可以跳過這段內(nèi)容。
什么是繼電器?繼電器是一種通過某種信號變化來自動(dòng)控制電路開關(guān)的電子設(shè)備。
上圖是最簡單的繼電器模型圖,輸出電路有三個(gè)端口:常閉、常開和公共端,默認(rèn)情況下常閉端和公共端是連通的,控制端根據(jù)輸入的電信號能控制擺動(dòng)條向下或向上擺,從而控制公共端和常閉端或者常開端連通。例如下圖就是一個(gè)基于電磁信號來實(shí)現(xiàn)的繼電器:
大家回憶一下中學(xué)物理課中的電磁感應(yīng)原理,當(dāng)線圈通電后,線圈環(huán)繞的鐵芯會(huì)產(chǎn)生磁力,在磁力的吸引作用下鐵片和常閉端斷開、和常開端聯(lián)通;當(dāng)線圈斷電,鐵芯磁力消失,鐵片在彈簧拉力的作用下和常閉端聯(lián)通。 如果我們用開發(fā)板控制繼電器來控制風(fēng)扇,那么電路連接情況可以如下圖:
創(chuàng)建項(xiàng)目
思路理清楚了,下面我們終于可以寫代碼了,開干吧!創(chuàng)建一個(gè)目錄:MyLotApp。進(jìn)入項(xiàng)目目錄。執(zhí)行命令:
rap init
接下來命令終端會(huì)讓你輸入項(xiàng)目名稱、描述、作者等信息,寫過 NodeJs 的同學(xué)一定會(huì)覺得很親切,項(xiàng)目初始化完成之后我們來看看工程的目錄結(jié)構(gòu):
package.json:
{"name": "MyLotApp","version": "0.1.0","description": "My first Lot App","author": "dalimao","main": "src/index.js","ruff": { "boards": { "ruff-mbd-v1": "^4.2.0", "*": "*" }, "dependencies": {} }}
其中 main 節(jié)點(diǎn)指定了程序的入口文件;ruff 節(jié)點(diǎn)描述工程的依賴模塊,boards 是開發(fā)板的基礎(chǔ)依賴模塊,dependencies 是設(shè)備的依賴模塊,我們現(xiàn)在還沒添加外設(shè)備,所以這里是空的。
app.json: 描述設(shè)備的邏輯ID(我們在添加外設(shè)時(shí)自己指定的ID)和驅(qū)動(dòng)依賴包的映射關(guān)系。
test 目錄:測試代碼存放目錄。
src 目錄:源碼目錄,我們寫的代碼就放到這個(gè)目錄下。
src/index.js: 在package.json 中指定了 index.js 為項(xiàng)目的程序入口。
'use strict';$.ready(function (error) { if (error) { console.log(error); return; } $('#led-r').turnOn();});$.end(function () { $('#led-r').turnOff();});
開發(fā)板啟動(dòng)完成、加載程序之后會(huì)執(zhí)行ready() 回調(diào)函數(shù),關(guān)閉之前會(huì)執(zhí)行end()回調(diào)函數(shù)。這段代碼加載后,開發(fā)板會(huì)點(diǎn)亮開發(fā)板上內(nèi)置的紅色led 燈。現(xiàn)在我們讓這段初始化生成的代碼在開發(fā)板上跑起來吧,有請我們的第一位主角-Ruff 開發(fā)板出場。
啟動(dòng)開發(fā)版
用 USB 連接線給 Ruff 開發(fā)板 ,開發(fā)板隨即啟動(dòng)。開發(fā)版啟動(dòng)后會(huì)啟動(dòng)一個(gè)名字以 Ruff 開頭的 WI-FI 熱點(diǎn),例如 Ruff0021332 。讓開發(fā)機(jī)(你的電腦)連上這個(gè) WI-FI 熱點(diǎn),然后就可以把代碼部署到開發(fā)板上了。
部署程序
打開終端,進(jìn)入工程目錄,輸入命令:
rap deploy -s
部署成功,觀察一下開發(fā)板上紅色 led 燈是否亮了。
添加繼電器
關(guān)掉開發(fā)板電源,WIFI 切回正常使用的 WIFI。先來熟悉下 rap device add 這個(gè)命令,這個(gè)命令是用來添加外設(shè)的, 后面的參數(shù)是邏輯上的設(shè)備 ID,你可以自行定義,只要保證和其他設(shè)備 ID 不重復(fù)就行了。
rap device add relay
這里我把繼電器的 ID 定義為 relay ,回車之后 Ruff 命令行會(huì)詢問你 Module ID, 這個(gè)才是設(shè)備真正的 ID ,這個(gè) ID 和這個(gè)硬件的驅(qū)動(dòng)程序是對應(yīng)的,這個(gè) ID 在設(shè)備的包裝盒上有注明,輸入這個(gè) ID 回車之后 Ruff SDK 會(huì)根據(jù) ID 在 Ruff 的軟件倉庫幫你尋找對應(yīng)的驅(qū)動(dòng)程序供你選擇安裝,如果這個(gè)設(shè)備還沒有對應(yīng)的驅(qū)動(dòng)程序,你可以去根據(jù) Ruff 的 API 去為它寫驅(qū)動(dòng)程序,當(dāng)然這是后話了。