如何测试 Arduino GSM Shield 调制解调器

发布于: 27 January, 2014
分享:

本文介绍如何使用GSM Shield测试调制解调器功能。通过Arduino和GSM Shield,您可以发送和接收短信、拨打电话等。文章提供简单的步骤和示例代码,帮助您快速验证和调试GSM通信功能。

测试 GSM 调制解调器

本教程用来学习如何测试 GSM Shield 调制解调器(Modem),本教程不需要使用 SIM 卡。

硬件准备

  • Arduino 主控板
  • GSM Shield 扩展模块

硬件图示

首先,我们要引入 GSM 库文件: #include 实利化一个 GSMModem 类 GSMModem modem; 声明一个变量,用来保存读取调制解调器中的 IMEI 编码 String IMEI = ""; 在 setup 区块中,程序开启串口并输出 "Starting modem test..."

void setup() {
    Serial.begin(9600);
    Serial.print("Starting modem test...");
}

调用 modem.begin() 函数,开启调制解调器 (Modem):

if(modem.begin()) {
    Serial.println("modem.begin() succeeded");
} else {
    Serial.println("ERROR, no modem answer.");
}

在 loop 循环体中,, 通过 modem.getIMEI() 获取调制解调器的 IMEI 值. 每个 GSM 扩展都有一个唯一的 IMEI 值。

void loop() {
    //@获取调制解调器 IMEI 号码
    Serial.print("Checking IMEI...");
    IMEI = modem.getIMEI();
}

通过 getIMEI() 得到数据后,通过串口监视器输出,并通过 modem.begin() 复位调制解调器。

if(IMEI != NULL) {
    //@Print IMEI in serial monitor
    Serial.println("Modem's IMEI: " + IMEI);
    // reset modem to check booting:
    Serial.print("Reseting modem...");
    modem.begin();
}

Arduino 复位之后,通过串口监视器检查 IMEI 信息

if(modem.getIMEI() != NULL) {
    Serial.println("Modem is functoning properly");
} else {
    Serial.println("Error: getIMEI() failed after modem.begin()");
}

如果 getIMEI() 不成功,则报告错误。  如果程序启动后,一直没有返回 IMEI 信息,程序报错。    

当程序成功下载到Arduino 之后,打开串口监视器,就可以看到 Modem 的测试信息了 。

/*
This example test if your modem is working correctly.
Circuit:
* GSM shield attached (using digital pins 2, 3, and 7)
Created 12 Jun 2012
by David del Peral
modified 21 Nov 2012
by Tom Igoe
*/
//@libraries
#include 
//@modem verification object
GSMModem modem;
// IMEI variable
String IMEI = "";
void setup()
{
  // initialize serial communications
  Serial.begin(9600);
  //@Start modem test (reset and check response)
  Serial.print("Starting modem test...");
  if(modem.begin())
    Serial.println("modem.begin() succeeded");
  else
    Serial.println("ERROR, no modem answer.");
}
void loop()
{
  //@get modem IMEI
  Serial.print("Checking IMEI...");
  IMEI = modem.getIMEI();
  // check IMEI response
  if(IMEI != NULL)
  {
    // show IMEI in serial monitor
    Serial.println("Modem's IMEI: " + IMEI);
    // reset modem to check booting:
    Serial.print("Reseting modem...");
    modem.begin();
    // get and check IMEI one more time
    if(modem.getIMEI() != NULL)
    {
      Serial.println("Modem is functoning properly");
    }
    else
    {
      Serial.println("Error: getIMEI() failed after modem.begin()");
    }
  }
  else
  {
    Serial.println("Error: Could not get IMEI");
  }
  // do nothing:
  while(true);
}
分享:

0 留言

留言

您的留言将被人工审核,请勿发表色情、反动言论。