sim900GPRS模块ppp拨号上网

时间:2023-03-09 00:42:14
sim900GPRS模块ppp拨号上网

—————————————————————————————————————————————

主机操作系统:Centos 6.5

交叉编译器环境:arm-linux-gcc-4.5.4

开发板平台: FL2440

Linux内核版本号: linux-3.0

开发模块: SIM900 GPRS

邮箱:luhu918@gmail.com

—————————————————————————————————————————————

开发提醒:在开发gprs模块ppp拨号上网之前需满足fl2440开发版能正常载入linux内核及文件系统。而且开发板的串口已经使能。同一时候需准备一张开通gprs流量的sim卡。

一:GPRS介绍



GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上。具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。GSM模块依据其提供的传输数据速率又能够分为GPRS模块、EDGE模块和纯短信模块。

短信模块仅仅支持语音和短信服务。GPRS,可说是GSM的延续。它常常被描写叙述成“2.5G”,也就是说这项技术位于第二代(2G)和第三代(3G)移动通讯技术之间。

GPRS的传输速率从56K到114Kbps不等。理论速度最高达171k。

相对于GSM的9.6kbps的訪问速度而言,GPRS拥有更快的訪问数据通信速度,GPRS技术还具有在不论什么时间、不论什么地点都能实现连接,永远在线、按流量计费等特点。EDGE技术进一步提升了传输数据的速率到384K-473K。被称为”2.75G”,传输数据速率更2倍于GPRS。眼下。国内的GSM网络普遍具有GPRS通讯功能。移动和联通的网络都支持GPRS,EDGE在部分省市实现了网络覆盖。

GPRS模块。是具有GPRS传输数据功能的GSM模块。GPRS模块就是一个精简版的手机。集成GSM通信的主要功能于一块电路板上。具有发送短消息、通话、传输数据等功能。GPRS模块相当于手机的核心部分,假设添加键盘和屏幕就是一个完整的手机。普通电脑或者单片机能够通过RS232串口与GPRS模块相连,通过AT指令控制GPRS模块实现各种基于GSM的通信功能。

GPRS模块差别于传统的纯短信模块,两者都是GSM模块,可是短信模块仅仅能收发短信和语音通讯,而GPRS模块还具有GPRS传输数据功能。”



由于GPRS。串口都是设备。难道就不须要再在linux内核中使能驱动吗?是这种。在一開始内核中就已经对串口驱动进行了使能,而GPRS模块中有GPRS模块的驱动,这个模块通过自身的串口不断的发送数据开发板须要做的就是读取然后处理就够了。



串口线将 GPRS模块的串口和开发板的串口连接起来(我连接的是开发的第二个串口(ttys1),由于第一个串口连接PC了(ttys0)),然后将能够使用的手机SIM卡插入 GPRS模块的卡槽;然后启动开发板,接通GPRS模块的电源。然后按下GPRS模块的SW1,让SIM開始工作,搜索网络这时发光二极管D3会闪烁。

二:编辑Linux内核,使其支持PPP拨号上网

[hulu@centos6 linux-3.0]$ make menuconfig

Device dirver --->Network device
*** CAIF transport drivers ***
<*> PPP (point-to-point protocol) support
[*] PPP multilink support (EXPERIMENTAL)
[*] PPP filtering
<*> PPP support for async serial ports
<*> PPP support for sync tty ports
<*> PPP Deflate compression
<*> PPP BSD-Compress compression
<*> PPP MPPE compression (encryption) (EXPERIMENTAL)
<*> PPP over Ethernet (EXPERIMENTAL)

三:编译ppp-2.4.4.tar.gz

下载ppp-2.4.4.tar.gz

http://download.****.net/detail/zhyustar/1531748

[hulu@centos6 ~]$ mkdir GPRS

[hulu@centos6 ~]$ cd GPRS

[hulu@centos6 GPRS]$ tar -xzf ppp-2.4.4.tar.gz

[hulu@centos6 GPRS]$ ls

ppp-2.4.4 ppp-2.4.4.tar.gz

[hulu@centos6 GPRS]$ cd ppp-2.4.4

[hulu@centos6 ppp-2.4.4]$ ls

sim900GPRS模块ppp拨号上网

[hulu@centos6 ppp-2.4.4]$ ./configure

[hulu@centos6 ppp-2.4.4]$ cd chat/

[hulu@centos6 chat]$ ls

chat.8 chat.c Makefile Makefile.linux Makefile.sol2

[hulu@centos6 chat]$ vim chat.c

sim900GPRS模块ppp拨号上网

[hulu@centos6 chat]$ vim Makefile

sim900GPRS模块ppp拨号上网

[hulu@centos6 chat]$ cd ../pppd

[hulu@centos6 pppd]$ vim auth.c

sim900GPRS模块ppp拨号上网

[hulu@centos6 pppd]$ vim Makefile

sim900GPRS模块ppp拨号上网

sim900GPRS模块ppp拨号上网

[hulu@centos6 ppp-2.4.4]$ make

[hulu@centos6 ppp-2.4.4]$ cd chat

[hulu@centos6 chat]$ ls

chat chat.8 chat.c chat.o Makefile Makefile.linux Makefile.sol2

[hulu@centos6 chat]$ file chat

chat: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

[hulu@centos6 pppd]$ file pppd

pppd: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

把生成的pppd 和chat 下载到自己的开发板上,放在/usr/sbin中,并改动权限

如:chmod 777 chat

四:制作脚本文件



gprs模块ppp拨号上网的时候须要例如以下几个配置文件:

<1> /etc/ppp/peers/gprs

<2> /etc/ppp/chat-gprs-connect

默认情况在开发板的/etc/ppp/文件夹下建立文件gprs-connect-chat。它是在ppp底层会话的时候给chat进程的參数,每行是一个“期望/发送”的组合序列。

一个简单的chat脚本有以下的结构:

“” AT

OK ATDT dialnumber

CONNECT “”

1) MODEM期望空字符串。这句话的意思直接理解就是MODEM无论收到什么字符串,先发出字符串AT;

2) 期望收到“OK”字符串,然后发送字符串“ATDT dialnumber”

3) 假设收到“CONNECT”,就不再发送,觉得数据链路已建立连接。

4)假设须要进行超时控制,就能够添加例如以下字段:

TIMEOUT 10

5)假设要添加对特殊情况的处理,就添加以下字段:

ABORT BUSY

ABORT NO ANSWER

ABORT RINGING

意思是:假设收到字符串“BUSY”、“NO ANSWER”、“RINGING”就退出运行。

编写chat脚本例如以下:以下都是在开发板上操作

~>cd /etc

~>mkdir ppp

~>cd ppp

~>vi gprs-connect-chat

#/etc/ppp/gprs-connect-chat
#Copyright (c) 2016 hulu luhu918@gmail.com
# This is second part of the ppp dial script. It will perform the connection
ABORT 'BUSY'
ABORT 'NO ANSWER'
ABORT 'NO CARRIER'
ABORT 'NO DIALTONE'
ABORT 'ERROR'
ABORT '\nRING\r\n\r\nRING\r' '' \rAT
OK ATE0
SAY "Press CTRL-C to break the connection process.\n"
OK 'AT+CGDCONT=1,"IP","3GNET"' //isp接入网关为中国联通的3GNET
OK ATDT*99# //这里要改成自己的运营商号码。。我的这个号码是联通的
#拨号上网
SAY "Waiting for connect...\n"
CONNECT ''
SAY "Connect Success!\n"

sim900GPRS模块ppp拨号上网

编写gprs配置文件:

它的作用是给pppd进程提供配置參数(详见man 8 pppd的输出内容。假设出现故障这个将是很重要的參考页),内容例如以下:

~>mkdir peers

~>cd peers

~>vi gprs

#/etc/ppp/peers/gprs
# Usage: root>pppd call gprs
#set seriral
/dev/ttyS1 # set baudrate
115200 # set flowdate 可能你的串口是须要crtscts,硬件流控的,这是由你的串口决定的,一般嵌入式系统的串口没有带硬件流控,也不须要就加nocrtscts
nocrtscts #set debug ,send message to /var/log/messages
debug #To keep pppd on the terminal
nodetach # Accept the peer's idea of our local IP address
ipcp-accept-local
# Accept the peer's idea of its (remote) IP address
ipcp-accept-remote #dial up connetion as the default route
defaultroute usepeerdns
Noipdefault #user hulu connect '/usr/sbin/chat -s -v -f /etc/ppp/chat-gprs-connect'

pppd调用chat会话进程接入对端isp,启动对端的pppd,然后本地pppd与对端的pppd一起进行协商网络參数和chap/pap认证,成功后。再进行ncp层的ip的分配。

五:在开发板上測试ppp拨号



要用ping,你须要将eth0即网口给禁用掉,这样ping才会通过ppp0端口寻找路由连接外网

~>ifconfig eth0 down

~>pppd call gprs & //&是后台运行的意思。。仅仅有这条后台运行。。我们才干在前台检測是否上网

sim900GPRS模块ppp拨号上网



假设出现ping得通4.2.2.2,却png不通www.baidu.com,那就是DNS的问题

解决的方法:

你可能须要将/etc/ppp/resolv.conf(内容被新获得的dns代替)内容复制到/etc/resolv.conf中或者做一个到/etc/resolv.conf的链接

也能够直接编辑/etc/resolv.conf

~>vi /etc/resolv.conf

nameserver 4.2.2.2

nameserver 8.8.8.8

~>ifconfig

sim900GPRS模块ppp拨号上网

至此关于sim900GPRS模块ppp拨号上网成功实现,各位读友们有问题直接私聊我。!