[[434765]]
想了解更多内容,启航请访问:
51CTO和华为官方合作共建的基于鸿蒙技术社区
https://harmonyos.51cto.com
智能灯光控制在当今的生活中应用非常广泛,给人们的启航生活带来了很多便利,比如路灯能够自动判断白天和黑夜来减少人为的基于进行路灯控制;智能夜灯能够在夜晚感应人体达到夜晚自动开启,减少人们半夜摸开关打开灯光的启航烦恼。不管是基于什么样的应用场景,都需要开发人员了解其基本的启航工作原理,这样才能不断的基于创造更有价值的智能灯光控制。本次实验主要讲述基于软通动力启航KS_IoT智能开发套件智能灯光控制,启航让开发者在学习过程中找到开发的基于乐趣,从而创造更多实用的启航应用场景。
软通动力启航KS_IoT智能开发套件(以下简称:启航KS)是基于一款基于海思Hi3861V100芯片设计的高性能物联网开发套件,支持OpenHarmony。此开发套件充分考虑物联网感知层设备的多样性,具有功能丰富、集成度高、性能稳定、应用场景广、开发成本低、布局合理等特点,支持开发者快速设计相关物联网的应用产品。
对OpenHarmony软件开发爱好者。
通过本次实验开发者对智能灯光的控制会有深刻的了解,同时对整个开发流程也会有更深刻的体验,在后续的实验学习中将会更容易上手。
启航KS包括1块核心板和4块扩展板,本次实验只需要1块核心板就能完成,本次实验核心板涉及到的功能说明如下:
核心板功能区分布图如下:
实验前提
实验流程
实验现象
现象2:智能灯光控制【白天模式】
实验流程
实验现象
3.5.1.监测原理
光电开关是用硫化镉或硒化镉等半导体材料制成的特殊电阻器,其工作原理是基于内光电效应。光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低。
3.5.2.硬件接口
光电开关硬件原理:
光照灯硬件原理:
功能说明如下:
光敏传感器使用的GPIO接口为GPIO06,用跳线帽连接下图中红色方框位置IO6。
光电开关联动光照灯D6,需要按下SW1。当光电开关感应到夜晚时,打开光照灯;当光电开关感应到白天时,关闭光照灯。
3.5.3.智能灯光控制软件实现
实现流程:
设置光电开关IO口功能。
设置光电开关IO口方向为输入。
- 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;
- }
设置光电开关IO口功能;
设置光电开关IO口方向为输出。
- 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;
- }
读取光电数据;将获取的数据存储在envInfo->photoSensitive中,方便进行模式判断。
- int32_t IssReadPhotoSensitive(BoardEnvInfoValue *envInfo)
- {
- int32_t state = HI_ERR_FAILURE;
- IotGpioValue value = HI_GPIO_VALUE0;
- state = IoTGpioGetInputVal(PHOTOSENSITIVE_GPIO_IDX, &value); // 获取光电数据
- 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;
- }
获取光电数据,并进行模式判断;
黑夜模式:控制显示内容为“night”, 打开灯光;
白天模式:控制显示内容为“day”,关闭灯光。
- 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); // 控制显示内容为“night”
- IssInitLampLedON(); // 打开灯光
- } else { // 白天模式
- IssOledShowStr(0, 4, “day”, 1); // 控制显示内容为“day”
- IssInitLampLedOff(); // 关闭灯光
- }
- }
- }
通过本次实验开发者对光电开关检测和光照灯的控制有了深刻的了解,建议开发者在后续学习中,可以根据光照强度来调节光照灯的强弱,同时还可以利用启航KS的Wi-Fi功能连接HAP,利用HAP开发更智能的灯光控制。
进阶实验:利用Wi-Fi功能远程唤醒照明灯,实验现象如下。
想了解更多内容,请访问:
51CTO和华为官方合作共建的鸿蒙技术社区
https://harmonyos.51cto.com
责任编辑:jianghua 来源: 鸿蒙社区 鸿蒙HarmonyOS应用
(责任编辑:知识)
四川省资阳市1—4月新签约项目41个 协议投资额247.86亿元
月内220家公司发布解除股份质押公告 74家公司年报预喜凸显投资潜力