文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

2020征文-开发板 鸿蒙开发板智能家居项目

2024-12-03 14:28

关注

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/

鸿蒙智能家居项目

一、系统介绍

本系统硬件采用Hispark WiFi开发板,主控芯片为Hi3861,操作系统为Harmony OS,软件上支持MQTT、OneNET接入协议,驱动开发包括按键驱动、OLED驱动、PWD驱动开发,其它功能模块有NV数据存储、WiFi配网功能。

整个系统框架如下:


整个系统主要分为3大部分:

(1)云平台:这里我使用的是OneNET云平台

(2)Harmony OS软件开发:在开发板上实现相关功能。

(3)硬件:使用到的硬件有:LED灯、OLED屏幕、按键。

整个鸿蒙开发板的软件分为4层:

(1)应用:实现智能家居的应用逻辑处理部分。

(2)功能组件:包括MQTT、JSON、数据存储、WiFi配网功能等,为智能家居应用提供关键能力。

(3)内核:Harmony OS内核提供关键能力。

(4)驱动:包括PWM驱动、OLED驱动、WiFi驱动、按键驱动等,为硬件控制提供了能力。

二、功能描述

(1)家电控制功能

用户可以通过手机APP或者网页控制开发板的LED亮灭、同时可以控制LED灯的亮度。

网页界面如下:


同时还能监控家里的温度情况。

(2)配网功能

鸿蒙开发板支持一键配网功能,用户只需要按下user按键,即可进入配网模式。

(3)数据存储功能

支持数据存储功能,可以存储配网设置的账户密码等关键数据。

(4)MQTT、OneNET接入协议支持

支持MQTT协议、OneNET接入协议,可实现远程控制、远程监测数据。

(5)驱动能力

支持PWM驱动、I2C驱动等,可实现外围硬件的驱动能力。

三、代码描述

(1)代码流程

整个代码文件目录如下:


代码流程图如下:


(2)家电控制部分

对接收到得网络数据进行解析,这里我用得json数据格式。数据解析处理函数如下:

  1. void onenet_cmd_rsp_cb(uint8_t *recv_data, size_t recv_size, uint8_t **resp_data, size_t *resp_size) 
  2.  
  3.  
  4. cJSON *recvjson;  
  5. printf("recv data is %.*s\n", recv_size, recv_data);  
  6. //进行json解析  
  7. recvjson = cJSON_Parse((const char *)recv_data); 
  8.  
  9. if(recvjson != NULL 
  10.  
  11. if(cJSON_GetObjectItem(recvjson, "ledSwitch") != NULL
  12.  
  13.  
  14. if(cJSON_GetObjectItem(recvjson, "ledSwitch")->valueint == 1 )  
  15.  
  16. //GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);  
  17. PwmStart(WIFI_IOT_PWM_PORT_PWM0, led_pwm, 65530);  
  18. led_status = 1; 
  19.  
  20. }else if(cJSON_GetObjectItem(recvjson, "ledSwitch")->valueint == 0 ) 
  21.  
  22.  
  23. //GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);  
  24. PwmStart(WIFI_IOT_PWM_PORT_PWM0, 65520, 65530);  
  25. led_status = 0; 
  26.  
  27.  
  28.  
  29. if(cJSON_GetObjectItem(recvjson, "ledLD") != NULL
  30.  
  31.  
  32. //获取亮度 
  33.  
  34. led_ld = cJSON_GetObjectItem(recvjson, "ledLD")->valueint;  
  35. led_pwm = 65530 - ((led_ld * 65520) / 100);  
  36. if(led_status == 1) 
  37.  
  38.  
  39. PwmStart(WIFI_IOT_PWM_PORT_PWM0, led_pwm, 65530); 
  40.  
  41.  
  42. // 
  43.  
  44. printf("led_ld is %d, led_pwm is %d \r\n", led_ld, led_pwm); 
  45.  
  46.  
  47. cJSON_Delete(recvjson); 
  48.  
  49.  
  50. *resp_data = NULL
  51.  
  52. *resp_size = 0; 
  53.  

 (3)OneNET初始化部分

 

(4)LED亮度控制

这里LED的亮度我采用PWM控制的方式,PWM初始化代码如下:


控制亮度的代码部分:

 

(5)数据存储

这里我使用NV来存储配网时的账户和密码,代码如下:


(6)按键处理

这里我使用的是中断触发方式来相应按键。

中断注册:


当用户按下按键时,立即启动配网功能,中断响应函数:


©著作权归作者和HarmonyOS技术社区共同所有,如需转载,请注明出处,否则将追究法律责任

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/

 

来源:鸿蒙社区内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯