智能灯MCU开发
1.自动生成MCU SDK
自动生成的MCU SDK代码实现了机智云通信协议的解析与封包、传感器数据与通信数据的转换逻辑,并封装成了简单的 API。当设备收到云端或 APP 端的数据后,程序会将数据转换成对应的事件并通知到应用层,开发者只需要在对应的事件处理逻辑中添加传感器的控制函数,便可完成产品的开发。这里选择独立MCU方案、硬件平台STM32f103c8x后,机智云直接生成适应STM32f103c8x的工程代码。
2.MCU SDK文件内容目录结构
如下图,其中黑色标注部分为STM32f103cx8硬件平台开发基本文件。绿色标注部分为机智云逻辑部分,硬件的串口驱动、定时器驱动、按键驱动等驱动实现完毕,开发者可直接在Gizwits_product.c&Gizwits_product.h文件编写硬件动作执行函数。
其中主要文件说明:
文件 | 说明 |
---|---|
Gizwits_product.c | 该文件为产品相关处理函数,如gizEventProcess()平台相关硬件初始化,如串口、定时器等。 |
Gizwits_product.h | 该文件为gizwits_product.c的头文件,存放产品相关宏定义如:HARDWARE_VERSION、SOFTWARE_VERSION |
Gizwits_protocol.c | 该文件为SDK API接口函数定义文件 |
Gizwits_protocol.h | 该文件为gizwits_protocol.c对应头文件,相关API的接口声明均在此文件中。 |
协议API介绍
API名称 | API功能 |
---|---|
Void gizwitsInit(void) | gizwits 协议初始化接口。用户调用该接口可以完成 Gizwits 协议相关初始化(包括协议相关定时器、串口的初始化)。 |
Void gizwitsSetMode(unit8_t mode) | 参数mode[in]:仅支持0,1和2,其他数据无效。参数为 0,恢复模组出厂配置接口,调用会清空所有配置参数,恢复到出厂默认配置; 参数为 1 时配置模组进入 SoftAp 模式; 参数为 2 配置模组进入 AirLink 模式。 |
Void gizwitsHandle(dataPoint_t *dataPoint) | 参数 dataPoint[in]:用户设备数据点。该函数中完成了相应协议数据的处理即数据上报的等相关操作。 |
Int8_t gizwitsEventProcess(eventInfo_t *info,uint8_t *data,uint32_t len) | 参数 info[in]:事件队列参数 ; data[in]:数据; 参数 len [in]:数据长度。用户数据处理函数,包括 wifi 状态更新事件和控制事件。a) Wifi 状态更新事件WIFI_开头的事件为 wifi 状态更新事件,data 参数仅在WIFI_RSSI 有效,data 值为 RSSI 值,数据类型为 uint8_t,取值范围 0~7。 b) 控制事件与数据点相关,本版本代码会打印相关事件信息,相关数值也一并打印输出,用户只需要做命令的具体执行即可。 |
3.开发步骤
3.1 程序主函数
位置:main.c 中 main()函数
相关说明:
函数 | 说明 |
---|---|
SystemInit() | 平台相关的硬件初始化 ==(非 MCU SDK API,不同的平台名称可能不同)== |
userInit() | 用户相关的初始化,如:外设驱动初始化、打印串口初始化 ==(非MCU SDK API,不同的平台名称可能不同)== |
gizwitsInit() | 平台、协议处理初始化,如:用户定时器初始化、协议通信串口初始化 (MCU SDK API) |
userHandle() | 用户事件回调函数,用户可以自定义事件在该函数中完成相应的协议处理。==(非MCU SDK API,不同的平台名称可能不同)== |
gizwitsHandle() | 协议相关的主函数 ==(MCU SDK API)== |
3.2 移植RGB_LED驱动程序
从MCU SDK文件内容目录结构看到,自动生成MCU代码里面没有rgb_led灯驱动,我们可以去机智云官网,开发者中心,下载中心,去参考下载其他含rgb_led灯驱动的项目,把里面的rgb_led灯驱动提取出来移植,以移植微信宠物屋rgb_led灯驱动为例。
我们把刚刚下载的微信宠物项目解压,进入如下目录,可以看到有个rgb_led灯驱动文件夹,把文件夹复制到自己的自动生成MCU驱动目录里面
回到我们自己MCU代码,在驱动目录里面添加rgb_led驱动文件
在main.c和gizwits_product.c文件加入#include “Hal_rgb_led/Hal_rgb_led.h”
3.4 用户程序初始化
位置:main.c 中 userInit() 函数
3.5 WiFi模块Reset/入网方式
设备需要进入配置模式才能进行联网,并与云端进行通信,MCU SDK在工程中是通过按键触发进入相应的配置模式。这里,我们简单地添加成功触发WiFi模组进入AirLink配置模式后LED灯亮起。
进入 Soft AP 模式:key2 按键短按。
B. 进入 AirLink 模式:key2 按键长按亮蓝blue灯。
C. 模组复位:key1 按键长。
3.6 处理云端/APP发送过来的控制事件。
与控制型协议相关的函数调用关系如下:
函数调用说明:
函数 | 说明 |
---|---|
protocolIssuedProcess | 该函数被 gizwitsHandle 调用,接收来自云端或 app端下发的相关协议数据,==MCU SDK自处理,开发者可不关注== |
ACTION_CONTROL_DEVICE | 进行“控制型协议”的相关处理,==MCU SDK自处理,开发者可参考协议进一步理解== |
gizDataPoint2Event | 根据协议生成“控制型事件”,并进行相应数据类型的转化转换,==MCU SDK自处理,开发者可参考协议进一步理解== |
gizwitsEventProcess | 根据已生成的“控制型事件”进行相应处理(包括相应的驱动函数),==需开发者处理控制事件== |
相关代码位置:…\Gizwits\gizwits_product.c 中 gizwitsEventProcess() 函数:
功能说明:完成写类型外设的事件处理。
相应代码:
3.7 上报设备状态
与上报型协议相关的函数调用关系如下:
函数调用说明:
函数 | 说明 |
---|---|
userHandle | 获取用户区的上报型数据,需开发者关注 |
gizCheckReport | 判断是否上报当前状态的数据,MCU SDK自处理,开发者可不关注 |
gizDataPoints2ReportData | 完成用户区数据到上报型数据的转换,MCU SDK自处理,开发者可不关注 |
gizReportData | 将转换后的上报数据通过串口发送给 WiFi 模块,MCU SDK自处理,开发者可不关注 |
相关代码位置: …\User\main.c 中 userHandle() 函数:
使用说明:该函数中完成了用户区上报型数据的获取。用户只需将读到的数据赋值到 用户区当前设备状态结构体即可,赋值完的数据是通过 gizwitsHandle 上报云端的,开发者不需要关注变化上报和定时上报。
3.8 编译并将固件烧写到GoKit3代MCU主控板
调试
1. 手机安装机智云APP
2. 打开机智云APP,注册登录APP账号
3. 配置WiFi模块入网
4. 配置成功后,选择相应设备
5. APP收发设备数据
6. 机智云后台查看设备交互数据
发布产品
产品发布到正式生产环境后,机智云将为你的设备免费分配独立的云端运行环境,确保你的设备24小时不间断在线以供用户使用,将享受更多机智云为您提供的免费增值服务,包括:智能设备统计分析,开放平台展示以及各种无微不至的技术支持服务。
产品如何申请发布上线,具体步骤如下:
1.进入产品详细信息页面,在产品名称旁边显示【申请发布】按钮
2.点击【马上申请】按钮,如实填写申请信息审核
3.点击【提交申请】按钮,跳转提交成功页面。机智云将免费为你提供人工审核以及严谨的测试,审核通过后,会根据你提交的量产计划免费提供后台服务器支持。
产测简介
产测是生产环节中重要的部分,保证了产品的质量,提升自身产品形象。机智云产测工具为批量生产的产品提供了方便快捷的模块与MCU产测方式。在大型生产时,保证模块与MCU可正常使用。使用产测工具,必须让产品先上架。由产品创建者向机智云申请发布。机智云将免费为你提供人工审核以及严谨的测试。详情请点击浏览。


块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖