基于OpenHarmony 的智能居家语音提醒系统设计

2023-11-27 11:59刘铭华
科技创新与应用 2023年33期
关键词:环境参数底层云端

刘铭华

(福建生物工程职业技术学院,福州 350000)

根据相关报道,我国年龄在60 周岁及以上的人口截至到2022 年已超过28 004 万人,占总人口的19.8%,而且有强势向上涨的趋势[1]。我国已处在从老龄化较轻度阶段步入老龄化中度阶段,且预计2035 年,我国60 周岁及以上的人口将突破4 亿。2023 年政府工作报告要求,要强化基本民生保障,提高人民生活水平,提升医疗卫生服务能力,推动老龄事业。随着医疗养老等第三产业服务的发展,国内外也涌现出很多各式各样的智能设备,甚至于2021 年华为率先提出了“HUAWEI Smart Home”解决方案。本文设计了一个智能语音提醒系统,具备成本低、便携式良好等优点。

如今国际形势风云变幻,全球化生产遭受国际政治影响,而科技领域也发生了大的变化。在这种形势下,我国需要独立自主的核心技术,并且有较好的应用生态。OpenHarmony 操作系统的前身是华为HarmonyOS,其发布时间为2019 年,主要是一套面向全场景的跨平台多语言的分布式操作系统[2]。后期经过2020 年与2021 年2 年时间将智能终端操作系统相继前后全部开源捐赠给开放原子开源基金会,于是命名为OpenHarmony 操作系统[3]。各大厂商相继纷纷加入OpenHarmony 开发阵营,共建我国自主可控操作系统[4-5]。本文基于OpenHarmony 操作系统完成物联网系统,实现自主可控的监护提醒功能。

本文设计一套基于OpenHarmony 的智能居家语音提醒系统,以Hi3861 作为主控MCU,以MQTT 作为上传协议,完成将探测居家环境中温湿度及光照度经WIFI 上传华为云端,兼顾靠近语音提醒并记住人体活动信息,能够远程控制灯光的亮灭,有效地协助老年人或者身体有缺陷者进行如厕等活动。

1 系统整体设计

本系统设计如图1 所示。使用Hi3861 为主控,其中温湿度与光照度共用一个IIC0,将SHT30 采集温湿度数据和BH1750 采集光照度数据传递给主控;而OLED 显示使用IIC1 进行环境参数显示;通过红外感应检测人体活动,经UART 进行SYN6228 的语音播报,达到辅助功能;最后经过Hi3861 内置WIFI 连接网络,使用MQTT 协议进行华为云的数据上传与控制。同时,经云平台客户可以进入环境数据查询,并完成LED等设备的控制。

图1 系统结构

1.1 基于Hi3861 的MCU 系统

Hi3861 是高度集成化的一款32bit 微型处理芯片,其内部集成IEEE802.11b/g/n 基带电路和RF 电路的SOC WIFI 芯片,其WIFI 基带支持正交频分复用技术(OFDM),向下兼容直接序列扩频(DSSS)和补码键控技术(CCK)。之所以选择Hi3861 作为主控MCU 是因为其极具外设接口丰富资源,包括多种GPIO、定时中断、各种通信协议如SPI、IIC、UART 等等,同时支持HUAWEI LiteOS 和第三方组方,能满足不同系统的设计要求[6]。构建基于OpenHarmony 系统的硬件原理图如图2 所示。

图2 Hi3861 硬件系统

1.1.1 环境参数检测

本系统环境参数主要采集温湿度和光照度,采用BH1750 进行光照度的采集,同时采用SHT30 进行温湿度采集,通过分时复用IIC0 进行通信。BH1750 是一款数字型光照强度传感集成芯片,其构成检测单元原理如图3(a)所示。BH1750 芯片内含光敏PD、运算放大及16bitADC,能够广泛地对光照强度高精度测定,可达1 lux 的分辨力,测定上限可达100 000 lux,最小误差变动在±20%,同时受红外线影响很小。SHT30 是一款高度集成电容式测湿度元件和能隙式测温度元件,其构成的温湿度检测原理如图3(b)所示。SHT30芯片内含14bitADC,具有较高的可靠性与长期的稳定性等优点,其温度测量精度可达±0.2 ℃,测温范围在5~60 ℃,分辨率达0.015 ℃;湿度范围20~80%RH,湿度测量精度可达±2%RH。

图3 环境参数检测

1.1.2 红外语音提醒

本系统的语音提醒单元由热电势红外探测与SYN6228 语音播报2 部分组成,完成语音提醒功能。在图4(a)中基于HC-SR505 小型感应模块,能够实现自动控制,具有高灵敏度、小体积、高可靠性、低功耗和经济等优点,广泛使用。若人体进行一定的活动,也会有电平信号,在不使用摄像头涉及隐私的情况下可以进行人体活动信息记录。检测到电平变化立即通过UART 发送命令给SYN6228 芯片进行播音。SYN6228语音播报部分原理如图4(b)所示,SYN6228 芯片将txt 转换成中英文进行语音播报。该芯片支持GBK、UNICODE 等多种编码格式;具备有多种不同的控制命令,具有16 级音量调节;支持6 级语速;等等。多种功能与控制,具备智能文本分析处理算法,可以识别多种常用格式进行中英文播报。

图4 红外语音播报提醒

1.2 基于华为DevEco Device Tool 的OpenHarmony开发

本系统的开发是基于华为DevEco Device Tool 编译平台,在该平台可进行代码编辑、编译、在线烧录和调试等功能,编程语言选择C/C++,在windows 桌面使用VS Code 开发。本系统使用DevEco Device Tool 3.1 Release,该工具使用remote-ssh 协同开发,其较旧版本新增编译工具链一键配置、源码级调试插件等全新功能,同时集成HDF 驱动开发、仿真器、栈分析等工具,助力智能设备开发效率提升[7]。本系统开发则基于windows Vscode 开发与unbuntu20.4,通过remote-ssh进行开发,节约开发时间,提高开发效率。OpenHarmony内核有2 种,分别是Linux Kernel 和LiteOs[8]。本系统采用的是基于目前流行的RISC-V 架构内置WIFI 的Hi3861 芯片,而RISC-V 架构是一个完全开源的架构,该系统的内存小于128 kB,属于轻量系统类设备[9]。

1.2.1 系统软件设计

本智能居家提醒系统的设计,一方面采集居家环境参数,若超过阈值则发生环境参数报警,进行监测的同时经过WIFI 联网实现实时上传云端;另一方面实时监护老人或者身体欠缺者,给予实时语音关怀提醒并记录。具体流程如图5 所示。

图5 基于OpenHarmony 的系统流程

1.2.2 系统软件开发

该系统基于OpenHarmony liteOS 3.1.0 LTS 版本,主要分成3 个线程,主线程的任务为连接WIFI 通过MQTT 进行消息订阅;副任务一的任务为环境参数读取及打包进行无线上传;副任务二的任务为检测人的活动情况进行语音播报,以及进行环境参数和人体活动情况显示。其中主线程的任务需要连接WIFI 及以MQTT 协议进行传输,因此线程的大小需要分配较大且优先级较高;副任务一收集环境参数,线程大小分配较小,但是优先级较次等;副任务二进行人体活动检测,其中包含OLED 显示所需要的字库,因此分配大小需要较大,但优先级可以较低一级,具体分配如以下代码所示。

osThreadAttr_t attr;

attr.name = "task_main_entry";

attr.attr_bits = 0U;

attr.cb_mem = NULL;

attr.cb_size = 0U;

attr.stack_mem = NULL;

attr.stack_size = 10240;

attr.priority = 24;

if(osThreadNew((osThreadFunc_t)task_main_entry,NULL,&attr)== NULL)

{

printf("Falied to create task_main_entry! ");

}

attr.stack_size = 2048;

attr.priority = 25;

attr.name = "task_sensor_entry";

if(osThreadNew((osThreadFunc_t)task_sensor_entry,NULL,&attr)== NULL)

{

printf("Falied to create task_sensor_entry! ");

}

attr.stack_size = 10240;

attr.priority = 26;

attr.name = "task_Oled_entry";

if(osThreadNew((osThreadFunc_t)task_Oled_entry,NULL,&attr)== NULL)

{

printf("Falied to create task_Oled_entry! ");

}

主线程的核心代码如下所示,完成WIFI 联网,以及MQTT 代理订阅设置。MQTT 是一个基于客户端-服务器的消息发布/订阅的传输协议,具备轻量、简单、开放和易于实现的优点,可作为OpenHarmony 的第三方开发接入,便于开发[10]。

app_msg_t *app_msg;

uint32_t ret = WifiConnect(MYWifi,MYWifiSSD);

device_info_init ( CLIENT_ID ,USERNAME ,PASSWORD);

my_mqtt_init();

my_set_cmd_rsp_cb(my_cmd_rsp_cb);

环境参数线程的核心完成湿度、温度及光照度的检测,进行数据打包,具体代码如下所示。

app_msg_t *app_msg;

Environment_Data_TypeDef data;

Environment_Init();

while(1)

{

Environment_Read_Data(&data);

if(NULL ! = app_msg)

{

app_msg->msg_type = en_msg_report;

app_msg->msg.report.hum=(int)data.

Humidity;

app_msg ->msg.report.lum =(int)data.

Lux;

app_msg->msg.report.temp=(int)data.

Temperature;

if(0 !=osMessageQueuePut(mid_Msg

Queue,&app_msg,0U,0U))

free(app_msg);

}

}

人体活动检测线程,一旦有人靠近,距离在2 m 之内则立即进行语音播报,然后人体依旧在敏感区域则进行记录但是不进行提醒,只有超过1 min 后才重新进行语音关环。其核心代码如下所示。

OledInit();

OledFillScreen(0);

OledShowString(30,1,"MyHose",FONT6x8);

YS_SYN_Init();

SYN_FrameInfo(0,str00);

开机以后,其人体传感单元需要经过1 min 的等待,同时还可以减少误差提高系统的稳定性。

IoSetFunc(human_GPIO,human_GPIO_FUN);

GpioSetDir(human_GPIO,WIFI_IOT_GPIO_DIR_I N);

IoSetPull(human_GPIO,WIFI_IOT_IO_PULL_UP);

GpioRegisterIsrFunc(human_GPIO,WIFI_IOT_INT_TYPE_EDGE,WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW,MyPressed,NULL);

经上述的编程,烧录进入搭建的硬件系统,进行系统测试。该系统的云端选择使用华为云。在系统底层业务中需要对代码添加正确的设备ID 后,将底层Hi3861嵌入式设备开发代码添加在云平台上所注册的相关信息中,最终实现终端设备与云平台的连接、数据推送和命令接收等功能。

1.3 系统测试

本系统包含下位机即Hi3861 为核心的嵌入式系统及上位机即华为云端[11],因此系统测试也要分为底层硬件测试与上层华为云测试,具体实物如图6 所示,而其具体测试分以下2 个阶段测试。

图6 便携式提醒装置实物

1.3.1 底层测试

首先对系统进行底层硬件测试主要功能,包括WIFI 连接、环境参数检测、串口打印与OLED 显示和人体活动提醒功能,然后对整机进行系统整体检验。在此过程中一直连接着华为云。该系统能够在OLED 屏幕上观察到相关环境信息与人体活动信息,且能够在串口调试助手界面获取信息。由图7 可知,本系统正常获取光照强度、温湿度这些环境参数数值,并且能够观察到人体活动的信息。

图7 智能提醒系统串口测试

1.3.2 华为云端测试

在华为云端部分创建了“mysmartmdeical”的IoT产品,且使用MQTT 作为本系统的通信协议类型,然后添加了其系统所检测的环境参数:温湿度、光照强度、灯光状态等作为服务属性及照明灯状态并且进行开关控制的命令。按照相关引导进行该产品注册设备,以此才能获得此设备的ID、密钥等诸多信息。结合底层测试部分将这些信息添加到系统底层的代码中去。并且要使得整机能够正常运行,就需要在底层代码中配置WIFI 进行联网操作,使该系统的硬件设备连接至外部网络,与华为云进行正常通信。如图8所示。

图8 华为云端测试

将云端数据与PC 串口数据或者OLED 显示数据进行参数数据对比可知,该终端系统能够正常运行,并且底层的数据与华为云端的环境数据相一致,而且云端所下发命令指令在底层硬件上能够正确有效的执行,同时能够进行正确的检测人体活动并进行语音提醒,能够进行记录活动信息。综合测试结果,本系统具备了环境参数采集并将所采集的环境数据进行联网上报;正确识别人体活动,并对其进行语音提醒并记住活动信息;响应云端下发的功能指令,所设计的功能均实现。

2 结束语

本文所设计的基于OpenHarmony 的智能居家语音提醒系统,使用华为IoT 解决方案,主控MCU 选用内置WIFI 的海思Hi3681 微型处理器构建起轻量级终端设备,而系统软件开发平台则选择windows 桌面下VScode、Ubuntu 与DevEco Device Tool 插件进行OpenHarmony 操作系统上的整体系统软件开发,而网络通信则使用WIFI 配合MQTT 协议并应用华为云IoT 接入设备平台进行整体结合。通过本系统的上下层测试表明,本系统能够实现环境参数数据的采集与数据联网上报、人体进入语音提醒并记住,同时能够完成云端命令下发执行等功能,验证了本系统设计方案的正确性、流畅性及完整性。该系统具有硬件灵巧轻便可携带,同时经济实惠易推广的优点。本系统所使用的开发平台集成了所需要的工具,使得开发易上手,与其他IoT 物联网解决方案对比,使用的华为物联网IoT 解决方案进行设计开发智能居家语音提醒系统,开发效率较高,系统部署较快,适合在居家环境参数监测中使用。

猜你喜欢
环境参数底层云端
航天企业提升采购能力的底层逻辑
基于云平台的智能家居环境参数协同监控系统设计
云端之城
列车动力学模型时变环境参数自适应辨识
一种食用菌大棚环境参数测控系统设计
基于小型固定翼移动平台的区域大气环境参数采集系统设计
美人如画隔云端
行走在云端
云端创意
回到现实底层与悲悯情怀