首页 文章

Arduino从Quectel M95 GSM模块读取AT命令

提问于
浏览
2

Objective :通过SoftwareSerial / Arduino将命令提交给Quectel M95(GSM2单击http://www.mikroe.com/click/gsm2/)并解析响应;没有Arduino GSM库 .

Current condition :能够通过终端以各种波特率(9600 - 115200)与M95完全通信 . 可以提交AT命令并显示所需的结果代码 . 我尝试过使用不同的调制解调器(DroneCell),结果相同 . 所有接线已经过10次检查并验证是否正确 . 如果我通过SoftwareSerial提交AT命令,我知道调制解调器正在接收数据,因为我可以发送短信,制定GPRS等;只是无法获得有效的回复 .

Issue :Arduino无法使用以下代码读取GSM模块响应 . 结果是乱码文本/字符 - 变量和不可预测 . 提交AT命令"AT"时的预期响应是"OK."

Images

终端成功:

enter image description here

Arduino的回应:

enter image description here

#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);
  }
}

2 回答

  • 0

    Solution :实际上没有启用自动波特率;我的内部M95波特率设置为115200,我的Arduino解决方案也设置为115200波特 . 但是,对于超过9600-ish的速率,SoftwareSerial似乎失败了 . 一旦我将M95内部速率重置为自动波特率并将我的Arduino代码更改为9600个字符,就会出现预期 .

    感谢您的反馈,它促使我自己找到解决方案 .

    谢谢!

  • 1

    更改写入打印:

    void readSerial(){
         while (mySerial.available() > 0){
            Serial.print(mySerial.read()); // or println
         delay(10);
       }
    

相关问题