Pergunta

Como pode o DF Robô módulo Bluetooth seja conectado ao Arduino para que o Arduino pode se comunicar com ele.

Eu usei este tutorial.

Eu consegui dar a luz a piscar no módulo e parece ser capaz de par bem, mas quando eu executo o serial monitor e enviar uma carta (de dizer 'H'), que deve virar uma luz, eu recebo um erro de 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)

Eu verificada a fiação e eu tenho o RXD indo para o RX pin (0) no conselho e TXD para TX (pino 1) e o resto com fios para cima, mas, novamente, ainda sem sorte.O que poderia ser o problema?

Este é o código que tenho sobre o 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
}
Foi útil?

Solução

É possível que uma fonte de alimentação desonesta para o módulo Arduino/Bluetooth possa causar esse erro (ou seja, ele pode estar relacionado ao erro relatado em Este tópico do fórum do Arduino).

Outras dicas

Tente atualizar sua biblioteca RXTX para a versão mais recente. IIRC O Arduino IDE vem incluído com uma versão dele.

Este é um tiro longo, mas...

O exemplo a ligado tutorial usa uma taxa de transmissão de 115200 (em vez de a 9600 utilizados no exemplo) e diz:

Verifique o serial configuração!Certifique-se de a taxa de transmissão é definida para 115200 em ambos os mestre e escravo.

Pode ser que:

  • Isso só funciona com uma velocidade de 115200 (o que parece improvável) ou, eventualmente,
  • A taxa de transmissão no master e slave não é 9600

Você deve conectar o RX do módulo Bluetooth ao TX na placa Arduino e vice -versa. Ou você já fez isso? Pendure -o em uma fonte de alimentação adaptadora de 12 V para garantir que a energia não seja o problema. (Um com 500 Ma deve estar bem.)

Eu vejo dois problemas possíveis.

Primeiro problema possível:

Você está errado ou descreveu sua fiação errada. Geralmente, você conecta o RX do módulo BT ao TX no Arduino e o TX no BT ao RX no Arduino.

Segundo problema possível:

Você não pode se conectar ao módulo Bluetooth e, em seguida, usa o aplicativo Monitor Serial Inbuilt para monitorar a porta serial no Arduino. Não tenho certeza do seu hardware, mas geralmente você não pode conectar os dois, pois são a mesma porta serial.

Desconecte o Arduino do PC. Ligue o Arduino de alguma outra fonte. Conecte o PC ao módulo BT. Execute seu aplicativo favorito no PC (termo tera é bom) e conecte -se à porta COM do módulo BT e digite 'H'.

Depois diga-me o que obteve!

Eu tive problemas semelhantes no estabelecimento de comunicação do PC ao modem GSM via porta serial. Eu estava trabalhando com Java.Comm no Vista e era impossível. Mais tarde, mudei para o RXTXComm e foi muito mais confiável. Use -o em vez disso.

Estou usando um mate bluetooth prateado com meu arduino e o link a seguir é o que usei para gerenciar minha comunicação Bluetooth.

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

Eu tive que importar a biblioteca RXTX daqui:

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

Também como outros usuários declararam, use uma taxa de transmissão de 115200 e conecte o

Linha Bluetooth-RX-> Linha Arduino-TX e

Linha Bluetooth-TX-> Linha Arduino-RX

O primeiro link foi um grande avanço para mim. Espero que ajude você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top