发 帖  
原厂入驻New
[经验]

如何使用GPRS/GPS/GSM模块---GPRS使用

2016-1-7 17:49:34  14594 无线网络 GPS定位 服务器
分享
3
鉴于投票结果,大家都比较喜欢模块的教程。技术宅Roy将会寻找受众比较广,又问题较多的模块给大家带来使用教程。希望大家在本微信找到自己有用的信息,多谢支持。

先上个图:

这个模块为DFRobot出的一款3合1模块,融合了GPS/GPRS/GSM。

该模块几乎包含了一个手机所拥有的所有基本功能:无线上网,发短信,打电话,GPS定位。

正因为功能繁多所以让各位拥有着又爱又狠,原因是要使用他需要了解比较多的东西。
关于GPS部分其实前面已经发了好几篇文章来阐述如何使用了,这次主要讲讲GPRS的使用。活用GPRS,可以让此模块上的GPS模块真正变的有意义,脱离了电脑,使用无线网络的GPS模块才具有实用价值。

GPRS也就是一般理解上的手机无线网,是介于2G和3G之间的技术,传输速度较慢,最快为100多Kbps适合于少量的数据传输。优点在于有电话信号就能连上网络,适应面非常广。

和GPS一样,在该模块上使用GPRS功能同样是使用AT指令。(注意模块耗电较大需要外部供电),该例程通过GPRS连接了我私人的阿里云服务器,随意发送了点数据,便于观察数据发送的特点哈。

一、使用串口助手测试,步骤如下:
1、硬件连接
扩展板接到主控板UNO,SIM卡插好。
USB线、外接电源接好。
2、下载程序
扩展板S1开关拨到Prog端,下载下面程序。




  1.    void setup() {    //设置引脚为输出模式    pinMode(3,OUTPUT);    pinMode(4,OUTPUT);    pinMode(5,OUTPUT);    //GSM开机时序     
  2. digitalWrite(5,HIGH);   
  3. delay(1500);   
  4. digitalWrite(5,LOW);  
  5. }
  6. void loop()     {   
  7. digitalWrite(3,LOW);//使能GSM的TX、RX   
  8. digitalWrite(4,HIGH);//关闭GPS的TX、RX

复制代码



3、打开串口助手软件
S1按键拨到Comm端,S2按键拨到USB端。
Uart Select串口选择开关拨到中间。
打开串口助手软件,默认波特率为9600bps,勾选发送新行。此时STAT灯亮,模块启动,如果没有启动可以按下RST复位键,重新开启。

4、上传数据
步骤:
AT 同步
AT+CSTT 设置APN
AT+CIICR 激活移动场景
AT+CIFSR 获得本地IP地址
AT+CIPSTART="TCP","xxx.xxx.xxx.xxx",8081 建立TCP连接
AT+CIPSEND 发送数据
出现“>” ,发送下面数据
{"method": "update","gatewayNo": "02","userkey": "5d3eeec03bc747d7a23ab7d99c9340ea"}&^!()
输入完后按‘ctrl+z’即可
AT+CIPSEND 发送数据
出现“>” ,发送下面数据
{"method": "upload","data":[{"Name":"T1","Value":"25"}]}&^!
输入完后按‘ctrl+z’即可

于是在我的服务器上就收到了以下的数据。


用串口助手毕竟只能测试,我们可不能忘记了我们的目的所以我们必须编写Arduino上的指令来发送数据。同样我们需要一个接收数据的服务器,这次除了自己的服务器测试,我还把数据同样传到了我们的老朋友yeelink上。

二、Arduino程序。

1、硬件连接
扩展板接到主控板UNO,SIM卡插好。
USB线、外接电源接好。

2、下载程序
扩展板S1开关拨到Prog端,下载下面程序。





  1. // for yeelink api
  2. #define APIKEY         "59a4ea38a9909344b0ebfaff59exxxxx" // replace your yeelink api key here
  3. //replace the device ID and sensor ID for temperature sensor.
  4. #define device_id       341588 // replace your device ID
  5. #define sensor_id       381410 // replace your sensor ID
  6.    void setup()
  7. {
  8.    //设置引脚为输出模式
  9.    pinMode(3,OUTPUT);
  10.    pinMode(4,OUTPUT);
  11.    pinMode(5,OUTPUT);
  12.    
  13.    digitalWrite(5,HIGH);
  14.    delay(1500);
  15.    digitalWrite(5,LOW);
  16.    
  17.    digitalWrite(3,LOW);//使能GSM的TX、RX
  18.    digitalWrite(4,HIGH);//关闭GPS的TX、RX
  19.     //设置波特率
  20.     Serial.begin(9600);
  21.     //等待call ready
  22.     delay(5000);
  23.     delay(5000);
  24.     delay(5000);
  25. }
  26. unsigned long time = 0;

  27. void loop()   
  28. {
  29.     //发送AT命令同步
  30.     Serial.println("AT");  
  31.     delay(2000);
  32.     Serial.println("AT");  
  33.     delay(5000);  
  34.    while(1)
  35.    {
  36.        Serial.println("AT+CIPSTART=\"TCP\",\"api.yeelink.net\",80");
  37.        delay(5000);
  38.        Serial.println("AT+CIPSEND");
  39.        delay(2000);
  40.         String cmd;
  41.         String thisData = String(analogRead(A0));         
  42.         time = millis();      
  43.         cmd = "POST /v1.1/device/";
  44.        cmd += String(device_id);
  45.         cmd += "/sensor/";
  46.         cmd += String(sensor_id);
  47.        cmd += "/datapoints";
  48.        cmd += " HTTP/1.1\r\n";
  49.        cmd += "Host: api.yeelink.net\r\n";
  50.        cmd += "Accept: *";
  51.        cmd += "/";
  52.        cmd += "*\r\n";
  53.        cmd += "U-ApiKey: ";
  54.        cmd += APIKEY;
  55.        cmd += "\r\n";
  56.        cmd += "Content-Length: ";
  57.        int thisLength = 10 + thisData.length();
  58.        cmd += String(thisLength);
  59.        cmd += "\r\n";
  60.        cmd += "Content-Type: application/x-www-form-urlencoded\r\n";
  61.        cmd += "Connection: close\r\n";
  62.        cmd += "\r\n";
  63.        cmd += "{\"value\":";
  64.        cmd += thisData;
  65.        cmd += "}\r\n";
  66.        Serial.print(cmd);
  67.        delay(2000);
  68.        Serial.write(26);
  69.        delay(5000);
  70.        Serial.println("AT+CIPCLOSE");
  71.        delay(2000);
  72.    }
  73. }

复制代码



再把S1拨回来。
下图为传到我自己服务器收到的数据

下图为yeelink收到数据后的显示
可以看到每条指令之间都有很长的延时,这也是GPRS的一个缺点,反应比较慢(没有测试这个延时的最小值,需要很快速度的童鞋可以自己改下延时速度测试下极限速度)

如果喜欢观看类似科技新奇事物,以及了解创客圈最新资讯,或者您对Arduino有所耳闻,可以关注我们微信公众号,一定会带给您最新的资讯,最实用的教程,以及创客最新的玩意。


徐洁 2016-1-12 13:15:18
GSM模块的使用真的很好,学习一下
回复

举报

lhw804490378 2016-7-13 22:50:05
亲 请教一下,这个可以上传到乐维和新浪的服务器吗也
回复

举报

spring1987 2016-7-14 14:30:45
GPRS模块目前在市场上做得比较有特色的有深圳合方圆,他们公司的GPRS模块具有DTU功能、基站检测、蓝牙、透传、中文短信、支持低功耗、支持OPEN AT、支持断线自动重连、心跳包配置、远程短信配置、远程TCP配置、DTMF、MMS彩信、TTS等功能。超小的体积适合各种物联网产品方案,智能家居、个人定位、车联网、无线POS机、无线抄表、公用无线电话、工控、油田、矿山等各种工况环境
最大的特色是合方圆的云服务,基于合方圆云平台的SIM卡可以实现非常多的功能
二、功能

1、基础通信能力:GPRS通信能力和短信通信能力,短信可提供不同优先级服务(重发频次、储存时间),充分满足不同集团客户需求。
2、终端状态查询:向客户提供开关机信息、终端位置信息、终端GPRS上线、离线、IP、APN等信息查询。
3、账务信息查询:向客户提供账户信息查询,提供账户欠费、流量超标等事件的提醒功能。
4、业务统计分析:向用户提供多维度的业务报表统计及分析等。
5、灵活计费功能:根据客户需求提供流量池、生命周期等多种计费方式。

三、优势

1、一点接入,全网服务:提供一点进行业务受理,分省出卡的业务开通,各配合省根据客户需求进行卡的制作、配号和销售,直接为客户提供业务服务和网络服务,满足客户“一点拿卡”、“一站式服务”需求,避免客户与多个运营商、多个省进行业务对接,且无省间漫游结算,特别适合于全网业务应用的行业客户。
2、丰富的码号资源:拥有以106**开头的13位物联网专用号段,支持短信和GPRS功能,;物联网用户可以使用专门的号码,获取所需的丰富码号资源。
3、灵活的计费方式:针对物联网业务的特殊性,提供了流量池计费方式和按生命周期计费方式,其中,按流量池计费即客户通过购买流量池,实现多张卡共用一个流量池的功能;按生命周期计费方式即终端硬件费加上终端整个生命周期包月费的总和,再通过一定的折扣率分摊到每个月,降低客户的总体成本。另外,在整个计费环节新增测试期和沉默期,满足客户测试期需求,并为客户免费提供测试流量及短信。
4、高质量的网络:通过建设物联网短信中心、物联网GGSN、物联网HLR等物联网专用网元,实现物联网用户与大众用户的网络分离,为行业客户提供可靠性和稳定性的网络。
5、通信管理:采集网络信息,并通过物联网专网的运营管理平台为客户提供通信在网状态查询(开关机信息、PDP激活状态、IP地址查询、短信失败原因查询等)、流量信息查询、流量余额提醒等功能。
6、终端管理:在终端管理方面为客户提供终端管理、远程控制、远程升级等,让用户时刻掌握终端状态,出现故障及时发现,并帮助用户快速故障定位。
7、用户自主管理:物联网运营管理平台向客户分配专有帐号,或为应用平台提供直连的API接口,满足客户对终端的工作状态、通信状态等进行实时自主管理的需求。

四、应用领域

1、电力:电力抄表、电力设备监控等;
2、交通:车载前装、物流运输、车载后装等;
3、金融:无线POS终端、税控发票打印机等;
4、其他行业:智能家居、企业安防、医疗、农业、能源、气象、水文监测、油田、气象、环保
回复

举报

小鱼 2016-8-10 23:02:07
学习了谢谢楼主                                                   
回复

举报

qin0036 2017-5-11 13:29:10
还是 Luat 的 GPRS 模块比较好, 直接用 Lua 开发应用,速度快,模块调用网络服务也是实时的。
回复

举报

尹星 2017-5-14 08:12:56
这个很有必要进来看看
回复

举报

尹星 2017-5-14 08:13:07
还没搞过这些东西啊
回复

举报

只有小组成员才能发言,加入小组>>

2073个成员聚集在这个小组

加入小组

创建小组步骤

快速回复 返回顶部 返回列表