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

在上一章《我的第一個(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è)

下面有請(qǐng)這一期的主角入場(chǎng)愉耙。

  • Ruff 開發(fā)板:


    主板
  • 繼電器


    繼電器

繼電器的作用

為了方便理解后面的內(nèi)容舌镶,這里先簡(jiǎn)單科普一下繼電器的工作原理,如果你已經(jīng)知道繼電器的作用可以跳過這段內(nèi)容躺彬。
什么是繼電器伸辟?繼電器是一種通過某種信號(hào)變化來自動(dòng)控制電路開關(guān)的電子設(shè)備麻惶。


繼電器簡(jiǎn)圖

上圖是最簡(jiǎn)單的繼電器模型圖,輸出電路有三個(gè)端口:常閉信夫、常開和公共端窃蹋,默認(rèn)情況下常閉端和公共端是連通的卡啰,控制端根據(jù)輸入的電信號(hào)能控制擺動(dòng)條向下或向上擺,從而控制公共端和常閉端或者常開端連通警没。例如下圖就是一個(gè)基于電磁信號(hào)來實(shí)現(xiàn)的繼電器:


電磁信號(hào)繼電器

大家回憶一下中學(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(我們?cè)谔砑油庠O(shè)時(shí)自己指定的ID)和驅(qū)動(dòng)依賴包的映射關(guān)系丰嘉。
test 目錄:測(cè)試代碼存放目錄。
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ā)板上跑起來吧,有請(qǐng)我們的第一位主角-Ruff 開發(fā)板出場(chǎng)百侧。

啟動(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 <device-id>這個(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)程序是對(duì)應(yīng)的路媚,這個(gè) ID 在設(shè)備的包裝盒上有注明黄琼,輸入這個(gè) ID 回車之后 Ruff SDK 會(huì)根據(jù) ID 在 Ruff 的軟件倉庫幫你尋找對(duì)應(yīng)的驅(qū)動(dòng)程序供你選擇安裝,如果這個(gè)設(shè)備還沒有對(duì)應(yīng)的驅(qū)動(dòng)程序整慎,你可以去根據(jù) Ruff 的 API 去為它寫驅(qū)動(dòng)程序脏款,當(dāng)然這是后話了。
輸入繼電器的 Module ID :RELAY-1C裤园,回車選擇最新的驅(qū)動(dòng)撤师,然后自動(dòng)到 Ruff 驅(qū)動(dòng)倉庫下載繼電器的依賴模塊。完成之后觀察下項(xiàng)目 package.json 和 app.json 的變化比然,多了設(shè)備的配置信息丈氓。
安裝上設(shè)備驅(qū)動(dòng)之后 rap 命令行會(huì)輸出設(shè)備針腳很開發(fā)板管腳的連接布局信息,你也可以通過 rap layout 命令來查詢布局信息强法,你還可以通過 rap layout --visual 這個(gè)命令查看圖形化的布局信息万俗。


布局信息

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

控制繼電器

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


你可以直接搜索 Module ID库倘,你也可以搜索設(shè)備名稱临扮。搜索之后結(jié)果頁面會(huì)出現(xiàn)模塊的信息:

進(jìn)入驅(qū)動(dòng)頁面可以看到設(shè)備模塊對(duì)應(yīng)的驅(qū)動(dòng)的用法:

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

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

現(xiàn)在我們把打開饱亿、關(guā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 () { 
        // 關(guān)閉繼電器成功的回調(diào)函數(shù)
       console.log('turn off');
    });
});

啟動(dòng)并連接開發(fā)板蚜退,重新部署程序,部署成功你會(huì)聽到繼電器發(fā)出“嗒”的一聲彪笼,說明繼電器打開成功钻注。
至此,我們能創(chuàng)建一個(gè)應(yīng)用配猫、學(xué)會(huì)如何添加并控制外設(shè)了幅恋,下一章有請(qǐng)另外兩位主角:玩具小風(fēng)扇和紅外接收器。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泵肄,一起剝皮案震驚了整個(gè)濱河市捆交,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腐巢,老刑警劉巖零渐,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異系忙,居然都是意外死亡诵盼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門银还,熙熙樓的掌柜王于貴愁眉苦臉地迎上來风宁,“玉大人,你說我怎么就攤上這事蛹疯〗洳疲” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵捺弦,是天一觀的道長(zhǎng)饮寞。 經(jīng)常有香客問我,道長(zhǎng)列吼,這世上最難降的妖魔是什么幽崩? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮寞钥,結(jié)果婚禮上慌申,老公的妹妹穿的比我還像新娘。我一直安慰自己理郑,他們只是感情好蹄溉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布咨油。 她就那樣靜靜地躺著,像睡著了一般柒爵。 火紅的嫁衣襯著肌膚如雪役电。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天棉胀,我揣著相機(jī)與錄音宴霸,去河邊找鬼。 笑死膏蚓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畸写。 我是一名探鬼主播驮瞧,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼枯芬!你這毒婦竟也來了论笔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤千所,失蹤者是張志新(化名)和其女友劉穎狂魔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淫痰,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡最楷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了待错。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片籽孙。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖火俄,靈堂內(nèi)的尸體忽然破棺而出犯建,到底是詐尸還是另有隱情,我是刑警寧澤瓜客,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布适瓦,位于F島的核電站,受9級(jí)特大地震影響谱仪,放射性物質(zhì)發(fā)生泄漏玻熙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一疯攒、第九天 我趴在偏房一處隱蔽的房頂上張望揭芍。 院中可真熱鬧,春花似錦卸例、人聲如沸称杨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姑原。三九已至悬而,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锭汛,已是汗流浹背笨奠。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唤殴,地道東北人般婆。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像朵逝,于是被迫代替她去往敵國和親蔚袍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容