GSM/GPRS/GPS Shield (B) 用户手册
操作现象
硬件说明
- SIM808 模组
- MIC29302 电源芯片
- CP2102 USB转UART芯片
- SMF05C 瞬变抑制二极管
- 1N5408 整流二极管
- SIM808功能引脚
- Arduino接口
- USB TO UART接口
- DC电源接口
- GPS天线接口
- 蓝牙天线接口
- 固件更新接口
- GSM天线接口
- SIM卡槽
- 3.5mm耳机\麦克风接口
- GPS状态指示灯
- CP2102串口收发指示灯
- NET指示灯
- 模块刚启动时快闪
- GSM注册成功后慢闪
- 电源指示灯
- 电源开关
- SIM808 控制按键
- 长按1s启动SIM808
- 启动后,长按1s关闭SIM808
- 复位按键
- UART选择开关
- 可选择CP2102控制SIM808
- 或通过arduino接口的UART引脚控制SIM808
- SIM808串口设置端
- SIM_TX:SIM808 UART发送引脚
- SIM_RX:SIM808 UART接收引脚
- IOREF电源选择管脚
- 设置UART电平
快速入门
准备工作
用户在使用模块前除了本身配备的电源、micro USB线、GSM天线、GPS天线和蓝牙天线外,还需要准备以下2样东西:
- 一张中国移动的SIM卡,未停机,并开通 GPRS 功能(否则无法进行 GPRS 功能测试)
- 一副带麦克风的耳机(用于测试通话功能
- 将SIM卡安装到SIM卡槽,接上耳机,并连接好GSM天线
- 这里我们使用PC机进行测试,需要先安装CP2102驱动。
- 驱动安装后,把micro USB线一端接PC机的USB接口,另一端接GSM/GPRS/GPS Shield (B)的USB TO UART接口,并将Uart Select开关拨到USB一端,接上电源,并打开电源开关,给模块上电。可以看到PWR灯变为常亮状态。
- 在设备管理器里面可以看到CP2102对应的COM口。这里是COM7,用户以自己PC识别到的COM口为准。
- 长按模块的PWRKEY按键约1秒,可以看到NET灯亮起,并开始闪烁。
- 正常可以看到NET灯先快闪(1秒闪1次),表示还没有注册到网络。当注册到网络后,NET灯开始慢闪(3秒闪1次)。注册网络过程需要几秒到几十秒不等,这取决于所在地GSM网络的状态。
如果长时间无法注册成功,请检查GSM天线、SIM卡是否连接正常,SIM卡是否已停机
常用的AT指令
SIM808主要通过AT指令进行控制,以下描述用串口调试助手或相关串口工具进行控制。用户如果想用MCU控制SIM808,实际也是通过MCU的UART接口去发送或接受相应的AT指令
AT指令必须以“AT”或“at”开始,以回车(<CR>)结束
模块的响应通常紧随其后AT指令之后,格式为:<回车><换行><响应内容><回车><换行>
打开串口调试助手SSCOM,选择相应的COM口,设置波特率为115200(SIM808在波特率:1200~115200范围内支持自动识别波特率),√选发送新行(即在发送字符串的最后加上回车),然后发送“AT”到GSM/GPRS/GPS Shield (B),如下图:
可以看到在发送AT回车之后,收到了响应内容为“OK”,表示模块现在已经正常开始工作了
如果发送“AT”后,没有收到响应内容,请检查连接是否正常,COM口选择是否正确,NET灯是否有正常闪烁(如果没有闪烁,表示SIM808未启动,需要长按1秒PWRKEY按键,启动SIM808)
以下介绍几个常用的AT指令:
AT+CPIN?
该指令用于查询SIM卡的状态。如返回:+CPIN:READY,表示SIM卡处于正常工作状态,返回其它值,则可能是没有SIM卡
AT+CSQ
该指令用于查询信号质量,返回SIM808接收信号强度。如返回:+CSQ:21,0,表示信号强度为21(最大有效值是31)。如信号强度过低,则可能是GSM天线没有接好
AT+COPS?
该指令用于查询当前运营商,只有在正常连网后,才会返回运营商,否刚返回空。如返回:+COPS: 0,0,"CHINA MOBILE",表示当前选择的运营商是中国移动
AT+CGMI
该指令用于查询模块制造商,SIM808返回:SIMCOM_Ltd,表示SIM808是由SIMCOM公司生产
AT+CGMM
该指令用于查询模块型号,SIM808返回:SIMCOM_SIM808
AT+CGSN
该指令用于查询产品序列号(即IMEI号),每个模块的IMEI号都是不一样的,具有全球唯一性。如返回:865067021887011,说明模块的产品序列号是:865067021887011
ATE1
该指令用于设置回显模式(默认开启),即模块将收到的AT指令完整的返回给发送端。启用该功能,有利于调试模块。如果不需要开启回显模式,则发送ATE0指令即可关闭,这样收到的指令将不再返回给发送端,有利于程序控制。
关于SIM808详细的AT指令介绍,请参数文档。
GSM调试
- 拨打和接听电话
命令 | 说明 | 返回值 |
---|---|---|
ATE | ATE1设置回显 ATE0关闭回显 |
OK |
AT+COLP | AT+COLP=1设置被叫号码显示 AT+COLP=0关闭被叫号码显示 |
OK |
AT+CLIP | AT+CLIP=1设置来电号码显示 AT+CLIP=0关闭来电号码显示 |
OK |
ATD<phone_number>; | 例如:ATD10086; 必须以半角分号(;)结束 |
OK |
ATA | 接听电话啊 | OK |
ATH | 挂断电话 | OK |
(更多AT指令请参阅SIM808_AT+Comamnd+Manual_V1.01)
发送ATE1,设置回显。
发送AT+COLP=1, 设置被叫号码显示
拨打电话
发送ATD<phone_number>;(用户使用的时候将phone_numnber替换成要拨出的电话号码,最后必须加;符号)拨打号码,如果电话挂断的话,模块会返回”NO CARRIER”字符,在接通后,模块会返回字符+COLP:“phone_number”,129,"",0,""
可以插上带麦克风的耳机,来进行通话
另外模块也可以通过发送ATH主动挂断电话。
接听电话
发送AT+CLIP=1,设置来电号码显示
当有电话进来的时候,模块会显示RING<换行><换行>+CLIP:“phone_number”,161,“”, 0,"",0
发送ATA接通电话,模块返回OK表示正常接通电话,可以使用带麦克风的耳机,插到模块的耳机插口进行通话测试
发送ATH挂断电话,模块返回OK表示结束通话
- 发送和接收短信
命令 | 说明 | 返回值 |
---|---|---|
AT+CNMI | AT+CNMI=2,1设置新消息提示,当收到新消息,且SIM卡未满的时候,模块会返回数据到串口 | OK |
AT+CMGF | AT+CMGF=1设置短信内容为Text格式 AT+CMGF=0设置短信内容为PDU格式 |
OK |
AT+CSCS | 设置TE字符集 AT+CSCS=”GSM”设置为英文文本 AT+CSCS=”UCS2”设置为中文文本 |
OK |
AT+CSMP | AT+CSMP=17,168,2,25设置文本参数 | OK |
AT+CMGR | AT+CMGF=1读取存储于SIM卡位置为1的短信 | 返回短信的具体内容 |
AT+CMGS | AT+CMGS=“phone_number” 给指定号码发送短信。 “GSM”字符集下,最多可以发送180字节的英文字符,”UCS2”字符集下最多可以发送70个汉字(包括字符和数字) |
> 收到该符号后可以输入短信内容 |
0x1A | 结束号,勾选Send As Hex之后发送 |
接收英文短信
发送AT+CNMI=2,1 设置新消息提示
发送AT+CMGF=1 设置消息内容为TXT文本格式
发送AT+CSCS=“GSM”设置消息内容为英文文本
用其他手机发送一条英文消息到模块上。可以看到模块显示数据+CMTI: “ME, 52 表示收到了新消息,存储在SIM卡的位置52.
发送AT+CMGR=52读取位于SIM卡上52的信息。模块显示信息的具体内容。“REC UNREAD”表示这条消息之前没有被阅读过,后面跟着得是发送消息的手机号码,以及发送的日期时间和消息内容。再次发送命令读取该信息,可以发现之前的消息阅读状况变成了“REC READ”表示该条消息之前已经被阅读过了。
发送英文短信
首先发送AT+CMGS=”phone_number”(用户使用时用要发送的手机号替换phone_number),等待模块返回>符号之后发送我们要发送的消息内容,发送消息内容不用在结尾发送回车,把发送新行前面的√去掉。如果保持着发送新行(结尾回车),就相当于编辑短信换行,可以继续输入短信内容。编辑完短信之后,以十六进制的格式(HEX)发送1A来把短信发送出去(0x1A是“CTRL+Z”的键值,用于告诉模块执行发送操作,也可以发送0x1B即“ESC”取消操作)。发送成功后,模块会返回+CNGS:8来确认信息发送成功。
接收中文短信
发送AT+CMGF=1设置文本显示
发送AT+CSCS="GMS"设置GSM编码集
用其他手机给模块发送一条带有中文字符的短信,使用指令AT+CMGR=<num>读取短信内容。读取方式和读取英文短信相似。如果收到的信息是全英文的,模块会直接显示英文内容。如果收到的信息中包含了中文内容,模块显示的短信内容是Unicode编码的组合。我们可以使用 汉字与Unicode编码转换软件将Unicode编码转换成汉字来读取短信内容
发送中文短信
发送AT+CSCS="UCS2", 设置信息文本为UCS2编码集
发送AT+CSMP=17,128,2,25 设置文本参数
由于使用了UCS2编码集,所以发送的内容都必须先用转换软件将内容转换成Unicode编码,包括手机号码。转换后的Unicode编码带有空格,在输入命令的时候需要手动将空格去掉。同样的,结尾需要以十六进制格式(HEX)发送0x1A来执行发送信息质量。发送成功后,可以在手机上看到刚刚发送的短信,是正常的中文格式。
GPS调试
AT+CGNSPWR | AT+CGNSPWR=1 开启GPS电源 AT+CGNSPWR=0 关闭GPS电源 |
OK |
AT+CGNSIPR | AT+CGNSIPR? 查询GPS波特率 AT+CGNSIPR=<Baudrate>设置波特率 |
返回当前波特率 OK |
AT+CGNSTST | AT+CGNSTST=1 将GPS信息打印到串口 AT+CGNSTST=0关闭串口打印GPS信息 |
OK |
AT+CGNSINF | 查询当前GPS信息 | 将当前的GPS信息打印出来 |
T+CGPSSTATUS | 查询GPS状态 |
SIM模块由于版本不同使用的GPS指令有所区别。本模块主要使用的是GNSS指令。更多AT指令请参阅SIM800 Series GNSS Application Note V1.00
将GPS天线连接到GPS天线接口。(最好在空旷地方做测试,由于室内GPS信号不好,可能会搜索不到GPS信号)
发送AT+CGNSPWR=1,打开GPS电源
发送AT+CGNSIPR? ,查询波特率
发送AT+CGNSTST=1,GPS模式复位,同时将GNSS信息打印到串口
用u-center软件查看GPS信息(u-center软件可以在官网提供的资料里面下载)
关闭串口助手,打开u-center 软件
设置端口(Port)和波特率(Baudrate)。端口号为串口读取的端口号。波特率设置为之前查询到的波特率。端口和波特率可以在Receiver里面设置,也可以在面板图标上面直接设置
选择Player>,即可看到GPS信息
GPRS调试
GPRS相关命令说明
命令 | 说明 | 返回值 |
---|---|---|
AT+CGATT | AT+CGATT?查询模块是否附着GPRS业务 | +CGATT:1 1表示附着 |
AT+CSTT | AT+CSTT=”CMNET”启动任务并设置接入点为”CMNET” | OK |
AT+CIICR | 连接GPRS | OK |
AT+CIFSR | 获取模块GPRS本地IP | OK |
AT+CIPSTART | AT+CIPSTART=”Mode”,”IP_Addr”,”Port” Mode为连接模式,IP_Addr为服务端外网IP,Port为服务端端口号 |
CONNECT OK |
AT+CIPSEND | 发送数据 | OK |
1A | 十六进制发送结束一次数据发送 | SEND OK |
AT+CIPCLOSE | 结束连接 | CLOSE OK |
AT+CIPSHUT | 关闭GPRS连接 | SHUT OK |
设置本地电脑虚拟服务器
虚拟服务器定义了广域网服务端口和局域网网络服务器之间的映射关系,所有对该广域网服务端口的访问都会被重新定位给通过IP地址指定的局域网网络服务器。(请参阅您的路由器对应厂商的说明书)
- 使用浏览器登录到路由器管理界面(具体地址请参阅您的路由器说明书)
- 设置端口号:5432(与已有的端口号不冲突即可。本例设为5432)
- 设置电脑端内网IP(局域网内电脑获取的IP,可以在本机运行CMD,进入命令行提示符,输入ipconfig查看IPv4地址,本例的电脑内网IP是192.168.1.44)
- 获取外网IP(后续调试需要用到)。外网IP可以通过浏览器搜索IP获得(如下图),也可以在路由器界面查询获得。
配置GPRS
- 模块上电之后,长按PWRKEY按键大概1秒左右启动SIM808.
- 发送AT查看模块是否正常启动
- 发送AT+CSQ查询一下信号强度是否正常
- 发送AT+CGATT?查询模块是否开启了GPRS业务
- 发送AT+CSTT=“CMNET”启动任务
- 发送AT+CIICR激活场景,发起GPRS连接
- 发送AT+CIFSR获取模块的GPRS本地IP
调试GPRS
- 发送AT+CIPSTART=“TCP”,“116.30.217.142”,“5432”。这里的地址和端口后分别是前面查询到的外网IP以及设置的端口号。用户在测试的时候需要用本机的外网IP和端口号分别替换掉“116.30.217.142”和“5432”。
- 等待模块返回CONNECT OK的应答信息,说明TCP连接成功(用“UDP”替换指令中的“TCP”可以发起UDP连接)。成功连接后就可以使用AT+CIPSEND指令来发送数据,<符号表示可以输入需要发送的数据,想要结束输入数据,只要在最后一次输入的时候不回车换行(不勾选发送新行)。
- 信息发送需要以十六进制的格式发送1A来执行发送指令。模块返回SEND OK表示数据发送成功,数据发送成功不代表服务端成功接收到了数据。
- 使用TCP232软件查看,可以看到服务端成功接收到模块发送过来的数据。
- 使用AT+CIPCLOSE来关闭TCP连接,使用AT+CIPSHUT来关闭CPRS连接
蓝牙调试
指令说明
命令 | 说明 | 返回值 |
---|---|---|
AT+BTPOWER=1 | AT+BTPOWER=1开启蓝牙电源A AT+BTPOWER=0关闭蓝牙电源 |
OK |
AT+BTHOST | AT+BTHOST?查询模块的蓝牙名称和地址 AT+BTHOS=<Name>修改模块的蓝牙名称 |
返回蓝牙名字和MAC地址 |
AT+BTSCAN | AT+BTSCAN=1,10搜索周围蓝牙设备 | 返回搜索到的蓝牙设备信息 +BTSCAN:<Num> |
AT+BTPAIR | AT+BTPAIR=0,1跟设备1进行配对 AT+BTPAIR=1,1确认配对 |
OK |
AT+BTUNPAIR | AT+BTUNPAIR=0清除已保存的配对信息 | OK |
AT+BTACPT | AT+BTACPT=1确认蓝牙SPP连接 | OK |
AT+BTSPPSEND | AT+SPPSEND发送数据 | 返回<可以开始输入数据 |
更多AT指令请参阅SIM808_AT+Comamnd+Manual_V1.01
配置蓝牙
- 将蓝牙天线连接到GSM模块的蓝牙天线接口上面。打开手机蓝牙,并且开放检测,使手机蓝牙能够被未配对的设备搜索到
- 发送AT+BTPOWER=1开启蓝牙电源
- 发送AT+BTHOST?查询模块的蓝牙名称和地址,可以通过AT+BTHOST=<Name>指令来修改模块的蓝牙名称
蓝牙配对
- 发送AT+BTSCANT=1,10搜索在周围的蓝牙设备。搜索过程中,串口会打印搜索到的蓝牙设备的信息。例如+BTSCAN:0,1, “HUAWEI Mate 8”,98:e7:f5:5a:7e:ea,-44。其中0,1是设备ID,“HUAWEI Mate 8”是设备名称,98:e7:f5:5a:7e:ea是设备的MAC地址,-44是设备的RSSI值。
- 等待设备返回信息+BTSCAN:3表示搜索完毕,未搜索完毕时发送指令会提示ERROR
- 发送AT+BTPAIR=0,1与设备1进行配对。注意:如果之前已经与该设备配对过了,模块会返回配对失败信息。可以使用AT+BTUNPAIR=0清除配对信息,重新配对即可。
- 发送配对指令成功后,会看到手机弹出配对信息,手机端点击配对后,需要发送AT+BTPAIR=1,1确认既可配对。如果没有发送AT+BTPAIR指令确认配对,在等待一段时间后,手机端会弹配对失败信息。需要重新发起配对指令。也可以由手机端发起配对,模块输入AT+BTPAIR=1,1即可确认配对。
蓝牙连接
使用蓝牙APP与模块进行蓝牙连接和通信,这里可扫描对应二维码下载我们提供的蓝牙APP,使用其中的串口功能进行测试。(该蓝牙APP只做简单测试使用,不提供其他功能)
- 打开APP,点击右上角的扫描搜索蓝牙设备,点击“SIM808”(模块的蓝牙名字,这里我将模块名字定义为SIM808),然后点击串口控制连接。模块接收到连接信息后,会显示+BTCONNECTING:信息表示模块正在等待连接,如果一段时间不做回应的话,手机端会提示连接失败,同时模块显示+BTDISCONN:提示连接失败。
- 重新进行一次连接,发送AT+BTACPT=1确认连接。模块会显示+BTCONNECT信息提示连接SPP成功。同时手机端可以发送数据。
- 模块接收到手机蓝牙发送过来的数据,会以设备ID,字符长度,数据内容的形式打印到串口上面。
- 发送AT+BTSPPSEND发送数据。等待>符号出现,输入数据内容,结尾不换行结束输入。十六进制格式发送1A将输入的数据发送出去。可以看到手机端成功接收到数据。
搭配Arduino UNO R3
准备工作:
- GSM/GPRS/GPS Shield (B) (本套件)
- Arduino UNO R3
- SIM卡
- Arduino D口USB线
- 电脑端串口软件
- 电脑端u-center软件
- GPS天线
- GSM天线
- 蓝牙天线
- 9V直流电源
1) 操作:
- 标号①:给Arduino插上USB线
- 标号②:给模块插上micro USB线
- 标号③:连接DC电源(DC6-9V)
- 标号④:打开电源
- 标号⑤:设置Arduino接口控制器VREF电压
- 标号⑥:连接GPS天线
- 标号⑦:模块启动按键
- PWRKEY第一次为低电平,NET闪烁,模块启动
- PWRKEY再次为低电平,NET熄灭,模块关闭
- 标号⑧:连接蓝牙天线
- 标号⑨:连接GSM天线
- 标号10:SIM808串口设置端
- SIM_TX:SIM808串口输出端
- SIM_RX:SIM808串口接收端
- 标号11:设置模块串口通信端
- usb:SIM808串口接口连接CP2102
- Arduino:SIM808串口接口连接Arduino接口的控制器
软件调试
以GPS为例子
- 设置Uart-select 到Arduino
- 按PWRKEY按键1s,启动模块
- 将程序下载到Arduino R3的板子里
- 打开Arduino监视串口
- 按RESET 按键
也可以关掉Arduino串口监测工具,用u-center软件监测。
搭配NUCLEO-F401RE
准备工作
- GSM/GPRS/GPS Shield (B) (本套件)
- NUCLEO-F401RE
- ST-LINK 下载器
- micro USB接口线
- 电脑端串口软件
- 电脑端u-center软件
- 9V直流电源
1) 操作:
- 标号①:设置模块串口输出选择
- USB:SIM808串口接口连接CP2102
- Arduino:SIM808串口接口连接Arduino接口的控制器
- 标号②:macro USB接口线
- 连接PC,传递串口数据
- 标号③:连接DC电源(DC6-9V)
- 标号④:启用STM32 MCU和本产品之间的通信
- RX---PA3
- TX---PA2
- 标号⑤:启用CP2102和STM32 MCU之间的通信
- RX---PC7
- TX---PC6
- 标号⑥:电源开关
- 标号⑦:设置Arduino接口控制器VREF电压
- 标号⑧:GPS天线
- 标号⑨:SIM808模块启动按键
- PWRKEY第一次为低电平,NET闪烁,模块启动
- PWRKEY再次为低电平,NET熄灭,模块关闭
- 标号⑩:蓝牙天线接口
- 标号11:GSM天线
- 标号12:设置模块串口输出选择
- USB:SIM808串口接口连接CP2102
- Arduino:SIM808串口接口连接Arduino接口的控制器
软件调试
以GPS为例子
- 使用ST-LINK把将程序下载到NUCLEO-F401RE
- 按RESET 按键
- 点击①的下载程序
- 打开串口查看软件,设置端口(电脑获取),波特率(115200),按复位按键,获取信息。
- 用u-center软件观看
- 打开u-center,设置端口(电脑获取),波特率(115200)
- 按下复位键,获取信息(更多u-center用法参考用户指引PDF文档)