2009-09-02 78 views
1

DF機器人藍牙模塊如何連接到Arduino以便Arduino可以與之通信。DF機器人藍牙模塊與Arduino的接口

我用this tutorial

我設法讓燈閃爍在模塊上,它似乎可以配對,但是當我運行串行監視器併發送一個字母(說'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在董事會和TXD到TX(引腳1)(引腳0),其餘有線了,但同樣仍然沒有運氣。什麼可能是這個問題?

這是我對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 
} 
+0

您是否能夠直接將Arduino連接到串行端口並使通信正常工作(即沒有混合藍牙模塊)? – 2009-09-02 15:56:55

+0

是的,它似乎只是藍牙不喜歡的IDE連接庫liburi – 2009-09-03 09:00:38

+0

請你詳細介紹一下組件(Arduino IDE,串口,藍牙模塊,Arduino等)以及它們之間的通信機制(串口,藍牙,等等。)?特別是我不清楚如何將數據發送到串行端口轉換爲藍牙信號並由模塊接收。 – 2009-09-03 09:39:01

回答

1

這可能是一個狡猾的電源供應Arduino /藍牙模塊可能會導致此錯誤(即它可能與this Arduino Forum Topic中報告的錯誤有關)。

+0

嗯是的我想,但是我怎麼能得到它工作的自定義C#應用程序,但不是標準 – 2009-09-03 22:09:37

+0

它可能取決於如果。 NET庫和gnu.io.RXTXPort代碼句柄以不同方式丟失連接(例如,G。重新建立連接與關閉關聯的文件描述符)? – 2009-09-06 11:28:35

+0

經過一番調查似乎是這樣的情況下,我嘗試了另一個arduino,似乎很好地工作,謝謝! – 2009-09-07 12:23:50

0

我在通過串口GSM調制解調器建立從PC通訊也有類似的煩惱。我第一次在vista上使用java.comm,這是不可能的。後來,我轉而使用RxTxComm,它更加可靠。改用它。

+0

我使用的是Arduino IDE,所以我沒有選擇它使用的端口連接,也有看它確實使用... RXTXPort $ SerialOutputStream.flush(RXTXPort ... – 2009-09-02 10:55:49

+0

我的不好,我直接去了代碼,並沒有看到任何RxTx的命令,所以我發佈它nvm。 – 2009-09-02 11:21:46

1

嘗試將您的RXTX庫升級到最新版本。 IIRC Arduino IDE捆綁了它的一個版本。

+0

我已經試過這個,沒有運氣 – 2009-09-03 09:58:19

1

這是一個長鏡頭,但...

在鏈接的教程中的示例使用的115200波特率(而不是9600在您的示例中使用),並說:

Check the serial setting! Make sure the baud rate is set to 115200 on both master and slave.

這可能是兩種:

  • 這隻能與115200波特率(這似乎不太可能),或者可能是
  • 桅杆上的波特率呃和奴隸是不是9600
+0

您好,我已經嘗試過,但仍然沒有運氣感謝您的幫助 – 2009-09-03 09:31:08

+0

您是否嘗試過更簡單的示例代碼在教程中? – 2009-09-03 09:39:32

+0

是的,並沒有什麼通過,所以我想我會嘗試發送數據,然後我可以truley確保 – 2009-09-03 09:53:01

1

您應該將藍牙模塊的Rx連接到Arduino板上的Tx,反之亦然。或者你已經這樣做了?將其掛在12 V適配器電源上以確保電源不是問題。 (一個500毫安應該沒問題。)

0

我使用藍牙伴侶銀與我的Arduino和以下鏈接是我用來管理我的藍牙通信。

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 line - > Arduino-TX line,以及

藍牙-TX線 - > Arduino-RX線

第一個環節對我來說是一個重大突破。希望它可以幫助你。

1

我看到兩個可能的問題。

首先可能出現的問題:

你擁有了它的有線或不對您所描述的接線錯誤的。通常情況下,您將藍牙模塊上的RX連接到Arduino上的TX,BT上的TX連接到Arduino上的RX上。

其次可能出現的問題:

您無法連接到藍牙模塊,然後使用內置串口監聽程序來監視Arduino的串口。我不確定你的硬件,但通常你不能讓它們都連接,因爲它們是相同的串行端口。

斷開Arduino與PC的連接。從其他來源加電Arduino。將PC連接到BT模塊。在電腦上運行你最喜歡的TTY應用程序(tera term is nice)並連接到BT模塊的COM端口並輸入'H'。

讓我知道你得到什麼!