赞
踩
目录
通信协议是什么?UART串口传输、标准的 AT 命令对模块进行控制、波特率选择默认的 115200
难点是首先要实现串口助手与模块之间的通信,接好线发送AT命令。这一步之后接上单片机与单片机之间通信。
焊接一个转接板。不然觉得接线不方便。
1、stm32写一个关于gsm模块通信的库,
读取内容、写内容
别的接口在此两个接口基础上,做到更加具体的功能,如:拨打<号码>电话,发送<号码>短信,读取短信内容
读到短信内容后,解析内容(自己定义通信协议)
不知为何自己用别的USB转串口不起作用,只有ft232bl可以使用 串口调试。
5V 供电,电脑调试初期电脑USB供电可以满足要求。模块有1000UF的大电容。长时间传输数据用电量大1A以上的直流,TTL电平串口自适应兼容3.3V和5V单片机。
1 发送一条中文短信
2 发送一条英文短信
3 拨打指定电话,1分钟后自动挂断
4 接到指定短信内容,控制LED开断
5 检测模块是否注册到网络,是否读到SIM卡,并发送提示信息
6 通过GPRS,连接指定的服务器并发送指定数据
说明:
可以直接连接单片机。待机在80MA左右,可以设置休眠状态在10MA左右低功耗。电脑调试USB--232和USB--TTL均可,根据各人配件而定。支持短信,数据,彩信,上网等。复位排针引出,可实现现场无人值守远程复位,带DTMF功能实现远程遥控功能。模块最大的优点是保留232口,在学习或者开发时可以监听51低端单片机和模块指令执行情况,能更快的找出原因,节省开发和学习的时间.[支持2,3,4G手机卡】。
模块的优点:
串口电路:采用TVS和磁珠保护器件来保护板子,使板子不会受到浪涌、高电压的伤害。
SIM卡电路:增加SMF05C静电释放芯片。
天线电路:保证的短且直,这样才能保证信号强度。
PCB展示:各个接口丝印标出,方便二次开发,设计时完全遵循SIM900A硬件设计手册。
一路5V 供电电源接口:做了保护,即使接反了也不会烧板子。电脑初期调试电脑USB供电即可;长时间传输数据用电量较大我们推荐1A以上的直流。
一路TTL接口:支持3.3V单片机和5V单片机。也就是说支持51类的5V单片机和STM32单片机。
两路天线接口:SMA天线接口,IPX MINI天线接口(默认不焊接)。
一路232 电平接口:也就是说您可以通过一根232---USB串口线直接将模块连接到电脑上调。也可以USB--TTL连接电脑,根据个人的配件情况而定。
此外还需要给SIM900A模块供电。
USB--TTL需要接模块TTL串口中间俩个针一个是5VTXD和RXD,然后共GND. 板子上有标注 ,千万别接错线。
第二种:通过USB--232串口线将模块与电脑连接起来,再接入5V电源,之所以我们的SIM900A模块在设计时保留了232接口,原因为:51等低端单片机无法实现仿真,所以你不能知道单片机发给SIM900A 模块的每条指令执行的情况。但是这个问题在我们这里就得到了很好的解决,通过将SIM900A模块232接口将模块连接到电脑上,就可以轻松监测到每条指令执行的情况,在实际开发时特别特别的有用,很多问题就是通过这个232找到的。
用户可以通过 AT 指令进行呼叫、短信、电话本、数据业务、传真等方面的控制
AT 即 Attention,指令集是从终端设备 (TerminalEquipment, ATTE)或数据终端设备 (DataTerminalEquipment, DTE)向终端适配器(TerminalAdapter, TA)或数据电路终端设备 (DataCircuitTerminalEquipment, DCE)发送的。通过 TA, TE 发送 AT 指令来控制移动台 (MobileStation, MS)的功能,与 GSM 网络业务进行交互。
AT 指令必须以"AT"或"at"开头(第一条发给模块的指令要都大写),以回车(<CR>)结尾。模块的响应通常紧随其后,格式为: <回车><换行><响应内容><回车><换行>。
我们通过串口调试助手来测试一下,打开:选择正确的 COM 号;然后设置波特率为 115200, 勾选发送新行(必选!即 sscom 自动添加回车换行功能),然后发送 AT 到 SIM900A 模块,
<AT>
是否准备好
<AT+CPIN?>
是否有SIM卡
<AT+CSQ >
信号强度
<AT+COPS?>
指令用于查询当前运营商,只有在连上网络后,才返回运营商
<AT+CNUM>
查询本机号码有的不支持此命令
<ATD>
用于拨打任意电话号码如:<ATD10086;><&ATD18XXXXXX65;>
RING
模块接到电话时会发送此字符串
<ATA>
即可接听来电。
<ATH>
用于挂断电话,要想结束正在进行的通话,只需给模块发送: ATH,即可挂断。
AT+COLP
用于设置被叫号码显示,这里我们通过发送:<AT+COLP=1>,开启被叫号码显示,当成功拨通的时候(被叫接听电话),模块会返回被叫号码。 +COLP: "18XXXXXXX65",129,"",""
*************************************************************************
1、发送:<AT+CMGF=1>设置为文本模式
2、发送:<AT+CSCS="GSM">设置GSM 字符集
3、发送:<AT+CNMI=2,1>设置新消息提示
4、用别的手机发送一条字符串到的模块上,模块接收到短信后,会提示如: +CMTI:"SM",16,表明收到了新的短信,存放在 SIM 卡位置16。
5、发送:<AT+CMGR=16>即可读取该短信。
删除短信,例如发送: <AT+CMGD=1>删除全部短信命令。
发送:<AT+CSCS="GSM">先设置为:"GSM"字符集,
发送:<AT+CMGF=1>设置文本模式
发送: AT+CMGS="151XXXX672",
模块返回:<>>,
输入需要发送的内容:< SIM900A TEST>,
(HEX)格式单独发送: <0X1A>(即 0X1A)
在发送完内容以后,最后以十六进制(HEX)格式单独发送: <0X1A>(即 0X1A),即可启动一次短信发送.注 1: 0X1A,“CTRL+Z”的键值,即用于告诉 SIM900A,要执行发送操作。另外还可以发送: 0X1B,即“ESC”的键值,用于告诉 SIM900A, 取消本次操作,不执行发送。稍等片刻,在短信成功发送后,模块返回如: +CMGS:156,的确认信息,表示短信成功发送, 其中 156 为模块内部的短信计数器,
1、AT+CPIN?
该指令用于查询SIM卡的状态,主要是PIN码,如果该指令返回:+CPIN:READY,则表明SIM卡状态正常,返回其他值,则有可能是没有SIM卡。
2,AT+CSQ
该指令用于查询信号质量,返回SIM900A模块的接收信号强度,如返回:
+CSQ:30,0,
表示信号强度是 30(最大有效值是31)。如果信号强度过低,则要检查天线是否接好了?
3,AT+COPS?
该指令用于查询当前运营商,该指令只有在连上网络后,才返回运营商,否则返回空,如返回:+COPS:0,0,"CHINAMOBILE",表示当前选择的运营商是中国移动。
4,AT+CGMI
该指令用于查询模块制造商,如返回:SIMCOM_Ltd,说明SIM900A模块
是
是SIMCOM公司生产的。
5,AT+CGMM
该指令用于查询模块型号,如返回:SIMCOM_SIM900A,说明模块型号是SIM900A。
6,AT+CGSN
该指令用于查询产品序列号(即IMEI号),每个模块的IMEI号都是不一样
的,具有全球唯一性,如返回的,具有全球唯一性,如返回:8699880XXXXXX,说明模块的产品序列号是:8699880XXXXXX。
7,AT+CNUM
该指令用于查询本机号码,必须在SIM卡在位的时候才可查询,如返回:+CNUM:"","15902020353",129,7,4,则表明本机号码为:15902020353。另外,不是所有的SIM卡都支持这个指令,有个别SIM卡无法通过此指令得到其号码。
8,ATE1
该指令用于设置回显模式(默认开启),即模块将收到的AT指令完整的返回给
发送端,启用该功能,有利于调试模块。如果不需要开启回显模式,则发送发送端,启用该功能,有利于调试模块。如果不需要开启回显模式,则发送ATE0指令即可关闭,这样收到的指令将不再返回给发送端,这样方便程序控制。
以上就是我们介绍的几个常用的AT指令,当然还有其他一些常用的AT指令,比如
ATD/ATA/ATH 等,我们在后面的章节会慢慢介绍。关于SIM900A详细的AT指令介绍,
SIM900A_AT 命令手册这个文档。发送给模块的指令,如果执行成功,则会返回对应信息和
"OK",如果执行失败/指令无效,则会返回"ERROR"。
另外,提醒大家,所有的指令都必须是以 ASCII 编码字符格式发送,不要在指令里面夹
杂中文符号。同时,很多指令都带有查询或提示功能,可以通过指令+"?"来查询当前设置,
通过指令+"=?"的方式来获取设置提示
本节,我们将介绍如何使用SIM900A模块进行拨打和接听电话。本节,将要用到的指
令有: ATE1/ATD/ATA/ATH/AT+COLP/AT+CLIP/AT+VTS等7条AT指令。
ATE1
用于设置回显,即模块将收到的指令完整的返回给发送设备,方便调试。
ATD
用于拨打任意电话号码,格式为:ATD+号码+;, 末尾的’;’一定要加上,否则不能成功拨号, 如发送:号, 如发送: ATD10086;,即可实现拨打10086。
TA
用于应答电话,当收到来电的时候,给模块发送:
ATA
即可接听来电。
ATH
用于挂断电话,要想结束正在进行的通话,只需给模块发送: ATH,即可挂断。
AT+COLP
用于设置被叫号码显示,这里我们通过发送:AT+COLP=1,开启被叫号码显示,当成功拨通的时候(被叫接听电话),模块会返回被叫号码。
AT+CLIP
用于设置来电显示,通过发送:
AT+CLIP=1
可以实现设置来电显示功能,模块接收到来电的时候,会返回来电号码。
AT+VTS=*
产生DTMF音,该指令只有在通话进行中才有效,用于向对方发送中才有效,用于向对方发送DTMF音,比如在拨打10086查询的时候,我们可以通过发送:AT+VTS=1,模拟发送按键1。
在介绍了本节要用到的几个AT指令之后,我们开始实现本节功能,不过有前提条件:
那就是模块必须开机,并且找到了运营商。通过发送: AT+COPS?,如果返回:
+COPS:0,0,"CHINAMOBILE",则可以开始下面的测试了。
本节,我们将介绍如何使 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 字符集,默认的为 GSM7 位缺省字符集,在发送纯英文短信的时候,发送: AT+CSCS="GSM",设置为缺省字符集即可。在发送中英文短信的时候,需要发送: AT+CSCS="UCS2",设置为 16 位通用 8 字节倍数编码字符集。
英文短信的读取
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 条存储的信息。
英文短信的读取本节,我们将用其他手机先发送一条英文短信到 SIM900A 模块上,然后读取模块接收
到的这条英文短信。
1、发送: AT+CMGF=1,设置为文本模式
2、发送: AT+CSCS="GSM",设置GSM 字符集
3、发送: AT+CNMI=2,1,设置新消息提示
4、我们用别的手机发送一条英文短信“SIM900AModule”到我们的模块上(如果不知道模块号码,可以发送: AT+CNUM,查询模块号码)。模块接收到短信后,会提示如: +CMTI:"SM",2,表明收到了新的短信,存放在 SIM 卡位置 2。
5、发送 AT+CMGR=2,即可读取该短信。
注意:某些时候,模块收到了短信,但却不发送提示,原因是:模块存储容量有限,不
能继续存储短信。解决方法:可以删除一些短信,例如发送: AT+CMGD=1,删除全部短信
命令。
本节,我们将利用 SIM900A 模块来给指定手机号码发送一条英文短信。这里,我们用
到 AT+CMGS 指令来发送短信,发送全英文/数字短信的时候,我们先设置为: "GSM"字符集(AT+CSCS="GSM"),文本模式(AT+CMGF=1)假设我们要给手机号:。 15124532672,发送一条短信,则发送: AT+CMGS="15124532672",然后模块返回: >,此时我们输入我们需要发送的内容: SIM900A TEST,注意,此可以不用发送回车了。在发送完内容以后,最后以十六进制(HEX)格式单独发送: 1A(即 0X1A),即可启动一次短信发送.注 1: 0X1A,“CTRL+Z”的键值,即用于告诉 SIM900A,要执行发送操作。另外还可以发送: 0X1B,即“ESC”的键值,用于告诉 SIM900A, 取消本次操作,不执行发送。稍等片刻,在短信成功发送后,模块返回如: +CMGS:156,的确认信息,表示短信成功发送, 其中 156 为模块内部的短信计数器,
本节,我们将介绍如何使用 SIM900A 模块进行 GPRS 通信,实现模块与电脑的 TCP 和UDP 数据传输。
AT+CGCLASS
用于设置移动台类别。SIM900A模块仅支持类别"B"和"CC",发送: AT+CGCLASS="B",设置移动台类别为 B。即,模块支持包交换和电路交换模式,但不能同时支持。
AT+CGDCONT
用于设置 PDP 上下文。发送:
AT+CGDCONT=1,"IP","CMNET"
设置 PDP 上下文标志为 1,采用互联网协议(IP),接入点为"CMNET"。
AT+CGATT
用于设置附着和分离 GPRS 业务。发送: AT+CGATT=1,附着 GPRS 业务。
AT+CIPCSGP
用于设置 CSD 或 GPRS 链接模式。发送: AT+CIPCSGP=1,"CMNET",设置为GPRS 连接,接入点为” CMNET”。
AT+CLPORT
用于设置本地端口号。发送:AT+CLPORT="TCP","8888",即设置 TCP 连接本地端口号为 8888。
AT+CIPSTART
用于建立 TCP连接或注册 UDP 端口号。发送: AT+CIPSTART="TCP","180.120.52.222","8086",模块将建立一个 TCP 连接,连接目标地址为: 180.120.52.222,连接端口为 8086,连接成功会返回: CONNECTOK。
AT+CIPSEND
用于发送数据。在连接成功以后发送: AT+CIPSEND,模块返回: >,此时可以输入要发送的数据,最大可以一次发送 1352 字节,数据输入完后,同发短信一样,输入十六进制的: 1A(0X1A),启动发送数据。在数据发送完成后,模块返回: SENDOK,表示发送成功。
AT+CIPSTATUS
用于查询当前连接状态。 发送: AT+CIPSTATUS,模块即返回当前连接状态。
AT+CIPCLOSE
用于关闭 TCP/UDP 连接。发送: AT+CIPCLOSE=1,即可快速关闭当前 TCP/UDP 连接。AT+CIPSHUT,用于关闭移动场景。发送: AT+CIPSHUT,则可以关闭移动场景,关闭场景后连接状态为: IPINITIAL,可以通过发送: AT+CIPSTATUS,查询。另外,在连接建立后,如果收到: +PDP:DEACT,则必须发送: AT+CIPSHUT,关闭场景后,才能实现重连。
以上就是我们本节可能将要用到的一些 AT 指令的简单介绍,要实现模块与电脑的 GPRS
通信,需要确保所用电脑具有公网 IP,否则无法实现通信,推荐在 ADSL 网络下进行测试,
并最好关闭防火墙/杀毒软件。
拥有 1 个公网 IP,你可以通过百度,搜索: IP,第一个条目,就是本机 IP,如图下图所
示。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。