无法将Arduino的电话发送到特定号码

时间:2013-07-28 21:17:32

标签: arduino gsm at-command

我正在使用Arduino UNO和SIM900A模块进行基于GSM + ARDUINO的通信。我使用以下代码来调用特定号码,但没有任何反应,

void setup()
{ 
 Serial.begin(9600);
 delay(10000); 
}
void loop()
{
 Serial.println("ATDTxxxxxxxxxx;"); //where xxxxxxxxxx is  a 10 digit mobile number
 delay(30000); // wait 20 seconds.
 Serial.println("ATH"); // end call
 do // remove this loop at your peril
 { 
 delay(1); 
 }
 while (1>0);
}

而当我使用ATDTxxxxxxxxxx;在使用SIM900A模块进行通信时,我能够通话(AS ATDxxxxxxxxxx没有给出载波错误,因此我使用了“;”)。发送消息的情况是.Similr。当我使用

时,我正在“+ CMS ERROR:302”
AT+ CMGF=1 
AT+CMGS="Mobno." //after this i get the error.

我无法通过minicom + SIM900A GSM模块发送消息,我想用Arduino测试它。我想我在设置SIM或任何模块时遇到了一些问题。我甚至试图重置SIM的设置,但没有成功。

3 个答案:

答案 0 :(得分:0)

首先:从不,永远不会使用延迟而不是通过解析调制解调器给出的实际响应来正确等待。并且 必须 读回调制解调器给出的响应并等待最终结果代码,然后再继续执行下一个命令。有关详细信息,请参阅this answerthis answer(特别是有关正确AT+CMGS处理的信息)。

3.2.5 Message Service Failure Result Code +CMS ERROR部分的27.005中定义了所有CMS错误的列表。您的订阅是否允许发送短信(最有可能,但只是为了确保检查一下。测试发送短信使用此SIM卡插入另一部手机)?你使用什么消息存储?你确定gsm模块支持文本模式吗?

答案 1 :(得分:0)

我解决问题只需使用此代码:

void setup()
{ 
  Serial.begin(9600);
  delay(10000); 
}
void loop()
{
  Serial.println("ATD+60148266823;"); //where xxxxxxxxxx is  a 10 digit mobile number
  delay(30000); // wait 20 seconds.
  Serial.println("ATH"); // end call
  do // remove this loop at your peril
  { 
    delay(1); 
  } while (1>0);
}

答案 2 :(得分:0)

void setup(){ 
    Serial.begin(9600); 
} 
void loop(){
    Serial.println("AT");
    delay(500);
    Serial.print("ATD");
    Serial.println("99XXXXXXX8;");
    delay(20000);
    Serial.println("ATH");
}