使用GSM900A模块发送SMS时,部分输出带有反问号

时间:2019-02-25 22:13:19

标签: arduino arduino-uno gsm

我正在使用Arduino Uno和GSM 900A模块将短信发送到手机。这是代码

#include <SoftwareSerial.h>

SoftwareSerial mySerial(9, 10);

void setup()
{
  mySerial.begin(9600);   // Setting the baud rate of GSM Module  
  Serial.begin(9600);    // Setting the baud rate of Serial Monitor (Arduino)
  delay(100);
}


void loop()
{
  if (Serial.available()>0)
   switch(Serial.read())
  {
    case 's':
      mySerial.println("AT+CMGF=1");    //Sets the GSM Module in Text Mode
     delay(1000);  // Delay of 1 second
     mySerial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number 91 is country code
     delay(1000);
     mySerial.println("Hi");// The SMS text you want to send
     delay(100);
     mySerial.println((char)26);// ASCII code of CTRL+Z for saying the end of sms to  the module 
      delay(1000);
      break;




    case 'r':
      mySerial.println("AT+CNMI=2,2,0,0,0"); // AT Command to receive a live SMS
      delay(1000);
      break;
  }

 if (mySerial.available()>0)
   Serial.write(mySerial.read());
}

这是我得到的输出 https://imgur.com/a/YYhfP8c

GSM模块的状态指示灯为蓝色,而网络的指示灯为黄色,这表示网络对模块有利。另外,Uno上的TX灯持续发光,而RX灯却不发光

2 个答案:

答案 0 :(得分:0)

您应该以 115200 波特率连接它,如果您想更改波特率,请在您使用默认波特率时命令它这样做。 AT+IPR=9600 -- 改变它 AT&W -- 保存更改

如果使用软件串行,降低波特率是至关重要的。 (第二个命令应该在9600重新连接后发送,因为第一个命令改变了波特率)

答案 1 :(得分:-1)

根据我的经验,这是由于电源问题(噪声和电源不足)引起的。尝试使用至少2A的外部电源为调制解调器供电,并使用与调制解调器的VCC GND引脚并联的多个10nF或100nF电容器。