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.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拨号上网的更多相关文章
- 在ARM-linux上实现4G模块PPP拨号上网【转】
本文转载自:http://blog.csdn.net/zqixiao_09/article/details/52540887 在ARM平台上实现4G模块的PPP拨号上网,参考网上的资料和自己的理解,从 ...
- linux下GPRS模块ppp拨号上网
---------------------------------------------------------------------------------------------------- ...
- GPRS模块在Linux平台上ppp拨号上网总结与心得
linux平台的ppp拨号上网,(注明:这里只谈命令行拨号,用linux就要习惯和熟练使用命令行) 在网上常见的有三种方式:1.使用智能的ppp拨号软件wvdial:参考案例:本博客的<使用wv ...
- 树莓派实现SIM868 ppp拨号上网
环境:raspbian-stretch(2018-06-27) 树莓派:3代B型 SIM868模块具有GPRS数据传输功能(2G网络),但是模块是通过AT指令控制的,在树莓派上用AT指令控制会非常不方 ...
- SIM7600CE TCP/IP连接与PPP拨号上网 4G上网
SIM7600CE联网测试分为两部分: 1.TCP/IP连接 2.PPP拨号上网 实验环境:ubuntu-meta 16.04 硬件:树莓派3B,SIM7600CE 上网卡:移动的NB-IOT物联网卡 ...
- 4G模块*99#拨号上网
操作系统:win10 模块型号:quectel EC20 CE FAG 4G模块拨号步骤如下: 1. 打开网络和internet设置 2. 选择“拨号” 3. 选择“设置新连接” 4. 选择“拨号调至 ...
- 树莓派 4G模块 PPP 拨号 NDIS 拨号
资料参考:树莓派使用4G模块(华为ME909s-821)亲身尝试的可行方法(上)
- 嵌入式Linux系统---ppp拨号,4G模块上网【转】
本文转载自:http://blog.csdn.net/qq562029186/article/details/65438553 4G模块PPP拨号上网 方法1 所需文件: xxx-chat-conne ...
- 关于PPP拨号 和 AT指令实现GPRS模块联网的疑问
以下内容摘抄自互联网: ppp拨号 与 at命令的疑问 GPRS模块在Linux平台上ppp拨号上网总结与心得 以PPP拨号实现GPRS与因特网的数据通信的具体实现流程 问: 我刚接触GPRS,了解A ...
随机推荐
- matlab strel
>>se3 = strel('square',3)Neighborhood: 1 1 1 1 1 1 1 1 1 >> se3 = strel('line',3 , 45)Ne ...
- sql 语句之 case
case语句语法: --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN ...
- FishEye
- SQL VM上磁盘延迟高, 但Host和Storage Array上的延迟却很低的问题
按照下面的步骤, 问题解决. =========================== Per Microsoft DDK, Microsoft storport.sys maintains a dev ...
- 自定义ImageView 手势 缩放 滑动 矩阵
功能 初始时大小控制,图片宽或高大于view的,缩小至view大小,否则按原始大小显示双击放大,第一次双击后将图片宽或高放大到view的宽或高的比例再次双击会再在此前基础上放大固定的倍数放大两次后后再 ...
- Vue.js前后端同构方案之准备篇——代码优化
收录待用,修改转载已取得腾讯云授权 导语 目前Vue.js的火爆不亚于当初的React,本人对写代码有洁癖,代码也是艺术.此篇是准备篇,工欲善其事,必先利其器.我们先在代码层面进行优化,对我们完成整个 ...
- windows获取本机MAC地址并写入文件的bat
windows获取本机MAC地址并写入文件的bat MAC(Media Access Control)地址,或称为 MAC地址.硬件地址,用来定义网络设备的位置. bat代码例如以下: @echo o ...
- BlazeMeter+Jmeter 搭建接口测试框架
转载:http://www.sohu.com/a/133218497_575744 关于接口测试,笔者认为其难点分别在如下几方面:接口参数的获取和输入.测试数据的准备.场景的串联.测试结果的断言. 接 ...
- WCF 之 生成元数据和代理
在WCF开发概述中讲解了手工方式的WCF应用,其实实际开发中使用更多的使用配置方式和元数据来实现WCF,下面我们来看一个具体的Demo,这个例子和WCF开发概述中使用的是同一个例子,只是实现方式不同, ...
- iOS 检查app版本更新操作
iOS 检查app版本更新操作 1:获取本地安装的版本信息: [NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle ...