引言
EM310是一款兼容型GSM/GPRS通信模块,在硬件上兼容MC55,相比后者更具有价格优势,可用于远程数据采集、远程测试、无线POS机等领域。模块内嵌TCP/IP协议栈,可以缩短产品开发上市时间。在价格敏感的终端上使用该模块可有效降低制造成本,是华为公司主推的无线模块。
PIC单片机性能稳定,品种众多,在工业控制、仪器仪表、智能家电等领域得到广泛应用。本文选用的PIC18F6621单片机具有2个串口, EM310模块占用一个,另一个可与用户其余系统进行通信。在单片机4 KB的RAM中开辟出了2 KB的数据缓冲区,保证了单片机与EM310进行GPRS数据通讯的需要。文中的系统具有结构简单、接口方便的特点。
1 系统硬件设计
EM310模块体积小巧,采用50引脚 B2B接口方式,为外围设备提供了以下接口:UART接口、SIM卡接口、音频接口、电源接口、USB总线接口、网络状态指示接口等[1]。文中采用了其中的UART接口、SIM卡接口、电源接口、网络状态指示接口,以及开关控制、模块复位接口,实现了模块的短信、电话(拨通与接听,未进行语音通信)、GPRS传输等功能。PIC单片机通过2个普通I/O口完成EM310的开机、复位,通过串口2与EM310模块进行AT指令通信,串口1接收外部系统的数据。系统构成如图1所示。
图1 系统框图
串口1与不同的设备进行通信时,需根据情况决定是否需要RS232电平转换电路。
1.1 电源电路设计
模块工作电压为3.3~4.5 V,推荐工作电压为4.0 V。由于EM310模块在接通网络的瞬间搜索网络信号时,会提升发射功率。此时若电源供电能力不足,将造成系统电压下降,模块可能自动复位。因此电源设计采用了大电流开关电源集成电路,MIC29312是能适应3 A负载电流动态范围变化的快速响应的稳压器电路,可以保证系统的稳定供电。电源电路如图2所示。MIC29312电路4脚的输出电压由R1与R2的比值决定,关系式为Vout=1.240(1+R1/R2)V,取R1=47 KΩ,R2=20 KΩ时,输出为4.154 V,为EM310模块供电。5 V电源由外部开关电源输入得到,PIC18F6621直接采用5 V电源。在5 V及4 V电源端均采用了容量较大的钽电容滤波,以提高系统工作的稳定性。
图2 电源电路
1.2 EM310外围电路设计
外围电路参考华为公司的EM310模块设计指南[2]。如图3所示,图中主要包括了网络指示灯、启动电路、复位电路。网络指示
图3 GSM模块外围电路
灯以闪烁时间间隔的长短指示模块的工作情况:开机、注册网络、发送数据、待机等。启动、复位端接单片机的通用I/O口,单片机上电初始化完毕后给启动端一个大于50 ms的低电平即可启动模块。单片机平时给复位端置高阻态,复位时输出一个50 ms的低电平即可使模块复位。图中RXD0、TXD0脚分别接单片机的串口接收、发送端。由于采用的PIC单片机为5 V供电方式,按手册要求在TXD0端接了一个6.2 kΩ的电阻。
1.3 SIM卡电路设计
EM310模块基带处理器集成了SIM卡接口电路,通过PCB走线连到了B2B连接器上(图3中的1~6脚),为外部SIM卡提供接口信号。图4为SIM卡电路,其中CCVCC、CCRST、DCLK、CCGND、CCIO、CCIN分别对应图3中B2B连接器(EM310)的2、4、1、6、3、5脚。
图4 SIM卡电路
1.4 单片机电路设计
单片机与EM310模块的接口电路比较简单,占用了串口2。串口1在需要时可以与用户其余系统进行通信。将串口1接收的数据用AT指令封装后再经串口2发送给EM310,EM310将数据以GPRS或短信方式经GSM/GPRS网络发送出去。实验中可以将PC机发送给串口1的数据以GPRS方式稳定可靠地发送出去。
2 软件设计
PIC单片机主要通过AT指令对EM310进行控制。EM310最大支持115200 b/s的串口数据传输率,默认为9600 b/s,可以根据需要通过AT指令进行设置。由于数据量不大,本文中采用的是9600。
PIC单片机主要完成端口初始化,串口数据传输率设置,控制EM310开启,通过AT指令对EM310进行初始化、控制拨打电话等功能操作。单片机初始化程序如下:
GIE=0;//总中断暂时关闭
TRISB=0;
TRISF=0;
TRISG=0;
INTCON=0;
TRISG=TRISG|0xc0; //串口端口设置为输入工作方式,使能串口2
SPBRG2=25;//9600
TXSTA2=0x04;
RCSTA2=0x80;
BAUDCON2=0x00;
CREN2=1;//允许连续接收
TX2IE=0;//发送中断关闭,串口发送采用查询方式
RC2IF=0;//接收中断标志清0
RC2IP=0;
RC2IE=1;//接收中断打开,串口接收采用中断方式
IPEN=0;//关闭中断优先级
PEIE=1;//外围中断开启
GIE=1;//总中断开启
单片机初始化完成后,需要控制端口完成EM310的开启,程序如下:
RESTART=0;
TERM_ON=0;
DELAY(50);
TERM_ON=1;//经反相后拉低50 ms
DELAY(50);
TERM_ON=0;
开机完毕后, EM310模块内部初始化、SIM卡注册网络都需要一段时间,这时可以加一个5 s左右的延时(与当地信号有关,需实验获得,由网络指示灯的闪烁状态可得知),或者是单片机通过串口2向EM310不断发送“AT”测试指令,待接收到“OK”回复后,即可确认EM310开机初始化完毕。而注册网络的完成可以通过发送“AT+CREG?”指令获得,注册成功后可以得到无线模块“+CREG:1,1”回复。此外,EM310开机成功后,建议通过发送“ATE0”关闭AT指令回显功能,以利于单片机监控EM310执行AT指令后的状态,简化编程。EM310绝大多数AT指令都是以回车键结尾,而EM310执行完大多数AT指令后会向单片机返回一个“OK”,单片机可以据此判断EM310对AT指令的执行情况。下面一段程序以发送测试指令“AT”为例,介绍单片机发送指令的方法。
uchar Command0[3] = "AT\\r";
for(n=0;n<3;n++){
TXREG2=Command0[n];
Tx_wait2();//查询至串口发送完毕
}
EM310执行每一条指令的时间是不同的,有的很快,为ms级,而有的则很慢,需要十几s,如GPRS建立连接指令。因此,每发送完一条AT指令,应进入等待状态,并不断查询串口接收缓冲区内的数据,若返回“OK”则证明指令执行完毕。查询指令执行状态程序如下,此段程序可放在发送AT指令后面:
f1=0;//此段段程序等待EM310执行完
//AT指令后返回的OK回复
while(!f1){//串口2中断接收的数据放在缓冲区rec[n]中
if(rec[n]=='K'){
if(rec[n-1]=='O')
f1=1;//置标志位
}
else f1=0;
}
单片机发送完一条指令后,即不断查询f1值,进入等待状态。当f1值为1时即证明EM310模块执行指令完毕,再进行下一步操作。
3 实验结论
对EM310的电话、短信、GPRS功能均进行了验证。EM310模块由PIC单片机控制开机后,向用户手机发送短信、拨打电话。在与网络连接时,网络指示灯处于常亮状态。GPRS传输实验中,PC机与PIC单片机的串口1经电平转换芯片后相连。PC机首先通过网络调试助手软件建立服务器,获得本机参数后,经PIC单片机发送给EM310,并等待EM310建立GPRS连接。连接成功后PC机通过串口调试助手向PIC单片机发送每帧512个字节的数据。PIC单片机将接收到的数据放在数据缓冲区内,将数据按AT指令格式打包后经串口2发送给EM310。最后EM310经GPRS网络将数据发送到服务器(PC)上,PC机通过网络调试助手即可看到接收到的数据,与串口调试助手发送的数据进行比较,检查可靠性。实验中误码漏码情况极少发生。
结语
该方案可以满足用户在使用EM310模块过程中对EM310进行评估和评价。由于保留了一个外部通信串口,可以为客户系统方便地加上GSM/GPRS功能,方便二次开发。结合手册,根据文中给出的方法,可以很快进行相应功能开发。本文介绍的电路已应用于仓库监控系统中,可以在外人入侵时向用户手机发出报警短信并重复拨打电话进行提醒,并将串口JPEG摄像头的监控图像(静态图像)发到网络服务器上。