【问题标题】:Arduino read AT Commands from Quectel M95 GSM ModuleArduino 从移远 M95 GSM 模块读取 AT 命令
【发布时间】:2013-11-01 15:04:40
【问题描述】:

目标:通过SoftwareSerial/Arduino向移远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”。

图片

通过终端成功:

Arduino 回应:

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

【问题讨论】:

  • 我认为您应该等待(循环)直到收到对“AT”的响应,然后才继续发送更多命令。
  • 你用的是哪个arduino?
  • 我正在使用最新版本的 Arduinoi:UNO。

标签: terminal serial-port arduino gsm


【解决方案1】:

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

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

谢谢!

【讨论】:

    【解决方案2】:

    将写入更改为打印:

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

    【讨论】:

    • 我想知道 mySerial.read() 是否把接收到的字符搞砸了?
    • 我的串行波特率应该是 115200 吗?这就是 Tera Term 中显示的内容。
    • GSM 单元具有内部自动波特率。我可以使用包括 115200 在内的各种波特率通过终端进行连接。另外,我尝试通过 UNOs 硬件串行获取数据。
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多