2

目的: AT コマンドを Quectel M95 (GSM2 Click http://www.mikroe.com/click/gsm2/ ) に SoftwareSerial/Arduino 経由で送信し、応答を解析します。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);
  }
}
4

2 に答える 2

1

解決策: 自動ボーレートは実際には有効になっていませんでした。内部 M95 ボーレートを 115200 に設定し、Arduino ソリューションも 115200 ボーに設定しました。ただし、SoftwareSerial は 9600 を超えるレートでは失敗するようです。M95 内部レートを自動ボーにリセットし、Arduino コードを 9600 文字に変更すると、期待どおりに動作しました。

自分で解決策を見つけるように私を駆り立てたフィードバックをありがとう。

ありがとう!

于 2013-11-04T21:01:01.063 に答える