我正在使用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灯却不发光
答案 0 :(得分:0)
您应该以 115200 波特率连接它,如果您想更改波特率,请在您使用默认波特率时命令它这样做。 AT+IPR=9600 -- 改变它 AT&W -- 保存更改
如果使用软件串行,降低波特率是至关重要的。 (第二个命令应该在9600重新连接后发送,因为第一个命令改变了波特率)
答案 1 :(得分:-1)
根据我的经验,这是由于电源问题(噪声和电源不足)引起的。尝试使用至少2A的外部电源为调制解调器供电,并使用与调制解调器的VCC GND引脚并联的多个10nF或100nF电容器。