我正在尝试使用提供的示例“发送SMS”代码来使我的arduino GSM屏蔽罩工作。但是,当我上载并编译程序时,串行监视器将显示“ SMS Messages Sender”,并且什么也没有发生。
我正在使用Arduino uno r3和gsm sim900。具有5V 1.5A的gsm供电。我已将arduino引脚7和8连接到gsm的引脚7和8。我也将gsm接地。
当我使用SoftwareSerial.h时,它可以工作。但是我希望使用GSM.h库,该库现在不起作用。任何帮助请
// include the GSM library
#include <GSM.h>
// PIN Number for the SIM
#define PINNUMBER ""
// initialize the library instances
GSM gsmAccess;
GSM_SMS sms;
// Array to hold the number a SMS is retrieved from
char senderNumber[20];
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 Receiver");
// connection state
bool notConnected = true;
// Start GSM connection
while (notConnected) {
if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
notConnected = false;
} else {
Serial.println("Not connected");
delay(1000);
}
}
Serial.println("GSM initialized");
Serial.println("Waiting for messages");
}
void loop() {
char c;
// If there are any SMSs available()
if (sms.available()) {
Serial.println("Message received from:");
// Get remote number
sms.remoteNumber(senderNumber, 20);
Serial.println(senderNumber);
// An example of message disposal
// Any messages starting with # should be discarded
if (sms.peek() == '#') {
Serial.println("Discarded SMS");
sms.flush();
}
// Read message bytes and print them
while (c = sms.read()) {
Serial.print(c);
}
Serial.println("\nEND OF MESSAGE");
// Delete message from modem memory
sms.flush();
Serial.println("MESSAGE DELETED");
}
delay(1000);
}
我希望此代码可以使我接收消息,并且可以对其进行修改以将消息存储在变量中
答案 0 :(得分:1)
您的问题可能是接线。
您的电路板(Arduino UNO R3)具有其UART(在引脚Serial.begin(9600)
和0 RX
上定义1 TX
时打算使用的UART。有关详细信息,请参见here。下面的示意图和图片(带有TX和RX标签的右上角)。
软件仿真串行有效,因为您将引脚7和8定义为仿真UART TX和RX信号。