建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

lando

发帖: 14粉丝: 3

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2019-8-13 21:48:13 1913 2 楼主 显示全部楼层
[干货分享] 之四-呕血制作-Lettuce IOT框架-移远BC35G+树莓派+华为OC+SpringBoot后台+微信小程序

上一篇主要讲的是华为OceanConnect平台profile文件与编解码插件的开发与调试而这一篇将要讲如何使用window电脑调试NB-IoT移远BC35G模组。

 

移远BC35G模组的初次使用




移远BC35G模组,你可以看成是电脑的网卡。因为有了他,设备才能对外通信。NB-IoT的通信模组有很多种类,这里主要使用移远BC35G模组进行演示。

 

在演示一起,我们先看一下NB-IoT的工作原理。

 

 

每一个NB-IoT模组在使用AT指令入网了以后,都会得到一个运营商核心网分配的动态IP地址,而NB-IoT模组也会使用AT指令设置IOT平台的IP地址,当入网以后,NB-IoT模组就会向设置的IOT平台的IP地址发送登录请求,并且携带自己的动态IP地址,待IOT平台鉴权以后,便回复NB-IoT模组登录成功,这时双向通信就连接好了。

 

说到这里,必须要讲一个很重要的知识点。

都说NB-IoT是低耗能,一节电池用十年。那他是怎么保证低耗能的呢,这就要说到NB-IoT的两种模式了,PSM 状态/eDRX 功能。这里不说大的概念,就用例子来说明。

 

PSM 状态

老道士闭关修炼,他的弟子们有好多问题要请教老道士。但是无法确定老道士是否已经完成闭关了,不能打扰他。所以这些弟子就在这里等啊等,直到老道士跟弟子们说,“我完事了”,这些弟子才络绎不绝的跟老道士问问题。

 

NB-IoT进入PSM 状态时,平台给设备发送的指令只能属于等待阶段,直到NB-IoT模组向平台上报数据时,平台将缓存的所有指令下发。这种模式适合于实时性不高的设备,比如智能电表。


eDRX功能

自从上次闭关修炼出来以后,弟子们问了老道士3天3夜的问题。老道士想,不能这样的,这闭关一次积累的问题也太多了。于是老道士想出一个办法。他每隔一个周期闭关出来一次,给弟子们解答问题,然后再回去继续闭关。

 

NB-IoT想要开启eDRX功能,需要设置周期,多长时间以后唤醒一次,再隔多长时间以后继续进入PSM模式。这个模式较PSM模式实时性高的许多,但是命令上传还是要看设置的周期。

 

还有DRX模式,与eDRX类似。这些低功耗模式具体要看运营商支不支持。并不是NB-IoT模组内部控制的。

 

我们这个演示就将PSM 状态和eDRX功能全部关闭,以保证高实时性。

 

基础理论普及完成以后,我们开始激动人心的动手实践环节了

 

首先你要拿到的准备好的移远BC35G模块,还有用于连接电脑USB的USB-TTL,还有一张NB-IOT的物联网专用卡。(有些地区没有覆盖NB网络,请使用前与当地运营商询问一下。我是在苏州用的电信的NB卡,测试没有问题的。联通也有NB卡,据说移动拿普通手机卡就可以接入NB网络,但是没有试过)

然后还有向移远BC35G模块的商家索要驱动,安装在电脑上。还需要准备串口助手SSCOM,请自行下载,我用的是5.13.1的版本。

 

接下来我们将物联网卡插到模块中


 

然后确定天线是连接好的。



然后将杜邦线连接到有RXT,TXD,GND,VIN针脚的一侧。



而杜邦线的另一半要连接USB-TTL的针脚上,请注意对应连接!!!


高电平对应高电平,低电平对应低电平,输出对应输入,输入对应输出。

如果你的驱动安好了,就可以直接将USB插到电脑上了。

插上以后,模块亮红灯,标识电源已联通。打开串口助手。


在端口号这里出现COM3 XXX的表示,USB已经连接成功。如果没有,请检查安装的驱动,以及USB-TTL。


因为每个人,每个电脑不一样,操作系统不一样,操作习惯等等都不同。很容易某些人就出现了问题。在这里我不能给你们出现的问题一一列举,我只能告诉我一个开发多年的经验。首先遇到问题要先冷醒,先按步骤逐一排查一遍。确定没有因马虎或者以前的习惯犯的错误。(这个概率非常高,作者回忆10有8,9都是因为这个而出的问题)。如果确定不是这个原因,那就要分析一下也许是哪个环节出现的问题。首先,我们要排除某些环节,这些环节不可能会导致这个错误,就拿刚才的这个举例子。可能有些同学就在想是不是通信模组出现了问题,比如NB卡不行,或者杜邦线连错了。其实“通信模组出现了问题”这是刚开始就要先排除的环节,因为你想一下,电脑现在是跟USB-TTL进行连接,在这个环节中USB-TTL与通信模块还没有建立数据交互,因此这个环节可以先排除。那么就剩下USB-TTL,驱动,串口助手的问题了。USB-TTL也先排除掉,因为如果我们假设USB-TTL有问题,那整个排错流程就都OUT了,所以我们要先假设它是正常的。那么就剩驱动,串口助手。驱动,这个好排查,第一插到USB到电脑时,是否和平时插U盘的声音一样,那个声音就是串口连接正常的声音。如果跟平时插U盘的声音不一样,那就是驱动的问题。如果听不出来,也可以到设备管理器中看有没有串口处有感叹号的,这都是连接不正常的标识。如果没有声音,或者设备管理器**和没插没有反应,那一定是USB-TTL有问题了。如果都没问题,那就看看串口助手版本,权限等等有没有问题。

如果确定了问题的根源,我们就好百度,或者在群里求助了。

如果没还没找到问题,就检查排除过的环节。

如果没还没找到问题,不妨干点别的,散散心。过一会回来,重新整理一下流程,思路会更清晰。

 

如果出现了com xx这个端口,那么选择这个端口,波特率选择9600,然后打开串口。


如果是这个样子的,就OK了

接下发发送AT

测试与通信模块交互是否正常。


如果返回OK,说明正常。


如果没有返回,或者显示正在打开串口,那说明杜邦线连接的不正常,检查杜邦线的连接情况。

接下来,我要讲一下AT指令。

AT指令用于通信交互的指令,说白了就是你跟通信模块说AT指令它听得懂。说编程语言它也无可奈何。


 

比如我们刚才执行的AT就是执行指令无参数类型,后面实践起来就会明白。

 

来我们实践一下

首先我们先查询一下这个模组的IMEI号

AT+CGSN=1

执行这个执行指令有参数的类别


这样就说明执行成功了。

 

接下来我们去华为OC平台

在在线调测中添加一个真实物理设备,名称随意,标识就是刚才返回的那个模组的IMEI号,选择不加密。

QQ截图20190814183555.png

然后就会进到一个类似我们之前使用虚拟设备调试时的界面,这个界面先放着,之后会用到。

 

好了,现在我们开始入网操作了。

首先看一下模组厂商给的操作文档。

这个就是厂商推荐的入网流程,我们就按这个流程一步一步走。

AT+NCONFIG=AUTOCONNECT,FALSE

返回OK

我们要设置华为OC平台的地址进去,这个地址请在华为OC平台中的对接信息里找。

 

选择那个Coap的服务器地址(Coaps是Coap的加密协议,我们这个演示没有加密。)

AT+NCDP=IP,端口号

例:AT+NCDP=49.4.12.13,5683

返回OK

AT+NRB

这时看到一堆乱码

返回OK就是重启成功

AT+NCDP?

如果返回刚才设定的一样的地址,说明设置成功

AT+NBAND=?

我的是返回+NBAND:(1,3,5,8,20,28)

其中中国电信是5,移动/联通 8。

AT+NBAND=5

返回OK

AT+CFUN=1

这个可能反应有些慢要等2-3秒

返回OK

关闭PSM

AT+CPSMS=0

关闭eDRX

AT+CEDRXS=0,5

都返回OK

AT+CGATT=1

返回OK

AT+CGATT?

返回CGATT:0表示没有网络附着

返回CGATT:1表示已经网络附着

这个比较慢,要等一会。作者也是不停的查询,不一会就为1了。

+QLWEVTIND:3表示与华为OC平台已经连接上了。

然后我们进入华为OC平台刚才添加真实物理设备的那个页面

可以看到消息跟踪里有消息滚出。

这说明我们的模组已经成功和华为OC平台连接上了!

 

如果5分钟以后,仍然入网失败的话:

入网失败的解决方案

AT+NRB

重启模组

AT+CFUN=0

关闭射频

AT+NCSEARFCN

清除这次选择的频点(就是换个地方重新入网)

AT+CFUN=1

开启射频

AT+CGATT=1

开启网络附着

AT+CGATT?

查询网络附着

 

如果循环尝试了多次仍然无法入网,那就考虑一下当前地区是不是没有NB网络覆盖。

 

连接OC平台成功以后,我们就可以尝试发送信息过去了。

 

在这之前,我们还需要设置2个参数

AT+CMEE=1

这个设置是当终端出现问题时自动上报(自动上报可以理解为控制台打印出来)

AT+NNMI=1

这个设置是当华为OC平台发送消息过来时,可以自动上报。

现在我们使用设备发送消息给华为OC平台

发送消息的格式为

AT+NMGS=数据长度,内容

例AT+NMGS=02,0001

还记得我们上节课使用虚拟设备调试吗,当时有个十六进制码流的位置,输入我们想数据上报的信息。

 

没错,这个信息就是我们用AT+NMGS发送的信息

首先0001,长度为2个字节

那就是2,0001

运行AT+NMGS=02,0001就是设备向平台上报灯的当前状态信息。0001怎么来的,请看上一节课的讲解,这里不再赘述。

现在发送


在华为OC平台可以看到

平台已经接收到了数据。

如果有同学出现了513,那就20秒以后重试一下,如果重试3次都出现问题,请按上面的“入网失败的解决方案”重试以后再尝试发送。

 

现在,平台下发开灯指令下去

 

可以看到


已经有数据上来了

如果没有数据上来请看一下命令状态是不是已送达


新消息标识是否设置为自动上报

AT+NNMI=1

 

接下来我们给这个命令回复响应

执行AT+NMGS=5,02004C0001

注意长度和mid,这里看不明白的请移步上一节课。

华为OC平台上返回

OK,移远BC35G模块就调测完成了。

 

最后还有一点很重要!

就是模组在断电时要释放RRC(RRC是运营商核心网与模组的连接)

AT+QLWULDATAEX=3,AA34BB,0x0001

并且关闭射频,保存今天入网的频点

AT+CFUN=0

建议执行完关闭射频以后20秒再给模组断电。

 

下一章节将讲解树莓派与移远BC35G模组的初始环境设置,及使用树莓派连接移远BC35G模组后与华为OC平台进行数据交互。

欢迎加入我们的QQ群一起讨论IOT的问题。

 


NB-IoT

举报
分享

分享文章到朋友圈

分享文章到微博

寻水的鱼

发帖: 92粉丝: 19

级别 : 管理员

Rank: 9Rank: 9Rank: 9

发消息 + 关注

发表于2019-8-14 09:17:24 沙发 显示全部楼层

您好!文中图片显示异常,建议将第三方图片存本地再插图编辑一次,谢谢!

点赞 引用 举报

lando

发帖: 14粉丝: 3

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2019-8-14 12:28:24 板凳 显示全部楼层
寻水的鱼 发表于 2019-8-14 09:17 您好!文中图片显示异常,建议将第三方图片存本地再插图编辑一次,谢谢!

好的,马上去办

评论
寻水的鱼 2019-8-15 09:26 评论

图片已经可以看到了,点赞!!

... 查看全部
点赞 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册