风筝
发表于: 2019-3-1 21:44:09 | 显示全部楼层

在本篇文章中,您将学习到如何通过GSM模块和Arduino而不是使用GPS创建导航系统。在本篇文章结束时,您将可以:

●    解有关GSM模块以及如何将其与Arduino一起使用的更多信息。

●    通过GSM模块制作导航系统。


关于导航

在导航系统中,无线站定期发送信号。这些信号包括该站的精确坐标。无论无线站是固定的,例如机场控制塔,还是可移动的,例如卫星。重要的是,该站本身的坐标应该随时都知道。

phiar_background.png


在本篇文章中,我们想要制作一个没有GPS模块的导航系统。使用手机或其他移动设备的GSM信号是查找位置或跟踪设备的一种方法。当GSM系统连接到网络时,您将收到有关设备位置的一些信息。我们选择其中一个GSM / GPRS SIMCOM模块将它们连接到网络,选择Arduino开发板来接收数据并监控设备的位置。我们开始做吧。


所需的组件

●    Arduino UNO R3开发板

●    SIM900 GSM GPRS四频段开发模块

●    Arduino IDE

Untitled-1-1.gif


电路连接

Untitled-2-1.gif


代码

首先,您必须添加库。下载Zip文件,并将该文件添加到Arduino IDE。转到“ Sketch”选项卡,“包括库”和“Add ZIP Library”。您如果这是您是第一次运行Arduino开发板,请不要担心。只需按以下步骤操作:

●    访问www.arduino.cc/en/Main/Software并下载操作系统的软件。按照说明安装IDE软件。

●    运行Arduino IDE并清除文本编辑器,然后在文本编辑器中复制以下代码。

●    导航到草图并包含库。现在单击添加ZIP库并添加库

●    在tools and boards菜单中选择您使用的Arduino电路板。

●    将Arduino连接到PC,然后在tools and port中设置COM端口。

●    按上传(箭头符号)按钮。

●    现在都准备好了!

  1. #include "SIM900.h"
  2. #include "SoftwareSerial.h"
  3. //#include "inetGSM.h"
  4. //#include "sms.h"
  5. //#include "call.h"

  6. //To change pins for Software Serial, use the two lines in GSM.cpp.

  7. //GSM Shield for Arduino
  8. //this code is based on the example of Arduino Labs.

  9. //Simple sketch to communicate with SIM900 through AT commands.

  10. //InetGSM inet;
  11. //CallGSM call;
  12. //SMSGSM sms;

  13. int numdata;
  14. char inSerial[40];
  15. int i=0;


  16. void setup()
  17. {
  18.      //Serial connection.
  19.      Serial.begin(9600);
  20.      Serial.println("GSM Shield testing.");
  21.      //Start configuration of shield with baudrate.
  22.      //For http uses is raccomanded to use 4800 or slower.
  23.      if (gsm.begin(9600))
  24.           Serial.println("\nstatus=READY");
  25.      else Serial.println("\nstatus=IDLE");
  26. };

  27. void loop()
  28. {
  29.      //Read for new byte on serial hardware,
  30.      //and write them on NewSoftSerial.
  31.      serialhwread();
  32.      //Read for new byte on NewSoftSerial.
  33.      serialswread();
  34. };

  35. void serialhwread()
  36. {
  37.      i=0;
  38.      if (Serial.available() > 0) {
  39.           while (Serial.available() > 0) {
  40.                inSerial[i]=(Serial.read());
  41.                delay(10);
  42.                i++;
  43.           }

  44.           inSerial[i]='\0';
  45.           if(!strcmp(inSerial,"/END")) {
  46.                Serial.println("_");
  47.                inSerial[0]=0x1a;
  48.                inSerial[1]='\0';
  49.                gsm.SimpleWriteln(inSerial);
  50.           }
  51.           //Send a saved AT command using serial port.
  52.           if(!strcmp(inSerial,"TEST")) {
  53.                Serial.println("SIGNAL QUALITY");
  54.                gsm.SimpleWriteln("AT+CSQ");
  55.           } else {
  56.                Serial.println(inSerial);
  57.                gsm.SimpleWriteln(inSerial);
  58.           }
  59.           inSerial[0]='\0';
  60.      }
  61. }

  62. void serialswread()
  63. {
  64.      gsm.SimpleRead();
  65. }
复制代码

通过AT命令与SIM900通信非常简单。

AT命令是用于控制调制解调器的命令。 AT命令实际上来自Hayes Command。所有命令AT命令都以AT开头。

请注意,AT是接收语法且不是命令名的前缀。例如,其中一个CMC + CMCAM命令称为AT + CMGS。另一个名为D的命令作为ATD发送到调制解调器。

许多GSM、GPRS、蓝牙和一些其他模块使用AT命令与计算机和微控制器进行通信。


现在,要接收有关位置的信息,我们需要按顺序使用一些特殊的AT命令。连接到网络后,使用这些命令准备调制解调器以获取位置数据。

  1. AT+CGATT =1
复制代码

它用于连接GPRS。可能是默认情况下为1。

  1. AT+SAPBR =3,1,"CONTYPE","GPRS"
  2. AT+SAPBR =3,1,"APN","RCMNET"
  3. AT+SAPBR=1,1
  4. AT+SAPBR=2,1
复制代码

它是基于IP的应用程序的承载设置

  1. AT+CIPGSMLOC=1,1
复制代码

最后,此命令获取位置、时间和日期。请注意,要在Google地图中搜索位置,您必须将(x,y)坐标顺序更改为(y,x)。


查看GIF了解更多详情。

ezgif.com-video-to-gif-2.gif


接下来该如何做?

●  尝试和Arduino一起使用除GPS之外的其他模块

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1479



手机版|

GMT+8, 2024-3-29 23:37 , Processed in 0.114756 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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