开发板:FL2440 内核版本:linux-3.0
一,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指令集是GSM网络设备之间发送控制信息的标准指令集。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。
AT指令由手机制造商诺基亚、爱立信、摩托罗拉等共同研制,其中包括了短消息(SMS)控制功能。对SMS的控制有Block模式、文本模式和协议数据(PDU)模式3种,目前主要使用PDU模式,其他两种模式逐步被淘汰。(本文使用的文本模式)
注:Block模式发送指令需要厂商提供的驱动,文本模式是串口模式,通过串口发送数据即可,不需要厂商提供的驱动、
计算机可以通过AT指令与手机或者GSM模块通信。AT指令的特点是所有的指令都以AT字符串起始,后面是不同的指令。所有的AT指令都需要返回值,接收端通过返回信息处理AT命令操作结果。常见的AT命令示例如下:
AT< CR>
< LF> OK < LF>
ATTEST< CR>
< CR> ERROR < LF>
注:<CR>代表回车;<LF>代表换行。如果AT指令执行成功,“OK”字符串返回;如果AT 指令语法错误或AT 指令执行失败,“ERROR”字符串返回。
二,常用AT指令集
1、常用操作1.1 AT命令解释:检测 Module 与串口是否连通,能否接收 AT 命令;命令格式:AT<CR>命令返回:OK (与串口通信正常)(无返回,与串口通信未连通)测试结果:ATOK1.2 AT+CSQ命令解释:检查网络信号强度命令格式:AT+CSQ<CR>命令返回:+CSQ: **,##其中**应在 10 到 31 之间,数值越大表明信号质量越好,##为误码率,值在 0 到 99 之间。否则应检查天线或 SIM 卡是否正确安装测试结果:AT+CSQ<CR>+CSQ: 20,51.3 AT+CPIN?命令解释:检查登入移动设备(ME)的密码.命令格式:AT+CPIN?<CR>命令返回:+CPIN: 状态其中状态值可能是:READY(表示 SIM卡正常,同时不需要登入密码),SIM PIN (表示 ME等待提供 SIM卡的 PIN 码)SIM PUK (表示 ME等待提供 SIM卡的 PUK码)SIM PIN2 (表示 ME等待提供 SIM 卡的 PIN2 码)SIM PUK2 (表示 ME等待提供 SIM卡的 PUK2 码)PH-SIM PIN (表示设备被锁 SIM卡,ME等待提供从手机到 SIM卡的密码)PH-NET PIN (表示设备被锁网络,ME等待提供提供网络个性化密码)ERROR (表示 SIM卡失败或没有插入 SIM卡)测试结果:AT+CPIN?<CR>+CPIN: READY表示SIM卡正常,同时不需要登入密码。1.4 AT+COPS?命令解释:查询运营商选择状态.命令格式:AT+COPS?<CR>命令返回:+COPS: <mode>,<format>,<operator><mode>的值为0 到 4, 默认值是 0<format>的值为 0 到 2, 默认值是 2<Operator>的值为运营商代码, 中国移动的代码是 46000, 联通的代码是 46001测试结果:AT+COPS?<CR> Tech-Link T&E Limited 常用 AT 命令手册- 2 -+COPS: 0, 2, 460001.5 AT+WOPEN=2命令解释:查询模块支持 Open AT 的 Library 版本及是否有 Open AT Application 在模块中.命令格式:AT+ WOPEN=2<CR>命令返回:+WOPEN: 2, “ Open AT Library version” ,” Open AT Application version” Open AT Library version 代表的是模块支持 Open AT 的 Library 版本,通常显示的值为” AT v04.1x” 或 ” AT v04.2x” Open AT Application version 代表的是模块支持 Open AT 的 Library 版本,通常显示的值为” AT v04.1x” 或 ” AT v04.2x” 注: “ Open AT Library version” 和” Open AT Application version” 两个值必须是一个一致(除最后一位外),否则会导致 Open AT 程序不稳定.如果返回值” Open AT Application version” 中没有数据,仅显示+WOPEN: 2,” AT v04.10” 则表示模块中没有 Open AT Application 程序.测试结果:AT+WOPEN=2<CR>+WOPEN: 2,” AT v04.10” ,” AT v04.11” OK1.6 AT+WOPEN=0命令解释:停止 Open AT Application 程序.命令格式:AT+ WOPEN=0<CR>命令返回:OK 或ERROR测试结果:AT+WOPEN=0<CR>OK1.7 AT+WOPEN=4命令解释:删除 Open AT Application 程序.命令格式:AT+ WOPEN=4<CR>命令返回:OK 或ERROR测试结果:AT+WOPEN=4<CR>OK注: 删除 Open AT Application 程序前,必须先使用 AT+WOPEN=0 停止 Open AT 程序.1.8 AT+WOPEN=1命令解释:开启 Open AT Application 程序.命令格式:AT+ WOPEN=1<CR>命令返回:OK 或ERROR测试结果:AT+WOPEN=1<CR>OK1.9 AT+WIPCFG=3命令解释:查询 WIP 软件版本. 命令格式:AT+ WIPCFG=3<CR>命令返回:<revision > 或ERROR测试结果:AT+WIPCFG=3<CR>WIP Soft v201 on Open AT OS v411OK Tech-Link T&E Limited 注意: 使用 AT+WIPCFG=3 命令前,必须确保 Open AT 程序是开启状态(即 AT+WOPEN=1).WIP Soft v201 代表 WIP 的软件版本是 V201, on Open AT OS v411 代表前面 v201 的WIP 软件是基于 v411的 Opean AT 开发平台上开发的.WIP 软件就是TCP/IP 协议站1.10 AT+CSCS?命令解释:查询终端适配器(TE)的字符集.命令格式:AT+ CSCS?<CR>命令返回:<字符集编码格式>返回值通常是下列中的一项.“ GSM” ----- GSM缺省符号集(参考 GSM 03.38 第 6.2.1 节).“ PCCP437” ---- PC字符集代码页 437.“ CUSTOM” ---- 用户自定义.“ HEX” ---- 十六进制: (取值范围:00 到 FF。比如:052FE6 表示 3 个 8bit 字符,转换为十进制,分别为 5、47、230,禁止转换为 ME原始字符集).测试结果:AT+CSCS?<CR>+CSCS: “ PCCP437” OK1.11 AT+CGSN命令解释:查询模块的 IMEI 号码.命令格式:AT+ CGSN<CR>命令返回:<IMEI>测试结果:AT+CGSN<CR>012345678901234OK注意: 如果显示 012345678901234 表示模块没有写IMEI 号码,有 IMEI 号码的话应该显示是 35xxxxxxxx (共 15 位数字).1.12 ATI7命令解释:查询语音编码特性命令格式:ATI7<CR>命令返回:SPEECH CODINGS: FR,EFR,HR,AMR1.13 A TZ命令解释:恢复默认设置命令格式:ATZ<CR>命令返回:OK1.14 AT+CGMR (此命令功能同等于 ATI3)命令解释:查询模块版本;命令格式:AT+CGMR<CR>命令返回: <revision >+CMEERROR <err>测试结果:AT+CGMR<CR>661_09gg.Q2686H 1925236 100506 11:13解释:模块的 Firmware 版本号为 6611.15 AT+IPR命令解释:修改串口 1 波特率;命令格式:AT+IPR=<value ><CR>命令返回:ERROR OK 测试结果:AT+IPR=115200<CR>OK注意:串口波特率修改为 115200 后要把串口调试工具的波特率设为相应波特率后模块才会有返回.1.16 AT&W命令解释:保存模块设置;命令格式:AT&W<CR>命令返回:OKERROR(保存不成功)测试结果:AT&W <CR>OK1.17 ;&W命令解释:连续保存命令命令格式:ATxxx;&W<CR> (AT xxx 代表要设置的命令,紧跟;&W 表示执行此设置的同时保存该设置)命令返回:OK例如要将模块的波特率设置成 115200 并保存它,则可以直接按如下操作:测试结果:AT+IPR=115200;&W <CR>1.18 AT+CGMI命令解释:查询模块厂商的标识;命令格式:AT+CGMI<CR>命令返回:WAVECOM MODEM测试结果:AT+CGMI <CR>WAVECOM MODEM1.19 AT+CGMM 命令解释:获取模块支持的频带;命令格式:AT+CGMM<CR>命令返回:MULTIBAND 900E 1800900E18001900G850MULTIBAND G850 1900测试结果:AT+CGMM <CR>MULTIBAND 900E 1800 (表示模块支持多频带,首选频带为 900E 1800)1.20 A/ 命令解释:重复上次命令;命令格式:A/<CR>命令返回:上一次 AT 命令返回的值这命令重复前一个执行的命令1.21 AT+CPOF 命令解释:关机;这个特殊的命令可停止 GSM软件堆栈和硬件层命令格式:AT+CPOF<CR> 命令返回:OK测试结果:AT+CPOF <CR>OK注: AT+CPOF<CR>用于停止 GSM软件堆栈,这命令的功能与 AT+CFUN=0 相同执行 AT+CFUN=1<CR>即可重新运行 GSM软件堆栈.AT+CPOF=1<CR>用于停止 GSM硬件层,运行此命令后 AT 将失去回应,必需对模块进行硬件复位模块方可重新工作.1.22 AT+CMEE 命令解释:模块的错误报告;命令格式:AT+CMEE=0<CR> 和 AT+CMEE=1<CR>命令返回:OKAT+CMEE=0<CR>表示关闭模块的出错报告,当模块的 AT 执行错误时,返回值仅为“ERROR” AT+CMEE=1<CR>表示开启模块的出错报告,当模块的 AT 执行错误时,返回值为“+CME ERROR: xxx”。(xxx 代表错误代码,依照此代码可查询错误类型)1.23 AT+CCLK 命令解释:时钟管理;命令格式:AT+CCLK?<CR> 用于查询模块当前的时间命令返回:+CCLK: "yy/MM/dd,hh:mm:ss" 另: AT+CCLK="08/03/17,10:34:23"<CR>用于设置模块的时钟,执行此命令后,模块的时钟将设定成为 08 年3 月 17 日 10 点 34 分 23 秒1.24 AT+CREG命令解释:网络注册及状态查询;命令格式:AT+CREG=MODE<CR>命令返回:OK 如果输入 AT+CREG? <CR>则返回+CREG: <mode>, <stat> [ ,<lac>,<ci> ] 注: <mode>的值共有三个选项,分别是 0 or 1 or 2, 其中0 代表关闭网络注册结果码, 1 代表当网络注册状态改变时激活网络注册结果码, 2 代表激活网络注册结果码同时显示区域和小区信息.<stat>的返回值共有三个,分别是 0, 1, 2,3,4,5 , 其中 0 代表没有注册网络同时模块没有找到运营商, 1代注册到了本地网络, 2 代表找到运营商但没有注册网络, 3 代表注册被拒绝, 4 代表未知的数据, 5代表注册在漫游状态.<lac>表示所属网络区域代码,十六进制格式显示,如: “ 279C”<ci>表示所属网络的小区 ID,十六进制格式显示,如: “ 0EB2” 注: <mode>的值设定为 0 或1 的话, <lac>,<ci>的返回值则不显示.测试结果:AT+CREG=0 <CR>OKAT+CREG? <CR>+CREG: 0,1AT+CREG=1 <CR>OKAT+CREG? <CR>+CREG: 1,1AT+CREG=2 <CR>OKAT+CREG? <CR>+CREG: 2,1, “ 279C” , “ 0EB2” 2、通话操作2.1 ATD 命令解释:拨打电话命令格式:ATD**********;<CR>(****为电话号码)命令返回:无返回 (对方接通后就返回 OK)NO DIAL TONE(没有拨号音)NO CARRIER(无载波)NO ANSWER(对方无应答)注: 拨叫语音号码需要在电话号码后加;号, 拨打数据号码时无需;号2.2 ATDL 命令解释:重拨上一次电话号码命令格式:ATDL<CR>命令返回:******* (*******为上一次呼叫的电话号码)其它返回值类似 ATD的返回值2.3 RING命令解释:有电话呼入命令格式:有来电时串口自动送出 RING 字符串.命令返回:无2.4 ATA命令解释:摘机命令格式:ATA<CR>命令返回:OK测试结果:RING RINGATA<CR> (当串口收到 RING 时输入)OK接通电话. Tech-Link T&E Limited 2.5 ATH 命令解释:挂机命令格式:ATH<CR>命令返回:OK测试结果:ATH<CR>OK电话挂断(通话过程中)2.6 A T+VTS命令解释:拨打分机命令格式:AT+VTS=“分机号码”<CR>命令返回:OK测试结果:ATD26743050;<CR>OKAT+VTS=“7”<CR>OKAT+VTS=“8”<CR>OKAT+VTS=“9”<CR>OKAT+VTS=“2”<CR>OK以上操作是通过 26743050 的总机拨到 7892 的分机上.2.7 ATS0命令解释:自动应答命令格式:ATS0<CR>命令返回:OK测试结果:ATS0?<CR>000OKATS0=003 (设置响铃三声后自动应答)OK2.8 AT+VGR命令解释:喇叭接收音量控制命令格式:AT+VGR=xxx<CR> (xxx 数值介于 0~255 之间,每 16 个数值增益改变 2db)命令返回: +VGR: xxxOK2.9 AT+VGT命令解释:麦克风输出音量控制命令格式:AT+VGT=xxx<CR> (xxx 数值介于 0~255 之间,每 32 个数值增益改变 3db)命令返回: +VGT: xxxOK 2.10 AT+CMUT命令解释:麦克风静音控制命令格式:AT+CMUT=x<CR>命令返回:OK注: 上面 x 的值共包含 0和 1, 0代表关闭静音功能, 1代表开启静音功能
3、短信操作
AT+CMGC Send an SMS command(发出一条短消息命令)
AT+CMGD Delete SMS message(删除 SIM 卡内存的短消息)
AT+CMGF Select SMS message formate (选择短消息信息收发格式: 0-PDU;1-文本)
AT+CMGL List SMS message from preferred store(列出 SIM 卡中的短消息
AT+CMGR Read SMS message(读短消息)
AT+CMGS Send SMS message(发送短消息)
AT+CMGW Write SMS message to memory(向 SIM 内存中写入待发的短消息)
AT+CMSS Send SMS message from storage(从 SIN |M 内存中发送短消息)
AT+CNMI New SMS message indications(显示新收到的短消息)
AT+CPMS Preferred SMS message storage(选择短消息内存)
AT+CSCA SMS service center address(短消息中心地址)
AT+CSCB Select cell broadcast messages(选择蜂窝广播消息)
AT+CSMP Set SMS text mode parameters(设置短消息文本模式参数)
AT+CSMS Select Message Service(选择短消息服务)
AT+CNMI=2,1,0,0,0 //设置收到新短信存于SIM卡中并发CMTI通知
+CMTI:”SM”,1 //收到了短信,自动弹出,其中1表示存在SIM中的序号
AT+CMGR=1 //读取短信,其中1要与上面序号对应
AT+CMGD=1 //删除短信,其中1为短信序号
三,GPRS模块使用AT指令发短信拨号
在开发板上操作
>:microcom -s 115200 /dev/ttyS1
AT
OK
发送AT 是否能返回 Ok 检查模块和板子是不是连接好的模块能不能正常的工作(microcom是在制作根文件系统时busybox里自带命令)
1.发短信
at+cmgf=1 //cmgf=0是以PUD模式发送的。为1是以文本方式发送
at+cmgs="182********" //是你要发送给的手机的号码
〉HELLO zzx //你发送的你内容
注意:每敲完一条指令都要按回车,直到返回“>”后开始输入信息,但是在输入完短信内容后不能敲回车而应该按组合键“ctrl+z”作为结束符。回车键在ascii码中的数值是“\r”,“ctrl+z”在ascii码中的数值是“0x1a”,所以在编程时可以直接在信息内容后进行字符串拼接。
2.打电话
ATD182********; //千万不要忘记后边的分号!
例:
AT+CSQ
+CSQ: 18,0 //确认有信号,最强32
OK
AT+CREG=1
OK
AT+COPS?
+COPS: 0,0,"CHINA MOBILE"//确认已注册上中国移动
OK
ATD182********;//拨打电话
OK
ATH //挂断 电话
3.接听电话
当显示RING这个单词的时候就说明有电话打过来了
ata //接听电话
ath //挂断电话
4.检测SIM卡是否注册上
AT+CPIN?
返回值:READY
5.检查SIM卡是否注册上网络,其中”,”后的值为SIM卡的注册状态
如果状态值为0,表示未注册;
如果为1,表示本地号码注册上;
如果为2,表示正在搜索运营商注册,但没注册上;
如果为3,表示拒绝注册;
如果为4,未知状态;
如果为5, 漫游号码注册上。
AT+CREG?
+CREG:0,1
OK
可以看到我这张卡注册上了!
6.检测SIM卡的信号强度
AT+CSQ
返回值:+CSQ 29,99
7.查询模块版本
AT+CGMR
返回值:R4A021 CXC1122528 (版本信息)
8.发英文短信
AT+CMGF=1/0(PS:1是文本模式;0是PDU模式)
AT+CMGS="号码"
>短信内容(只能是英文或者数字,要发中文,要进行PDU编码)
Ctrl+Z(发送)
OK!!!