当前位置: 首页 > 科技观察

2020年开发板鸿蒙开发板智能家居项目

时间:2023-03-16 13:35:06 科技观察

更多信息请访问:与华为官方共建的鸿蒙科技社区https://harmonyos.51cto.com/#zz鸿蒙智能家居项目一、系统简介本系统硬件采用HisparkWiFi开发板,主控芯片为Hi3861,操作系统为HarmonyOS,软件支持MQTT和OneNET接入协议,驱动开发包括按键驱动、OLED驱动、PWD驱动开发,等功能模块具有NV数据存储和WiFi网络分配功能。整个系统框架如下:整个系统主要分为三个部分:(1)云平台:我这里使用的是OneNET云平台(2)HarmonyOS软件开发:在开发板上实现相关功能。(3)硬件:使用的硬件包括:LED灯、OLED屏、按键。整个鸿蒙开发板的软件分为4层:(1)应用层:实现智能家居的应用逻辑处理部分。(2)功能组件:包括MQTT、JSON、数据存储、WiFi分发网络功能等,为智能家居应用提供关键能力。(3)内核:鸿蒙OS内核提供关键能力。(4)驱动:包括PWM驱动、OLED驱动、WiFi驱动、按键驱动等,提供硬件控制的能力。2.功能说明(1)家电控制功能用户可以通过手机APP或网页控制开发板LED的亮灭,同时可以控制LED灯的亮度。网页界面如下:同时还可以监测家里的温度。(2)配网功能鸿蒙开发板支持一键配网功能。用户只需按下用户按钮,即可进入网络分发模式。(3)数据存储功能支持数据存储功能,可存储配网设置的账户密码等关键数据。(4)MQTT、OneNET接入协议支持MQTT协议、OneNET接入协议,可实现远程控制和远程监控数据。(5)驱动能力支持PWM驱动、I2C驱动等,可以实现外设硬件的驱动能力。三、代码说明(一)代码流程整个代码文件目录如下:代码流程图如下:(2)家电控制部分对接收到的网络数据进行解析,这里我使用的是json数据格式。数据解析处理函数如下:voidonenet_cmd_rsp_cb(uint8_t*recv_data,size_trecv_size,uint8_t**resp_data,size_t*resp_size){cJSON*recvjson;printf("recvdatais%.*s\n",recv_size,recv_data);/json/进入表格recvjson=cJSON_Parse((constchar*)recv_data);if(recvjson!=NULL){if(cJSON_GetObjectItem(recvjson,"ledSwitch")!=NULL){if(cJSON_GetObjectItem(recvjson,"ledSwitch")->valueint==1){//GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9,0);PwmStart(WIFI_IOT_PWM_PORT_PWM0,led_pwm,65530);led_status=1;}elseif(cJSON_GetObjectItem(recvjson,"ledSwitch")->valueint==0){//GpioSetOutputVal(WIFI_IOT_IO_NAME_1));PwmStart(WIFI_IOT_PWM_PORT_PWM0,65520,65530);led_status=0;}}if(cJSON_GetObjectItem(recvjson,"ledLD")!=NULL){//获取亮度led_ld=cJSON_GetObjectItem(recvjson,"ledLD")->valueint;led_pwm=65530-((led_ld*65520)/100);if(led_status==1){PwmStart(WIFI_IOT_PWM_PORT_PWM0,led_pwm,65530);}//printf("led_ldis%d,led_pwmis%d\r\n",led_ld,led_pwm);}cJSON_Delete(recvjson);}*resp_data=NULL;*resp_size=0;}(3)OneNET初始化部分(4)LED亮度控制这里我用PWM来控制LED的亮度,PWM初始化代码如下:control亮度的代码部分:(5)数据存储这里我使用NV来存储配置网络时的账号和密码,代码如下:(6)按键处理这里我使用中断触发的方式中断相应按钮的注册:当用户按下按钮时,会立即启动网络分发功能,中断响应功能:?版权归作者及HarmonyOS技术社区所有。如需转载,请注明出处,否则将追究法律责任。更多信息请访问:与华为官方共建Harmonyos技术社区https://harmonyos.51cto.com/#zz