在线情况
楼主
  • 头像
  • 级别
  • 门派
  • 职务总版主
  • 声望+9
  • 财富5
  • 积分3065
  • 经验390701
  • 文章6744
  • 注册2006-03-07
利用单片机控制GSM模块TC35的方法
 本文摘自:电子开发网  源作出处及作者未明,若有知情者欢迎提供指正。

 介绍一种 采用GSM的短信功能,可以使某些控制达到“零距离"。由于短信息的费用低廉,可以取代传统的无线遥控。现在详细介绍一种采用单片机(MCS51系列)控制TC35(廉价的GSM模块)发送、接收GSM短信的方法。

一、  TC35的控制简介
    TC35是Siemeils公司推出的新-代无线通信GSM模块。自带RS232通讯接口,可以方便地与PC机、单片机连机通讯。可以快速、安全、可靠地实现系统方案中的数据、语音传输、短消息服务(Short Message Service)和传真。TC35模块的工作电压为3.3—5.5V,可以工作在900MHz和1800MHz两个频段,所在频段功耗分别为2w(900M)和1w(1800M)。
    模块有AT命令集接口,支持文本和PDU模式的短消息、第三组的二类传真、以及2.4k,4.8k,9.6k的非透明模式。此外,该模块还具有电话簿功能、多方通话,漫游检测功能,常用工作模式有省电模式、IDLE、TALK等模式。通过独特的40引脚的ZIF连接器,实现电源连接、指令、数据、语音信号、及控制信号的双向传输。通过ZIF连接器及50Ω天线连接器,可分别连接SIM卡支架和天线。
    TC35模块主要由GSM基带处理器、GSM射频模块、供电模块(ASIC)、闪存、ZIF连接器、天线接口六部分组成。作为TC35的核心,基带处理器主要处理GSM终端内的语音、数据信号,并涵盖了蜂窝射频设备中的所有的模拟和数字功能。在不需要额外硬件电路的前提下,可支持FR、HR和EFR语音信道编码。其它功能介绍可参见有关资料!

二、AT指令的介绍
TC35模块的通讯全部采用AT+xxx完成。基本的AT指令见:/html/zonghejishu/2007/0514/2078.html

三、  TC35的连机方法
    任何一个TC35模块首次使用时,必须要测试其工作是否正常,由于其自带RS232接口,所以我们可以用PC机的串口调试软件进行调试。
1、启动串口调试软件(见界面)
  [IMGA=0,absMiddle]http://www.dzkf.cn/upimg/allimg/0705/1_14142658.JPG[/IMGA]
串口调试软件有许多,可以使用任意一款软件,也可以使用WINDOWS自带的“超级终端"。设置波特率19.2k,这是TC35的默认波特率,首次连机可以从2400~57.6k不断测试,直到TC35有应答。

2、发送“AT"’
  AT 回车

3、改变波特率“AT+IPS=XXXX"
  TC35的默认波特率是19.2k,实际使用时,可以改成9600或38.4K,方法如下:
  AT+IPR=9600 回车

4、短信模式的设置
  (GSM模块的短信模式有2种。第1种是:TEXT模式;第2种是:PDU模式。PDU模式可以采用unicode编码发送英文、汉字。但合成PDU码比较复杂,而TEXT模式只能发送英文,但无须编码。实际使用可以采用TEXT模式。
设置如下:
    AT+CMFG=1 回车

5、短信模式简介
    SMS是由Etsi所制定的一个规范(GSM 03.40和GSM 03.38)。当使用7-bits编码的时候它可以发送最多160个字符;8-bit编码(最多140个字符)。通常无法直接通过手机显示;通常被用来作为数据消息,例如:smart messaging中的图片和铃声和OTA WAP设置。16-bit信息(最多70个字符)被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。一个以class 0开头的16-bit的文本信息将在某些手机上作为Flash SMS显示(闪烁的SMS和警告SMS)。
    有两种方式来发送和接收SMS信息:使用文本模式或者使用PDU(protocol description unit)模式。文本模式(可能某些手机不支持)实际上也是一种PDU编码的一种表现形式。在显示SMS信息,可能使用不同的字符集和不同的编码方式。

6、短信读取方法
    AT+CMGR=X回车
如果有短信息,TC35回应:
AT+CMGR=1
+CMGR:"REC UNREAD","13307496548",,"04/08/17,22:24:32+02
testOK
OK
短信息分析:
“test OK"就是短信息内容。
短信息的存储容量与Ic卡有关,序号从1-N。
REC UNREAD":代表短信息未读过。
REC READ"    :已读过。
13307496548"  :接收的手机号码。
04/08/17,22:24:32+02":短信息发送的时间。
无短信息,TC35回应:
AT+CMGR=3
+CMGR:0,,0

7、短信的删除方法
    AT+CMGD=1回车

8、短信的发送方法
    短信息的发送分成两步:
    1:发送接收的手机号码,等待应答:“>"
    AT+CMGS="13307496548"回车(目的地址)
    TC35回应:
    AT+CMGS="13307496548"  >
    2:  输入短信息的内容(只能是英文):Test 回车

四、单片机控制TC35的方法
    上面介绍了用PC机控制TC35的方法,我们只需将PC机输出的控制命令转化成单片机输出的指令即可。
1、硬件连接
  电路见下图只需设计一个TTL转RS232电平电路,连接到MCU的UART口,另一端直接连接到TC35。
       [IMGA=0,absMiddle]http://www.dzkf.cn/upimg/allimg/0705/1_14142926.JPG[/IMGA]
2、指令输出的方法
    单片机串口设置成模式1(9600,N,8,1),依次将AT+xxx以ASCII码形式输出到UART口;接收TC35的数据采用中断方式。这里给出详细的程序清单(Keil C51),不介绍编程的方法。程序见下:

//AT指令的定义
char code AT_Tc35[]="AT+";    //连机
char code Bps_Tc35[]="IPR=38400";  //波特率
char code Text_Tc35[]="CMGF=1";    //文本模式
char code Read_Tc35[]="CMGR=";  //读信息
char code Erase_Tc35[]="CMGD=";  //删除信息
char code Send_Tc35[]="CMGS=";  //发送信息
char code Creg_Tc35[]="CREG?";    //注册

//模式设置
void UART_Init(void)
{
 SCON=0x50;    //01010000b=>1模式scon,#11011000b;
 ES=l;
}

//发送-个ASCII
void SendASC(unsigned char ASC)
{
 bit es;
 es=ES;
 ES=0;//关闭中断
 TI=0;
 SBUF=ASC;
 while(!TI);
 TI=0;
 ES=es;
)

//发送命令到TC35
void SendToTc35(unsigned char* p,unsigned char Long)
{
while(Long--)
{
    SendASC(*p++);
  }
}

//  通讯中断接收程序
void Rs485_Do(void) interrupt 4 using 1
  {
  if(RI==l)
  {
    RI=0;
    RsBuq[RsPoint++]=SBUF;
    if fRsPoint>=sizeof(RsBuf))
    {
    RsPoint=0;//FlagRs485=0;
    }  //数据处理
  }
 }

// 发送AT连机命令
char code AT_Code[]="OK";
void Send_AT(void)
{
unsigned char *p;
while(1)
{
    ClrRsBuf(RsBuf,sizeof(RsBuf));
    SendToTc35(AT_Tc35,2);    //"AT"
    SendASC(OVER);
//************等待应答“ok"
    ES=1;    //必须中断
    Delay(50);
    P=strstr(RsBuf,AT_Code);
    if(p!=NULL) break;
 }
)

//发送bps连机命令
void Send_BPS(void)
{
 SendToTc35(AT_Tc35,3);    //"AT+"
 SendToTc35(Bps_Tc35,sizeof(Bps_Tc35)-1);//"IPR=19200"
 SendASC(OVER);
}

//设置文本
void SetText(void)
{
 SendToTc35(AT_Tc35,3);    //"AT+"
 SendToTc35(Text_tc35,sizeof(Text_tc35)-1);//"IPR=19200"
 SendASC(OVER);
 Delay(100):

//删除短信息
unsigned char EraseMsg(unsigned char index)
{
 unsigned char *p,i=20;
 SendToTc35(AT_Tc35,3);    //"AT+"
 SendToTc35(Erase_Tc35,sizeof(Erase_Tc35)-1);//"IPR=19200"
 SendASC(index);
 SendASC(OVER);
 ES=1;
 while(i--)
{
    Delay(200);
    P=strstr(RsBuf,AT_Code);
    if(P!=NULL)    {return 1;}
 }
 return 0;
}

//读取短信息
char code Ask_No[]="+CMGR:0,,0";
char code ERROR{]="ERROR";
char code Ask_Tc35[]="/";
unsigned char ReadMsg(unsigned char index)
{
 unsigned char *p,i;
 unsigned char Buf[40];
 SendToTc35(AT_Tc35,3);    //"AT+"
 SendToTc35(Read_Tc35,sizeof(Read_Tc35)-1);
 SendASC(index);
 SendASC(OVER);
 ES=1;    //必须中断
 Delay(600);
/*-------
    ES=0:
    SendToTc35(RsBuf,99);
    ES=1;
*/|

p=strstr(RsBuf,ERROR);
if(P!=NULL)
{
    Send_AT();return 0;
 p=strstr(RsBuf,Ask_No);//无信息
 if(p!=NULL)return 0;
 p=strstr(RsBuf,Ask_Tc35);//20个字节后是MSG
 if(p==NULL) return 0;
 p=p+21;

for(i=0;i<sizeof(Buf);i++)
{
  Buf=*p++;
}

if(EraseMsg(index)==0)  return 0;
 p=strcpy(RsBuf,Buf);  //放回RsBuf
 return 1;
)

//发送短信息
char code SK[]=">";
void SendMsgStart(void)
{
 unsigned char *p,i=10;
 SendToTc35(AT_Tc35,3);    //"AT+"
 SendToTc35(Send_Tc35,sizeof(Send_Tc35)-1);//"IPR=19200"
 SendASC(YinHao);
 SendToTc35(Mp1.Hand,sizeof(Mp1.Hand));    //"AT+"
 SendASC(YinHao);
 SendASC(OVER);
 ES=1;
while(i--)
{
  Delay(100);  //Get">"
  p=strstr(RsBuf,SK);//">"
  if(p!=NULL)
  {
    ClrRsBuf(RsBuf,sizeof(RsBuf));
    Delay(150);  //Get">"
    break;
  }
 }
}
[ 此帖最后由DC在2012-11-8 0:21:27从 电子通识 转移过来 ]
[COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
在线情况
2
  • 头像
  • 级别
  • 门派
  • 职务总版主
  • 声望+9
  • 财富5
  • 积分3065
  • 经验390701
  • 文章6744
  • 注册2006-03-07
GSM模块的AT指令简介

            AT指令说明
1.通用指令
     AT指令      说明
     AT+CGMI      厂家认证请求,返回模块厂家信息
     AT+CGMM      模式认证请求,返回模块使用频段
     AT+CGMR      修正认证请求,返回软件版本
     AT+CGSN      查看产品IMEI序列号
     AT+CSCS      选择TE特性设置
     AT+WPCS      选择ME特性设置
     AT+CIMI      IMSI认证请求,返回SIM卡的IMSI
     AT+CCID      获得SIM卡标识
     AT+GCAP      查看功能列表
     A/      重复上次命令
     AT+CPOF      停止模块的运行
     AT+CFUN      设置模块状态
     AT+CPAS      查看模块当前活动状态
     AT+CMEE      选择模块错误报告方式
     AT+CKPD      模拟小键盘控制操作
     AT+CCLK      设置或查看当前日期和时间
     AT+CALA      设置警报日期和时间
     AT+CRMP      演示铃声
     AT+CRSL      设置振铃声音大小

2.电话控制指令
     AT指令      说明
     ATD      拨号
     ATH      挂机
     ATA      接电话
     AT+CEER      查看呼叫失败原因
     AT+VTD      设置DTMF(双音多频)语音长度
     AT+VTS      发送DTMF语音
     ATDL      重拨上一次电话号码
     AT%Dn      根据DTR信号自动拨号
     ATS0      设置自动应答
     AT+CICB      来电信差
     AT+CSNS      单一编号方案
     AT+VGR      调整接收声音增益
     AT+VGT      调整发送声音增益
     AT+CMUT      设置话筒静音
     AT+SPEAKER      话筒选择
     AT+ECHO      设置回音取消
     AT+SIDET      设置侧音修正
     AT+VIP      恢复到默认语音设置

3.网络服务指令
     AT指令      说明
     AT+CSQ      查看网络信号质量
     AT+COPS      选择服务商
     AT+CREG      查看当前网络注册状态
     AT+WOPN      文字方式显示网络提供商
     AT+CPOL      查看优先网络列表

4.安全指令
     AT指令      说明
     AT+CPIN      输入PIN码
     AT+CPIN2      输入PIN2码
     AT+CPINC      查看密码剩余尝试次数
     AT+CLCK      锁住或解锁设备某些功能
     AT+CPWD      更改各种密码
     5.电话薄指令
     AT指令      说明
     AT+CPBS      选择不同存储器上的电话薄
     AT+CPBR      读取电话薄
     AT+CPBF      按文字查询电话号码
     AT+CPBW      向电话薄写入电话号码
     AT+CPBP      从电话薄中查询某一电话号码的信息
     AT+CPBN      电话薄移动动作
     AT+CNUM      查看用户本机号码
     AT+WAIP      选择是否重启时初始化电话薄

6.短信息指令
     AT指令      说明
     AT+CSMS      选择短信息服务
     AT+CNMA      新消息确认应答
     AT+CPMS      选择短信存储区
     AT+CMGF      选择短信格式
     AT+CSAS      存储短信参数设置
     AT+CRES      设备恢复成存储的短信参数设置
     AT+CSDH      显示TEXT短信模式下参数
     AT+CNMI      选择如何接收短信息
     AT+CMGR      读取短信息
     AT+CMGL      按要求列出存储的短信息
     AT+CMGS      发送短信息
     AT+CMGW      写短信息存入存储区
     AT+CMSS      发送存储在存储区的短信息
     AT+CSMP      TEXT短信模式参数设置
     AT+CMGD      删除短信息
     AT+CSCA      设置短信服务中心地址
     AT+CSCB      选择小区广播信息类型
     AT+WCBM      查看小区广播信息标识符
     AT+WMSC      修改短信息状态
     AT+WMGO      覆盖某一短信息
     AT+WUSS      保持短信状态不变

7.辅助业务指令
     AT指令      说明
     AT+CCFC      设置呼叫转移
     AT+CLCK      设置呼叫禁止
     AT+CPWD      修改辅助业务密码
     AT+CCWA      设置呼叫等待
     AT+CLIR      设置主叫线识别限制
     AT+CLIP      设置主叫线识别显示
     AT+COLP      设置被叫线识别显示
     AT+CAOC      查看当前话费报告
     AT+CACM      累计话费显示或清零
     AT+CAMM      设置最大可使用话费
     AT+CPUC      设置话费价格
     AT+CHLD      设置多方会谈呼叫操作
     AT+CLCC      显示当前呼叫列表
     AT+CSSN      设置辅助业务
     AT+CUSD      设置一些非正式的数据辅助业务
     AT+CCUG      设置屏蔽用户

8.数据指令
     AT指令      说明
     AT+CBST      设置数据传输类型
     AT+FCLASS      选择模式
     AT+CR      是否选择详细报告
     AT+CRC      是否选择详细振铃指示
     AT+ILRR      选择是否报告本地DTE到DCE速率
     AT+CRLP      设置无线链路协议参数
     AT+DOPT      设置其他无线链路协议参数
     AT%C      选择是否进行数据压缩
     AT+DS      选择是否支持V42二度数据压缩
     AT+DR      选择是否报告链路V42二度数据压缩
     AT\N      选择错误纠正模式

9.传真指令
     AT指令      说明
     AT+FTM      设置传真发送速率
     AT+FRM      设置传真接收速率
     AT+FTH      设置使用HDLC协议发送传真速率
     AT+FRH      设置使用HDLC协议接收传真速率
     AT+FTS      停止发送传真并等待相应时间
     AT+FRS      停止侦听网络并等待相应时间向DTE发送报告

10.传真指令(CLASS 2)
     AT指令      说明
     AT+FDT      开始传输数据
     AT+FDR      开始接收数据
     AT+FET      设置后面是否还有任务进行
     AT+FPTS      设置前面发送数据质量
     AT+FK      停止任务
     AT+FBOR      设置传输比特顺序
     AT+FBUF      显示交换缓存大小
     AT+FCQ      控制接收传真备份质量检查
     AT+FCR      控制能否再接收传真
     AT+FDIS      设置当前任务参数
     AT+FDCC      设置任意任务参数
     AT+FLID      定义本地ID
     AT+FPHCTO      设置确定无任务的等待时间

11.V24-V25指令
     AT指令      说明
     AT+IPR      设置DCE速率
     AT+ICF      设置串口起始帧结构
     AT+IFC      设置DTE和DCE数据传输控制方式
     AT&C      设置DCD信号
     AT&D      设置DTR信号
     AT&S      设置DSR信号
     ATO      从在线命令模式返回在线数据模式
     ATQ      选择DCE是否返回结果代码
     ATV      设置DCE响应格式
     ATZ      恢复默认设置
     AT&W      保存设备设置
     AT&T      自动测试
     ATE      选择是否回回显字符
     AT&F      恢复出厂设置
     AT&V      显示DCE参数设置
     ATI      显示特殊信息

12.特殊AT指令
     AT指令      说明
     AT+CCED      获得小区环境参数(可扩展查看接收信号能量参数)
     AT+WIND      显示模块状态信息
     AT+ALEA      数据加密算法
     AT+CRYPT      选择是否进行数据加密
     AT+EXPKEY      加密算法设置密码
     AT+CPLMN      查看PLMN状态信息
     AT+ADC      设置模数转换模式
     AT+CMER      选择是否进行键盘报告
     AT+WLPR      查看偏好语言
     AT+WLPW      设置偏好语言
     AT+WIOR      查看通用I/O端口状态
     AT+WIOW      设置通用I/O端口状态
     AT+WAC      停止当前执行命令
     AT+WTONE      演示话筒响或蜂鸣声
     AT+WDTMF      演示DTMF声响
     AT+WDWL      将模块切换到下载模式
     AT+WVR      设置传送语音速率(适用于向外呼叫)
     AT+WDR      设置传送数据速率(适用于向外呼叫)
     AT+WHWV      显示硬件版本
     AT+WDOP      显示生产日期
     AT+WSVG      选择默认麦克控制者(默认为1)
     AT+WSTR      查看初始化状态或网络状态
     AT+WSCAN      查看具体频率接收信号能量
     AT+WRIM      查看和设置振铃模式
     AT+W32K      选择在不工作状态是否使用32KHz内部时钟
     AT+WCDM      选择一种默认出厂铃声
     AT+WSSW      显示软件版本
     AT+WCCS      显示或编辑发送和接收字符
     AT+WLCK      设置设备锁定
     AT+CPHS      设置DPHS功能

13.SIM卡工具箱命令
     AT指令      说明
     AT+STSF      设置SIM卡工具箱功能
     AT+STIN      SIM卡工具箱指示
     AT+STGI      显示SIM卡工具箱命令信息
     AT+STCR      回显命令:工具箱控制反应
     AT+STGR      选择或回应命令
     官方站点:http://www.90net.com
     ***********有些指令不被模块支持***********
[COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
Powered by LeadBBS 9.2 .
Page created in 0.1719 seconds with 5 queries.