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

主机操作系统: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.csdn.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

[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

[hulu@centos6 chat]$ vim Makefile



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

[hulu@centos6 pppd]$ vim auth.c



[hulu@centos6 pppd]$ vim Makefile





[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"



编写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 & //&是后台运行的意思。。仅仅有这条后台运行。。我们才干在前台检測是否上网





假设出现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拨号上网的更多相关文章

  1. 在ARM-linux上实现4G模块PPP拨号上网【转】

    本文转载自:http://blog.csdn.net/zqixiao_09/article/details/52540887 在ARM平台上实现4G模块的PPP拨号上网,参考网上的资料和自己的理解,从 ...

  2. linux下GPRS模块ppp拨号上网

    ---------------------------------------------------------------------------------------------------- ...

  3. GPRS模块在Linux平台上ppp拨号上网总结与心得

    linux平台的ppp拨号上网,(注明:这里只谈命令行拨号,用linux就要习惯和熟练使用命令行) 在网上常见的有三种方式:1.使用智能的ppp拨号软件wvdial:参考案例:本博客的<使用wv ...

  4. 树莓派实现SIM868 ppp拨号上网

    环境:raspbian-stretch(2018-06-27) 树莓派:3代B型 SIM868模块具有GPRS数据传输功能(2G网络),但是模块是通过AT指令控制的,在树莓派上用AT指令控制会非常不方 ...

  5. SIM7600CE TCP/IP连接与PPP拨号上网 4G上网

    SIM7600CE联网测试分为两部分: 1.TCP/IP连接 2.PPP拨号上网 实验环境:ubuntu-meta 16.04 硬件:树莓派3B,SIM7600CE 上网卡:移动的NB-IOT物联网卡 ...

  6. 4G模块*99#拨号上网

    操作系统:win10 模块型号:quectel EC20 CE FAG 4G模块拨号步骤如下: 1. 打开网络和internet设置 2. 选择“拨号” 3. 选择“设置新连接” 4. 选择“拨号调至 ...

  7. 树莓派 4G模块 PPP 拨号 NDIS 拨号

    资料参考:树莓派使用4G模块(华为ME909s-821)亲身尝试的可行方法(上)

  8. 嵌入式Linux系统---ppp拨号,4G模块上网【转】

    本文转载自:http://blog.csdn.net/qq562029186/article/details/65438553 4G模块PPP拨号上网 方法1 所需文件: xxx-chat-conne ...

  9. 关于PPP拨号 和 AT指令实现GPRS模块联网的疑问

    以下内容摘抄自互联网: ppp拨号 与 at命令的疑问 GPRS模块在Linux平台上ppp拨号上网总结与心得 以PPP拨号实现GPRS与因特网的数据通信的具体实现流程 问: 我刚接触GPRS,了解A ...

随机推荐

  1. MySQL year函数

    mysql的日期函数,示例如下:

  2. #include &lt;NOIP2010 Junior&gt; 三国游戏 ——using namespace wxl;

    题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之 ...

  3. MySQL 中文乱码解决

    測试环境:服务端和client均为win7,MySql数据库.表字符集为utf-8,字段字符集与表一致. 1.使用mysql命令进行操作时的乱码问题解决. (1)设置当前字符集 set names g ...

  4. dedecms织梦 标签远程文件写入漏洞

    测试方法: @Sebug.net   dis本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负! 前题条件,必须准备好自己的dede数据库,然后插入数据: insert into d ...

  5. PostgreSql 合并多行记录

    需求描述: A表有如下数据 id 1 2 3 4 B表有如下数据 id name 1 aaa 1 bbb 1 ccc 2 aa 2 bb 3 c A表和B表通过id关联,需要查询结果如下: id na ...

  6. 移植tslib和Qt5.6到三星s5pv210开发板

    tslib1.4移植 下载tslib1.4后 1.cp tslib-1.4.tar.bz2 /home/gec 2.tar jxvf tslib-1.4.tar.bz2 3.sudo -s 4.cd ...

  7. Python 谷歌翻译

    #coding=utf-8 import re import urllib import urllib2 url_google = 'http://translate.google.cn' reg_t ...

  8. 使用 Python 创建你自己的 Shell (上)

    我很想知道一个 shell (像 bash,csh 等)内部是如何工作的.于是为了满足自己的好奇心,我使用 Python 实现了一个名为yosh(Your Own Shell)的 Shell.本文章所 ...

  9. asp.net 利用HttpWebRequest自动获取网页编码并获取网页源代码

    /// <summary> /// 获取源代码 /// </summary> /// <param name="url"></param& ...

  10. Java之开发工具(1) - Eclipse 如何设置注释的模板

    最常用的注释就是对类的说明和方法的说明,关于这类代码的注释方式,在Eclipse中可以这样进行设置: windows---preferences...---java--code style--code ...