失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > NBIOT模块bc20与GPS模块AT1218数据上阿里云物联网平台

NBIOT模块bc20与GPS模块AT1218数据上阿里云物联网平台

时间:2022-09-16 11:55:36

相关推荐

NBIOT模块bc20与GPS模块AT1218数据上阿里云物联网平台

本文章主要实现将GPS模块收集到的经纬度信息上传到阿里云物联网云平台上中,使用NBIOT技术,其通讯模块是移远公司推出的BC20模块,GPS模块是正点原子推出的1218系列模块。 (NBIOT技术和4G和WiFi技术的区别)

BC20模块手册

1218模块手册

实现数据上传到云平台,这里有两种方式,一一讲解:

数据上传之前

一、AT指令实现

1、连接阿里云所需的配置

AT+QMTCFG="aliauth",<TCP_connectID>[,<product_key>,<device_name>,<device_secret>]

product_key:阿里云产品密钥。最大长度64。

device_name:阿里云设备名称。最大长度64。

device_secret:阿里云设备凭证。最大长度64。

AT+QMTCFG="aliauth","0","product_key","device_name","device_secret"

2、打开tcp通道

AT+QMTOPEN=<TCP_connectID>,<host_name>,<port>、

host_name:MQTT服务器地址,可以是IP或域名,最大长度150。

port:MQTT服务器端口号,取值范围:1~65535。

AT+QMTOPEN=0,"host_name",port

返回0,0表示正常。返回0,1则open失败

执行结果:

参数1:TCP_connectID

参数2:

-1:打开网络失败

0 :打开网络成功

3、连接云平台

AT+QMTCONN=<TCP_connectID>,<deviceName>

deviceName:设备名称

设备名称

AT+QMTCONN=0,"deviceName"

返回0,0,0表示成功连接。返回0,0,1则连接失败

执行结果:

参数1:TCP_connectID

参数2:

0 数据包发送成功且从服务器接收到 ACK

1 数据包重传

2 数据包发送失败

参数3:

0 接受连接

1 拒绝连接:不支持的协议版本

2 拒绝连接:拒绝标识符

3 拒绝连接:服务器不可用

4 拒绝连接:用户名或密码错误

5 拒绝连接:未授权

4、订阅topic

params:

tcp_id

msgID:消息ID,取值范围1--65535。这个参数个人感觉随便取

topic:订阅的主题,最大长度255

qos:服务质量等级0,1,2

AT+QMTSUB=0,1,"topic",0

5、设备数据上报

AT+QMTPUB=<TCP_connectID>,<msgID>,<qos>,<retain>,<topic>,<msg>

msgID:消息ID,取值范围1--65535。

qos:0 最多发送一次

1 最少发送一次

2 只发送一次

retain:0 消息发送到当前订阅者后,服务器不保存消息。

1 消息发送到当前订阅者后,服务器保存消息。

topic:订阅的主题,最大长度255。

msg:消息内容。

执行结果:

参数1:TCP_connectID

参数2:msgID

参数3:0 数据包发送成功且从服务器接收 ACK(当<qos>=0 时,发布的消息无需 ACK)

1 数据包重传

2 数据包发送失败

publish测试

AT+QMTPUB=0,1,1,1,"topic","hello test"

二、通过arduino作主控实现

本次选用的是arduino uno,如图:

连线方式:

将GPS模块上的TX,RX引脚分别连在arduino的2,3中,BC20上的TX,RX接入arduino中的4,5中。

arduino代码烧写:

#include<SoftwareSerial.h>//RX,TX,接线要反着接SoftwareSerial gps = SoftwareSerial(2,3); //GPS模块虚拟串口实例SoftwareSerial nbiot = SoftwareSerial(4,5);//NBIOT模块虚拟串口实例char buffer[100];//经纬度信息缓冲区int num=0; //经纬度信息缓冲区真实长度char target[10];//存储和校验GPS收到的报头是否为“GNGGA”int tarNum=0; //同numchar flag;String longitude=""; //经度String latitude=""; //纬度/*NBIOT模块连接阿里云物联网平台的AT指令 *//*阿里云连接设置:AT+QMTCFG="aliauth",<TCP_connectID>[,<product_key>,<device_name>,<device_secret>]product_key:阿里云产品密钥。最大长度64。device_name:阿里云设备名称。最大长度64。device_secret:阿里云设备凭证。最大长度64。*/String config = "AT+QMTCFG=\"aliauth\",\"0\",\"product_key\",\"device_name\",\"device_secret\"";/*AT+QMTOPEN=<TCP_connectID>,<host_name>,<port>、host_name:MQTT服务器地址,可以是IP或域名,最大长度150。port:MQTT服务器端口号,取值范围:1~65535。*/String open = "AT+QMTOPEN=0,\"host_name\",port";/*AT+QMTCONN=<TCP_connectID>,<deviceName>deviceName:设备名称*/String conn = "AT+QMTCONN=0,\"deviceName\"";/*AT publish*//*AT示例:"AT+QMTPUB=0,1,1,1,\"/sys/ihkybth4H9h/deviceName/thing/event/property/post\",\"{\"method\":\"thing.event.property.post\",\"id\":\"0\",\"params\":{\"latitude\":\"30.58796512\",\"longitude\":\"104.58423897\"},\"version\":\"1.0\"}\"";*/String publish_start = "AT+QMTPUB=0,1,1,1,\"/sys/ihkybth4H9h/deviceGps/thing/event/property/post\",\"{\"method\":\"thing.event.property.post\",\"id\":\"0\",\"params\":{\"latitude\":";String publish_longitude_id = ",\"longitude\":";String publish_end = "},\"version\":\"1.0\"}\"";String str = "\"";/*NBIOT模块连接阿里云物联网平台的AT指令 */void setup() {Serial.begin(115200);//串口波特率nbiot.begin(115200); //NBIOT通讯模块波特率gps.begin(38400);// gps波特率nbiot.println(config);Serial.println("config");delay(2000);nbiot.println(open);Serial.println("open");delay(10000);nbiot.println(conn);Serial.println("connnect");delay(15000);}void loop() {if(gps.available()){delay(1);//等待GPS模块数据接收flag = gps.read();//只需要报头为“$GNGGA”开头的信息,提取经纬度信息if(flag == '$'){delay(10);tarNum = gps.readBytes(target,5);if(target[0]=='G' && target[1]=='N' && target[2]=='G' && target[3]=='G' && target[4]=='A'){num = gps.readBytes(buffer,40);for(int i=12;i<21;i++){latitude += buffer[i];}latitude += "N";latitude = str + latitude;latitude = latitude + str;for(int i=25;i<35;i++){longitude += buffer[i];}longitude += "E";longitude = str + longitude;longitude = longitude + str;//publish AT指令的拼接String publish = publish_start+latitude+publish_longitude_id+longitude+publish_end;Serial.println(publish);//发送数据到阿里云平台nbiot.println(publish);latitude = "";longitude = "";// publish = "";delay(6000);}}}}

如果觉得《NBIOT模块bc20与GPS模块AT1218数据上阿里云物联网平台》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。