10432浏览
查看: 10432|回复: 6

[进阶] 如何使用GPRS/GPS/GSM模块---GPRS使用

[复制链接]
鉴于投票结果,大家都比较喜欢模块的教程。技术宅Roy将会寻找受众比较广,又问题较多的模块给大家带来使用教程。希望大家在本微信找到自己有用的信息,多谢支持。

先上个图:
如何使用GPRS/GPS/GSM模块---GPRS使用图5
这个模块为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’即可
如何使用GPRS/GPS/GSM模块---GPRS使用图4
于是在我的服务器上就收到了以下的数据。
如何使用GPRS/GPS/GSM模块---GPRS使用图3

用串口助手毕竟只能测试,我们可不能忘记了我们的目的所以我们必须编写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拨回来。
下图为传到我自己服务器收到的数据
如何使用GPRS/GPS/GSM模块---GPRS使用图2

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


liudaosixway

kevinzhang19701  高级技匠

发表于 2016-1-7 21:16:13

:handshake有意思,有借鉴。
回复

使用道具 举报

dsweiliang  初级技神

发表于 2016-1-8 10:59:18

感谢分享
回复

使用道具 举报

何处不江南  初级技匠
 楼主|

发表于 2016-1-8 12:42:52


不知道最近什么板子最火啊?
回复

使用道具 举报

kevinzhang19701  高级技匠

发表于 2016-1-8 12:45:43

何处不江南 发表于 2016-1-8 12:42
不知道最近什么板子最火啊?

貌似大力在推DFRobot Bluno M3
回复

使用道具 举报

丄帝De咗臂  高级技匠

发表于 2016-1-10 18:06:19

我也有这个模块,可惜还没用起来,感谢LZ这下有教程了
回复

使用道具 举报

-nUzdgTI  学徒

发表于 2021-3-9 16:43:28

这个模块叫啥
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail