GSM/GPRS/GPS Shield (B) 用户手册

来自Waveshare Wiki
跳转至: 导航搜索


操作现象

硬件说明

硬件连接
  1. SIM808 模组
  2. MIC29302 电源芯片
  3. CP2102 USB转UART芯片
  4. SMF05C 瞬变抑制二极管
  5. 1N5408 整流二极管
  6. SIM808功能引脚
  7. Arduino接口
  8. USB TO UART接口
  9. DC电源接口
  10. GPS天线接口
  11. 蓝牙天线接口
  12. 固件更新接口
  13. GSM天线接口
  14. SIM卡槽
  15. 3.5mm耳机\麦克风接口
  16. GPS状态指示灯
  17. CP2102串口收发指示灯
  18. NET指示灯
    模块刚启动时快闪
    GSM注册成功后慢闪
  19. 电源指示灯
  20. 电源开关
  21. SIM808 控制按键
    长按1s启动SIM808
    启动后,长按1s关闭SIM808
  22. 复位按键
  23. UART选择开关
    可选择CP2102控制SIM808
    或通过arduino接口的UART引脚控制SIM808
  24. SIM808串口设置端
    SIM_TX:SIM808 UART发送引脚
    SIM_RX:SIM808 UART接收引脚
  25. IOREF电源选择管脚
    设置UART电平

快速入门

准备工作

用户在使用模块前除了本身配备的电源、micro USB线、GSM天线、GPS天线和蓝牙天线外,还需要准备以下2样东西:

  1. 一张中国移动的SIM卡,未停机,并开通 GPRS 功能(否则无法进行 GPRS 功能测试)
  2. 一副带麦克风的耳机(用于测试通话功能
  • 将SIM卡安装到SIM卡槽,接上耳机,并连接好GSM天线

GSM00.jpg

  • 这里我们使用PC机进行测试,需要先安装CP2102驱动。
  • 驱动安装后,把micro USB线一端接PC机的USB接口,另一端接GSM/GPRS/GPS Shield (B)的USB TO UART接口,并将Uart Select开关拨到USB一端,接上电源,并打开电源开关,给模块上电。可以看到PWR灯变为常亮状态。

GSM01.jpg

  • 在设备管理器里面可以看到CP2102对应的COM口。这里是COM7,用户以自己PC识别到的COM口为准。

GSM02.jpg

  • 长按模块的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),如下图:
GSM03.jpg
可以看到在发送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, 设置被叫号码显示
GSM phone setting.jpg

拨打电话

发送ATD<phone_number>;(用户使用的时候将phone_numnber替换成要拨出的电话号码,最后必须加;符号)拨打号码,如果电话挂断的话,模块会返回”NO CARRIER”字符,在接通后,模块会返回字符+COLP:“phone_number”,129,"",0,""
可以插上带麦克风的耳机,来进行通话
另外模块也可以通过发送ATH主动挂断电话。
GSM calling phone.jpg

接听电话

发送AT+CLIP=1,设置来电号码显示
当有电话进来的时候,模块会显示RING<换行><换行>+CLIP:“phone_number”,161,“”, 0,"",0
发送ATA接通电话,模块返回OK表示正常接通电话,可以使用带麦克风的耳机,插到模块的耳机插口进行通话测试
发送ATH挂断电话,模块返回OK表示结束通话
GSM answer phone.jpg

  • 发送和接收短信
命令 说明 返回值
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”表示该条消息之前已经被阅读过了。
GSM EN message 1.jpg

发送英文短信

首先发送AT+CMGS=”phone_number”(用户使用时用要发送的手机号替换phone_number),等待模块返回>符号之后发送我们要发送的消息内容,发送消息内容不用在结尾发送回车,把发送新行前面的√去掉。如果保持着发送新行(结尾回车),就相当于编辑短信换行,可以继续输入短信内容。编辑完短信之后,以十六进制的格式(HEX)发送1A来把短信发送出去(0x1A是“CTRL+Z”的键值,用于告诉模块执行发送操作,也可以发送0x1B即“ESC”取消操作)。发送成功后,模块会返回+CNGS:8来确认信息发送成功。
GSM EN message 2.jpg

接收中文短信

发送AT+CMGF=1设置文本显示
发送AT+CSCS="GMS"设置GSM编码集
用其他手机给模块发送一条带有中文字符的短信,使用指令AT+CMGR=<num>读取短信内容。读取方式和读取英文短信相似。如果收到的信息是全英文的,模块会直接显示英文内容。如果收到的信息中包含了中文内容,模块显示的短信内容是Unicode编码的组合。我们可以使用 汉字与Unicode编码转换软件将Unicode编码转换成汉字来读取短信内容
GSM CN message1.jpg GSM CN message2.jpg

发送中文短信

发送AT+CSCS="UCS2", 设置信息文本为UCS2编码集
发送AT+CSMP=17,128,2,25 设置文本参数
由于使用了UCS2编码集,所以发送的内容都必须先用转换软件将内容转换成Unicode编码,包括手机号码。转换后的Unicode编码带有空格,在输入命令的时候需要手动将空格去掉。同样的,结尾需要以十六进制格式(HEX)发送0x1A来执行发送信息质量。发送成功后,可以在手机上看到刚刚发送的短信,是正常的中文格式。
GSM CN message4.jpg GSM CN message3.jpg GSM CN message5.jpg

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信息打印到串口

GSM GPS 1.JPG

用u-center软件查看GPS信息(u-center软件可以在官网提供的资料里面下载)
关闭串口助手,打开u-center 软件
设置端口(Port)和波特率(Baudrate)。端口号为串口读取的端口号。波特率设置为之前查询到的波特率。端口和波特率可以在Receiver里面设置,也可以在面板图标上面直接设置

GSM-GPRS-GPS-Shield-B-UserManual-11.jpg

选择Player>,即可看到GPS信息

GSM-GPRS-GPS-Shield-B-UserManual-13.jpg

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)

GSM GPRS 1.png

  • 获取外网IP(后续调试需要用到)。外网IP可以通过浏览器搜索IP获得(如下图),也可以在路由器界面查询获得。

GSM GPRS 2.jpg

配置GPRS

  • 模块上电之后,长按PWRKEY按键大概1秒左右启动SIM808.
  • 发送AT查看模块是否正常启动
  • 发送AT+CSQ查询一下信号强度是否正常
  • 发送AT+CGATT?查询模块是否开启了GPRS业务
  • 发送AT+CSTT=“CMNET”启动任务
  • 发送AT+CIICR激活场景,发起GPRS连接
  • 发送AT+CIFSR获取模块的GPRS本地IP

GSM GPRS 3.jpg

调试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连接

GSM GPRS 4.jpg

蓝牙调试

指令说明

命令 说明 返回值
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即可确认配对。

GSM Bluetooth 3.png.jpg

蓝牙连接

使用蓝牙APP与模块进行蓝牙连接和通信,这里可扫描对应二维码下载我们提供的蓝牙APP,使用其中的串口功能进行测试。(该蓝牙APP只做简单测试使用,不提供其他功能)

Bluetooth ios wsble.png Bluetooth android wsedr.png

  • 打开APP,点击右上角的扫描搜索蓝牙设备,点击“SIM808”(模块的蓝牙名字,这里我将模块名字定义为SIM808),然后点击串口控制连接。模块接收到连接信息后,会显示+BTCONNECTING:信息表示模块正在等待连接,如果一段时间不做回应的话,手机端会提示连接失败,同时模块显示+BTDISCONN:提示连接失败。
  • 重新进行一次连接,发送AT+BTACPT=1确认连接。模块会显示+BTCONNECT信息提示连接SPP成功。同时手机端可以发送数据。
  • 模块接收到手机蓝牙发送过来的数据,会以设备ID,字符长度,数据内容的形式打印到串口上面。
  • 发送AT+BTSPPSEND发送数据。等待>符号出现,输入数据内容,结尾不换行结束输入。十六进制格式发送1A将输入的数据发送出去。可以看到手机端成功接收到数据。

GSM Bluetooth 4.png.jpg

GSM Bluetooth 2.png GSM Bluetooth 1.png

搭配Arduino UNO R3

准备工作:

  • GSM/GPRS/GPS Shield (B) (本套件)
  • Arduino UNO R3
  • SIM卡
  • Arduino D口USB线
  • 电脑端串口软件
  • 电脑端u-center软件
  • GPS天线
  • GSM天线
  • 蓝牙天线
  • 9V直流电源

1) 操作:

Arduino硬件连接图
  • 标号①:给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接口的控制器

软件调试

打开GNSS.ino文件
验证程序,打开监控串口
按 RESET 按键

以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) 操作:

NUCLEO-F401RE硬件连接图
  • 标号①:设置模块串口输出选择
    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文档)
  • 使用Keil MDK编译下载GSP.uvproj工程
  • 通过串口查看软件获取串口信息
  • 通过u-center查看GPS信息