基于啟航KS_IoT智能開(kāi)發(fā)套件進(jìn)行智能燈光控制實(shí)驗(yàn)
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
1.智能燈光控制背景
智能燈光控制在當(dāng)今的生活中應(yīng)用非常廣泛,給人們的生活帶來(lái)了很多便利,比如路燈能夠自動(dòng)判斷白天和黑夜來(lái)減少人為的進(jìn)行路燈控制;智能夜燈能夠在夜晚感應(yīng)人體達(dá)到夜晚自動(dòng)開(kāi)啟,減少人們半夜摸開(kāi)關(guān)打開(kāi)燈光的煩惱。不管是什么樣的應(yīng)用場(chǎng)景,都需要開(kāi)發(fā)人員了解其基本的工作原理,這樣才能不斷的創(chuàng)造更有價(jià)值的智能燈光控制。本次實(shí)驗(yàn)主要講述基于軟通動(dòng)力啟航KS_IoT智能開(kāi)發(fā)套件智能燈光控制,讓開(kāi)發(fā)者在學(xué)習(xí)過(guò)程中找到開(kāi)發(fā)的樂(lè)趣,從而創(chuàng)造更多實(shí)用的應(yīng)用場(chǎng)景。
2.軟通動(dòng)力啟航KS_IoT智能開(kāi)發(fā)套件介紹
軟通動(dòng)力啟航KS_IoT智能開(kāi)發(fā)套件(以下簡(jiǎn)稱:?jiǎn)⒑終S)是一款基于海思Hi3861V100芯片設(shè)計(jì)的高性能物聯(lián)網(wǎng)開(kāi)發(fā)套件,支持OpenHarmony。此開(kāi)發(fā)套件充分考慮物聯(lián)網(wǎng)感知層設(shè)備的多樣性,具有功能豐富、集成度高、性能穩(wěn)定、應(yīng)用場(chǎng)景廣、開(kāi)發(fā)成本低、布局合理等特點(diǎn),支持開(kāi)發(fā)者快速設(shè)計(jì)相關(guān)物聯(lián)網(wǎng)的應(yīng)用產(chǎn)品。
3.智能燈光控制實(shí)驗(yàn)
3.1.實(shí)驗(yàn)對(duì)象
對(duì)OpenHarmony軟件開(kāi)發(fā)愛(ài)好者。
3.2.實(shí)驗(yàn)?zāi)康?/h3>
通過(guò)本次實(shí)驗(yàn)開(kāi)發(fā)者對(duì)智能燈光的控制會(huì)有深刻的了解,同時(shí)對(duì)整個(gè)開(kāi)發(fā)流程也會(huì)有更深刻的體驗(yàn),在后續(xù)的實(shí)驗(yàn)學(xué)習(xí)中將會(huì)更容易上手。
3.3.實(shí)驗(yàn)說(shuō)明
啟航KS包括1塊核心板和4塊擴(kuò)展板,本次實(shí)驗(yàn)只需要1塊核心板就能完成,本次實(shí)驗(yàn)核心板涉及到的功能說(shuō)明如下:
- USB_Type-C:用于供電、代碼下載及調(diào)試
- OLED顯示:用于界面顯示
- S1按鍵:用于界面內(nèi)容選擇控制
- SW1按鍵:智能燈光控制功能開(kāi)關(guān)(按下:開(kāi)啟該功能,彈起:關(guān)閉該功能)
- 光電開(kāi)關(guān):用于白天和黑夜檢測(cè)
- 光照燈:用于實(shí)驗(yàn)現(xiàn)象展示(燈光亮起、燈光熄滅)
核心板功能區(qū)分布圖如下:

3.4.實(shí)驗(yàn)現(xiàn)象
實(shí)驗(yàn)前提
- 準(zhǔn)備好通動(dòng)力啟航KS_IoT智能開(kāi)發(fā)套件
- 了解軟通動(dòng)力啟航KS_IoT智能開(kāi)發(fā)套件_硬件使用指導(dǎo)手冊(cè)
- 完成軟通動(dòng)力啟航KS_IoT智能開(kāi)發(fā)套件_軟件開(kāi)發(fā)環(huán)境搭建
- 現(xiàn)象1:智能燈光控制【黑夜模式】
實(shí)驗(yàn)流程

實(shí)驗(yàn)現(xiàn)象

現(xiàn)象2:智能燈光控制【白天模式】
實(shí)驗(yàn)流程

實(shí)驗(yàn)現(xiàn)象

3.5.實(shí)驗(yàn)操作
3.5.1.監(jiān)測(cè)原理
光電開(kāi)關(guān)是用硫化鎘或硒化鎘等半導(dǎo)體材料制成的特殊電阻器,其工作原理是基于內(nèi)光電效應(yīng)。光照愈強(qiáng),阻值就愈低,隨著光照強(qiáng)度的升高,電阻值迅速降低。
3.5.2.硬件接口
光電開(kāi)關(guān)硬件原理:

光照燈硬件原理:

功能說(shuō)明如下:
光敏傳感器使用的GPIO接口為GPIO06,用跳線帽連接下圖中紅色方框位置IO6。

光電開(kāi)關(guān)聯(lián)動(dòng)光照燈D6,需要按下SW1。當(dāng)光電開(kāi)關(guān)感應(yīng)到夜晚時(shí),打開(kāi)光照燈;當(dāng)光電開(kāi)關(guān)感應(yīng)到白天時(shí),關(guān)閉光照燈。

3.5.3.智能燈光控制軟件實(shí)現(xiàn)
實(shí)現(xiàn)流程:

1、光電開(kāi)關(guān)GPIO初始化
設(shè)置光電開(kāi)關(guān)IO口功能。
設(shè)置光電開(kāi)關(guān)IO口方向?yàn)檩斎搿?/p>
- int32_t IssInitPhotoSensitive(void)
- {
- int32_t state = HI_ERR_FAILURE;
- state = hi_io_set_func(PHOTOSENSITIVE_GPIO_NAME, PHOTOSENSITIVE_GPIO_FUNC);
- RUNTIME_ERR_RET_FAIL(state != HI_ERR_SUCCESS, “PHOTOSENSITIVE_GPIO_NAME IoSetFunc error”);
- state = IoTGpioSetDir(PHOTOSENSITIVE_GPIO_IDX, HI_GPIO_DIR_IN);
- RUNTIME_ERR_RET_FAIL(state != HI_ERR_SUCCESS, “PHOTOSENSITIVE_GPIO_NAME IoTGpioSetDir error”);
- return HI_ERR_SUCCESS;
- }
2、光照燈GPIO初始化
設(shè)置光電開(kāi)關(guān)IO口功能;
設(shè)置光電開(kāi)關(guān)IO口方向?yàn)檩敵觥?/p>
- uint32_t IssInitLampLedConfig(void)
- {
- uint32_t state = HI_ERR_FAILURE;
- // set pin function
- state = hi_io_set_func(HI_IO_NAME_GPIO_2, HI_IO_FUNC_GPIO_2_GPIO);
- RUNTIME_ERR_RET_FAIL(state != HI_ERR_SUCCESS, “set GPIO2 func failure,state=0x%x”, state);
- state = IoTGpioSetDir(HI_GPIO_IDX_2, IOT_GPIO_DIR_OUT);
- RUNTIME_ERR_RET_FAIL(state != HI_ERR_SUCCESS, “set GPIO2 dir failure,state=0x%x”, state);
- state = hi_io_set_pull(HI_IO_NAME_GPIO_2, HI_IO_PULL_DOWN);
- RUNTIME_ERR_RET_FAIL(state != HI_ERR_SUCCESS, “set GPIO2 pull failure,state=0x%x”, state);
- return HI_ERR_SUCCESS;
- }
3、獲取光電開(kāi)關(guān)數(shù)據(jù)
讀取光電數(shù)據(jù);將獲取的數(shù)據(jù)存儲(chǔ)在envInfo->photoSensitive中,方便進(jìn)行模式判斷。
- int32_t IssReadPhotoSensitive(BoardEnvInfoValue *envInfo)
- {
- int32_t state = HI_ERR_FAILURE;
- IotGpioValue value = HI_GPIO_VALUE0;
- state = IoTGpioGetInputVal(PHOTOSENSITIVE_GPIO_IDX, &value); // 獲取光電數(shù)據(jù)
- if (state != HI_ERR_SUCCESS) {
- envInfo->photoSensitive = -1;
- }
- RUNTIME_ERR_RET_FAIL(state != HI_ERR_SUCCESS, “PHOTOSENSITIVE_GPIO_NAME IoTGpioSetDir error”);
- envInfo->photoSensitive = value;
- return state;
- }
4、進(jìn)行模式判斷,并控制控制
獲取光電數(shù)據(jù),并進(jìn)行模式判斷;
黑夜模式:控制顯示內(nèi)容為“night”, 打開(kāi)燈光;
白天模式:控制顯示內(nèi)容為“day”,關(guān)閉燈光。
- void IssDrawMenuItem002(BoardEnvInfoValue info, uint8_t new)
- {
- static uint8_t oldState = 0xff;
- if ((info.photoSensitive != oldState) || (new == 1)) {
- oldState = info.photoSensitive;
- IssClearScreenMiddleArea();
- if (info.photoSensitive == IOT_GPIO_VALUE1) { // 黑夜模式
- IssOledShowStr(0, 4, “night”, 1); // 控制顯示內(nèi)容為“night”
- IssInitLampLedON(); // 打開(kāi)燈光
- } else { // 白天模式
- IssOledShowStr(0, 4, “day”, 1); // 控制顯示內(nèi)容為“day”
- IssInitLampLedOff(); // 關(guān)閉燈光
- }
- }
- }
4.進(jìn)階實(shí)驗(yàn)
通過(guò)本次實(shí)驗(yàn)開(kāi)發(fā)者對(duì)光電開(kāi)關(guān)檢測(cè)和光照燈的控制有了深刻的了解,建議開(kāi)發(fā)者在后續(xù)學(xué)習(xí)中,可以根據(jù)光照強(qiáng)度來(lái)調(diào)節(jié)光照燈的強(qiáng)弱,同時(shí)還可以利用啟航KS的Wi-Fi功能連接HAP,利用HAP開(kāi)發(fā)更智能的燈光控制。
進(jìn)階實(shí)驗(yàn):利用Wi-Fi功能遠(yuǎn)程喚醒照明燈,實(shí)驗(yàn)現(xiàn)象如下。

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)