1. 开发GoKit 1.1. 开发过程(思路) 1) 了解GoKit - 了解GoKit能够支持的硬件功能 2) 定义新产品 - 基于这些硬件功能设计一个简单产品 3) 选择产品模板 - 选择一个已有的类似产品作为模板快速定义产品 4) 调整产品参数 - 5) 生成MCU协议与示例代码 - 产品数据点保存后,立即生成完成的MCU 6) 生成虚拟设备 - 如果您没有GoKit开发板,不需要再做任何的MCU开发,你所设计的产品功能 7) GoKit工程与调试 - 在您创建的GoKit工程中,添加示例代码,MCU包,您只需完成对IO口的操作即可 8) 协议细节 - 当然,如果您想详细了解MCU1.2. 了解GoKit GoKit能够提供的硬件功能为: 1) 一颗STM32F103C8T6芯片,LPFQ封装,提供JTAG 2) 一个红外探测器,可以探测是否有阻挡; 3) 一个R、G、B可编程全彩LED灯; 4) 一个可编程电机; 5) 一个温湿度传感器; 6) LED 颜色等; 此外,GoKit提供USBMCU 1.3. 定义新产品 基于GoKit我们设计这款产品 1) LED亮红色,当小狗连续一个小时不在屋
2)当温度达到或者超过度的时候,打开宠物屋的排风扇(电机),当温度降到28以下的时候,关闭 ; 比如儿童玩具之类的。 功能如下: 1.4. 选择产品模板
我们选择GoKit开发模板,会自动出现已经定义好的数据点,如下图所示:
GizWits文档 技术指导说明书
1.5. 调整产品参数
1) LED的颜色R值(红色) 2) LED的颜色G值(绿色) 3) 环境温度 4) 电机转速 5) 红外探测
如下图所示:
GizWits文档 技术指导说明书 五个属性分别可以进行更详细的编辑: 1) LED的R值(红色),用RGB表示发,一共有0-254种红色(数据范围为0-254),所以,我们用一个 字节就可以描述(数据类型为uint8),这个属性是可以设定也可以读取的(读写类型为可写),由 于没有负数,也没有浮点,MCU可以直接用一个字节描述这个属性,所以不需要做修正,所以分辨 率为1,增量为0; 2) LED的G值定义同上; 3) 环境属性,我们定义温度范围为0-50度,用一个字节可以表示(数据类型是数据,uint8),这个属 性仅能读取,不能设置(读写属性是只读),同样不需要修正(k=1,m=0); 4) 红外探测属性,可以探测是否有阻挡(是一个布尔类型); 5) 电机转速我们定义范围0-1000,0表示停止,用两个字节描述,不用修正; 1.6. 生成MCU协议 数据点保存后,会生成如下的MCU协议,协议在下文有详细解释: FF FF 00 05 01 01 00 00 07 30 30 35 32 38 37 36 64 01 2C CA
FF FF 00 06 03 02 00 00 02 0d
FF FF 00 05 04 04 00 00 0d
GoKit开发板,您也可以使用虚拟设
1.8. GoKit工程与调试 准的MCU 通过这些协议,可以方便的管理MCU中对响应IO口进行操作即可。 1.9. 协议细节 1.9.1. WIFI基本信息 完整协议包:拆分: 01 01 00 00 07
MCU给WIFI模块返回基本信息: 完整协议包:FF FF 00 47 02 01 00 00 30 30 30 30 30 30 30 34 30 30 30 30 30 30 30 32 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 31 64 36 39 61 66 35 39 65 33 38 63 37 31 31 65 34 61 32 39 64 35 32 35 34 30 30 35 32 38 37 36 64 01 2C CA 5个字节 要获取mcu基本信息的命令 标志位,保持0即可 校验值,从长度到校验和前的字节相加值 第7/11页
GizWits文档 技术指导说明书 拆分: FF FF 00 47 01 01 00 00 包头 长度,表示后面有71个字节(47为16进制) mcu给wifi返回基本信息的命令 序列号,需要和上述wifi的查询包中的sn相同 标志位,保持0即可 机智云协议版本号 P0协议版本号 MCU硬件版本号 MCU软件版本号 30 30 30 30 30 30 30 34 30 30 30 30 30 30 30 32 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 31
产品的product_key 绑定超时时间 校验值,从长度到校验和前的字节相加值 01 2C CA 1.9.2. WIFI读取MCU属性 完整的协议包:FF FF 00 06 03 02 00 00 02 0d 拆分: FF FF 00 06 03 02 00 00 02 0d
MCU返回当前属性值 完整的协议包:拆分: FF FF 00 10 04 02 03 55 aa 80 00 01 23 BC mcu向wifi 序列号 0即可 wifi的查询状态命令 的R值 的G值 电机转速 红外探测结果(最低位一位表示红外探测结果,0:探测无,1:探测有) 温度值 校验值,从长度到校验和前的字节相加值 包头 长度,后面有6个字节 wifi向mcu发送数据的命令 序列号 标志位,保持0即可 查询状态命令 1.9.3. 设定LED的R值 完整的协议包:FF FF 00 0d 03 04 00 00 01 01 CC AA 00 00 00 00 8C 第8/11页
GizWits文档 技术指导说明书 拆分: FF FF 00 0d 03 04 00 00 01 01 8C 说明: 1) wifi给mcu发送控制指令时,会含有mcu所有的属性信息,这个属性信息和mcu给格式以及顺序完全相同(在定义产品的时候就确定了),wifi用位表示,最右为第01,表示要控制该属性; 2) 本产品中,可以控制的属性依次有:LED R值、LED G3) 可以单独控制一个属性,比如单独设定LED R值,此时为 ; 4) 也可以一次控制多个属性,比如同事设定LED R值和G030000 0011; 5) 或者同时设定LED R值、G值以及电机转速,此时为0x070000 0111; 6) 3个可写属性,一个字节即可表示, 若定义9个可写属性,则自动用2
MCU收到控制命令后的响应 完整的数据包:拆分: FF FF 00 05 04 04 00 00 0d 包头 长度 mcu响应序号,与sn相同 即可 包头 长度 wifi向mcu发送数据的命令 序号 标志位,保持0即可 控制类命令 控制属性标志组合,01表示第一个属性值有效 属性数据 校验值,从长度到校验和前的字节相加值 CC AA 00 00 00 00 设定LEDFF FF 00 0d 03 04 00 00 01 02 8D wifi向mcu发送数据的命令 序号 标志位,保持0即可 控制类命令 控制属性标志组合,02表示第二个属性值有效 属性数据 校验值,从长度到校验和前的字节相加值 CC AA 00 00 00 00 第9/11页
GizWits文档 技术指导说明书 MCU收到控制命令后的响应 同上 1.9.5. 设定电机转速 完整的协议包:FF FF 00 0d 03 04 00 00 01 03 00 00 00 10 00 00 28 拆分: FF FF 00 0d 03 04 00 00 01 03 28
MCU收到控制命令后的响应 同上 包头 长度 wifi向mcu发送数据的命令 序号 标志位,保持0即可 控制类命令 控制属性标志组合,03表示第三个属性值有效 属性数据 校验值,从长度到校验和前的字节相加值 00 00 01 00 00 00 1.9.6. MCU主动上报状态 完整的协议包:拆分: FF FF 00 0C 05 01 00 00 04 A4
WIFI FF FF 00 05 06 01 00 00 0c
wifi响应mcu的数据命令 序号,和mcu发出的数据包中sn相同 标志位,保持0即可 校验码 包头 长度 mcu主动给wifi 序号 即可mcu 第10/11页
GizWits文档 技术指导说明书 2. 以GoKit为例,开发新产品 如果您想做自己的更复杂的产品,可以仿照小狗宠物屋的方法,先确定产品功能,再依靠某个模板建立数据模型,然后用虚拟设备或者实体设备进行调试,协议和宠物屋类似;只要您定义清楚了设备,就自动生成了虚拟设备和测试APP,并且可以连接M2M平台进行调试;当然如果您有硬件并且试用了我们Gagent模块,马上就可以用SDK以及demo App进行实体设备的配置、发现、大小循环控制。
|