【问题标题】:How to read messages from GSM modem in Embedded C?如何在 Embedded C 中读取来自 GSM 调制解调器的消息?
【发布时间】:2017-04-03 04:36:02
【问题描述】:

我目前正在从事“物联网”领域下的迷你项目。我选择使用 GSM 模块设计一个无线公告板。

我将项目分为两个模块。首先,完美完成的Arduino-LED板接口。

二、GSM-Arduino接口。基本上,一条消息/短信将从手机发送到 GSM 模块,然后我们必须使用 Arduino 从 GSM 模块读取该消息。我在这里面临一个问题。消息正在发送到 GSM 调制解调器,但我无法阅读。我尝试编写不同的代码,但它不起作用。消息未显示。

这是我试过的代码sn-p。

`#include SoftwareSerial.h

SoftwareSerial SIM900A(2,3);// RX | TX

// Connect the SIM900A TX to Arduino pin 2 RX 

// Connect the SIM900A RX to Arduino pin 3 TX.


void setup()
{ 

      SIM900A.begin(9600);   // Setting the baud rate of GSM Module 

      Serial.begin(9600);    // Setting the baud rate of Serial Monitor(Arduino)

      Serial.println ("SIM900A Ready");

      delay(100);

      Serial.println (" Press s to send and r to recieve ");

}

 void loop()
 {

     if (Serial.available()>0)

     switch(Serial.read())

     {

       case 's':  SendMessage();
               break;

       case 'r':  RecieveMessage();
               break;

      }

    if (SIM900A.available()>0)

        Serial.write(SIM900A.read());

}


 void SendMessage()
{

     SIM900A.println("AT+CMGF=1");    //Sets the GSM Module in Text Mode

     delay(1000);  // Delay of 1000 milli seconds or 1 second

     Serial.println ("Set SMS Number");

     SIM900A.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); //Replace with your mobileno.

     delay(1000);

     Serial.println ("Set SMS Content");

    SIM900A.println("Hello, I am SIM900A GSM Module");// The SMS text you want to send

     delay(100);

     Serial.println ("Finish");

     SIM900A.println((char)26);// ASCII code of CTRL+Z

     delay(1000);

     Serial.println (" ->SMS Sent");
}


 void RecieveMessage()
{

     Serial.println ("SIM900A Receiving SMS");

     delay (1000);

     SIM900A.println("AT+CNMI=2,2,0,0,0"); // AT Command to receive a live SMS

     delay(1000);

     Serial.write (" ->Unread SMS Recieved");

 }`

【问题讨论】:

  • 我们不知道您的硬件是否工作正常。我们无法帮助进行硬件调试。你看到了在线范围内的什么?
  • 硬件工作正常!当我们将SIM卡插入GSM模块并测试它是否收到手机发送的任何消息时,它完全可以工作。如何阅读接收消息是我面临的问题。我无法阅读来自 GSM 的消息。
  • '测试它是否接收到任何消息' - 如果您无法在 Arduino 接口上接收到任何数据,您如何测试它?

标签: c arduino embedded arduino-uno gsm


【解决方案1】:

您可能需要使用以下命令将首选 SMS 存储设置为 SIM 卡:

SIM900A.print("AT+CPMS=\"SM\"\r");

另外,将此命令移至 setup():

SIM900A.print("AT+CMGF=1\r");

最后,请注意我是如何使用 SIM900A.print() 而不是 SIM900A.println() 并在每个命令后发送 '\r' 或 0x0d 的。 println() 发送一个“\n\r”,这会导致某些调制解调器出现问题。

【讨论】:

  • 您可能还想验证调制解调器的波特率是否为 9600 或其他。大多数调制解调器都允许您对此进行配置,因此它可能已更改为其他值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
  • 2011-10-13
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多