logo资料库

ATK-SIM900A模块使用说明(战舰V3&精英板)_AN1504.pdf

第1页 / 共46页
第2页 / 共46页
第3页 / 共46页
第4页 / 共46页
第5页 / 共46页
第6页 / 共46页
第7页 / 共46页
第8页 / 共46页
资料共46页,剩余部分请下载后查看
AN1504 ATK-SIM900A GSM/GPRS模块使用说明
1、ATK-SIM900A GSM/GPRS模块简介
1.1 模块资源简介
1.2 模块使用
1.2.1 AT指令简介
1.2.2 拨打/接听电话
1.2.3 短信的读取与发送
1.2.4 GPRS通信
2、硬件连接
3、软件实现
4、验证
4.1 拨号测试
4.2 短信测试
4.3 GPRS测试
AN1504 ATK-SIM900A GSM/GPRS 模块使用说明 本应用文档(AN1504,对应战舰 V3 / 精英 STM32F103 开发板扩展实验 4)将教大家如 何在战舰 V3 / 精英 STM32F103 开发板上使用 ATK-SIM900A GSM/GPRS 模块。 本文档分为如下几部分: 1, ATK-SIM900A GSM/GPRS 模块简介 2, 硬件连接 3, 软件实现 4, 验证 1、ATK-SIM900A GSM/GPRS 模块简介 ATK-SIM900A-V15(V15 是版本号,下面简称 ATK-SIM900A)是 ALIENTEK 推出的一款高 性能工业级 GSM/GPRS 模块(开发板)。ATK-SIM900A 模块板载 SIMCOM 公司的工业级双频 GSM/GPRS 模块:SIM900A,工作频段双频:900/1800Mhz,可以低功耗实现语音、SMS(短 信、彩信)、数据和传真信息的传输。 ATK-SIM900A 模块支持 RS232 串口和 LVTTL 串口(即支持 3.3V/5V 系统),并带硬件流控 制,支持 5V~24V 的超宽工作范围,使得本模块可以非常方便的与您的产品进行连接,从而 给您的产品提供包括语音、短信和 GPRS 数据传输等功能。 1.1 模块资源简介 ATK-SIM900A 模块接口丰富,功能完善,尤其适用于需要语音/短信/GPRS 数据服务的各 种领域,其资源图如图 1.1.1 所示: (MIC)座 RS232 选择 麦克风 RTC 后备 电池 接口 耳机座 ADC 和 LCD 显示接口 串口控制和 PKEY 引出接口 SIM900A 模块 SP3232 RS232 串口 锂电池 接口 MP2303 电源输入 接口 电源防反接 二极管 电源 指示灯 电源 开关 TVS 电源保护 PWM、IIC 以及 GPIO 引出接口 图 2.1.1 ATK-SIM900A 模块资源图 翻盖式 SIM 卡座 PIO 和 STATUS 引出接口 SMA 天线接口 和小辣椒天线 网络状态 指示灯 SMF05C ESD 保护 开机/关机 按键 从图 1.1.1 可以看出,ATK-SIM900A 模块不但外观漂亮,而且功能齐全、接口丰富,模 块尺寸(不算天线部分)为 80mm*58mm,并带有安装孔位,非常小巧,并且利于安装,可 www.alientek.comALIENTEK STM32开发板AN1504www.openedv.com开源电子网2015-4-12
方便应用于各种产品设计。 ALIENTEK ATK-SIM900A 模块(开发板)板载资源如下: ◆ GSM 模块:SIM900A ◆ 1 个 RTC 后备电池 ◆ 1 个麦克风接口 ◆ 1 个耳机接口 ◆ 1 个 RS232 选择接口 ◆ 1 个 RS232 串口 ◆ 1 个 锂电池接口 ◆ 1 个电源输入接口 ◆ 1 个电源指示灯(蓝色) ◆ 1 个电源开关 ◆ 1 个翻盖式 SIM 卡座 ◆ 1 个 SMA 天线接口并配套小辣椒天线 ◆ 1 个开机/关机按键 ◆ 1 个网络状态指示灯(红色) ◆ SIM900A 模块的所有 IO 口均用排针引出,方便使用 ATK-SIM900A 模块(开发板)采用工业级标准设计,特点包括:  板载 RS232 串口(支持硬件流控制),方便与 PC/工控机等设备连接;  板载 3.5mm 耳机和麦克风座,方便进行语音通信开发;  引出所有 SIM900A 模块的 IO 口,并对通信部分 IO 口做了兼容性设计,方便连接 3.3V/5V 单片机系统;  板载高效同步降压电路,转换效率高达 90%,支持超宽电压工作范围(5~24V),非 常适合工业应用;  板载电源防反接保护,TVS 电源保护和 SIM 卡 ESD 保护,保护功能完善;  板载 RTC 后备电池(XH414H-IV01E),无需担心掉电问题;  板载小辣椒天线,能有效提高信号接收能力;  采用国际 A 级 PCB 料,沉金工艺加工,稳定可靠;  采用全新元器件加工,纯铜镀金排针,坚固耐用;  人性化设计,各个接口都有丝印标注,使用起来一目了然;接口位置设计安排合理, 方便顺手。  PCB 尺寸为 80mm*58mm,并带有安装孔位,小巧精致; ATK-SIM900A 模块的资源介绍,我们就介绍到这里,详细的介绍,请看《ATK-SIM900A GSM(GPRS)模块用户手册》相关章节。 1.2 模块使用 本文档,我们将介绍大家如何通过 ALIENTEK STM32 开发板连接 ATK-SIM900A 模块,实 现:拨号测试(电话的拨打和接听)、短信测试(读短信和写短信)和 GPRS 测试(TCP 通信 和 UDP 通信)等 3 大功能,本节我们将介绍要实现这些功能所需要的相关知识。 1.2.1 AT 指令简介 AT 即 Attention,AT 指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过 TA,TE 发送 AT 指令来控制移动台(Mobile Station,MS)的功能,与 GSM 网络业务进行交互。用户可以通过 AT 指令进行呼叫、短信、 www.alientek.comALIENTEK STM32开发板AN1504www.openedv.com开源电子网2015-4-12
AT 指令必须以"AT"或"at"开头,以回车()结尾。模块的响应通常紧随其后,格式 电话本、数据业务、传真等方面的控制。 为:<回车><换行><响应内容><回车><换行>。 我们通过串口调试助手 SSCOM 来测试一下,打开:ATK-SIM900A 模块配套资料\3,配 套软件\串口调试助手\ XCOM.exe,选择正确的 COM 号(连接到 ATK-SIM900A 模块的 COM 端口,我电脑是 COM2),然后设置波特率为 115200,勾选发送新行(必选!即 sscom 自动 添加回车换行功能),然后发送 AT 到 ATK-SIM900A 模块,如图 1.2.1.1 所示: 图 1.2.1.1 AT 指令测试 图 1.2.1.1 中,我们发送了 2 次 AT 指令,第一次看到有乱码,这是因为模块上电后,还 没有实现串口同步,在收到第一次数据(不一定要 AT 指令)后,模块会自动实现串口同步(即 自动识别出了通信波特率),后续通信就不会出现乱码了。因为 SIM900A 具有自动串口波特 率识别功能(识别范围:1200~115200),所以电脑(或设备)可以随便选择一个波特率(不超 过识别范围即可),来和模块进行通信,这里我们选择最快的 115200。 从图 1.2.1.1 可以看出,我们现在已经可以和 SIM900A 模块进行通信了,我们通过发送 不同的 AT 指令,就可以实现对 SIM900A 的各种控制了。 SIM900A 模块提供的 AT 命令包含符合 GSM07.05、GSM07.07 和 ITU-T Recommendation V.25ter 的指令,以及 SIMCOM 自己开发的指令。接下来我们介绍几个常用的 AT 指令: 1, AT+CPIN? 该指令用于查询 SIM 卡的状态,主要是 PIN 码,如果该指令返回:+CPIN:READY,则表 明 SIM 卡状态正常,返回其他值,则有可能是没有 SIM 卡。 2, AT+CSQ 该指令用于查询信号质量,返回 SIM900A 模块的接收信号强度,如返回:+CSQ: 24,0, 表示信号强度是 24(最大有效值是 31)。如果信号强度过低,则要检查天线是否接好了? 3, AT+COPS? www.alientek.comALIENTEK STM32开发板AN1504www.openedv.com开源电子网2015-4-12
该指令用于查询当前运营商,该指令只有在连上网络后,才返回运营商,否则返回空, 如返回:+COPS:0,0, "CHINA MOBILE",表示当前选择的运营商是中国移动。 4, AT+CGMI 该指令用于查询模块制造商,如返回:SIMCOM_Ltd,说明 SIM900A 模块是 SIMCOM 公 司生产的。 5, AT+CGMM 该指令用于查询模块型号,如返回:SIMCOM_SIM900A,说明模块型号是 SIM900A。 6, AT+CGSN 该指令用于查询产品序列号(即 IMEI 号),每个模块的 IMEI 号都是不一样的,具有全球 唯一性,如返回:869988012018905,说明模块的产品序列号是:869988012018905。 7, AT+CNUM 该指令用于查询本机号码,必须在 SIM 卡在位的时候才可查询,如返回:+CNUM: "","15902020353",129,7,4,则表明本机号码为:15902020353。另外,不是所有的 SIM 卡都 支持这个指令,有个别 SIM 卡无法通过此指令得到其号码。 8, ATE1 该指令用于设置回显模式(默认开启),即模块将收到的 AT 指令完整的返回给发送端, 启用该功能,有利于调试模块。如果不需要开启回显模式,则发送 ATE0 指令即可关闭(我 们的例程就需要这样),这样收到的指令将不再返回给发送端,这样方便程序控制。 以上就是我们介绍的几个常用的 AT 指令,当然还有其他一些常用的 AT 指令,比如 ATD/ATA/ATH 等,我们在后面介绍。关于 SIM900A 详细的 AT 指令介绍,请参考:ATK-SIM900A 模块配套资料\4,SIM900A 模块资料\ SIM900A_AT 命令手册_V1.05.pdf 这个文档。 发送给模块的指令,如果执行成功,则会返回对应信息和"OK",如果执行失败/指令无 效,则会返回"ERROR"。 1.2.2 拨打/接听电话 使用 ATK-SIM900A 模块可以非常方便的的进行拨打和接听电话。实现拨号和接听电话, 常用的的指令有:ATE0/ATD/ATA/ATH/AT+COLP/AT+CLIP/AT+VTS 等 6 条 AT 指令。 ATD,用于拨打任意电话号码,格式为:ATD+号码+;,末尾的’;’一定要加上,否则不能 ATE0,用于关闭回显,在通过电脑串口调试助手调试的时候,我们发送:ATE1,开启回 显,可以方便调试,但是我们通过单片机程序控制的时候,用不到回显功能,所以发送:ATE0, 将其关闭。 成功拨号,如发送:ATD10086;,即可实现拨打 10086。 ATA,用于应答电话,当收到来电的时候,给模块发送:ATA,即可接听来电。 ATH,用于挂断电话,要想结束正在进行的通话,只需给模块发送:ATH,即可挂断。 AT+COLP,用于设置被叫号码显示,这里我们通过发送:AT+COLP=1,开启被叫号码显 AT+CLIP,用于设置来电显示,通过发送:AT+CLIP=1,可以实现设置来电显示功能,模 AT+VTS,产生 DTMF 音,该指令只有在通话进行中才有效,用于向对方发送 DTMF 音, 示,当成功拨通的时候(被叫接听电话),模块会返回被叫号码。 块接收到来电的时候,会返回来电号码。 比如在拨打 10086 查询的时候,我们可以通过发送:AT+VTS=1,模拟发送按键 1。 以上就是在拨打/接听电话时经常用到的几条指令,通过这几条指令,就可以实现电话 的拨打和接听了,不过首先要保证模块成功接入到 GSM 网络,通过发送:AT+COPS?,如 果返回:+COPS: 0,0,"CHINA MOBILE",则说明模块成功连接到了 GSM 网络,可以正常使用了, 网络运营商为"CHINA MOBILE"(中国移动)。 www.alientek.comALIENTEK STM32开发板AN1504www.openedv.com开源电子网2015-4-12
这些指令的使用示例可以参考《ATK-SIM900A GSM(GPRS)模块用户手册》2.3.3 节。 1.2.3 短信的读取与发送 使用 ATK-SIM900A 模块,我们可以很方便的进行中英文短信的读取与发送。短信的读取 与发送将用到的指令有:AT+CNMI/ AT+CMGF / AT+CSCS / AT+CSMP / AT+CMGR/AT+CMGS/ AT+CPMS 等 7 条 AT 指令。 AT+CNMI,用于设置新消息指示。发送:AT+CNMI=2,1,设置新消息提示,当收到新消 息,且 SIM 卡未满的时候,SIM900A 模块会通过串口输出数据,如:+CMTI: "SM",2,表示收 到接收到新消息,存储在 SIM 卡的位置 2。 AT+CMGF,用于设置短消息模式,SIM900A 支持 PDU 模式和文本(TEXT)模式等 2 种 模式,发送:AT+CMGF=1,即可设置为文本模式。 AT+CSCS,用于设置 TE 字符集,默认的为 GSM 7 位缺省字符集,在发送纯英文短信的 时候,发送:AT+CSCS="GSM",设置为缺省字符集即可。在发送中英文短信的时候,需要发 送:AT+CSCS="UCS2",设置为 16 位通用 8 字节倍数编码字符集。 AT+CSMP,用于设置短消息文本模式参数,在使用 UCS2 方式发送中文短信的时候,需 要发送:AT+CSMP=17,167,2,25,设置文本模式参数。 AT+CMGR,用于读取短信,比如发送:AT+CMGR=1,则可以读取 SIM 卡存储在位置 1 的短信。 AT+CMGS,用于发送短信,在"GSM"字符集下,最大可以发送 180 个字节的英文字符, 在"UCS2"字符集下,最大可以发送 70 个汉字(包括字符/数字)。 AT+CPMS,用于查询/设置优选消息存储器,通过发送:AT+CPMS?,可以查询当前 SIM 卡 最 大 支 持 多 少 条 短 信 存 储 , 以 及 当 前 存 储 了 多 少 条 短 信 等 信 息 。 如 返 回 : +CPMS: "SM",1,50,"SM",1,50,"SM",1,50,表示当前 SIM 卡最大存储 50 条信息,目前已经有 1 条存储 的信息。 以上就是短信读取与发送需要用到的一些 AT 指令,这些指令的使用示例可以参考 《ATK-SIM900A GSM(GPRS)模块用户手册》2.3.4 节。 为方便实现中英文短信的读取与发送,本文档例程采用文本模式(AT+CMGF=1)、UCS2 编码字符集(AT+CSCS="UCS2"),这样电话号码和短信内容,全部是采用 UNICODE 编码的字 符串。在读取短信的时候,需要将模块返回的 UNICODE 编码字符串转换为 GBK/ASCII 码,以 便显示(我们的例程只支持 GBK/ASCII 编码的汉字/字符显示)。而在发送短信的时候,需要 将 GBK/ASCII 编码的电话号码和短信内容转换为 UNICODE 编码的字符串,发送给 ATK-SIM900A 模块,实现中英文短信的发送。 在《ATK-SIM900A GSM(GPRS)模块用户手册》2.3.4 节里面,我们使用了一个汉字 Unicode 互换工具的软件来实现汉字和 UNICODE 的互换,而在本文档例程里面,我们要在开发板液 晶上面显示短信内容,而液晶只支持 GBK 编码的汉字显示,所以我们需要一个 GBK/UNICODE 互换编码表,通过查表来实现 UNICDOE 和 GBK 的互换。这里我们利用 FATFS 提供的 cc936.c 里面的数组 uni2oem 来实现,不过为了节省空间,我们将该码表转换为:UNIGBK.BIN,并存 放到了外部 FLASH 芯片(这部分实现请参考《STM32 开发指南》第 46 章 汉字显示实验), 通过 ff_convert 函数,我们可以实现 UNICODE 码和 GBK 码的互换,不过都是十六进制格式 的,但是 ATK-SIM900A 模块接受的 UNCODE 编码,都是采用字符串格式的形式,所以需要做 一下字符串/十六进制格式转换。 比如汉字“好”的 GBK 编码是 0XBAC3,我们需要先将其转换为 UNCODE 编码:0X597D, 然后再转换为 UNICODE 字符串”597D”,最后再发送给 ATK-SIM900A 模块,才可以正常使用。 而相反的,我们的程序在收到模块发过来的 UNICODE 字符串”597D”后,必须先将其转换为 www.alientek.comALIENTEK STM32开发板AN1504www.openedv.com开源电子网2015-4-12
16 进制的 UNICODE 编码:0X597D,然后再将其转换为 GBK 编码:0XBAC3,最后送给汉字 显示函数,才能在 LCD 上面显示出“好”这个汉字。 1.2.4 GPRS 通信 ATK-SIM900A 模块内嵌了 TCP/IP 协议,通过该模块,我们可以很方便的进行 GPRS 数据 通信。本文档例程我们将实现模块与电脑的 TCP 和 UDP 数据传输。将要用到的指令有: AT+CGCLASS/AT+CGDCONT/ AT+CGATT/AT+CIPCSGP/AT+CIPHEAD /AT+CLPORT/AT+CIPSTART/ AT+CIPSEN/AT+CIPSTATUS/AT+CIPCLOSE/AT+CIPSHUT 等 11 条 AT 指令。 AT+CGCLASS,用于设置移动台类别。SIM900A 模块仅支持类别"B"和"CC",发送: AT+CGCLASS="B",设置移动台台类别为 B。即,模块支持包交换和电路交换模式,但不能同 时支持。 上下文标标志为 1,采用互联网协议(IP),接入点为"CMNET"。 AT+CGDCONT,用于设置 PDP 上下文。发送:AT+CGDCONT=1,"IP","CMNET",设置 PDP AT+CGATT,用于设置附着和分离 GPRS 业务。发送:AT+CGATT=1,附着 GPRS 业务。 AT+CIPCSGP,用于设置 CSD 或 GPRS 链接模式。发送:AT+CIPCSGP=1, "CMNET",设置为 AT+CLPORT,用于设置本地端口号。发送:AT+CLPORT="TCP","8888",即设置 TCP 连接 GPRS 连接,接入点为”CMNET”。 AT+ CIPHEAD,用于设置接收数据是否显示 IP 头。发送:AT+CIPHEAD=1,即设置显示 IP 头,在收到 TCP/UDP 数据的时候,会在数据之前添加如:+IPD:28,表示是 TCP/UDP 数据, 数据长度为 28 字节。通过这个头,可以方便我们在程序上区分数据来源。 本地端口号为 8888。 "TCP","113.111.214.69","8086",模块将建立一个 TCP 连接,连接目标地址为:113.111.214.69, 连接端口为 8086(这个 IP 和端口得根据实际情况确定),连接成功会返回:CONNECT OK。 AT+CIPSEND,用于发送数据。在连接成功以后发送:AT+CIPSEND,模块返回:>,此时 可以输入要发送的数据,最大可以一次发送 1352 字节,数据输入完后,同发短信一样,输 入十六进制的:1A(0X1A),启动发送数据。在数据发送完成后,模块返回:SEND OK,表 示发送成功。 AT+CIPSTART,用于建立 TCP 连接或注册 UDP 端口号。发送: AT+CIPSTART= AT+CIPSTATUS,用于查询当前连接状态。发送:AT+CIPSTATUS,模块即返回当前连接状 态。 AT+CIPCLOSE,用于关闭 TCP/UDP 连接。发送:AT+CIPCLOSE=1,即可快速关闭当前 TCP/UDP 连接。 AT+CIPSHUT,用于关闭移动场景。发送:AT+SHUT,则可以关闭移动场景,关闭场景后 连接状态为:IP INITIAL,可以通过发送:AT+CIPSTATUS,查询。另外,在连接建立后,如果 收到:+PDP: DEACT,则必须发送:AT+CIPSHUT,关闭场景后,才能实现重连。 以上就是 GPRS 通信(TCP/UDP)将要用到的一些 AT 指令的简介,这些指令的使用示例 可以参考《ATK-SIM900A GSM(GPRS)模块用户手册》2.3.5 节。 另外,要实现模块与电脑的 GPRS 通信,需要确保所用电脑具有公网 IP,否则无法实现 通信,推荐在 ADSL 网络下进行测试,并最好关闭防火墙/杀毒软件。 对于 ADSL 用户(没用路由器),直接拥有 1 个公网 IP,你可以通过百度,搜索:IP,第 一个条目,就是本机 IP,如图 1.2.4.1 所示: www.alientek.comALIENTEK STM32开发板AN1504www.openedv.com开源电子网2015-4-12
图 1.2.4.1 百度得到的本机公网 IP 该 IP 将与你的电脑 IP(双击本地连接图标支持选项卡,即可查看)是一致的。 对与使用了路由器的 ADSL 用户,那么电脑 IP 与你百度到的公网 IP 是不一样的,如图 1.2.4.2 所示: 图 1.2.4.2 经过路由器后的电脑 IP 可以看到,我们电脑 IP 为 192.168.1.107,与公网 IP 不一致,此时我们需要对路由器进 行一下转发规则设置:登录路由器控制页面,然后选择转发规则DMZ 主机,如图 1.2.4.3 所示: 图 1.2.4.3 转发规则设置值 然后设置启用 DMZ 主机,并设置 DMZ 主机 IP 地址为所用电脑的 IP 地址,本机 IP 为: 192.168.1.107,如图 1.2.4.4 所示: www.alientek.comALIENTEK STM32开发板AN1504www.openedv.com开源电子网2015-4-12
图 1.2.4.4 设置 DMZ 主机 然后保存。这样,我们就把内网 IP(192.168.1.107)映射到了外网,相当于经过路由器 的电脑,拥有了一个公网 IP。 最后,我们在电脑上,还需要用到一个软件:网络调试助手,来协助验证 GPRS 通信, 该软件启动界面如图 1.2.4.5 所示: 该软件的使用非常简单,我们将在第四节配合我们的例程向大家介绍该软件的使用。 图 1.2.4.5 网络调试助手启动界面 www.alientek.comALIENTEK STM32开发板AN1504www.openedv.com开源电子网2015-4-12
分享到:
收藏