Domanda

Come può il modulo DF Robot Bluetooth essere collegato alla Arduino in modo che l'Arduino può comunicare con esso.

questo tutorial .

Sono riuscito ad ottenere la luce lampeggiante sul modulo e sembra essere in grado di accoppiare bene, ma quando ho eseguito il monitor di serie e inviare una lettera (dico 'H'), che dovrebbe accendere una luce su ottengo un Java errore:

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)

Ho controllato il cablaggio e ho la RXD andare al RX (pin 0) sulla scheda e TXD di TX (pin 1) e il resto cablato, ma ancora ancora fortuna. Quale potrebbe essere il problema?

Questo è il codice che ho sul 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
}
È stato utile?

Soluzione

E 'possibile che un alimentatore dubbia al modulo Arduino / Bluetooth potrebbe causare questo errore (cioè poteva essere correlato all'errore riportato in questo Forum Arduino topic ).

Altri suggerimenti

Provare ad aggiornare la libreria RXTX alla versione più recente. IIRC Arduino IDE viene fornito con una versione di esso.

Questo è un lungo tiro, ma ...

L'esempio nel tutorial collegato utilizza una velocità di trasmissione di 115200 (piuttosto che il 9600 utilizzata nel tuo esempio) e dice:

  

Controllare l'impostazione di serie! Assicurarsi   la velocità di trasmissione è impostata a 115200 sia su   master e slave.

E 'possibile che sia:

  • Questo funziona solo con una velocità di trasmissione di 115200 (che sembra improbabile) o, eventualmente,
  • La velocità di trasmissione sul master e slave non è 9600

Si dovrebbe collegare il Rx dal modulo Bluetooth per il Tx sulla scheda Arduino, e viceversa. O hai fatto così già? Appendere a un'alimentazione 12 V adattatore per essere sicuri che l'alimentazione non è il problema. (Uno con 500 mA dovrebbe andare bene).

Vedo due possibili problemi.

Primo problema possibile:

L'avete cablato sbagliato o che hai descritto il cablaggio sbagliato. Di solito, si collega la RX dal modulo BT al TX sul Arduino e il TX sul BT al RX sul Arduino.

Secondo problema possibile:

Non è possibile collegarsi al modulo Bluetooth e quindi utilizzare l'applicazione integrato di serie del monitor per monitorare la porta seriale del Arduino. Non sono sicuro del proprio hardware, ma di solito non si può avere entrambi connessi come sono la stessa porta seriale.

Scollegare l'Arduino dal PC. Accendere l'Arduino da qualche altra fonte. Collegare il PC al modulo BT. Eseguire il fav TTY applicazione sul PC (termine tera è bello) e collegarlo alla porta del modulo BT COM e digitare 'H'.

Fatemi sapere che cosa ottenete!

Ho avuto problemi simili a stabilire una comunicazione dal PC al modem GSM tramite porta seriale. Mi è stato lavorato con java.comm su Vista ed è stato impossibile. Più tardi, sono passato a RxTxComm ed è stato molto più affidabile. Utilizzare invece.

Sto usando un argento Mate Bluetooth con il mio Arduino e il seguente link è quello che ho usato per gestire la mia comunicazione Bluetooth.

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

ho dovuto importare la libreria RXTX da qui:

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

Inoltre, come altri utenti hanno dichiarato, utilizzare una velocità di trasmissione di 115200, e collegare il

Linea Bluetooth-RX -> Linea Arduino-TX, e

Linea Bluetooth-TX -> Linea Arduino-RX

Il primo collegamento è stato un importante passo avanti per me. Spero che ti aiuta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top