simcom2G模块使用

2G模块如何实现内置协议栈上网 前一阵之做了一个2G模块作客户端通过内置协议栈上网的项目,我只负责库文件,业务层的实现是由别人完成的。这里想就过程中遇到的问题做个总结,算是学习笔记。 注:以下内容都是本人在工作过程中的自己思考和向前辈工程师们讨教的结果,若有侵权,请与我联系。 首先想说一下什么是内置协议栈。说白了就是模块内部已经集成了TCP/IP协议栈,开发者只需要调用模块供应商提供的AT指令接口就可以实现数据的收发 阅读详情

一、sim800c的使用

使用到的功能包括:GSM短信收发,GPRS数据传输,TCP/IP协议数据传输,LBS信息的定位,http的java接口调用,FTP的无线升级,模块BT的串口协议传输。主要是网络传输方面的使用,其对模块的外围器件的使用倒是涉及不多。

1、短信接收发功能指令:

“AT+CMGF=1\r” //配置短信形式
“AT+CMGL=\”ALL\”\r” //读取所有短信
“AT+CSCS=\”GSM\”\r” //进行CSCS设置
“AT+CMGS=” //后面添加信息中心短信号码
“AT+CMGD=” //进行短信删除
C语言书写解释:
@1、每一个AT指令后面都要以\r或者是\r\n结束。这是AT标准AT指令集
里面规定的,没有什么疑问。
@2、AT指令后面如果是要跟字符串的东西,例如AT+CSCS=”GSM”,这句指
令,因为我们发过去给simcom模块的是字符串,最后传入的形式是:“AT+CSCS=”GSM””,因为里面有多个字符串标识(“”),导致模块识别不了,然而里面的字符串不是真的字符串结束标识符,而是我们实际要传入的值,所以我们要把这个标识符转义成字符就可以,让其不代表其他意思,加上\转义字符就可以了例如上面:”AT+CSCS=\”GSM\”\r”。
@3、AT+CMGF=mode:
mode:
0 PDU模式
1 TXT文本模式(经常用的)
@4、AT+CMGL=”ALL”
标识列出所有的信息,包括已读和未读的。或者是
AT+CMGL=“REC UNREAD”
会列举出所有未读的消息
AT+CMGL=“REC READ”
会列举出已读的消息。
后面列举的形式:包括短信状态(已读 未读),短信Num,消息发送方号码,消息发送时间,最后面就是紧跟着信息的内容了。
@5、AT+CSCS=”GSM”
设置信息服务发送模块,其实这个可以不设置也可以发送,默认的就是这个模式。
@6、AT+CMGS= 号码
这个命令执行完之后,就像其他传输一样会出现一个‘>’符号,后面就是你要写入的信息内容。注意这个结束有点奇怪。要在短信内容后面添加0x1A 0x1D才可以结束。对应的是Ctrl+Z的按键的ASCII码。如果不加的话,短信是永远不会结束的。
@7、AT+CMGD=NUM
NUM:就是短信的序列号,当短消息发过来,其短信的序列号就固定了,短信息对应的序列号不会随着你删除一条短信,其他短信息序列号随着改动。
@8、AT+CMGR=NUM
NUM:同上,就是短信息的序列号,固定读取这个序列号的短信内容。
以上的用法利用好了,足矣做一个短信收发的小功能了。前提要把GSM基本的功能配齐全,例如AT+CFUN=1,AT+CREG=1检测GSM入网成功才可以,其他标准用法就不一一说了,看看AT指令集应该都会用了。

2、GPRS数据传输

这个数据2G的数据流量功能,与GSM网络还不一样,大家千万不要认为这2个东西走的是一个网络通道奥.

“AT+CGATT=1\r”
“AT+CGATT?\r”
@1、AT+CGATT=NUM
NUM:0表示与当前GPRS网络分离,1表示要附着现有检测到的GPRS网络。
@2、AT+CGATT?
表示检测当前的GPRS网络附着状态,成功返回1 失败返回0
当然以上的成功条件是sim卡已经插入,并且射频天线正常,sim卡开通了数据流量,否则会无法附着GPRS网络奥。
当然上面的一步就是为了下面的TCP/IP服务做准备的。

3、TCP/IP数据流量传输服务

模块已经内置了TCP/IP协议栈,很强大
“AT+CSTT=\”” //设置APN账号,用户名,密码(后面如果说sim卡没有设置用户和密码就不需要填写)
“AT+CIICR\r” //唤醒无线连接 进行连接用GPRS或者CSD
“AT+CIFSR\r” //获取联网后 本地分配的IP地址
“AT+CIPQSEND=0\r” //设置发送数据的返回形式
“AT+CMUX=0\r” //说明是基础模式 没有进行复用
“AT+CIPHEAD=0\r” //去除IP头 内容
“AT+SAPBR=3,1,\”Contype\”,\”GPRS\”\r”//基于IP的应用程序的承载设置
“AT+SAPBR=3,1,\”APN\”,\”” //设置网络承载的APN服务
“AT+CIPSTART=\”TCP\”,\”” //进行网络传输服务的选择
“AT+CIPSEND=length” //进行数据的传输写入
“AT+CIPCLOSE=1\r ” //关闭TCP/IP连接通道
以上顺序不要有颠倒,否则其中配置会报错。
@1、AT+CSTT=
这个是来配置sim卡运营商的APN账号,用户名和密码
如果用户名和密码没有设置可以不用写,只写一个APN就可以
@2、AT+CIICR
这个是开启无线射频模块的指令。
@3、AT+CIFSR
这个是在进行入网后,根据运营商网络获取基站分配给终端的IP地址。
@4、AT+CIPQSEND=mode
mode: 0 返回形式是 send ok .
1 返回形式是 send ok accept
@5、AT+CMUX=NUM
NUM: 这个是设置串口复用还是不复用,
0:串口不复用 只是模块的基本功能
1 : 串口复用,协议遵循GSM0710协议,详见协议描述,下篇讲解。
@6、AT+CIPHEAD=0
去除IP头显示,设置为1,会显示发送方的IP地址信息。
@7、AT+SAPBR=3,1,”Contype”,”GPRS”
设置无线连接数据的承载形式,为GPRS,也可以设置成CSD,但一般设置都是GPRS.
@7、AT+SAPBR=3,1,”APN”,“运营商的APN名称”
这一步很关键,这是你的数据最终是由哪家运营商接入的公网设置。例如:移动2G:CMMTM/CMNET/CMIOT等,联通2G:UNINET UNWAP等,沃达丰网络2G例如:internet.gdsp/ppinternetd.gdsp/spe.inetd3.gdsp.当然这个沃达丰是国际运营商,世界好多国家也都有支持和合作,再进行国际业务开拓时候,这个APN是一定要修改的,要根据使用的沃达丰的sim卡类型来修改。APN有沃达丰人员提供。
@8、”AT+CIPSTART=”TCP”,”IP地址”
这个就是描述了我们终端模块使用的是什么协议,还有要连接的服务端的IP地址,也可以是域名。里面继承了DNS服务,可以转换的。
支持填写UDP/TCP.
@9、AT+CIPSEND=length
这个命令是描述你要本次发向服务器的数据量多少,以字节为单位。
等这条命令执行完成之后,会出现‘>’这个符号,等你输入的字符数据长度等于你上一步要发送的数据长度时候,他会自动进行发送,不用加任何的结束标志符,不想短信一样还要加0x1A 0x1D这样的结束符。
@10、AT+CIPCLOSE=1
数据发送成功之后,模块会返回senk ok标识。
这时候如果没有更多的数据发送这时候可以使用上面的指令进行通道断开连接。
以上步骤最好不要有顺序颠倒,按照配置一步步来最后可以实现与服务器端的收发功能。

4、LBS基站定位

@1、AT+CENG?
这个指令就是获取周边基站的信息,要想定位准确的话,最好是获取三个基站信息数据,因为三点定位就是这个原理。画圆圈就可以了,精确度在20m—-500m之间,这个要看定位时候的信号强度。
获取基站返回信息包括:
mcc:移动用户所属的国家代码,默认值460
mnc:移动网号,0:中国移动 1:中国联通
lac:位置区域码 , 取值范围: 0-65535
cellid:基站小区编号 基站小区编号 ,取值范围: 取值范围: 取值范围: 0-65535 ,0-268435455 ,其中 ,其中 0,65535,268435455 不使用, 小区编号大于 65535 时为 3G 基站。
signal(rssi):信号强度 , 取值范围: 0到-113dbm. 113dbm.
(如获得信号强度为正数,则请按照以下公式 获得信号强度为正数,则请按照以下公式 进行转换: 获得的正信号强度 * 2 * 2 – 113 )
这些信息的作用就是为了要调用某个地图来用的,为了获取出来地理位置信息。就拿高德地图来说。
调用的http接口:
http://apilocate.amap.com/position?accesstype=0&imei=866104021101384&cdma=0&bts=460,0,6324,33427,-56&nearbts=460,0,6324,33427,-56|460,0,6324,33427,-56&output=json&key=key值
返回的结果就是经纬度信息。

当然这个模块也有直接获取的经纬读信息的AT指令集。例如:
AT+CIPGSMLOC=1,1
这个返回值就是经纬度信息。
AT+CIPGSMLOC=2,1
这个就是返回的是调用正常与否和时间。

5、http协议调用

AT+HTTPINIT ————————–>初始化HTTP 服务
AT+HTTPTERM ————————->结束HTTP 服务
AT+HTTPPARA ————————->设置HTTP 参数值
AT+HTTPDATA ————————->HTTP 写数据
AT+HTTPACTION ———————->HTTP 方式激活
AT+HTTPREAD ————————->查询HTTP 服务响应
AT+HTTPSCONT ———————–>保存HTTP 应用上下文
AT+HTTPSTATUS ———————->读取HTTP 状态
@1:AT+HTTPINIT
初始化HTTP服务,后面不用加参数 正常返回OK
@2:AT+HTTPTERM
结束http服务,后面不用加参数,正常返回OK
@3:AT+HTTPPARA
设置HTTP回话参数,这个要进行设置2次,第一次是CID的设置,后面是目的地的URL
例如:
AT+HTTPPARA = “CID”,1
OK
AT+HTTPPARA=“URL”,”www.sim.com”
OK
@4:AT+HTTPACTION=MODE
MODE=0时候
后面就是get的用法
AT+HTTPACTION=0 ———-> GET 会话开始
OK
+HTTPACTION: 0,200,1000 ————–>GET 成功
这个是获取到的数据还没有进行串口输出,要主动使用命令才可以输出。
AT+HTTPREAD ———–>读取服务器的数据向串口输出。
+HTTPREAD: 1000
…. ———->向串口输出数据
OK
在这一步进行解析就可以了,注意的是如果MCU的处理数据的速度不够快的话,可能数存在数据丢失的危险,,因为最好是使用数据中断的形式,否则数据接收会影响总的数据服务进行。
AT+HTTPTERM ————–>结束HTTP 服务
OK
@5:AT+HTTPACTION=1
post的用法
AT+HTTPINIT ————————————–>初始化HTTP 服务
OK
AT+HTTPPARA = “CID”,1———————>设置HTTP 会话参数
OK
AT+HTTPPARA=“URL”,”www.sim.com”
OK
AT+HTTPDATA=100,10000 ——————–>这个是进行数据缓存到模块中
DOWNLOAD
……
OK
上传 100 字节数据,输入数据的等待时间为10000 毫秒。等待时间必须设置得足够
长,以使所有数据都能下载到模块中。准备从UART 接收数据,DCD 引脚拉低。
所有数据接收完毕,DCD 引脚拉高。
AT+HTTPACTION=1 —————>执行完这一步才开始进行传输
OK ———————–>POST 会话开始
+HTTPACTION: 1,200,0 —————————–>POST 成功
AT+HTTPTERM ———————–>关闭服务
OK
结束HTTP 服务
@6:AT+HTTPACTION=2
从http服务器获取http头信息
AT+HTTPINIT ————————–>初始化HTTP 服务
OK
AT+HTTPPARA = “CID”,1 ——————>设置HTTP 会话参数
OK
AT+HTTPPARA=“URL”,”www.sim.com”
OK
AT+HTTPACTION=2——————————>HEAD 会话开始
OK
+HTTPACTION: 2,200,0 ——————–>HEAD 成功
AT+HTTPTERM———————————>结束http服务
OK
@7:进行http服务器代理
AT+HTTPINIT
OK
初始化HTTP 服务
AT+HTTPPARA = “CID”,1
OK
AT+HTTPPARA=“URL”,”www.sim.com”
OK
设置HTTP 会话参数
AT+HTTPPARA=“PROIP”,”10.0.0.172”
OK
设置代理服务器IP 地址
AT+HTTPPARA = “PROPORT”,80
OK
设置代理服务器端口号
AT+HTTPACTION=0
OK
GET 会话开始
+HTTPACTION: 0,200,1000 GET 成功
AT+HTTPREAD
+HTTPREAD: 1000
….
OK
读取 HTTP 服务器的数据
向 UART 口输出数据
AT+HTTPTERM
OK
结束HTTP 服务
@8:进行http断点续传
AT+HTTPINIT
OK
初始化HTTP 服务
AT+HTTPPARA = “CID”,1
OK
设置HTTP 会话参数
AT+HTTPPARA =“URL”,”http://www.sim.com/img/sim_logo_jr_1003_38.gif”
OK
设置 URL, gif 图片的大小是16384 bytes
AT+HTTPPARA = “BREAK”,2000
OK
设置断点
AT+HTTPACTION=0
OK
GET 会话开始, 获取从 2000 到16384 的
数据
+HTTPACTION: 0, 200,14384 GET 成功
AT+HTTPREAD
+HTTPREAD: 14384
….
OK
读取HTTP 服务器的数据
向 UART 口输出数据
AT+HTTPTERM
OK
@9:获取HTTP状态
AT+HTTPINIT
OK
初始化HTTP 服务
AT+HTTPPARA =“CID”,1
OK
设置HTTP 会话参数
AT+HTTPPARA =“URL”,“www.baidu.com”
OK
AT+HTTPACTION = 0
OK
GET 会话开始
AT+HTTPSTATUS?
+HTTPSTATUS: GET,1,1440,7915
OK
“获取”会话的状态为进行中
+HTTPACTION: 0, 200,9335 GET 成功
AT+HTTPSTATUS?
+HTTPSTATUS: GET,0,0,0
OK
“获取”会话的状态为已完成
AT+HTTPACTION = 1
OK
POST 会话开始
AT+HTTPSTATUS?
+HTTPSTATUS: POST,2,1440,608
OK
“上传”会话的状态为进行中
+HTTPACTION: 1,200,0 POST 成功
AT+HTTPSTATUS?
+HTTPSTATUS: POST,0,0,0
OK
“上传”会话的状态为已完成
AT+HTTPTERM
OK
以上是HTTP的用法

6、FTP协议传输

AT+FTPPORT ————————-设置FTP 控制端口
AT+FTPMODE ————————设置FTP 主动或被动模式
AT+FTPTYPE ————————–设置数据传输类型
AT+FTPPUTOPT ———————-设置FTP 输入类型
AT+FTPCID —————————设置FTP 承载文件标识
AT+FTPREST ————————- 设置下载续传
AT+FTPSERV ————————–设置FTP 服务地址
AT+FTPUN —————————设置FTP 用户名
AT+FTPPW —————————-设置FTP 口令
AT+FTPGETNAME ——————-设置下载文件名称
AT+FTPGETPATH ——————–设置下载文件路径
AT+FTPPUTNAME ——————–设置上传文件名称
AT+FTPPUTPATH ——————–设置上传文件路径
AT+FTPGET —————————-设置下载文件
AT+FTPPUT —————————设置上传文件
AT+FTPSCONT ———————-保存FTP 应用上下文
AT+FTPDELE ————————–删除FTP 服务器上的指定文件
AT+FTPSIZE —————————获取FTP 服务器上的指定文件的文件大小
AT+FTPSTATE ————————-获得FTP 状态
AT+FTPEXTPUT ———————–扩展方式上传文件
AT+FTPMKD ————————–在远程计算机上创建目录
AT+FTPRMD ————————–在远程计算机上删除目录
AT+FTPLIST —————————列出远程计算机的目录详情
FTP协议用法在我们终端使用的是为了远程无线升级用的,因为断点续传效率要比http快好多,所以用的是FTP进行的固件下载。并且还有另一个原因,因为FTP有个功能可以读取你设置的大小的字节。这样的话会让mcu有足够的时间进行下载下来的数据进行解密和校验保证数据稳定性。因为http他不可以使用主动读取的数据大小。因为串口使用的中断形式,当模块的USART使用较高的数据波特率时候,MCU会一直进中断,导致正常的业务数据解密和校验执行打断,并且处理很慢,毕竟一直有数据过来。例如我们测试用115200、57600的波特率进行数据的传输,MCU会明显处理不过来。导致许多数据会丢失。只有我们使用得9600的慢速波特率之后,数据的解析和接收才算正常运行。所以我们这个主动获取多少字节数据的功能就完美解决了这个问题。
@1:FTP的Get用法
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**”
OK
AT+FTPGETNAME=”1K.txt”
OK
AT+FTPGETPATH=”/”
OK
设置FTP 会话参数
AT+FTPGET=1
OK
+FTPGET: 1,1 数据可读
AT+FTPGET=2,1024
+FTPGET: 2,50
01234567890123456789012345678901234
567890123456789
OK
请求读取1024字节,但当前仅50字节可读
AT+FTPGET=2,1024
+FTPGET: 2,0
OK
再次请求读取1024字节。
当前没有数据可读,但会话尚未结束
+FTPGET: 1,1 如果模块收到了数据,但用户没有输入
“AT+FTPGET:2, ” 来读取数
据, “+FTPGE T:1,1”会在一定时间后再
次显示
AT+FTPGET=2,1024
+FTPGET: 2,1024
01234567890123456789012345678901234
5678901234567890…..1234
OK
请求读取1024字节数据
当前有 1024 字节数据可读
+FTPGET:1,0 数据传输结束,FTP 服务器连接关闭
@2:FTP的Put用法
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**”
OK
AT+FTPPUTNAME=”1K.txt”
OK
AT+FTPPUTPATH=”/”
OK
设置FTP 会话参数
AT+FTPPUT =1
OK
打开FTP Put 会话
+FTPPUT: 1,1,1360 FTP 会话可以开始上传数据。一次最多
可以上传1360 字节数据。上传数据的多
少取决于当前网络状态
AT+FTPPUT=2,100
+FTPPUT: 2,100
客户端请求发送100字节数据。
响应提示用户现在必须输入100字节数据
进行传输
…… 准备从UART接收数据,DCD引脚拉低
OK 所有数据接收完毕,DCD引脚拉高
+FTPPUT: 1,1,1360 URC提示FTP会话可以传输更多数据
AT+FTPPUT=2,0
OK
所有数据传输完毕,FTP 会话将会关闭
+FTPPUT: 1,0

FTP 会话过程中可能由于糟糕的网络坏境或其他原因发生各种错误。包括超时错误、密码错误等各种常见的报错。

@3:FTP超时
AT+FTPGET =1
OK
打开FTP Get 会话.
+FTPGET: 1,64 如果网络情况不好,可能会发生超时。
FTP 服务器的连接关闭
AT+FTPGET =1
OK
打开FTP GET 会话.
+FTPGET: 1,1 数据可读
+FTPGET: 1,1
……..
+FTPGET: 1,1
如果用户没有输入“AT+FTPGET:2,
” 来读取数据, “+FTPGE
T:1,1”会在一定时间后再次显示
+FTPGET: 1,64 如果用户长时间不读取数据, 会话将会
发生超时。FTP 服务器的连接关闭
@4:FTP出错
AT+FTPPW=”3214567”
OK
设置错误的密码
AT+FTPGET =1
OK
打开FTP GET 会话
+FTPGET: 1,72 FTP 会话密码错误。FTP 服务器连接关闭
@5:FTP设置断点参数
AT+FTPGET =1
OK
打开FTP GET 会话
+FTPGET: 1,1 数据可读
AT+FTPGET = 2,1024
+FTPGET: 2,29
wodeceshijieguo,zhgeshigeshia
OK
从FTP 服务器下载数据
+FTPGET: 1,0 数据传输结束,FTP 服务器连接关闭
AT+FTPREST=20
OK
设置断点
AT+FTPGET =1
OK
打开FTP Get 会话.
+FTPGET: 1,1 数据可读
AT+FTPGET = 2,1024
+FTPGET: 2,9
shigeshia
OK
从断点处开始获取数据
+FTPGET: 1,0 数据传输结束,FTP 服务器连接关闭
@6:设置FTP的删除的方法
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**”
OK
AT+FTPGETNAME=”1K.txt”
OK
AT+FTPGETPATH=”/”
OK
设置FTP 会话参数
AT+FTPDELE
OK
打开FTP DELE 会话
+FTPDELE: 1,0 文件删除完成,FTP 服务器连接关闭。
@7:FTP的SIZE用法
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**”
OK
AT+FTPGETNAME=”1K.txt”
OK
AT+FTPGETPATH=”/”
OK
设置FTP 会话参数
AT+FTPSIZE
OK
打开FTP SIZE 会话
+FTPSIZE: 1,0,1024 获取文件大小完成,FTP 服务器连接关
闭。
@7:FTP MKD和RMD方法
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**”
OK
AT+FTPGETPATH=”/test”
OK
设置FTP 会话参数
AT+FTPMKD
OK
打开FTP 会话
+FTPMKD: 1,0 在远程计算机上创建了目录 “test”
AT+FTPRMD
OK
打开 FTP 会话
+FTPRMD: 1,0 远程计算机上的目录 “test” 被删除
@8:FTP LIST会话
AT+FTPCID=1
OK
AT+FTPSERV=”116.228.221.52”
OK
AT+FTPUN=”sim.cs1”
OK
AT+FTPPW=”**”
OK
AT+FTPGETNAME=”1K.txt”
OK
AT+FTPGETPATH=”/”
OK
设置FTP 会话参数
AT+FTPLIST=1
OK
打开FTP 会话
+FTPLIST: 1,1 数据可读
AT+FTPLIST=2,1024
+FTPLIST: 2,126
total 0
drw-rw-rw- 1 user group 0 Oct 12
14:58.
drw-rw-rw- 1 user group 0 Oct 12
14:58…
OK
请求读取 1024 字节数据,但当前仅有126
字节可读
+FTPLIST: 1,0 数据传输结束,FTP 服务器连接关闭

7、模块BT的用法

AT+BTHOST 查询和设置当前模块蓝牙设备名
AT+BTSTATUS 查询当前蓝牙状态
AT+BTPOWER 设备功能开关
AT+BTPAIR 蓝牙配对
AT+BTUNPAIR 删除配对蓝牙设备
AT+BTSCAN 蓝牙设备搜索
AT+BTCONNECT 主动连接蓝牙设备的服务
AT+BTDISCONN 断开已连接的蓝牙设备服务
AT+BTGETPROF 获取配对的蓝牙设备提供的Profile
AT+BTACPT 接受配对的蓝牙设备的连接请求
AT+BTOPPACPT 接受配对的蓝牙设备的OPP 推送对象
AT+BTOPPPUSH 推送OPP 对象给配对的蓝牙设备
AT+BTSPPGET 蓝牙串口接收数据
AT+BTSPPSEND 蓝牙串口发送数据
AT+BTATA 接通来电
AT+BTATDL 重拨上次去电
AT+BTATH 挂断电话
AT+BTVGS 设置通话音量
AT+BTVGM 设置MIC 音量
AT+BTATD 拨打电话
AT+BTRSSI 获取已连接的蓝牙设备的信号强度
AT+BTVTS 发送DTMF
AT+BTCIND 获取智能手机状态
AT+BTCLCC 获取智能手机通话状态
AT+BTPBSYNC 获取远端设备的电话本
AT+BTPBF 根据姓名或电话号码,在远端设备进行电话本查找
AT+BTAVRCOP AVRCP 操作
AT+BTVIS 设置蓝牙可见性
AT+BTSPPCFG SPP 配置
AT+BTPAIRCFG 设置蓝牙配对模式
@1:BT作为服务端进行的连接SPP数据传输服务
串口蓝牙数据传输服务
“AT+BTPOWER=1\r” //蓝牙开机
“AT+BTHOST=buff[n]” //设置蓝牙名称
“AT+BTSPPCFG=\”MC\”,0\r” //关闭多路连接
“AT+BTPAIRCFG=2\r” //设置为自动模式
“AT+BTPAIR=2\r” //配置密钥
“AT+BTPAIR=1,1\r” //蓝牙确认配对
“AT+BTCONNECT=1,4\r” //服务器被动连接
“AT+BTACPT=1\r” //作为服务器端建立SPP连接
“AT+BTPOWER=0\r” //蓝牙关机
“AT+BTSTATUS?\r” //蓝牙查询
“AT+BTUNPAIR=0\r” //删除全部蓝牙配对信息
“AT+BTSPPSEND=” //蓝牙发送长度指示
“AT+BTSCAN=1,10\r” //进行蓝牙扫描 1开启 20是扫描时间可以调节
“AT+BTPAIRCFG=1\r” //这个是设置 蓝牙配对秘钥
“AT+BTPAIR=2,0000\r” //这个是蓝牙接收配对的响应
“AT+BTGETPROF=” //这个是进行蓝牙主动连接获取的传输协议
“AT+BTCONNECT=” //进行蓝牙设备连接
“AT+BTPAIR=0,” //这个是主动连接设备的请求
以上的操作命令用法就不多说了,毕竟前面AT的用法都是这样的。现在要说的就是这个模块的功能怎么可以进行复用。比如说GPRS、BT、GSM都有数据传输过来,你怎么来确保数据不会被混淆,导致解析出错。这里就用到的串口复用0710协议。
AT+CMUX=1这个指令进行执行之后,所有的数据解析都会按照0710这个协议进行编解码。意思也就是说,当你的指令发送的时候,你这时候要进行编码一下,按照0710的协议进行编码,他就会直到你的这个命令是发送个谁的是BT功能的还是GPRS功能的。这样编码过后,模块可以正常识别不会报错。当你接收到数据之后,你要按照0710的协议进行解码,解码后的数据包分别放进不同功能的缓存buffer里面,这样你解析的时候也不会出现过多的错误。0710串口复用协议工作原理如下:
这里写图片描述

为什么这么设计呢?处理效率会高很多,比如说,SIM808这个大模块,他有GPS、GSM、GPRS、BT功能,各种功能最终都会进行数据流的交互,这就会导致当一个功能占用的时候其他的功能数据流就不可以使用,所有可能会出现接收不到的情况,当基于这个复用协议的时候就没有什么问题了。各种数据都是经过这个多路复用器进行的,就不会有占用不释放的这一说。对于不使用多路复用的设备来说,在某个时间段内只能处理一种数据流或者是一路数据,设备效率不高,采用GSM0710的规范协议之后,将传输划分为多个逻辑链路通道,同时传输这些数据流,每个逻辑通道都是具备独立的缓冲区和流量控制的。   协议内容如下:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

@2:使用列举
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

SIMCOM 4G模组AT指令配置APN实战指南 本文提供SIMCOM 4G模组通过AT指令配置APN的完整实战指南。详细解析了AT+CGDCONT指令的使用方法,涵盖中国移动、联通、电信三大运营商的APN设置,并指导如何创建拨号连接实现电脑上网。文章包含硬件连接、指令调试及常见故障排查,帮助开发者快速解决4G模组联网问题。 阅读详情

相关推荐

SIMCOM800C GSM模组(2G通信模组)AT指令测试 TCP 通信过程

SIMCOM800C通信模组 SIMCOM800C 是SIMCom公司的工业级四频 GSM/GPRS 模块,工作频段四频:850/900/1800/1900MHz,可以低功耗实现语音、 SMS(短信)、 MMS(彩信)、蓝牙数据信息的传输. 1. 环境准备 1.1. 硬件准备 准备一个SIM800C模组和USB转串口,使用USB 5V给SIM800C模组供电: 模组扩展板板载一颗红色的状态指示LED,意义如下: 1.2. 软件准备 QCOM串口助手 SIMCOM800C通信模组测试AT命令脚本(SI

Mculover666的博客(嵌入式) 5823

使用SIMCOM模块的一些总结

    最近在使用SIMCOM的通信模块,GSM模块SIM800以及NB-IOT模块SIM7020c,遇到一些小的问题,在这里做一个记录。 底层参考了https://blog.youkuaiyun.com/cp1300/article/details/79686460 两个模块封装可以兼容,模块上电初始化并注册网络大部分底层程序一致,从模块上电到PS业务附着成功SIM800较SIM7020c时间要长,SI...

Sibo的博客 9036

SIMCOM300 GPRS模块在安防领域的应用及文档资料包

SIMCOM300模块是一种广泛应用于无线通信领域的设备,其具有高度的集成性,小巧的体积和较低的功耗等特点。它支持2G网络,提供语音、短信和数据传输功能,适用于需要远程通信的各种应用场合。为了在全球范围内提供通信服务,SIMCOM300模块支持多个频段,覆盖了GSM技术的主要频段。这些频段分别对应不同地区的通信标准,确保模块能在全球范围内无缝连接。850 MHz和900 MHz频段是GSM标准的主要频段之一,它们被广泛应用于北美、亚洲和大洋洲。1800 MHz和。

weixin_42509507的博客 906

SIM800C模块AT指令编程指南

SIM800C移动2G网卡模块编程流程

m0_60718520的博客 7195

sim7500/7600版本的AT指令

sim的AT指令协议V1.06版本,英文文档,最新修改于17年10月13日

sim800 AT指令集

sim800是较为常用的嵌入式gsm模块,该手册详细说明了该模块的指令应用说明,软件开发必备,测试gprs网络服务和应用,降低开发难度

SIM800C发送中文短信和接收短信

发送你的手机号,发送的时候在你的手机号每一位数字前面加上。意思是短信存储在了3这个位置,设置短信模式为文本模式。设置为 UCS2 字符集编码。然后发送你要发送的中文(转化好格式的,并把。也可以使用的下面的网站,转化完之后把。

m0_64551204的博客 3352

SIM800 AT指令集

SIM800 标准AT指令集

simcom7600ce-t LBS function

Welcome to minicom 2.7OPTIONS: I18n Compiled on Nov 15 2018, 20:20:38.Port /dev/ttyUSB2, 00:55:23Press CTRL-A Z for help on special keysAT+CNETSTARTOK+CNETSTART: 0AT+CLBS=1OK+CLBS: 0,31.503548,120.371...

weixin_30363981的博客 322

sim800c-硬件设计手册

Quectel_Linux&Android_CMUX_Driver_V2.0.1_Follow_ec20cmux_gsm0701

ec20 cmux 应用

推荐开源项目:轻量级蜂窝AT解析器 - LwCELL

推荐开源项目:轻量级蜂窝AT解析器 - LwCELL lwcellLightweight cellular modem host AT library项目地址:https://gitcode.com/gh_mirrors/lw/lwcell 在这个快速发展的物联网时代,与蜂窝模组的高效通信变得至关重要。LwCELL是一个轻量级、平台无关的AT命令解析器,专为SIMCOM的SIM800/SIM90...

gitblog_00006的博客 511

简单的图书管理系统---SpringBoot+mysql通过前后端分离实现增删查改

SpringBoot+mysql通过前后端分离实现增删查改 上篇文章介绍了如何写后端接口 SpringBoot连接MySQL获取数据写后端接口 这篇文章,我们就介绍一下怎么写前端 点击修改跳出修改界面,点击添加书籍跳出添加书籍界面 点击删除,直接删除一行数据 其他的也没什么解释了,直接上代码(看不懂的可以私聊我哟) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>

爱笑的博客 2015

SIMCOM模块HTTPS库:Azure IoT安全接入裸机方案

HTTPS是物联网设备与云平台建立加密通信的基础协议,其核心在于TLS/SSL握手、证书验证与HTTP语义封装。在资源受限的嵌入式场景中,传统AT指令集缺乏对TLS控制、Token认证和错误恢复的支持,导致无法直连Azure IoT Hub等现代云服务。Azure_HTTPS_SIMCOM库通过状态机驱动的AT指令封装、SSL/TLS抽象层及Azure专用适配(如SAS Token动态生成、DPS注册),填补了SIMCOM GSM/LTE模块(SIM800/SIM7600等)与云原生协议之间的能力断层。该方

weixin_35696112的博客 552

44位abogus补环境与纯算逆向分析

44位ab参数补环境与纯算加密流程逆向分析

吴秋霖的博客 2784

亚马逊跨境电商选品数据分析:Python爬虫实战指南

本文将带领大家构建一套完整的亚马逊选品数据采集与分析系统,使用最新的Python技术栈,从零开始爬取亚马逊商品数据,并进行深度分析。

2201_76125261的博客 299

SIMCOM 常用AT指令

SIMCOM 常用AT指令AT+ATEAT+QCRMCALLAT+CSQAT+CPINAT+COPSAT+CREGAT+CFUN=0AT+CFUN=1AT+CRESETAT+CNSMODAT+SIMCOMATIAT+CSUB AT+ATE # echo 指令模式 echo -e -n "AT+ATE1?\x0D\x0A" > /dev/ttyUSB2;cat /dev/ttyUSB2 A...

taoxp123456的博客 7787

BLDC控制实验:方波、霍尔、开环、定速、正转

本文记录博主学习BLDC控制软件的过程。 文章目录1 概述2 软件架构及工具链2.1 软件架构2.2 工具链3 底层代码生成3.1 时钟配置3.2 按键输入配置 1 概述 本文是博主第一次做BLDC控制实验,目的仅仅是写代码让BLDC转起来,而暂时不考虑其他复杂的需求。 控制的方法是比较简单的六步换相法。利用电机内部的霍尔传感器,通过参考电机厂家给出的二二导通换相表,生成方波来控制电机。第一次实验为了简化需求,只考虑开环、定速、正转的情况: 开环:不考虑速度反馈,直接给PWM让电机转起来; 定速:不考虑速

u013288925的博客 1万+

AI智能棋盘通过SIMCom SIM7000G实现远程数据上传

AI智能棋盘结合SIM7000G实现低功耗远程数据上传,支持NB-IoT、LTE-M与GPS,适用于无Wi-Fi场景下的稳定物联网连接,具备长续航与全域覆盖能力。

weixin_42284380的博客 852

军品研制过程评审活动-(一)论证阶段

军品研制过程评审活动-(一)论证阶段

Abel的博客 3815

MimicKit 人形机器人强化学习全身模仿控制算法使用教程

本文介绍了MimicKit运动模仿算法框架的使用指南。主要内容包括:1)安装IsaacGym和依赖项;2)训练模型命令及参数说明;3)测试模型的方法;4)分布式训练配置;5)使用TensorBoard可视化日志;6)动作数据格式说明。该框架支持DeepMimic、AMP、ASE、ADD等算法,包含PPO、AWR等强化学习算法,适用于物理仿真角色动画控制研究。

机器人控制与仿真应用 1203

SIM8200EA-M25G通信模块引脚说明文档:快速掌握5G模块应用核心

SIM8200EA-M25G通信模块引脚说明文档:快速掌握5G模块应用核心 【下载地址】SIM8200EA-M25G通信模块引脚说明文档 SIM8200EA-M2是一款由SIMCom公司推出的高性能5G通信模块,支持3G/4G/5G多模功能,专为现代通信需求设计。本资源仓库提供详细的引脚说明文档,涵盖M.2和LGA两种封...

gitblog_06712的博客 1070

MiniQMT国债逆回购策略Python代码全解析

通过本文的介绍,我们不仅学习了如何在MiniQMT平台上使用Python编写国债逆回购策略,还对策略的逻辑构建、代码实现以及风险管理有了深入的了解。国债逆回购策略是一种适合初学者的低风险投资方式,希望本文能帮助你在量化交易的道路上迈出坚实的一步。

木头大左的博客 1919

【免费下载】 SIMCom芯讯通CAT1模块A7680C(ASR1606、ASR1602)完整资料包

SIMCom芯讯通CAT1模块A7680C(ASR1606、ASR1602)完整资料包 【下载地址】SIMCom芯讯通CAT1模块A7680CASR1606ASR1602完整资料包 A7680C是一款基于ASR1606(R2)、ASR1602(R5)平台,面向中国市场的超小、超薄的LTE Cat 1模块,支持LTE-TD...

gitblog_09714的博客 2169

在 SAP S/4HANA Cloud Public Edition 中掌控 ABAP 生命周期管理:One-Off、Multi-Off 与 Scalable Delivery 的落地方法论

本文系统梳理了SAP S/4HANA Cloud Public Edition中ABAP扩展开发的三种生命周期管理模式:One-Off适用于企业内部扩展,通过Import Collection在三系统间流转;Multi-Off面向少量客户交付,基于gCTS和Git实现不连接系统间的传输;Scalable Delivery则将扩展产品化为add-on,支持规模化分发。文章结合RAP、OData等实际开发场景,对比分析了各模式的特点与适用边界,为国内团队提供了符合Public Cloud要求的开发与交付实践建议

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1496

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 浅谈NB-IOT模块调试
下一篇: LoRa无线sx1278&LoraWan协议剖析
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值