氦氪云入门教程01-拿到氦氪WiFi模块之后应该怎样开始玩?-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4953|回复: 0

氦氪云入门教程01-拿到氦氪WiFi模块之后应该怎样开始玩?

[复制链接]
发表于 2017-8-3 08:29 | 显示全部楼层 |阅读模式
注意:如果你拿到的模块在配网之后,发现设备控制页面和本教程不一样,请参考新版氦氪通用演示产品使用说明书

氦氪WiFi模块发货的时候,里面都会默认写入一个产品的PK,这个产品就是氦氪通用演示。这个产品的功能很简单,就是给大家演示使用氦氪云平台收发数据,在其页面上可以动态的改写通信协议,根据通信协议生成页面组件。开发者只需要根据通信协议写MCU端的代码,就可以完成一个简单的物联网作品了。

准备工作:
1.根据氦氪模块硬件说明文档接线,本实验是将模块的串口接到USB转串口模块,然后在PC端上使用串口助手做收发数据测试。文档中提到的外接WiFi指示灯和按钮是可选的,因为在我们模块上就有一颗LED是做为WiFi指示灯用的,外接按钮的作用是触发模块进入配网模式,可以使用串口下发指令48 07 FE 00 04 00 51让模块进入配网模式。
2.下载氦氪的官方APP 丛云,注册账号,登录APP。
3.模块上电之后,会自动进入WiFi指示灯两秒闪一次的配网状态,然后在APP上添加设备(根据UI上的提示做就可以,具体步骤在此省略)。
4.设备添加成功之后,会在设备列表页出现一个名为“开发板”的设备,点击该图标进入设备控制页面。
000522ycg08b02h37l2cdl.png

002034ep8o5d22rr8n5sz7.jpg

在console平台氦氪通用演示的产品协议页面如下图所示:
002132m4em4mu4ukj43bnm.png

为了通用化,我们设计了4个4字节无符号整数作为参数,这样我们就有了16个字节可以作为业务数据,命令我们只设计了两种,一种是表示设备上报数据,另外一种是表示APP下发数据。在设计产品协议的时候,比照面向对象的程序设计方法,参数就相当于对象的属性,而命令就相当于对象的方法,这里的方法又分为两大类,一类是设备主动发起的,即帧类型为上报帧 ,另一类是APP主动发起的,即帧类型为下发帧。
默认的控制页面对应的通信协议如下图所示:
004313ei7ass47sq46ss67.png

在页面底部的导航栏点击“编辑”可以进入协议编辑页面,在这个页面可以清楚的看到业务数据中每个字节对应的功能和在“演示”页面中显示的标识名称,在这个页面可以添加和删除"状态"和“操作”,点击每行最后面的那个红色图标即可将本行内容删除。添加和删除"状态"和“操作”之后必须点击页面右上角的“对号”图标使修改生效。
005149aux7qmrqmuq5tzqt.jpg

010218h0qrrn0xs14nno0s.jpg

010242qsx6qzqy60lvys6p.jpg

010248bpmckq0lm6p80q2t.jpg

这里的“命令”指的是协议帧中的第6个字节里的值,取值范围是1~255,“指令”/“指令位”的取值范围是7~21。
当“命令”的值为“00”时,代表设备上报当前状态,或者APP查询设备的当前状态,不用在这里手动设定。

操作组件类型及取值:
非回弹式按钮:01:打开开关,02:关闭开关,00:保持不变
回弹式按钮:01:按钮触发,00:保持不变
档位调节式按钮:01:档位1,02:档位2,03:档位3,00:保持不变
滑动条:[0x01,0x64]表示1%-100%,00:保持不变,调节精度为1%

在页面底部的导航栏点击“调试”可以进入串口数据透传收发页面,在“下发”编辑栏中填写业务数据即可,不用填写整个协议帧。点击“下发”这行后面的红色图标可以清空该行编辑框中的内容,点击红色图标后面的蓝色圆圈图标会将编辑框中的数据发送给设备;点击“上传”这行后面的红色图标可以清空该行编辑框中的内容,点击红色图标后面的蓝色圆圈图标会显示或隐藏下面的数据收发记录。
134336j2e2rv8t8nxrvp8z.jpg

实际操作示例:
使用串口助手时需要设置 16进制显示 和 16进制发送。
022044zzk9gzeet5ycjaej.png

进入设备控制页面:
此时控制页面会下发一个设备当前状态查询帧,即协议帧的第6个字节为00。
设备收到:48 16 02 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63
设备应答:48 16 02 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63
设备上报当前状态(见备注1示例)

点击开关1:
设备收到:48 16 02 02 02 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 66
设备应答:48 16 02 02 02 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 66
设备上报当前状态(见备注1示例)

点击开关2:
设备收到:48 16 02 03 02 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 68
设备应答:48 16 02 03 02 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 68
设备上报当前状态(见备注1示例)

调节档位到“中”档:
设备收到:48 16 02 04 02 04 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 6C
设备应答:48 16 02 04 02 04 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 6C
设备上报当前状态(见备注1示例)

将滑动条拖到50%的位置:
设备收到:48 16 02 1A 02 03 00 00 32 00 00 00 00 00 00 00 00 00 00 00 00 B1
设备应答:48 16 02 1A 02 03 00 00 32 00 00 00 00 00 00 00 00 00 00 00 00 B1
设备上报当前状态(见备注1示例)

备注1:
设备上报当前状态示例:
PM2.5 150,温度 26,湿度50,开关1 开,档位 高,滑动条 50%
设备发送:48 16 01 01 01 00 01 00 32 03 96 1A 32 00 00 00 00 00 00 00 00 79

模块应答:48 16 01 01 01 00 01 00 32 03 96 1A 32 00 00 00 00 00 00 00 00 79
023520adfn4fd6a2ezn2da.jpg

PM2.5 200,温度 20,湿度50,开关1 关,档位 中,滑动条 80%
设备发送:48 16 01 01 01 00 02 00 50 02 C8 14 32 00 00 00 00 00 00 00 00 C3
模块应答:48 16 01 01 01 00 02 00 50 02 C8 14 32 00 00 00 00 00 00 00 00 C3
023527cjcjrgfryk1rjkgw.jpg

如果设备没应答,页面会提示“sendCMD no response!”。如果使用氦氪提供的MCU SDK,设备应答帧是由SDK自动处理的,不需要开发者手动应答,开发者只需要根据收到的业务数据操作设备并将操作完毕后的设备状态上报就可以了。

MCU和WiFi模块之间维护一套自增的帧序号,WiFi模块和APP之间维护另外一套自增的帧序号,所以从APP下发的一帧数据,在MCU上看到的帧序号和APP下发的可能是不一致的,但是有效数据是一致的,因为MCU和WiFi模块之间是一上电就开始有数据收发了,APP每次打开,没法知道MCU当前的帧序号,所以就从帧序号0开始发,这时WiFi模块如果直接转发数据给MCU,MCU就会疑惑,帧序号为何又从0开始了。

备注:
1.如果你模块里的PK已经被写成其他值了,但是想再次使用这个氦氪通用演示产品,请透过串口发送如下的PK设置帧给模块:
48 16 FE 01 21 01 C5 16 D9 7A 01 C8 CC C8 D1 0B EE FD 0B DC 9E 56
重写PK之后,请在丛云APP里将PK为旧值的设备删掉,然后使设备进入配网模式,重新在丛云APP里添加设备。
2.没有氦氪WiFi模块的小伙伴们,可以根据以下四份资料自己编写Esp8266的固件或其他模块的固件连接我们的云端。
氦氪云联网功能组件
设备云端通信协议
氦氪HEKR模块串口透传协议
氦氪4.x嵌入式SDK应用手册
3.氦氪WiFi模块购买链接:
https://shop166015703.taobao.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 00:14 , Processed in 0.106323 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表