Arduino GSM GPS Shield不进行GSM_READY检查

时间:2016-04-30 03:40:46

标签: arduino gsm arduino-uno arduino-ide

在您将此问题标记为重复之前,请注意我已尝试thisthis& this

我买了一个Arduino UNO R3&最近一台SIM808 GSM / GPS防护罩。屏蔽的RX连接到Arduino的引脚11,TX连接到引脚10,两个GND相互连接。我用USB和USB将我的Arduino连接到了我的电脑。屏蔽层通过12V适配器连接到外部电源。另外,我已将Arduino的3.3V连接到屏蔽的Vcc。

以下是我使用的草图:

// Include the GSM library
#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 native USB port 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++;
      }
    }
  }
}

这里的问题与那些链接的帖子中提到的问题相同。

条件if (gsmAccess.begin(PINNUMBER) == GSM_READY)永远不会被执行。 else部分也不执行。

串行监视器永远不会超过 短信发件人

请注意我使用的是AirTel India,我有一个完全激活的数据计划&amp; PIN号码已更改为0000.

如果有人能提出有用的建议,我们真的很感激。

感谢您的时间!!

3 个答案:

答案 0 :(得分:2)

您无法从Arduino的3.3V电源为GSM模块供电! GSM需要3A的峰值电流(是的,安培,而不是毫安)。你真的需要一个LiPo电池为GSM供电。你可以用同样的LiPo电池为3V Arduino供电,实际上,如果你需要一个移动解决方案,而不是相反。

答案 1 :(得分:1)

请先检查模块是否响应下一个代码Example Code

其他事项供电电压范围必须为3.4~4.4V,尽量不要使用较低的电压。

答案 2 :(得分:0)

Arduino的GSM库用于Quectel M10 GSM / GPRS模块,与SimCom SIMxxx模块不兼容。

以下是可用于SIM808模块的库https://github.com/MarcoMartines/GSM-GPRS-GPS-Shield(回购中包含的示例)。请注意,此库使用SIM900库,该库允许与SimCom模块进行低级接口。

在这里进一步阅读两个adafruit链接:

http://wiki.iteadstudio.com/SIM808_GSM/GPRS/GPS_Module
https://www.adafruit.com/products/2637

  

屏蔽层连接到12V的外部电源   适配器。此外,我已将Arduino的3.3V连接到Vcc   盾牌。

你是什么意思?您需要为屏蔽提供所需的电压,以提供所需的电流。而且你需要与你的arduino有一个共同点。

此外,如果您的屏蔽是3.3V,您还需要使用分压器来切换来自arduino的Tx线路(因为它是5V)。

请注意,这些屏蔽还有一个需要连接的软启动按钮,以允许代码为模块供电。