电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

GPRS模块 转自21ic

 

转自21iC

在众多的模块中选择了国产的德信的piml-900/18000,就是一个字-便宜。技术支持做的也很好。说说我的调试过程吧。
现在的gprs模块都封装的很好,与mcu连接的管脚我只用了rxd,txd作为数据线,另外加上几条控制线,控制模块的工作状态。操作起来很简单。
什么进口国产,够我们用就行了。

一.模块的选择
其实在选择模块时并没有考虑价钱,反正有人报销。网上流行的有的虽有gprs功能,但没有tcp/ip协议(mc35i),要不就是价钱高,gr47,wavecom2046.小弟当时也是没信息,第一次接触这无线传输的东东,总怕出问题。除了问题怎么办,找技术支持。找国内的总比国外的方便吧。所以选择了德信的piml模块。价钱也便宜,后来证实,技术支持做的确实好。
二.模块的电源设计:
   在众多的GPRS模块中,模块的电源范围都在3.3-4.2V之间,推荐使用电压3.6-3.8V,峰峰值电流1700mA 。德信的PIML-900/1800模块的推荐的典型电源电压为3.8V,有2A的电流输出能力。由于周围网络很好,所以我在实际的使用中电源设计采用的是LM2941,输出电流为1A,调整电阻使输出在3.8v左右,模块工作正常。在周围网络不好的情况下,模块不停的搜寻网络,这时将消耗较大的电流,此时应采用输出电流能力较大的电源芯片。为了防止模块电源电压产生突然的降低导致模块死机,在靠近模块的输入端加了一个470uf的电容,增强模块在发送数据期间供电电压的稳定性。
   用这种电源芯片,发短信,打电话,发送数据均没出现问题。
注意:如果电路中没有设计充电电池,应把电源接到模块的VBAT管脚。我在应用时第一次接到了CHG_IN管脚,充电电路工作,模块发热量很大。

下面的这段程序适合给新手,初步了解用哪些at指令对模块进行基本的操作
以下为对模块操作的具体程序、流程及用到的AT指令:
该函数完成通过串口向模块写入字符串(AT命令)的功能
void writeGSM(uchar *str)
{
    uchar i="0";   
    while(str[i]!=0x00)               //判断是否为字符串结尾
    {   
        TXBUF0=str[i];          //不是则将字符发给串口   
        while((UTCTL0&0x01)==0);   //等待数据发送完成                                 
        i++;           
    }   
}
2.1 短消息传输的控制
2.1.1 设置短信格式为文本格式
在用模块发送短信前要对短信格式进行设置 指令为 AT+CMGF=1 
发送(取消)短消息AT指令:    AT+CMGS=“目标卡号”
                               >HELLO WORLD!(Esc)
短信例程:
    writeGSM("AT+CMGF=1\r"); 
                                  
    writeGSM("AT+CMGS=\"13126520830\"\r");   //发送手机号         writeGSM("HELLO CAU");               //发送短信内容             TXBUF0=0x1a;                            //发送CTRL+Z
2.2 GPRS数据传输的控制
2.2.1 首先定义PDP移动场景
AT+CGDCONT=1,"IP","CMNET"
2.2.2    激活PDP,获得IP地址
AT+CGATT=1
2.2.3     设置模块连接方式为GPRS连接,接入点为“CMNET”
AT+CIPCSGP=1,"CMNET"
2.2.4     建立连接
AT+CIPSTART="TCP/UDP",221.216.163.44,2020
TCP/UDP指明是TCP连接还是UDP连接,221.216.163.44是SEVER端的IP地址,2020为端口,连接成功后模块返回 CONNECT OK
2.2.5    发送数据
AT+CIPSEND 返回“>”后输入要传输的数据,再发送CTRL+Z
即将所要发送的数据发送到指定IP的服务器上
2.2.6    关闭TCP连接
AT+CIPCLOSE
只有在TCP/UDP处于CONNECTING 或者CONNECT OK的状态下才返回OK,否则返回ERROR
2.2.7    关闭移动场景
 AT+CIPSHUT

  注意:服务器端的IP地址,我当时是在学校做实验,服务器打开了,但是模块就是连不上,后来分析才知道(高手一看就知道),我的ip属于私网的,非公网IP,估计是找不到网络入口,所以找了一个同学,他们是研究所,有一个公网ip地址,把服务器接收软件传给他,他打开接收软件,我在学校这边进行连接,ok了。

这是小弟的一点经验,但是根本没接触过gprs,胡乱弄了一下,稍微懂了一点,给出学的一点点借鉴。

博主
fpga2006
琥珀☆★
fpga2006
点击跳转