1

この問題の後 、 Android > 4.1.2 での Bluetooth 接続を 強制的に接続することで修正しましたが、しばらく繰り返して接続しようとすると、Android/Arduino 通信に別の問題が発生しています。私のハードウェアは、Android 4.3、Arduino UNO R3、BT モジュール RN42 を搭載した Nexus 7 MY2012 です。

Android から、文字列から取得したバイト配列を Arduino に送信しています。最初は、ボーレート 115200 でパリティなしの場合、最初のバイトだけが正しく到着し、残りは明らかに不一致でした (主に反復的な方法で)。RN42 モジュールでパリティ EVEN を設定した後、少なくとも最初の 3 バイトが正しく到着し、残りが台無しになっていることがわかります。以下、Android からの通信のコア部分です (BT の初期化は基本的に SDK の例に従います)。これは、接続作業を管理するために使用される AsyncTask から拡張されたクラス内にあります。

        public void write(String message) {
        Log.d(TAG, "...Data to send: " + message + "...");
        byte[] msgBuffer = message.getBytes();

        try {
            mmOutStream.write(msgBuffer);
        } catch (IOException e) {
        mHardwareToServiceHdlr.obtainMessage(MSG_ERR_BT_WRITE).sendToTarget();
            Log.d(TAG, "...Error data send: " + e.getMessage() + "...");
        }

        }

とArduinoのスケッチ

#include <SoftwareSerial.h>
#include <Streaming.h>

const int bluetoothTx = 2;
const int bluetoothRx = 3;
byte incomingByte;
String incomingString;

SoftwareSerial bluetooth(bluetoothTx,bluetoothRx);

void setup() {
  Serial.begin(115200);
  bluetooth.begin(115200); 
  bluetooth.print("$$$");
  delay(100);
  bluetooth.println("U,115K,E");
  bluetooth.begin(115200);
  delay(100); 
}

void loop(){

  if (bluetooth.available() > 0) {  // if the data came

    incomingByte = bluetooth.read(); // read byte
    Serial.println((char)incomingByte);
  }
}

「hello horld」などの文字列をArduinoに送信すると、一連の送信でシリアルモニターに次のように表示されます。

 hel,o wo2ld
 hel<o wo2ld
 hel,o7orld
 hel,o wo2ld
 hel,o wo2ld
 hel<o7or6d
 hel,o wo2ld
 hel,o wo2ld
 hel,o wo2ld
 hel<o wo2ld
 hel,o7orld
 hel<o wo2ld

これは単なる例です。結果は、文字列を Arduino に送信する頻度にも依存します。ほとんどの場合、4 番目と 9 番目のバイト (ただし、必ずしも同じ方法であるとは限らず、必ずしもそれらだけであるとは限りません) が一致しません。

Arduino から Android へのデータ送信は、特に問題なく動作するようです。

3 バイトを超えるデータを送信する必要がある限り、このことは私を夢中にさせています。ありがとう

4

2 に答える 2

0

Android スマートフォンの設定からデバイスを明示的にペアリングしてください。通常、ペア コードは 1234 です。Arduino で空いている場合は、ハードウェア Tx、Rx ピンが優先されます。96200 ボーレートが一般的に優れています

于 2013-12-14T00:45:52.323 に答える