Objective : 通过 SoftwareSerial/Arduino 向 Quectel M95 (GSM2 Click http://www.mikroe.com/click/gsm2/ ) 提交 AT 命令并解析响应;没有 Arduino GSM 库。
当前条件:能够通过终端以各种波特率(9600 - 115200)与 M95 完全通信。可以提交 AT 命令并显示所需的结果代码。我尝试过使用不同的调制解调器(DroneCell),结果相同。所有接线已检查 10 次并验证正确。如果我通过 SoftwareSerial 提交 AT 命令,我知道调制解调器正在接收数据,因为我可以发送 SMS、启动 GPRS 等;只是无法得到有效的回应。
问题:Arduino 无法使用以下代码读取 GSM 模块响应。结果是乱码文本/字符 - 可变且不可预测。提交 AT 命令“AT”时的预期响应是“OK”。
图片:
通过终端成功:
阿杜诺回应:
#include <SoftwareSerial.h>
#define rxPin 10
#define txPin 11
SoftwareSerial mySerial(rxPin,txPin); // RX, TX
void setup(){
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
Serial.begin(9600);
Serial.println("Arduino serial initialized!");
delay(10);
mySerial.begin(9600);
Serial.println("Software serial initialized!");
delay(10);
}
void loop(){
issueCommand("AT");
readSerial();
delay(500);
while(true){
readSerial();
}
}
void issueCommand(char* msg){
mySerial.println(msg);
Serial.print(msg);
delay(10);
}
void readSerial(){
while (mySerial.available()){
Serial.write(mySerial.read());
delay(10);
}
}