DIY物聯(lián)網(wǎng)應用 3-控制繼電器

在上一章《我的第一個物聯(lián)網(wǎng)應用 2》中,我們完成了 Ruff SDK 的安裝,開發(fā)環(huán)境已經(jīng)準備就緒,這一章我們的目標是:

  • 新建一個 Ruff 項目,熟悉項目結構
  • 以繼電器為例學會添加連接外設,并控制外設

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

  • Ruff 開發(fā)板:


    主板
  • 繼電器


    繼電器

繼電器的作用

為了方便理解后面的內(nèi)容,這里先簡單科普一下繼電器的工作原理,如果你已經(jīng)知道繼電器的作用可以跳過這段內(nèi)容。
什么是繼電器?繼電器是一種通過某種信號變化來自動控制電路開關的電子設備。


繼電器簡圖

上圖是最簡單的繼電器模型圖,輸出電路有三個端口:常閉、常開和公共端,默認情況下常閉端和公共端是連通的,控制端根據(jù)輸入的電信號能控制擺動條向下或向上擺,從而控制公共端和常閉端或者常開端連通。例如下圖就是一個基于電磁信號來實現(xiàn)的繼電器:


電磁信號繼電器

大家回憶一下中學物理課中的電磁感應原理,當線圈通電后,線圈環(huán)繞的鐵芯會產(chǎn)生磁力,在磁力的吸引作用下鐵片和常閉端斷開、和常開端聯(lián)通;當線圈斷電,鐵芯磁力消失,鐵片在彈簧拉力的作用下和常閉端聯(lián)通。 如果我們用開發(fā)板控制繼電器來控制風扇,那么電路連接情況可以如下圖:

創(chuàng)建項目

思路理清楚了,下面我們終于可以寫代碼了,開干吧!創(chuàng)建一個目錄:MyLotApp。進入項目目錄。執(zhí)行命令:

rap init

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


工程目錄

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é)點指定了程序的入口文件;ruff 節(jié)點描述工程的依賴模塊,boards 是開發(fā)板的基礎依賴模塊,dependencies 是設備的依賴模塊,我們現(xiàn)在還沒添加外設備,所以這里是空的。
app.json: 描述設備的邏輯ID(我們在添加外設時自己指定的ID)和驅(qū)動依賴包的映射關系。
test 目錄:測試代碼存放目錄。
src 目錄:源碼目錄,我們寫的代碼就放到這個目錄下。
src/index.js: 在package.json 中指定了 index.js 為項目的程序入口。

'use strict';
$.ready(function (error) {
    if (error) {
        console.log(error);
        return;
    }
    $('#led-r').turnOn();
});
$.end(function () {
    $('#led-r').turnOff();
});

開發(fā)板啟動完成、加載程序之后會執(zhí)行ready() 回調(diào)函數(shù),關閉之前會執(zhí)行end()回調(diào)函數(shù)。這段代碼加載后,開發(fā)板會點亮開發(fā)板上內(nèi)置的紅色led 燈?,F(xiàn)在我們讓這段初始化生成的代碼在開發(fā)板上跑起來吧,有請我們的第一位主角-Ruff 開發(fā)板出場。

啟動開發(fā)版

用 USB 連接線給 Ruff 開發(fā)板 ,開發(fā)板隨即啟動。開發(fā)版啟動后會啟動一個名字以 Ruff 開頭的 WI-FI 熱點,例如 Ruff0021332 。讓開發(fā)機(你的電腦)連上這個 WI-FI 熱點,然后就可以把代碼部署到開發(fā)板上了。

部署程序

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

rap deploy -s

部署成功,觀察一下開發(fā)板上紅色 led 燈是否亮了。

添加繼電器

關掉開發(fā)板電源,WIFI 切回正常使用的 WIFI。先來熟悉下 rap device add <device-id>這個命令,這個命令是用來添加外設的, 后面的參數(shù)是邏輯上的設備 ID,你可以自行定義,只要保證和其他設備 ID 不重復就行了。

 rap device add relay

這里我把繼電器的 ID 定義為 relay ,回車之后 Ruff 命令行會詢問你 Module ID, 這個才是設備真正的 ID ,這個 ID 和這個硬件的驅(qū)動程序是對應的,這個 ID 在設備的包裝盒上有注明,輸入這個 ID 回車之后 Ruff SDK 會根據(jù) ID 在 Ruff 的軟件倉庫幫你尋找對應的驅(qū)動程序供你選擇安裝,如果這個設備還沒有對應的驅(qū)動程序,你可以去根據(jù) Ruff 的 API 去為它寫驅(qū)動程序,當然這是后話了。
輸入繼電器的 Module ID :RELAY-1C,回車選擇最新的驅(qū)動,然后自動到 Ruff 驅(qū)動倉庫下載繼電器的依賴模塊。完成之后觀察下項目 package.json 和 app.json 的變化,多了設備的配置信息。
安裝上設備驅(qū)動之后 rap 命令行會輸出設備針腳很開發(fā)板管腳的連接布局信息,你也可以通過 rap layout 命令來查詢布局信息,你還可以通過 rap layout --visual 這個命令查看圖形化的布局信息。


布局信息

根據(jù)指示完成繼電器和主板的連線,連線過程記得關閉主板電源喲。

控制繼電器

現(xiàn)在我們可以寫程序來控制繼電器了,怎么控制?這里我們要學會去Ruff 官網(wǎng)查看每個設備驅(qū)動提供的 API 和用法。到 Ruff 的軟件倉庫:https://rap.ruff.io/搜索:


你可以直接搜索 Module ID,你也可以搜索設備名稱。搜索之后結果頁面會出現(xiàn)模塊的信息:

進入驅(qū)動頁面可以看到設備模塊對應的驅(qū)動的用法:

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

$('#relay').turnOn(function () { 
    // 打開繼電器成功的回調(diào)函數(shù)
    console.log('turn on');
});

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

'use strict';
$.ready(function (error) {
    if (error) {
        console.log(error);
        return;
    }
  $('#relay').turnOn(function () { 
     // 打開繼電器成功的回調(diào)函數(shù)
       console.log('turn on');
    });
});
$.end(function () {
    $('#relay').turnOff(function () { 
        // 關閉繼電器成功的回調(diào)函數(shù)
       console.log('turn off');
    });
});

啟動并連接開發(fā)板,重新部署程序,部署成功你會聽到繼電器發(fā)出“嗒”的一聲,說明繼電器打開成功。
至此,我們能創(chuàng)建一個應用、學會如何添加并控制外設了,下一章有請另外兩位主角:玩具小風扇和紅外接收器。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容