【问题标题】:how send sms by Arduino Nano and Sim900a如何通过 Arduino Nano 和 Sim900a 发送短信
【发布时间】:2018-05-25 11:33:58
【问题描述】:

我尝试使用 Arduino GSM 库发送短信。我有一个 Arduino Nano 板和一个 sim900 模块,它们通过串口连接在一起。但无法发送短信。 也为了测试,我在 Arduino 网站上使用了这个示例代码:

#include <GSM.h>

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;

void setup()
{
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  Serial.println("SMS Messages Sender");

  // connection state
  boolean notConnected = true;

  // Start GSM shield
  // If your SIM has PIN, pass it as a parameter of begin() in quotes
  while (notConnected)
  {
    if (gsmAccess.begin(PINNUMBER) == GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }

  Serial.println("GSM initialized");
}

void loop()
{

  Serial.print("Enter a mobile number: ");
  char remoteNum[20];  // telephone number to send sms
  readSerial(remoteNum);
  Serial.println(remoteNum);

  // sms text
  Serial.print("Now, enter SMS content: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("SENDING");
  Serial.println();
  Serial.println("Message:");
  Serial.println(txtMsg);

  // send the message
  sms.beginSMS(remoteNum);
  sms.print(txtMsg);
  sms.endSMS();
  Serial.println("\nCOMPLETE!\n");
}

/*
  Read input serial
 */
int readSerial(char result[])
{
  int i = 0;
  while (1)
  {
    while (Serial.available() > 0)
    {
      char inChar = Serial.read();
      if (inChar == '\n')
      {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if (inChar != '\r')
      {
        result[i] = inChar;
        i++;
      }
    }
  }

【问题讨论】:

  • 你试过什么?你得到了什么结果?错误?请提供更多信息并更正您的语法。
  • 我通过 at 命令测试 sim900 模块,可以很好地发送和接收消息,但是当我使用该代码时,它不起作用!我认为 gsm.h 创建了一个软件串行端口。我可以为我的Arduino?

标签: module arduino sim900


【解决方案1】:

您似乎在使用 Arduino 附带的 GSM 库时遇到问题,因为他们使用 soft serial

然后您可以使用GSM arduino library provided by GROUND LAB

此库为您提供选择串行端口的选项。检查documentation on wiki

/*First you have to make the gsmSMS object, the arguments are in order
*GsmSMS (#1 Name of the serial port connected to GSM (your choice),#2 the address of millis function(just copy whats there) )*/
gsmSMS  myGsmSMS(Serial3,&millis,&Serial);        //gsmSMS TELIT SMS

这个库提到它适用于 Telit,但它也适用于 sim900

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多