你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于ST和机智云的 I-CUBE-GizWits 使用指南(二)

[复制链接]
eefishing 发布时间:2019-10-1 17:06
导读使用过STM32开发版、或是使用过机智云自助开发平台的MCU代码自动生成工具(STM32)的电子爱好者对STM32Cube或多或少都有些了解,其中最耳熟能详的工具是具有配置MCU管脚、外设,产生初始化代码等功能的STM32CubeMX,那机智云和ST合作芯片开发工具 I-CUBE-GizWits又有作用呢?
上篇内容中,简单的介绍了I-cube-gizwits软件包、I-cube-gizwits软件包嵌入了机智云的GAgent,开发者可以根据Gagent相关协议实现MCU与GAgent之间的通信,以及实践环节需要准备的软硬件材料和Gagent API相关知识点。

- e8 z) ?& r1 Q- |9 C+ K& V: d3 k
接下来,将通过介绍“项目源码修改”,实现外设的驱动初始化代码添加、上报云端状态事件处理、WIFI信息配置、上线情况以及日志查看、APP控制等环节。
[ 3.项目源码修改 ]

# y& c  N& l* y8 A* O9 V' j3.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 文件

' n4 n6 M3 H  ?, |7 d3.2 基本信息修改
3.2.1 基本信息介绍:) V" \- x- g( ~2 q
Product Key :
5 u9 u4 Q/ I& s6 d3 B6 [. _定义:产品标识码,开发者通过机智云后台创建新产品后,自动生成的一个32位字符串。在机智云的数据库中是一个唯一的号码,开发者将ProductKey写入设备主控MCU后,机智云通过此标识码对设备进行识别并自动完成注册。
& b) h7 S6 {' F' I; t+ H, I1 q
Product Secret :" `+ L, K  Q: |) J* Z
定义:产品密钥,在生成Productkey的时候云端会对应生成一个Product Secret,该参数为关键性机密参数,不应向第三方泄露。
版本号:用来区分不同版本代码。

- L% w( L7 S+ p2 L
3.2.2 获取项目基本信息- `1 Q% @" W: s' z9 |
在机智云开发者平台中打开项目,点击左侧基本信息,从中可获得本项目的Product Key和Product Secret(需要输入登录密码获得);版本号由用户决定。+ v$ p: O0 {0 O
1.jpg

8 Z* Z6 b1 l7 \7 [  g' n; ^( r9 A
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填入相应位置:
8 u3 f, N. c: k( \1 d. R( {
#define STR_PK     "plese replace your product PK"
( l; \3 |) b7 }: a                   //find it on your Gizwits Platform Project
* U. C: O8 v. n6 V#define STR_PS    "plese replace your product PS"
" |1 I/ u4 k# P8 [; ^- W                   //find it on your Gizwits Platform Project7 G2 D; X% a7 f- O8 R7 c9 X

5 v8 u# B- C. q7 Q程序提供了1byte用于版本号,版本号范围是1-255,程序中值是用十六进制表示的,所以填写时请按十六进制格式填写(01-FF):
  w6 V& T. c$ }; l* e#define GIZ_VER        "01" //is your project version,you can change it.
* N9 I1 [# w! s![@ST-I-CUBE-GIZWITS](/assets/zh-cn/deviceDev/STCUBEGIZWITS/14.jpg)
: u0 I" m, ?3 c: w
+ F+ F& d0 _( v# c
3.3 外设的驱动初始化代码添加
请在工程路径Application\Common下文件gagent_iot_test_basic_connectivity.c文件中% B* K  I0 i) Q6 D, l
的userInit()函数中添加外设的驱动初始化相关代码
2.jpg

4 h$ e( N$ E4 ]; f% z5 L; w, J- q
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》
3.jpg
在文档中查看控制设备的相应指令协议格式,定义的数据点不同,生成的文档内容会不同,请以你生成的文档为准。
% ^# G- ?- o  u3 _  U4 h
4.jpg
6 L3 s$ l4 Y8 D7 d
举例:例如收到的控制设备数据是:01 01 00
+ m/ T4 s5 G. b4 h3 O; D
则action为01,是控制设备指令(不同指令action不同)% m, ?& C, x+ }8 m( f
attr_flags为01,bit0为1,表示设置LED
/ E% z) v6 c" L, V( j+ D: battr_vals为00,bit0为0,表示设置LED的值为0,关闭LED
3 d, V2 a' w2 ?& G
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进行判断得到指令类型,然后进行相应处理。
5.jpg

6 u$ y9 Z* b6 A6 D

" ]3 `& K6 y) J, C$ P$ `" h' Q! U+ ]
3.5 上报云端状态事件处理
' I2 Z% c( A1 \( B4 j
3.5.1 设备主动上报当前状态
1)设备和云端通信协议
请在机智云开发者平台项目页面中点击开发向导,在MCU开发资源中下载《GizTest - 机智云WiFi类设备接入协议文档-SoC方案.pdf》,在文档中查看控制设备的相应指令协议格式,定义的数据点不同,生成的文档内容会不同,请以你生成的文档为准。
设备主动上报当前状态相关协议:
( m7 {7 b  [$ R& M; C# x- F  w 6.jpg

: }7 X% E$ T( ~- b5 y6 ~
7 |- X* h- Z% D: f8 L
2)源代码修改位置9 K2 _) {+ O2 a2 Z& o. b/ ^
打开工程路径Application\Common下文件sensors_data.c,在PrepareMqttPayload ()函数中根据协议指令格式对当前状态的数据进行组包。
下图中按照前面的协议对数据进行了组包:. `" B0 Y% q0 W8 P5 `% y
7.jpg
同时还需要根据组完包后PayloadBuffer数组的大小修改对应的初始化。8 \% B4 w! _. D
8.jpg
需要触发主动上报的情况:
  • 设备定时上报当前状态
  • 设备状态发生变化时主动上报(包括云端下发控制指令后设备状态变化)
    1 g2 _( _" ~- p; T3 K( q
a.设备定时上报代码相应修改位置:
0 ]7 \0 V9 k5 O9 Q0 K打开工程路径Application\gagent_wrapper下文件ioftime.c,在timerEventHandler ()函数中可修改定时上报的周期,单位是ms
9 u+ q) Z6 Z1 d/ ~9 y2 I# Jif(tick_count >= 10000) //修改后面的数值
4 Y1 u- j8 Z$ `6 q3 v, R 9.jpg
b.设备状态发生变化时主动上报代码相应修改位置:0 \6 o5 \' m# @5 l3 E8 \
在需要触发主动上报的位置添加如下代码:& l. W$ i# X& Q4 m+ R
if(osThreadIsSuspended(SensorThreadHandler) == osOK)
2 `. t2 Y4 N1 M$ q; y+ N{2 a! @  F; ?, _9 L3 j" `
osThreadResume(SensorThreadHandler);& a7 |% d  a; ^( H1 Q
}
1 D0 Z' p0 ?/ K  ~/ M6 Y8 p

+ M! o* g9 ^1 B; J! {& X
3.5.2 收到读取设备当前状态的指令后上报当前状态6 w" @0 l* N. L1 ]: a
1)设备和云端通信协议
请在机智云开发者平台项目页面中点击开发向导,在MCU开发资源中下载《GizTest - 机智云WiFi类设备接入协议文档-SoC方案.pdf》,在文档中查看控制设备的相应指令协议格式,定义的数据点不同,生成的文档内容会不同,请以你生成的文档为准。
读取设备当前状态相关协议:
5 @  y" |6 p! q& r; H* Y& l: P/ Z 11.jpg

! }4 d7 T1 D1 p) m5 D' y
2)源代码修改位置' a: p. q1 j; S# m+ C5 D: r
打开工程路径Application\Common下文件gagent_iot_test_basic_connectivity.c,在gizIssuedProcess ()函数中需要对云端下发的数据进行判断,判断action是否为02,是则添加相应的代码触发数据上报:
9 O, \* x$ }5 Q) ~
if(osThreadIsSuspended(SensorThreadHandler) == osOK)5 \; V! S5 L" d6 g
{1 L% C0 b, u$ K% V8 u
Device_Passive_Report = 1;
; Y, d& }) f$ Z# }! kosThreadResume(SensorThreadHandler);4 Y6 b* q; M# P- P7 X; U
}  h0 m. I5 h; n0 I  x& f; c5 z

# Y2 x. x) X3 `6 R![@ST-I-CUBE-GIZWITS](/assets/zh-cn/deviceDev/STCUBEGIZWITS/27.jpg)
+ @) q" f3 ]! O2 w

' _/ G7 v, Q8 \1 F+ y, U3.6 程序编译和加载
3.6.1 程序编译(下面以IAR Embedded Workbench for ARM为例)5 j. g0 ~' x4 d# K+ s
可选择菜单栏 ProjectMake ,或者点击工具栏对应图标开始编译
22.jpg
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接口(如图),另一端连接电脑。
, i2 P: S& P- Z/ K) m 33.jpg
插入电脑后,在我的电脑会出现一个名为DIS_L4IOT的盘,进入DIS_L4IOT,将前面复制的Project.bin文件粘贴到里面,复制完成后会自动退出DIS_L4IOT盘,表示文件加载完成。
0 P8 M- a; E# R4 H0 v 44.jpg
2 [3 D/ Z$ K1 V9 q& u9 H
+ 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 ?
55.jpg
(3)信息配置' P- b. G: R% r- z
进入配置模式后开发板会打印如下信息
$ m* I8 E5 C8 p$ x+ D4 I 66.jpg
1)输入:y ,会请求输入SSID(WIFI名称)
9 R3 f1 Z& J3 h; k& } 77.jpg
2)输入SSID,按回车键(注意:这里输入SSID的时候是没有显示的,输入完成回车后才会显示SSID信息)
! F1 C3 L: _0 s8 S& X+ H8 n2 } 88.jpg
3)输入WIFI模式,根据路由器的配置来选择,如果WIFI没有密码,则输入0,如果WIFI有密码但不知道是哪一种模式,则输入3(如果后面无法连接上则要去查看路由器的配置)- R8 ^" X1 X6 ~$ N% B8 v
99.jpg
4)输入WIFI密码,按回车键,WIFI信息配置完成,开发板会尝试连接WIFI" d( b" q) k; P$ X' S" J
111.jpg
5)如果连接上WIFI,开发板会正常运行打印其它信息,如果无法连接上WIFI,请检查输入的WIFI信息是否有错误
. F/ r  \$ I$ D/ H8 _* M7 Y 222.jpg

, Z  H/ r& `% g
3.8 上线情况以及日志查看
设备运行后,可在机智云开发者平台对应项目中设备日志中查看,点击查看可浏览通信日志、上下线记录、运行记录
  Q  A9 ^" [- Z! {- o) m3 @- s, m
333.jpg
444.jpg 8 H! P  r% n! l9 d0 U& W, k
3.9 APP控制设备
从机智云下载中心下载机智云串口调试助手绑定设备) }, z0 W% G; f- s% J
555.jpg

) E1 m% ~( |2 m, U" P) a' e& e7 G1 x
打开机智云串口调试助手,点击下方“小工具”,然后选择上方的”二维码生成”,输入项目的Product Key和设备的MAC,点击“获取二维码”。
9 v8 l' a+ ~( R" S  i( {
666.jpg
777.jpg ' i7 ^. i; M' X7 q3 U3 \2 G8 @7 Q
888.jpg " D; |/ {9 L, h. X) Q
从下载中心下载机智云调试APP,安装,打开APP
9 x. O( L: Z8 ]0 Y1 u9 N 999.jpg
点击左上角“我的设备”,扫描生成的二维码,扫描完成列表会显示相应的设备,点击设备就可以进入设备控制界面
0 h* d  o5 K" p2 `  O5 L% w 1111.jpg
2222.jpg
收藏 评论0 发布时间:2019-10-1 17:06

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版