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

主机操作系统: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. android RecyclerView (三):ItemAnimator 详解

    本文继上篇 ItemDecoration 之后,是深入理解 RecyclerView 系列的第二篇,关注于 ItemAnimator,主要是分析 RecyclerView Animators 这个库的 ...

  2. Orchard运用 - 导入旧随笔导致归档的问题

    归档功能对于一个博客App这应该必须有的需求,故此Orchard中博客模块默认实现这一特性并通过一个叫"Blog Archives" widget, 你可以将其安装博客主页的侧边栏 ...

  3. JSP学习笔记(一):JSP语法和指令

    一.语法 1.脚本程序的语法格式: 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. <% 代码片段 %> 2.中文编码问题 如果我们要在页面正常显 ...

  4. 关于导出数据库提示 outfile disabled的解决方案

    使用命令mysqldump进行导出数据到本地磁盘,执行该命令的时候不要进入mysql的控制台再使用,这样会报outfiledisabled错误.而是直接使用MYSQL/bin目录下的mysqldump ...

  5. 将项目的版本控制从Vss迁移到Git

    之前在Vs2008上一直使用的是Vss版本控制,现在将版本控制更改为Git 迁移原因是其他公司想要在我们公司开发的一个CRM系统做一些定制(个性化需求,将软件上的公司名称和链接更改为他们的或一些跟我们 ...

  6. 语音信号处理之(一)动态时间规整(DTW)

    语音信号处理之(一)动态时间规整(DTW) zouxy09@qq.com 原文:http://blog.csdn.net/zouxy09 这学期有<语音信号处理>这门课,快考试了,所以也要 ...

  7. Google Maps API v2密钥申请以及实现地图定位导航

    注意新建项目之前需要安装 google play  services 然后导入 通过上图方法导入sdk包下面的一个包: \adt-bundle-windows-x86\sdk\extras\googl ...

  8. android-关于友盟的自动版本更新(面向小白)

    今天说一下关于友盟的自动版本更新(傻瓜式版本更新) 关于自动更新的话,如果让android程序猿自己写的话还是不是那么简单的(对于我这个菜鸟来说...),又要检查当前版本,又要在服务器存储新的版本,又 ...

  9. 广州高清卫星地图 用百度卫星地图server下载 含标签、道路数据叠加 可商用

    广州高清卫星地图的地图展示图片各自是15级别.17级别.19级别的地图.一般来说17级别的地图图片就行用于商用.地图包包括一整张高级别的图片,如要全图浏览请用专业图片处理软件PS等打开. 一般来说互联 ...

  10. Ubuntu 下建立WiFi热点的方法

    使用ap-hotspot来创建WIFI热点.终端里输入: $ sudo add-apt-repository ppa:nilarimogard/webupd8 $ sudo apt-get updat ...