Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bluetooth DF机器人蓝牙模块与Arduino的接口_Bluetooth_Arduino - Fatal编程技术网

Bluetooth DF机器人蓝牙模块与Arduino的接口

Bluetooth DF机器人蓝牙模块与Arduino的接口,bluetooth,arduino,Bluetooth,Arduino,DF机器人蓝牙模块如何连接到Arduino,以便Arduino可以与其通信 我用过 我设法让模块上的指示灯闪烁,它似乎能够很好地配对,但当我运行串行监视器并发送一封信(说“H”)时,应该会亮起指示灯,我得到一个Java错误: java.io.IOException: Bad file descriptor in nativeDrain at gnu.io.RXTXPort.nativeDrain(Native Method) at gnu.io.RXTXPort$SerialOutpu

DF机器人蓝牙模块如何连接到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
}

在通过串行端口建立从PC到GSM调制解调器的通信时,我也遇到过类似的问题。我第一次在vista上使用java.comm,这是不可能的。后来,我切换到RxTxComm,它更加可靠。用它代替

在通过串行端口建立从PC到GSM调制解调器的通信时,我也遇到过类似的问题。我第一次在vista上使用java.comm,这是不可能的。后来,我切换到RxTxComm,它更加可靠。用它代替

尝试将RXTX库升级到最新版本。IIRC Arduino IDE附带了一个版本。

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

这是一个长期目标,但是

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

检查串行设置!确保 两个端口的波特率均设置为115200 主人和奴隶

可能是:

  • 这只适用于波特率为115200(这似乎不太可能)或可能的情况
  • 主设备和从设备上的波特率不是9600

这是一个很长的机会,但是

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

检查串行设置!确保 两个端口的波特率均设置为115200 主人和奴隶

可能是:

  • 这只适用于波特率为115200(这似乎不太可能)或可能的情况
  • 主设备和从设备上的波特率不是9600

    • Arduino/Bluetooth模块的不可靠电源可能会导致此错误(即,它可能与中报告的错误有关)。

      Arduino/Bluetooth模块的不可靠电源可能会导致此错误(即,它可能与中报告的错误有关).

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

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

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

      我必须从这里导入RXTX库:

      正如其他用户所述,使用115200的波特率,并连接

      蓝牙接收线路-->Arduino发送线路,以及

      蓝牙发送线路-->Arduino接收线路


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

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

      我必须从这里导入RXTX库:

      正如其他用户所述,使用115200的波特率,并连接

      蓝牙接收线路-->Arduino发送线路,以及

      蓝牙发送线路-->Arduino接收线路


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

      我发现两个可能的问题

      第一个可能的问题:

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

      第二个可能的问题:

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

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


      让我知道你得到了什么

      我看到两个可能的问题

      第一个可能的问题:

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

      第二个可能的问题:

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

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


      让我知道你得到了什么

      我使用的是arduino IDE,所以我对它使用的端口连接没有选择权,也没有看到它使用的是什么…RxtExport$SerialOutputStream.flush(RXTXPort…我的错。我直接去看代码,没有看到任何类似RxTx的命令,所以我发布了它。nvm。我使用的是arduino IDE,所以我没有选择它使用什么端口连接,也没有看到它确实使用了…RXTXPort$SerialOutputStream.flush(RXTXPort…我的错。我直接去了