1

DF Robot蓝牙模块如何连接到Arduino,使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

您应该将蓝牙模块的 Rx 连接到 Arduino 板上的 Tx,反之亦然。还是你已经这样做了?将其挂在 12 V 适配器电源上,以确保电源不是问题。(一个 500 mA 的应该没问题。)

于 2011-03-31T16:08:59.793 回答
1

尝试将您的 RXTX 库升级到最新版本。IIRC Arduino IDE 捆绑了它的一个版本。

于 2009-09-02T11:15:44.273 回答
1

这是一个很长的镜头,但是...

链接教程中的示例使用 115200 的波特率(而不是示例中使用的 9600)并说:

检查串行设置!确保主机和从机的波特率都设置为 115200。

可能是:

  • 这仅适用于 115200 的波特率(这似乎不太可能)或可能
  • 主从波特率不是9600
于 2009-09-03T09:25:33.983 回答
1

Arduino/蓝牙模块的电源不可靠可能会导致此错误(即,它可能与此 Arduino 论坛主题中报告的错误有关)。

于 2009-09-03T16:11:50.657 回答
1

我看到两个可能的问题。

第一个可能的问题:

您的接线错误或您描述的接线错误。通常,您将 BT 模块的 RX 连接到 Arduino 上的 TX,并将 BT 上的 TX 连接到 Arduino 上的 RX。

第二个可能的问题:

您无法连接到蓝牙模块,然后使用内置的串行监视器应用程序来监视 Arduino 上的串行端口。我不确定你的硬件,但通常你不能把它们都连接起来,因为它们是同一个串行端口。

断开 Arduino 与 PC 的连接。从其他来源为 Arduino 供电。将 PC 连接到 BT 模块。在 PC 上运行您最喜欢的 TTY 应用程序(术语很好)并连接到 BT 模块 COM 端口并输入“H”。

让我知道你得到了什么!

于 2012-05-24T01:10:49.290 回答
0

我在我的 Arduino 上使用蓝牙 Mate Silver,下面的链接是我用来管理蓝牙通信的。

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 的波特率,并连接

蓝牙-RX 线 --> Arduino-TX 线,和

蓝牙-TX 线 --> Arduino-RX 线

第一个环节对我来说是一个重大突破。希望它可以帮助你。

于 2012-02-02T22:47:20.567 回答
0

我在通过串口建立从 PC 到 GSM 调制解调器的通信时遇到了类似的麻烦。我第一次在 vista 上使用 java.comm,这是不可能的。后来,我改用 RxTxComm,它更可靠。改用它。

于 2009-09-02T10:49:11.927 回答