1

ArduinoがArduinoと通信できるように、DFRobotBluetoothモジュールをArduinoに接続するにはどうすればよいですか。

このチュートリアルを使用しました。

モジュールのライトが点滅し、正常にペアリングできるようですが、シリアルモニターを実行して、ライトをオンにする文字(たとえば、「H」)を送信すると、Javaエラーが発生します。

java.io.IOException: Bad file descriptor in nativeDrain 
    at gnu.io.RXTXPort.nativeDrain(Native Method)
at gnu.io.RXTXPort$SerialOutputStream.flush(RXTXPort.java:1201)
at processing.app.Serial.write(Serial.java:470)
at processing.app.Serial.write(Serial.java:492)
at processing.app.SerialMonitor.send(SerialMonitor.java:128)
at processing.app.SerialMonitor.access$100(SerialMonitor.java:29)
at processing.app.SerialMonitor$4.actionPerformed(SerialMonitor.java:82)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

配線を確認したところ、RXDはボード上のRX(ピン0)に、TXDはTX(ピン1)に接続され、残りは配線されていますが、それでもうまくいきません。どうしたの?

これは私がArduinoに持っているコードです:

int ledpin = 13;
char val;
void setup() {
    pinMode(ledpin, OUTPUT); // pin 48 (on-board LED) as OUTPUT
    Serial.begin(9600); // start serial communication at 9600bps
}

void loop() {
    if( Serial.available() ) { // if data is available to read
        val = Serial.read(); // read it and store it in 'val'
    }

    if( val == 'H' ) { // if 'H' was received
        digitalWrite(ledpin, HIGH); // turn ON the LED
    } else {
        digitalWrite(ledpin, LOW); // otherwise turn it OFF
    }

    delay(100); // wait 100ms for next reading
}
4

7 に答える 7

1

考えられる問題が2つあります。

最初に考えられる問題:

配線が間違っているか、配線が間違っていると説明しています。通常、RXをBTモジュールからArduinoのTXに接続し、BTのTXをArduinoのRXに接続します。

2番目に考えられる問題:

Bluetoothモジュールに接続してから、組み込みのシリアルモニターアプリを使用してArduinoのシリアルポートを監視することはできません。ハードウェアはわかりませんが、同じシリアルポートであるため、通常は両方を接続することはできません。

ArduinoをPCから切断します。他のソースからArduinoの電源を入れます。PCをBTモジュールに接続します。PCでお気に入りのTTYアプリを実行し(tera用語がいいです)、BTモジュールのCOMポートに接続し、「H」と入力します。

あなたが得るものを私に知らせてください!

于 2012-05-24T01:10:49.290 に答える
1

RXTXライブラリを最新バージョンにアップグレードしてみてください。IIRCArduinoIDEにはそのバージョンがバンドルされています。

于 2009-09-02T11:15:44.273 に答える
1

これはロングショットですが...

リンクされたチュートリアルの例では、(例で使用されている9600ではなく)115200のボーレートを使用して次のように述べています。

シリアル設定を確認してください!マスターとスレーブの両方でボーレートが115200に設定されていることを確認してください。

それは次のいずれかである可能性があります。

  • これは、115200のボーレート(可能性は低いと思われます)またはおそらくでのみ機能します
  • マスターとスレーブのボーレートは9600ではありません
于 2009-09-03T09:25:33.983 に答える
1

Arduino / Bluetoothモジュールへの危険な電源がこのエラーを引き起こす可能性があります(つまり、このArduinoフォーラムトピックで報告されたエラーに関連している可能性があります)。

于 2009-09-03T16:11:50.657 に答える
1

RxをBluetoothモジュールからArduinoボードのTxに接続する必要があります。その逆も同様です。それともあなたはすでにそうしましたか?電源に問題がないことを確認するために、12Vアダプター電源に吊るしてください。(500mAのもので十分です。)

于 2011-03-31T16:08:59.793 に答える
0

シリアルポートを介してPCからGSMモデムへの通信を確立する際にも同様の問題が発生しました。私は最初にビスタでjava.commを使用していましたが、それは不可能でした。その後、RxTxCommに切り替えたところ、信頼性が大幅に向上しました。代わりに使用してください。

于 2009-09-02T10:49:11.927 に答える
0

ArduinoでBluetoothMateSilverを使用しています。次のリンクは、Bluetooth通信の管理に使用したものです。

http://rxtx.qbang.org/wiki/index.php/Two_way_communcation_with_the_serial_port

ここからRXTXライブラリをインポートする必要がありました。

http://rxtx.qbang.org/wiki/index.php/Two_way_communcation_with_the_serial_port

また、他のユーザーが述べているように、115200のボーレートを使用し、

Bluetooth-RXライン->Arduino-TXライン、および

Bluetooth-TXライン->Arduino-RXライン

最初のリンクは私にとって大きな進歩でした。お役に立てば幸いです。

于 2012-02-02T22:47:20.567 に答える