
导读使用过STM32开发版、或是使用过机智云自助开发平台的MCU代码自动生成工具(STM32)的电子爱好者对STM32Cube或多或少都有些了解,其中最耳熟能详的工具是具有配置MCU管脚、外设,产生初始化代码等功能的STM32CubeMX,那机智云和ST合作芯片开发工具 I-CUBE-GizWits又有作用呢? 上篇内容中,简单的介绍了I-cube-gizwits软件包、I-cube-gizwits软件包嵌入了机智云的GAgent,开发者可以根据Gagent相关协议实现MCU与GAgent之间的通信,以及实践环节需要准备的软硬件材料和Gagent API相关知识点。 接下来,将通过介绍“项目源码修改”,实现外设的驱动初始化代码添加、上报云端状态事件处理、WIFI信息配置、上线情况以及日志查看、APP控制等环节。 [ 3.项目源码修改 ] 3.1 打开工程文件(下面以IAR Embedded Workbench for ARM为例) (1)安装好IAR Embedded Workbench for ARM 软件( a- D4 E' R' G# X% a/ o" g/ i (2)解压I-cube-gizwits固件包,打开路径 Gizwits_V1.1.1_Lib\Projects\B-L475E-IOT01\Applications\Cloud\Gizwits\EWARM 下的 Project.eww 文件 3.2 基本信息修改 3.2.1 基本信息介绍:) V" \- x- g( ~2 q & b) h7 S6 {' F' I; t+ H, I1 qProduct Key : 定义:产品标识码,开发者通过机智云后台创建新产品后,自动生成的一个32位字符串。在机智云的数据库中是一个唯一的号码,开发者将ProductKey写入设备主控MCU后,机智云通过此标识码对设备进行识别并自动完成注册。 Product Secret :" `+ L, K Q: |) J* Z 定义:产品密钥,在生成Productkey的时候云端会对应生成一个Product Secret,该参数为关键性机密参数,不应向第三方泄露。 版本号:用来区分不同版本代码。 3.2.2 获取项目基本信息- `1 Q% @" W: s' z9 | 在机智云开发者平台中打开项目,点击左侧基本信息,从中可获得本项目的Product Key和Product Secret(需要输入登录密码获得);版本号由用户决定。+ v$ p: O0 {0 O ![]() 3.2.3 源码相应修改位置4 D9 [! I9 Z/ F3 s4 A' s 打开工程路径 Application\Common下文件gagent_iot_test_basic_connectivity.c 修改文件中的STR_PK和STR_PS相关参数,将从机智云平台获取的Product Key和Product Secret填入相应位置:
3.3 外设的驱动初始化代码添加 请在工程路径Application\Common下文件gagent_iot_test_basic_connectivity.c文件中% B* K I0 i) Q6 D, l 的userInit()函数中添加外设的驱动初始化相关代码 ![]() 3.4 云端下发数据处理3 A* [9 _# F" f& D3 ~' m/ U8 b 3.4.1 设备和云端通信协议* b6 ]3 @0 v8 T# e( M' \) F 请在机智云开发者平台项目页面中点击开发向导,在MCU开发资源中下载《GizTest - 机智云WiFi类设备接入协议文档-SoC方案.pdf》 ![]() 在文档中查看控制设备的相应指令协议格式,定义的数据点不同,生成的文档内容会不同,请以你生成的文档为准。 ![]() 举例:例如收到的控制设备数据是:01 01 00 则action为01,是控制设备指令(不同指令action不同)% m, ?& C, x+ }8 m( f 3 d, V2 a' w2 ?& Gattr_flags为01,bit0为1,表示设置LED attr_vals为00,bit0为0,表示设置LED的值为0,关闭LED 3.4.2 源码相应修改位置. ]# x {5 ^# p, Y5 u 打开工程路径Application\Common下文件gagent_iot_test_basic_connectivity.c2 b/ W7 U; ]/ f0 Z% b4 b 在gizIssuedProcess ()函数中处理云端下发的数据,传入的数据格式跟协议中对应,请参照协议文档在函数中对action进行判断得到指令类型,然后进行相应处理。 ![]() 3.5 上报云端状态事件处理 3.5.1 设备主动上报当前状态 1)设备和云端通信协议 请在机智云开发者平台项目页面中点击开发向导,在MCU开发资源中下载《GizTest - 机智云WiFi类设备接入协议文档-SoC方案.pdf》,在文档中查看控制设备的相应指令协议格式,定义的数据点不同,生成的文档内容会不同,请以你生成的文档为准。 设备主动上报当前状态相关协议: ![]() 2)源代码修改位置9 K2 _) {+ O2 a2 Z& o. b/ ^ 打开工程路径Application\Common下文件sensors_data.c,在PrepareMqttPayload ()函数中根据协议指令格式对当前状态的数据进行组包。 下图中按照前面的协议对数据进行了组包:. `" B0 Y% q0 W8 P5 `% y ![]() 同时还需要根据组完包后PayloadBuffer数组的大小修改对应的初始化。8 \% B4 w! _. D ![]() 需要触发主动上报的情况:
a.设备定时上报代码相应修改位置: 打开工程路径Application\gagent_wrapper下文件ioftime.c,在timerEventHandler ()函数中可修改定时上报的周期,单位是ms if(tick_count >= 10000) //修改后面的数值 ![]() b.设备状态发生变化时主动上报代码相应修改位置:0 \6 o5 \' m# @5 l3 E8 \ 在需要触发主动上报的位置添加如下代码:& l. W$ i# X& Q4 m+ R
3.5.2 收到读取设备当前状态的指令后上报当前状态6 w" @0 l* N. L1 ]: a 1)设备和云端通信协议 请在机智云开发者平台项目页面中点击开发向导,在MCU开发资源中下载《GizTest - 机智云WiFi类设备接入协议文档-SoC方案.pdf》,在文档中查看控制设备的相应指令协议格式,定义的数据点不同,生成的文档内容会不同,请以你生成的文档为准。 读取设备当前状态相关协议: ![]() 2)源代码修改位置' a: p. q1 j; S# m+ C5 D: r 打开工程路径Application\Common下文件gagent_iot_test_basic_connectivity.c,在gizIssuedProcess ()函数中需要对云端下发的数据进行判断,判断action是否为02,是则添加相应的代码触发数据上报:
3.6 程序编译和加载 3.6.1 程序编译(下面以IAR Embedded Workbench for ARM为例)5 j. g0 ~' x4 d# K+ s 可选择菜单栏 ProjectMake ,或者点击工具栏对应图标开始编译 ![]() 3.6.2 程序加载7 W- c4 p# e3 ~ 1)程序编译完成后,在路径$ i7 j8 v. m- C5 J" \ Gizwits_V1.1.1_Lib\Projects\B-L475E-IOT01\Applications\Cloud\Gizwits\EWARM \B-L475E-IOT01\Exe下会生成 Project.bin 文件,复制该文件; 2)将Micro USB线插入开发板的USB STLINK接口(如图),另一端连接电脑。 ![]() 插入电脑后,在我的电脑会出现一个名为DIS_L4IOT的盘,进入DIS_L4IOT,将前面复制的Project.bin文件粘贴到里面,复制完成后会自动退出DIS_L4IOT盘,表示文件加载完成。 + y/ v+ u9 f7 q" ~![]() 3.7 WIFI信息配置 3.7.1 设置波特率 C$ T6 a/ s; J% Y: P- F 使用串口工具(可以用SecureCRT)打开设备串口(串口号在设备管理器中查看),波特率为115200 3.7.2 进入WIFI信息配置模式方式:: V* f) v) ~- c6 E$ L) a* Z; V& p 1)按下开发板上的RESET按键,如果没有配置过WIFI信息,则自动进入配置模式5 R& x" w2 C. v: s 2)按下开发板上的RESET按键,如果配置过WIFI信息,则在按下RESET按键后的5s内按下开发板上的USER按键进入配置模式% p- ]# O3 b+ V. x4 ? ![]() (3)信息配置' P- b. G: R% r- z 进入配置模式后开发板会打印如下信息 ![]() 1)输入:y ,会请求输入SSID(WIFI名称) ![]() 2)输入SSID,按回车键(注意:这里输入SSID的时候是没有显示的,输入完成回车后才会显示SSID信息) ![]() 3)输入WIFI模式,根据路由器的配置来选择,如果WIFI没有密码,则输入0,如果WIFI有密码但不知道是哪一种模式,则输入3(如果后面无法连接上则要去查看路由器的配置)- R8 ^" X1 X6 ~$ N% B8 v ![]() 4)输入WIFI密码,按回车键,WIFI信息配置完成,开发板会尝试连接WIFI" d( b" q) k; P$ X' S" J ![]() 5)如果连接上WIFI,开发板会正常运行打印其它信息,如果无法连接上WIFI,请检查输入的WIFI信息是否有错误 ![]() 3.8 上线情况以及日志查看 设备运行后,可在机智云开发者平台对应项目中设备日志中查看,点击查看可浏览通信日志、上下线记录、运行记录 ![]() ![]() 从机智云下载中心下载机智云串口调试助手绑定设备) }, z0 W% G; f- s% J ![]() 打开机智云串口调试助手,点击下方“小工具”,然后选择上方的”二维码生成”,输入项目的Product Key和设备的MAC,点击“获取二维码”。 ![]() ![]() ![]() 从下载中心下载机智云调试APP,安装,打开APP ![]() 点击左上角“我的设备”,扫描生成的二维码,扫描完成列表会显示相应的设备,点击设备就可以进入设备控制界面 ![]() ![]() |