天天看點

DIY物聯網應用 3-控制繼電器

建立一個 ruff 項目,熟悉項目結構

以繼電器為例學會添加連接配接外設,并控制外設

下面有請這一期的主角入場。

ruff 開發闆:

DIY物聯網應用 3-控制繼電器

繼電器

DIY物聯網應用 3-控制繼電器

為了友善了解後面的内容,這裡先簡單科普一下繼電器的工作原理,如果你已經知道繼電器的作用可以跳過這段内容。

什麼是繼電器?繼電器是一種通過某種信号變化來自動控制電路開關的電子裝置。

DIY物聯網應用 3-控制繼電器

上圖是最簡單的繼電器模型圖,輸出電路有三個端口:常閉、常開和公共端,預設情況下常閉端和公共端是連通的,控制端根據輸入的電信号能控制擺動條向下或向上擺,進而控制公共端和常閉端或者常開端連通。例如下圖就是一個基于電磁信号來實作的繼電器:

DIY物聯網應用 3-控制繼電器

大家回憶一下中學實體課中的電磁感應原理,當線圈通電後,線圈環繞的鐵芯會産生磁力,在磁力的吸引作用下鐵片和常閉端斷開、和常開端聯通;當線圈斷電,鐵芯磁力消失,鐵片在彈簧拉力的作用下和常閉端聯通。 如果我們用開發闆控制繼電器來控制風扇,那麼電路連接配接情況可以如下圖:

DIY物聯網應用 3-控制繼電器

思路理清楚了,下面我們終于可以寫代碼了,開幹吧!建立一個目錄:mylotapp。進入項目目錄。執行指令:

接下來指令終端會讓你輸入項目名稱、描述、作者等資訊,寫過 nodejs 的同學一定會覺得很親切,項目初始化完成之後我們來看看工程的目錄結構:

DIY物聯網應用 3-控制繼電器

package.json:

<code></code>

<code>} }</code>

其中 main 節點指定了程式的入口檔案;ruff 節點描述工程的依賴子產品,boards 是開發闆的基礎依賴子產品,dependencies 是裝置的依賴子產品,我們現在還沒添加外裝置,是以這裡是空的。

app.json: 描述裝置的邏輯id(我們在添加外設時自己指定的id)和驅動依賴包的映射關系。

test 目錄:測試代碼存放目錄。

src 目錄:源碼目錄,我們寫的代碼就放到這個目錄下。

src/index.js: 在package.json 中指定了 index.js 為項目的程式入口。

<code>}); $.end(function () {</code>

<code>});</code>

開發闆啟動完成、加載程式之後會執行ready() 回調函數,關閉之前會執行end()回調函數。這段代碼加載後,開發闆會點亮開發闆上内置的紅色led 燈。現在我們讓這段初始化生成的代碼在開發闆上跑起來吧,有請我們的第一位主角-ruff 開發闆出場。

用 usb 連接配接線給 ruff 開發闆 ,開發闆随即啟動。開發版啟動後會啟動一個名字以 ruff 開頭的 wi-fi 熱點,例如 ruff0021332 。讓開發機(你的電腦)連上這個 wi-fi 熱點,然後就可以把代碼部署到開發闆上了。

打開終端,進入工程目錄,輸入指令:

部署成功,觀察一下開發闆上紅色 led 燈是否亮了。

關掉開發闆電源,wifi 切回正常使用的 wifi。先來熟悉下 rap device add 這個指令,這個指令是用來添加外設的, 後面的參數是邏輯上的裝置 id,你可以自行定義,隻要保證和其他裝置 id 不重複就行了。

這裡我把繼電器的 id 定義為 relay ,回車之後 ruff 指令行會詢問你 module id, 這個才是裝置真正的 id ,這個 id 和這個硬體的驅動程式是對應的,這個 id 在裝置的包裝盒上有注明,輸入這個 id 回車之後 ruff sdk 會根據 id 在 ruff 的軟體倉庫幫你尋找對應的驅動程式供你選擇安裝,如果這個裝置還沒有對應的驅動程式,你可以去根據 ruff 的 api 去為它寫驅動程式,當然這是後話了。

輸入繼電器的 module id :relay-1c,回車選擇最新的驅動,然後自動到 ruff 驅動倉庫下載下傳繼電器的依賴子產品。完成之後觀察下項目 package.json 和 app.json 的變化,多了裝置的配置資訊。

安裝上裝置驅動之後 rap 指令行會輸出裝置針腳很開發闆管腳的連接配接布局資訊,你也可以通過 rap layout 指令來查詢布局資訊,你還可以通過 rap layout --visual 這個指令檢視圖形化的布局資訊。

DIY物聯網應用 3-控制繼電器

根據訓示完成繼電器和主機闆的連線,連線過程記得關閉主機闆電源喲。

DIY物聯網應用 3-控制繼電器

你可以直接搜尋 module id,你也可以搜尋裝置名稱。搜尋之後結果頁面會出現子產品的資訊:

DIY物聯網應用 3-控制繼電器

進入驅動頁面可以看到裝置子產品對應的驅動的用法:

DIY物聯網應用 3-控制繼電器

通過 id,索引裝置對象,這裡的 id 就是我們添加裝置的時候自己定義的id,我們定義的 id 是"relay",是以我們可以這樣來打開繼電器(使公共端和常開端連通):

現在我們把打開、關閉繼電器的邏輯放到src/index.js中:

<code>$('#relay').turnon(function () {</code>

啟動并連接配接開發闆,重新部署程式,部署成功你會聽到繼電器發出“嗒”的一聲,說明繼電器打開成功。

至此,我們能建立一個應用、學會如何添加并控制外設了,下一章有請另外兩位主角:玩具小風扇和紅外接收器。

繼續閱讀