用于arduino的SIM800L模块有时不会调用或发送消息

时间:2016-07-02 20:39:59

标签: c arduino gsm

代码可以工作但很多时候即使接口连接正确也无法调用/发送消息。它失败了大约10%,程序正在继续。如果在调用时有任何错误(可能在信号或其他方面),如何重试调用?我认为我必须处理AT命令,但我不知道如何处理它。我正在使用此library。 AT命令是here。我的完整代码是here

#include <GPRS_Shield_Arduino.h>
#include <SoftwareSerial.h>
#include <Wire.h>


#define PIN_TX    7
#define PIN_RX    8
#define BAUDRATE  9600
#define PHONE_NUMBER "003xxxxxxxxxx"
#define MESSAGE  "Temp is high"

GPRS gprsTest(PIN_TX, PIN_RX, BAUDRATE); //RX,TX,BaudRate

void setup() {
  Serial.begin(9600);

  // code 

}

void loop() {

// ..code..


  if (temp>35) {
    call_and_text();
  }

// ..code..

}

call_and_text() {
  while (!gprsTest.init()) {
    delay(1000);
    Serial.print("init error1\r\n");
  }
  Serial.println("gprs init success");
  Serial.println("start to send message ...");
  gprsTest.sendSMS(PHONE_NUMBER, MESSAGE); //define phone number and text
  Serial.println("Init success, start to call...");
  gprsTest.callUp("003xxxxxxxxx");

}

1 个答案:

答案 0 :(得分:1)

您可以使用sendSMScallUp函数的返回来确定它们是否成功。

对于您的问题,您是否正确为您的GSM屏蔽供电? 通过正确,我的意思是不是通过USB从您的计算机。

如果是这种情况,请尝试使用功率足够的外部电源。电源应该能够提供高达2A的电压。

编辑您的上一条评论。

在拨打或发送信息时,您的GSM屏蔽需要一个电源。你的0.7mA可能还不够。

如果您有另一个可以提供更多电源,请尝试一下。请注意,您的arduino可以从6-20V供电,但推荐电压为7-12V

然而,理想的方法是分别为你的盾牌和你的arduino供电,并有一个共同点。通过这种方式,您可以随时通过USB为电源提供电源,屏蔽电源可以正常供电。