ST I-CUBE-GizWits套件快速接入指南

产品介绍

基于ST和机智云的I-cube-gizwits软件包运行在基于ARM Cortex-M处理器的STM32微控制器上。

I-cube-gizwits软件包嵌入了机智云的GAgent,设备可以通过GAgent访问机智云云平台。GAgent主要的作用是数据转发,是设备数据、机智云、应用端(APP)的数据交互桥梁。GAgent提供了机智云云平台与单片机之间的通信协议,开发者可以根据该协议实现MCU与GAgent之间的通信。

用户可以通过手机连接到机智云云平台,并且可以随时随地获取设备的信息以及对设备进行控制。
I-cube-gizwits软件包是STM32 Cube的扩展软件包,基于STM32 Cube HAL库。

产品优势

  1. 基于STM32 Cube,图形化操作,能够快速配置MCU外设,以及工程配置,提高开发效率。
  2. 支持导出多个格式的工程:
    IAR Embedded Workbench for ARM ;
    KEIL uVision;
    System Workbench for STM32;
  3. 采用平台无关API,MCU/WIFI芯片平台切换成本低;
  4. 嵌入式机智云GAgent联网服务,自动完成了联网功能,能够快速玩转机智云物联网云平台;

准备工作

1. 硬件:

1)B-L475E-IOT01A2开发板

2)Micro USB线

2. 软件:

下面三种开发工具任选其一:
1) IAR Embedded Workbench for ARM
2) KEIL uVision5
3) System Workbench for STM32

3. 其他:

1)机智云开发者账号
2)I-cube-gizwits固件包
3)I-cube-gizwits固件包文件夹结构简介:

开始开发

1. 注册开发者账号

机智云开发者账号,用于产品接入、设备管理、OTA服务、MCU开发等的功能使用。
注册链接:http://dev.gizwits.com/zh-cn/developer/

2. 新建产品

注册完成后,登陆至机智云开发者中心后台后,点击开发者中心后台中间的“创建新产品”菜单,在跳转页面新建一个名为“GizTest”的产品(名称可自定),选择“Wi-Fi/移动网络方案”方式接入,并完成产品创建。如下图:

3. 创建云端数据点(产品功能点)

数据点介绍:

即设备产品的功能的抽象,用于描述产品功能及其参数。创建数据点后,设备与云端通讯的数据格式即可确定,设备、机智云可以相互识别设备与机智云互联互通的数据。更多的解析和新建指引,可以在开发者中心数据点页面右上角“定义数据点教程”中查看找到帮助,以建立属于你自己产品的数据点,如下图:

新建数据点:

然后以本次的项目“GizTest”为例,简单描述一下云端数据点和产品的功能点的关系,本次的项目“GizTest”,它需要实现的功能是:

(1) 获取开发板陀螺仪X、Y、Z轴数值;
(2) 获取开发板相对湿度和温度传感器数值;
(3) 获取开发板LED的状态以及控制LED开关;

那我们需要在云端建立对应的数据点,如下图:

下表是所有数据点的具体设置:

添加数据点完成之后,点击下图的“应用”即可,完成整个产品的数据点的新建工作。

4. GAgent API简介

gagent_soc.h文件中API

(1)gagent_soc.h文件内容预览

(2)API功能简介
1)gagentInit

  • 功能:gagent相关参数初始化
  • 函数定义:void gagentInit(struct devAttrs attrs)
  • 参数:struct devAttrs attrs :对应初始化参数的结构体
    struct devAttrs{    unsigned short mBindEnableTime;    unsigned char mstrProtocolVer[MCU_PROTOCOLVER_LEN];    unsigned char mstrP0Ver[MCU_P0VER_LEN];    unsigned char mstrDevHV[MCU_HARDVER_LEN];    unsigned char mstrDevSV[MCU_SOFTVER_LEN];    unsigned char mstrProductKey[PK_LEN];    unsigned char mstrPKSecret[PKS_LEN];    unsigned char mDevAttr[MCUATTR_LEN];    unsigned char mstrSdkVerLow[SDK_USER_VER_LEN];       //gagent 微信公众号ID,默认为机智云微信宠物屋ID            uint8 *szWechatDeviceType;       //gagent 默认连接服务器域名            uint8 *szGAgentSever;       //gagent 默认连接服务器端口,默认为80            uint32 *gagentSeverPort;       //gagent softap Name ,默认值:XPG-GAgent-xxxx(后面4位为MAC后4位)            uint8 *szGAgentSoftApName;       //gagent softap 密码 ,默认值:123456789,若内容为空则热点不加密;            uint8 *szGAgentSoftApPwd;       //m2m keepalive 默认值 120s            uint32 *m2mKeepAliveS;       //m2m 心跳间隔 默认值为 50s            uint32 *m2mHeartbeatIntervalS;       //gagent 时区秒,默认为东八区:8*(60*60)            int32 *timeZoneS;       //串口心跳间隔S,默认值 55秒            uint32 *localHeartbeatIntervalS;       //串口数据传送ACK时间,默认值600ms+数据长度耗时            uint32 *localTransferIntervalMS;};
  • 返回:无

2)gagentUploadData

  • 功能:上传数据到客户端
  • 函数定义:
    int32 gagentUploadData(uint8 szDID, uint8 src, uint32 len,uint8 flag, void *arg,gagentUploadDataCb fun )
  • 参数:
     uint8 *szDID	:要上传的数据对应的设备DID                (本平台[B-L475E-IOT01A2]szDID参数请设置为NULL) uint8 *src    :要上传数据的内容指针 uint32 len    :上传数据的大小 uint8 flag   	:1:数据大小循环通道都需要上传      		      0:数据只上传小循环                (本平台[B-L475E-IOT01A2]flag参数请设置为1) void *arg 	:上传数据回调函数的参数,不能为NULLgagentUploadDataCb fun :上传数据的结果回调函数
  • 返回:
    GAT_OK 0 成功
    GAT_ERR_FAIL -1 失败

    3)gagentGetNTP

    • 功能:获取NTP时间
    • 函数定义:void gagentGetNTP(_tm *time)
    • 参数:
      _tm *time       :保存获取的NTP时间的结构体指针typedef struct{    uint16 year;    uint8 month;    uint8 day;    uint8 hour;    uint8 minute;    uint8 second;    uint32 ntp;}_tm;
  • 返回:无

4)gagentReset

  • 功能:重置模组,会清除配置信息和解除用户与之间的关系,该函数会导致模组重启
  • 函数定义:void gagentReset(void)
  • 参数:无
  • 返回:无

5. 项目源码修改

5.1 打开工程文件(下面以IAR Embedded Workbench for ARM为例)

(1)安装好IAR Embedded Workbench for ARM 软件
(2)解压I-cube-gizwits固件包,打开路径 Gizwits_V1.1.1_Lib\Projects\B-L475E-IOT01\Applications\Cloud\Gizwits\EWARM 下的 Project.eww 文件

5.2 基本信息修改

(1)基本信息介绍:
Product Key :
定义:产品标识码,开发者通过机智云后台创建新产品后,自动生成的一个32位字符串。在机智云的数据库中是一个唯一的号码,开发者将ProductKey写入设备主控MCU后,机智云通过此标识码对设备进行识别并自动完成注册。

Product Secret :
定义:产品密钥,在生成Productkey的时候云端会对应生成一个Product Secret,该参数为关键性机密参数,不应向第三方泄露。

版本号:用来区分不同版本代码。

(2)获取项目基本信息
在机智云开发者平台中打开项目,点击左侧基本信息,从中可获得本项目的Product Key和Product Secret(需要输入登录密码获得);版本号由用户决定。

(3)源码相应修改位置
打开工程路径 Application\Common下文件gagent_iot_test_basic_connectivity.c 修改文件中的STR_PK和STR_PS相关参数,将从机智云平台获取的Product Key和Product Secret填入相应位置:

#define STR_PK     "plese replace your product PK"                    //find it on your Gizwits Platform Project#define STR_PS    "plese replace your product PS"                    //find it on your Gizwits Platform Project

程序提供了1byte用于版本号,版本号范围是1-255,程序中值是用十六进制表示的,所以填写时请按十六进制格式填写(01-FF):#define GIZ_VER        "01" //is your project version,you can change it.![@ST-I-CUBE-GIZWITS](/assets/zh-cn/deviceDev/STCUBEGIZWITS/14.jpg)

5.3 外设的驱动初始化代码添加

请在工程路径Application\Common下文件gagent_iot_test_basic_connectivity.c文件中
的userInit()函数中添加外设的驱动初始化相关代码

5.4 云端下发数据处理

(1)设备和云端通信协议
请在机智云开发者平台项目页面中点击开发向导,在MCU开发资源中下载《GizTest - 机智云WiFi类设备接入协议文档-SoC方案.pdf》

在文档中查看控制设备的相应指令协议格式,定义的数据点不同,生成的文档内容会不同,请以你生成的文档为准。

举例:例如收到的控制设备数据是:01 01 00
则action为01,是控制设备指令(不同指令action不同)
attr_flags为01,bit0为1,表示设置LED
attr_vals为00,bit0为0,表示设置LED的值为0,关闭LED

(2)源码相应修改位置
打开工程路径Application\Common下文件gagent_iot_test_basic_connectivity.c
在gizIssuedProcess ()函数中处理云端下发的数据,传入的数据格式跟协议中对应,请参照协议文档在函数中对action进行判断得到指令类型,然后进行相应处理。

5.5 上报云端状态事件处理

(1)设备主动上报当前状态

1)设备和云端通信协议

请在机智云开发者平台项目页面中点击开发向导,在MCU开发资源中下载《GizTest - 机智云WiFi类设备接入协议文档-SoC方案.pdf》,在文档中查看控制设备的相应指令协议格式,定义的数据点不同,生成的文档内容会不同,请以你生成的文档为准。

设备主动上报当前状态相关协议:

2)源代码修改位置

打开工程路径Application\Common下文件sensors_data.c,在PrepareMqttPayload ()函数中根据协议指令格式对当前状态的数据进行组包。

下图中按照前面的协议对数据进行了组包:

同时还需要根据组完包后PayloadBuffer数组的大小修改对应的初始化。

需要触发主动上报的情况:

  • 设备定时上报当前状态
  • 设备状态发生变化时主动上报(包括云端下发控制指令后设备状态变化)

a.设备定时上报代码相应修改位置:
打开工程路径Application\gagent_wrapper下文件ioftime.c,在timerEventHandler ()函数中可修改定时上报的周期,单位是ms
if(tick_count >= 10000) //修改后面的数值

b.设备状态发生变化时主动上报代码相应修改位置:
在需要触发主动上报的位置添加如下代码:

if(osThreadIsSuspended(SensorThreadHandler) == osOK){osThreadResume(SensorThreadHandler);}

(2)收到读取设备当前状态的指令后上报当前状态
1)设备和云端通信协议

请在机智云开发者平台项目页面中点击开发向导,在MCU开发资源中下载《GizTest - 机智云WiFi类设备接入协议文档-SoC方案.pdf》,在文档中查看控制设备的相应指令协议格式,定义的数据点不同,生成的文档内容会不同,请以你生成的文档为准。

读取设备当前状态相关协议:

2)源代码修改位置

打开工程路径Application\Common下文件gagent_iot_test_basic_connectivity.c,在gizIssuedProcess ()函数中需要对云端下发的数据进行判断,判断action是否为02,是则添加相应的代码触发数据上报:

if(osThreadIsSuspended(SensorThreadHandler) == osOK){Device_Passive_Report = 1;osThreadResume(SensorThreadHandler);}

![@ST-I-CUBE-GIZWITS](/assets/zh-cn/deviceDev/STCUBEGIZWITS/27.jpg)

5.6 程序编译和加载

(1)程序编译(下面以IAR Embedded Workbench for ARM为例)
可选择菜单栏 Project?Make ,或者点击工具栏对应图标开始编译

(2)程序加载
1)程序编译完成后,在路径
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盘,表示文件加载完成。

5.7 WIFI信息配置

(1)设置波特率
使用串口工具(可以用SecureCRT)打开设备串口(串口号在设备管理器中查看),波特率为115200

(2)进入WIFI信息配置模式方式:
1)按下开发板上的RESET按键,如果没有配置过WIFI信息,则自动进入配置模式
2)按下开发板上的RESET按键,如果配置过WIFI信息,则在按下RESET按键后的5s内按下开发板上的USER按键进入配置模式

(3)信息配置
进入配置模式后开发板会打印如下信息

1)输入: y ,会请求输入SSID(WIFI名称)

2)输入SSID,按回车键(注意:这里输入SSID的时候是没有显示的,输入完成回车后才会显示SSID信息)

3)输入WIFI模式,根据路由器的配置来选择,如果WIFI没有密码,则输入0,如果WIFI有密码但不知道是哪一种模式,则输入3(如果后面无法连接上则要去查看路由器的配置)

4)输入WIFI密码,按回车键,WIFI信息配置完成,开发板会尝试连接WIFI

5)如果连接上WIFI,开发板会正常运行打印其它信息,如果无法连接上WIFI,请检查输入的WIFI信息是否有错误

5.8 上线情况以及日志查看

设备运行后,可在机智云开发者平台对应项目中设备日志中查看,点击查看可浏览通信日志、上下线记录、运行记录

5.9 APP控制设备

从机智云下载中心下载机智云串口调试助手绑定设备

打开机智云串口调试助手,点击下方“小工具”,然后选择上方的”二维码生成”,输入项目的Product Key和设备的MAC,点击“获取二维码”。


从下载中心下载机智云调试APP,安装,打开APP

点击左上角“我的设备”,扫描生成的二维码,扫描完成列表会显示相应的设备,点击设备就可以进入设备控制界面
 

6. OTA升级流程

6.1 生成OTA升级固件

请将新版本程序编译(记得修改版本号,修改方式请查看前文,需大于待升级设备的版本号),生成Project.bin文件(以IAR Embedded Workbench for ARM为例,文件在Gizwits_V1.1.1_Lib\Projects\B-L475E-IOT01\Applications\Cloud\Gizwits\EWARM \B-L475E-IOT01\Exe目录下)

6.2 固件命名规则

GAgent命名是有固定标准的,名称由GAgent、硬件版本名称、软件版本、发布日期、特殊标记信息三部分组成。

举例:
GAgent_00BL01A2_04030002_18090510.bin
GAgent:固定的字段,不用修改;
00BL01A2:硬件版本名称,B-L475E-IOT01A2开发板统一使用00BL01A2,不用修改;
04030002:软件版本,用户需要根据程序中的版本号修改最后两位,前面040300不用修改;
18090510:发布日期,18年09月05日10点,用户根据实际时间修改;

如果需要对估计做特殊标记,可以添加在最后,举例:
GAgent_00BL01A2_04030002_18090510_UART.bin
请用户对Project.bin文件按命名规则修改名称

6.3 上传固件到开发者平台

登录机智云开发者平台,进入对应项目,点击左侧“固件升级(OTA)”,然后点击中间的创建新固件

填写固件信息,下图中的版本名称用户可以自定,可以方便用户区别不同版本就行,硬件版本号和软件版本号按实际填写,其它信息按默认的就行,然后上传固件,然后点击“完成 ”。如果想了解关于固件升级的一些事项,可以点击下图中右上角的“查看固件升级FAQ”

完成固件上传和信息填写后,会进入固件验证界面,请用户核对固件信息是否填写有误,如需修改或删除,可以点击右侧选项,核对信息无误后,需进行固件验证。(需使用一台设备用户固件验证,设备要能够正常上线)

点击“验证固件”,会出现如下界面,请填写用于验证的设备对应的MAC地址(可在设备日志中查看,如果填写错误会导致最后验证失败),然后点击“推送”。

进入验证固件界面,请用户耐心等待。

如果固件验证成功,会出现如下界面,请打勾后点击“完成”

如果固件验证失败,会出现如下界面

固件验证成功后,可以进行正式推送,推送前需要设置推送的规则

推送可按指定地区推送或指定MAC推送,设置好推送方式后,请设置推送的周期,然后点击“保存”

保存后在相应的规则会出现在固件推送页面下方,点击“开始推送”,开始推送固件给指定的地区或指定的MAC

如果需要在推送过程中停止推送,请点击“停止推送”
可以点击“手动刷新”来查看目前已推送成功的设备数量

FAQ

问题:加载新的程序,上电后运行的还是之前的程序
解决步骤:
(1)下载安装STM32 ST-LINK Utility软件

(2)将开发板用Micro USB线接入电脑,点击下图红框中的图标,连接设备

(3)点击菜单栏 Target Option Bytes,打开Option Bytes设置页面,查看BFB2一项后面是否有打勾,如果有打勾,则把勾去掉,然后点击 Apply。

(4)点击下图红框中的图标,断开STM32 ST-LINK Utility软件与设备的连接,然后重启开发板

原文地址:https://www.cnblogs.com/dapangsen/p/11188291.html

时间: 2024-11-05 04:09:34

ST I-CUBE-GizWits套件快速接入指南的相关文章

如何让微信小程序快速接入七牛云

如果你确定用七牛运行小程序的话,给大家分享一个九折优惠码:61d1fd4d1 月 9 日 微信小程序正式发布,小程序终于揭开了它神秘的面纱,开发者对小程序的追捧更是热度不减.从小程序的热门应用场景来看,大概可以分为两大类,一类是低使用频率的 App,如金融类的银行或保险公司 App,O2O 类的上门做饭.家政 App:另一类是虽然使用频率高但是功能简单的 App,如工具类的天气.快递查询,富媒体类的资讯 App 等.那么,谁将成为小程序的大赢家?要打造独角兽级别的微信小程序,开发者除了要注重小程

微信Android接入指南

注:本文为微信Android终端开发工具的新手使用教程,只涉及教授SDK的使用方法,默认读者已经熟悉IDE的基本使用方法(本文以Eclipse为例),以及具有一定的编程知识基础等. 1.申请你的AppID 请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将该应用提交审核,只有审核通过的应用才能进行开发. 2.下载微信终端开发工具包 开发工具包主要包含3部分内容:(其中,只有libammsdk.jar是必须的) - libammsdk.jar(每个第三方应用必须要导入该sdk库,

JWPlayer快速入门指南(中文)

将JW Player嵌入到网页中非常的简单,只需要进行如下3个步骤: 1.解压mediaplayer-viral.zip文件,将jwplayer.js和player.swf文件拷贝到工程中: 2.在页面引入jwplayer.js文件: <script type="text/javascript" src="/jwplayer/jwplayer.js"></script> 3.将下面代码粘贴在body标签内,如下所示: <div id=&

C#微信公众号开发系列教程二(新手接入指南)

http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流程是这样的,用户发送消息到微信服务器,微

在ASP.NET MVC5应用程序中快速接入QQ和新浪微博OAuth

这篇文章演示如何在你的ASP.NET MVC5应用程序中支持用户使用腾讯QQ和新浪微博的open authentication. 起步 安装Visual studio 2013 higher或者Visual studio express 2013 for web就不再赘述了,点击这里下载. 创建应用程序 打开vs,在Template中选择C#->asp.net web application ,命名为OauthDemo,并点击OK 在弹出窗口中选择MVC template,并且选择"Cha

快速接入PHP微信支付

微信支付是微信开发中坑最多的一个功能,本文旨在帮助有开发基础的人快速接入微信支付,如果要详细了解微信支付,请看微信支付的开发文档. 再说把开发文档搬到这里来就没必要了.想要快速跑通微信支付的可以继续查看. 微信支付分公众号支付(在微信里的网页用微信支付).PC版扫码支付(扫码有两种模式).APP微信支付,当初做这三种支付,还没有很多人做, 没有资料,虽然官方提供了demo,但是出现各种问题跑不通,对着文档做, 遇到各种你想不到的坑,简直要哭,说多了都是泪.... 这里介绍一下公众号支付的流程:

20160170002 微信公众平台开发接入指南

参考地址: http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html 接入指南 目录 1 概述 2 第一步:填写服务器配置 3 第二步:验证服务器地址的有效性 4 第三步:依据接口文档实现业务逻辑 概述 接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 下面详细介绍这3个步骤. 第一步:填写服务器配置 登录微信公众平台官网后,在公众平台

Chapter 0.SymmetricDS快速入门指南( Quick Start Guide)

本文档是SymmetricDS3.6.14文档的第一章节Quick Start Guide文档的翻译,的目的是帮助读者快速搭建一个SymmetricDS集群并普及一些基本概念术语. 本文档描述了如何在两个SymmetricDS节点之间同步两个相同schema的数据库.下面的例子构建了一个分销业务模型,有一个中央数据库(我们叫它root或者corp节点)和多个零售商店的数据库(我们叫它client或者store节点).对于本教程,我们将只有一个store(商店)节点,如下图.如果你愿意,可以再教程

Redmine与Zentao同机快速部署指南

Redmine与Zentao 同机快速部署指南 1.环境 系统:CentOS 7 x64 软件:Redmine 3.0.Zentao 7.2 Source Redmine 3.0 是先安装的,目录 /opt/redmine,访问地址 http://127.0.0.1/redmine Zentao 7.2 是后安装的,目标访问地址 http://127.0.0.1/zentao 2.已知 Redmine与zentao 都依赖 apache mysql, apache 监听端口为 80 8080 s