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

开发
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz

[[360489]]

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

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

https://harmonyos.51cto.com/#zz

鸿蒙智能家居项目

一、系统介绍

本系统硬件采用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数据格式。数据解析处理函数如下:

void onenet_cmd_rsp_cb(uint8_t *recv_data, size_t recv_size, uint8_t **resp_data, size_t *resp_size) 
 

 
cJSON *recvjson;  
printf("recv data is %.*s\n", recv_size, recv_data);  
//进行json解析  
recvjson = cJSON_Parse((const char *)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; 
 
}else if(cJSON_GetObjectItem(recvjson, "ledSwitch")->valueint == 0 ) 
 

 
//GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 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_ld is %d, led_pwm is %d \r\n", led_ld, led_pwm); 
 

 
cJSON_Delete(recvjson); 
 

 
*resp_data = NULL
 
*resp_size = 0; 
 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.

 (3)OneNET初始化部分

 

(4)LED亮度控制

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


控制亮度的代码部分:

 

(5)数据存储

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


(6)按键处理

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

中断注册:


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


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

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

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

https://harmonyos.51cto.com/#zz

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2020-12-16 10:05:48

鸿蒙开发板Onenet平台

2020-12-21 09:57:52

OLED温湿度计hi3861

2020-12-30 11:02:34

鸿蒙HarmonyOS智能家居

2020-12-15 11:57:49

Hi3861 HarmonyOS开发板

2020-12-07 12:34:33

开发板鸿蒙hello world

2020-10-21 10:01:47

HiSpark Wi-智能家居套件

2020-10-20 09:32:43

HiSparkWi-FiIoT

2022-04-01 15:54:01

DHCP网络协议开发板

2020-12-15 09:33:40

鸿蒙Hi3861开发板

2020-10-26 10:21:39

Wi-Fi IoT智能家居套件

2020-11-17 12:15:36

MQTT开发

2022-10-14 15:55:24

环境搭建鸿蒙

2022-06-28 14:30:29

camera组件照片回传

2014-07-16 11:12:09

Project Ara

2020-12-11 12:45:04

鸿蒙Hi3861游戏

2022-01-07 21:11:27

鸿蒙HarmonyOS应用

2021-05-25 14:47:43

鸿蒙HarmonyOS应用

2021-12-30 16:12:07

鸿蒙HarmonyOS应用

2020-11-04 13:20:14

HiSpark
点赞
收藏

51CTO技术栈公众号