Problema bluetooth android

Buongiorno a tutti,
non riesco a far comunicare arduino con il modulo HC-05 tramite android.
Mi spiego meglio: se collego l'HC-05 con arduino e da pc collego il buetooth tramite il modulo seriale
riesco ad inviare i comandi per far accendere e spegnere il led mentre non funziona con un cell android ad esempio
con l'applicazione blueterm non riesco a scrivere e quindi ad inviare caratteri al HC-05.
Ho anche creato un app con App Inventor per mandare via bluetooth comandi ad arduino ma niente da fare.
Non riesco a capire come mai da pc funziona e da andriod no.
Potete darmi una mano?

Grazie

Nessuno mi può aiutare?

Indendevo dire che con il cell riesco a fare il paring dell'HC-05 scelgo il dispositivo e si connette
ma non riesco ad inviare niente tramite bluetooth ad arduino.

Ciao,
è da un po che non pasticcio con bluetooth + android, ho dovuto riguardare che app ho installato:
Bluetooth SPP
Bluetooth SPP pro
SENA BTerm
il migliore mi sembrava l'ultimo, blueterm non ce l'ho.
Con SENA non ho avuto problemi tra arduino + HC-05 + android.
Hai connesso bene i pin tx rx tra arduino l'HC-05?
Hai provato a connettere insieme i tx rx dell'HC-05 senza l'arduino, per vedere se riceve e ritrasmette i caratteri?

nike_77:
se collego l'HC-05 con arduino e da pc collego il buetooth tramite il modulo seriale
riesco ad inviare i comandi per far accendere e spegnere il led ....

@ bigjohnson : Attento, lui dice chiaramente che con il PC gli funziona, quindi .. i problema non è Arduino <-> HC-05 ma proprio la connessione Bluetooth con il device Android ...

Guglielmo

Infatti io gli ho detto quali prove fare per vedere se funziona il collegamento tra android e HC-05, non tra pc e HC-05 :wink:

bigjohnson:
Ciao,
è da un po che non pasticcio con bluetooth + android, ho dovuto riguardare che app ho installato:
Bluetooth SPP
Bluetooth SPP pro
SENA BTerm
il migliore mi sembrava l'ultimo, blueterm non ce l'ho.
Con SENA non ho avuto problemi tra arduino + HC-05 + android.
Hai connesso bene i pin tx rx tra arduino l'HC-05?
Hai provato a connettere insieme i tx rx dell'HC-05 senza l'arduino, per vedere se riceve e ritrasmette i caratteri?

Ciao bigjohnson,
proverò con le app che mi hai indicato ma non credo sia un problema di connessione se no non funzionerebbe neanche
dal pc. Comunque ho messo GND a massa, TDX al RX di arduino, RDX al TX di arduino e alimentazione 5V.
Mi hai dato una bella idea di connettere i tx e rx dell'HC05 per vedere i caratteri e lo provo e ti faccio sapere.

gpb01:

nike_77:
se collego l'HC-05 con arduino e da pc collego il buetooth tramite il modulo seriale
riesco ad inviare i comandi per far accendere e spegnere il led ....

@ bigjohnson : Attento, lui dice chiaramente che con il PC gli funziona, quindi .. i problema non è Arduino <-> HC-05 ma proprio la connessione Bluetooth con il device Android ...

Guglielmo

Si infatti corretto! Tra pc e arduino funziona :wink:

nike_77:
Si infatti corretto! Tra pc e arduino funziona :wink:

Appunto, quindi il problema è la connessione con Android.

Allora, ho preso adesso il mio Kindle Fire HD (... è Amazon ... ma è Android) e ho installato BTInterface v8 ... selezionato il bottone "Discover", selezionato HC-05 (... ho dato questo nome al modulino HC-05), dato il PIN e ... si è immediatamente connesso e posso trasmettere e ricevere i dati ...

Quindi ...

  1. verifica se il tuo android, nel setup del bluetooth, comunque vede il device
  2. verifica se il tuo programma si aspetta qualche carattere di fine stringa (es. la mia applicazione, si aspetta dei messaggi terminati dal carattere CR)
  3. verifica di aver dato il PIN corretto e che il modulo sia connesso (lampeggio del LED lento)

Guglielmo

A parte il pairing, selezioni con che device istanziare la comunicazione lato applicativo?

Intanto grazie a tutti delle risposte . Ieri non sono riuscita a provare ma appena riesco vi faccio sapere :slight_smile:

Comunque si dopo il paring accendo il bluetooth nel telefono e associo il dispoditivo e mi dice "connesso" ma non riesco ad inviare alcun carattere ..è come se il programma nel tel si blocca e non scrive niente di niente.

Oggi spero di riuscire a fare altre prove epoi vi faccio sapere :slight_smile:

Ciao a tutti,
ho fatto varie prove ma non ho ancora risolto:
1-ho provato a connettere rx e tx del HC05 e collegandomi con il cell con un bluetooth terminal riesco ad inviare caratteri e a riceverli
2- se invece metto tx e rx su arduino con questo sketch:
unsigned char val;
int ledpin = 12; //Impostate il pin LED che preferite

void setup() {
pinMode(ledpin, OUTPUT);
Serial.begin(9600);
Serial.println("OK then, you first, say something.....");
Serial.println("Go on, type something in the space above and hit Send, or just hit the Enter key");
}
void loop() {
while(Serial.available()==0)
{}
delay(500);
Serial.println("I heard you say: ");
while(Serial.available()>0)
{
Serial.write(Serial.read());// note it is Serial.WRITE
if( val == 'H' ) {
digitalWrite(ledpin, HIGH);
}
else {
digitalWrite(ledpin, LOW);
}
}
Serial.println("");
delay(1000);
}
da android dopo aver fatto il paring e associato il HC05 (lampeggia lento) da un bluetooth terminal leggo la scritta:
OK then, you first, say something.....
Go on, type something in the space above and hit Send, or just hit the Enter key
ma non riesco ad inviare nulla ...non riesco a premere send ed inviare il messaggio

Per le prove di android uso un galaxy s3 ..sapete se va bene?
Ho sbagliato il baudrate?
Non riesco a capire con lo stesso programma dal pc il led si accende e spegne =(

Guarda, fai una cosa, collega il modulo bluetooth ai pin 10 e 11 (TX del bluetooth sul 10, RX del bluetooth sul 11) e poi carica questo semplicissimo programma di monitor :

// *****************************************************
//
//        Bluetooth module serial communication
//              Bluetooth <--> USB_Serial
//
// *****************************************************

#include <SoftwareSerial.h>

# define  BT_CONTROLMODE      // Uncomment if you set the KEY pin to HIGH (Control mode)

#define  BT_RX 10            // PIN to receive from bluetooth <--
#define  BT_TX 11            // PIN to transmit to bluetooth  -->

SoftwareSerial btSerial(BT_RX, BT_TX);

void setup()
{
  delay (2000);
  //
  Serial.begin(9600);        // Initialize USB Serial port
  //
  #ifdef BT_CONTROLMODE
    btSerial.begin(38400);   // Initialize Bluetooth SoftwareSerial port for default control speed
  #else
    btSerial.begin(9600);    // Initialize Bluetooth SoftwareSerial port for selected data speed
  #endif
  //
  Serial.println("--- Ports ready ---");
  Serial.println("");
  //
  #ifdef BT_CONTROLMODE
    delay(1000);  
    btSerial.print("AT");
    btSerial.print("\r\n");
  #endif
}

void loop()
{
  if (btSerial.available() > 0) Serial.write(btSerial.read());
  if (Serial.available() > 0) btSerial.write(Serial.read());
}

Lascia stare la define di BT_CONTROLMODE che serve solo per scegliere la velocità a 38'400 quando si è in modalità controllo. Il colloquio è previsto a 9'600 ...

Attacchi il PC sulla USB di Arduino e apri il monitor seriale, da Android ti colleghi al HC-05 e ... tutto quello che arriva sul bluetooth lo vedi sul monitor seriale, tutto quello che tu, dal PC, scrivi sul monitor seriale lo devi vedere su Android (... in pratica ogni carattere ricevuto dalla SoftwareSerial viene stampato sulla Serial e viceversa :wink:). Banale ...

Almeno capisci se c'è veramente questa connessione o se il programma che stai usando su Android non funziona. Piuttosto ... ti sei scaricato BTInterface che sono certo funzioni ?

Guglielmo

Allora ho provato e connettendo il bluetooth del cell al HC-05: da cell vedo tutto quello che scrivo sul pc dalla serial monitor e viceversa (ma non vedo quello che scrivo sul dispositivo che stò usando) con un unica differereza che quello che scrivo dal pc è "stringa" e a capo mentre dal cell è come una stringa continua che non va mai a capo.
Nel playstore non ho trovato BTInteface ma ho usato il pgm BlueSerialBeta BluetoothSPP con lo stesso risultato.

nike_77:
...
Nel playstore non ho trovato BTInteface ma ho usato il pgm BlueSerialBeta BluetoothSPP con lo stesso risultato.

Ti avevo dato il link di BTInterface ...
... ha il vantaggio che, nelle opzioni, imposti come vuoi che venga terminata la trasmissione, ovvero ... l'invio automatico del CR quando fai SEND :wink:

Prova ...

Guglielmo

Ciao Guglielmo, hai ragione mi avevi dato il link solo che non mi si apriva la pagina nel browser del cell.
Coomuque adesso l'ho installato e ho provato e adesso nel monitor seriale del pc non vedo quello che scrivo dal pc mentre con il BITnerface vedo sia quello che scrivo da cell che da pc . Come prima invece quello che scrivo da BTInteface compare come una stringa continua e le strighe non vanno a capo.. Non ci stò più capendo niente..cosa non va?
Si può resettare l'HC05? come posso scrivere il carattere CR? ho provato con \r\n ma niente da fare..

BTInterface, in alto a sinistra, ci sono tre puntini in verticale ... li tocchi e ti si apre un menu ... scegli Settings, vai in fondo, li dove dice Nitty Gritty e vedi che puoi impostare il CR che viene inviato automaticamente al momento del SEND.

Se stai usando il programmino che ti ho scritto ... quello che scrivi sul monitor seriale lo vedi sul cell (BTinterface), quello che scrivi sul cell lo vedi sul monitor seriale. Praticamente :

tastiera PC (monitor seriale) ----> schermo cell (tramite BT)
schermo del PC (monitor seriale) <---- tastiera cell (tramite BT)

... questa è la logica di come deve funzionare ! :wink:

Guglielmo

Ciao Guglielmo, grazie mille di tutto! Con la swserial funziona XD
Si ho visto che si può impostare il CR dal BTInterface ..perfetto!
A dire la verità (ma non so se possa centrare) mi sono accorta che il pulsante di reset su Arduino si era praticamente quasi staccato non capisco come ha fatto dato che 3 mesi di vita e non ho fatto niente di particolare.. :frowning:
Ho risaldato tutto e ricaricato gli sketch e adesso va!

Non mi è molto chiaro se la serial va sempre a 9600 baud? E il bluetooth di un dispositivo android anche?
Adesso il mio prossimo passo sarà farlo funzionare su pin 0 e 1 perchè gli altri mi servono tutti :frowning:

nike_77:
Non mi è molto chiaro se la serial va sempre a 9600 baud? E il bluetooth di un dispositivo android anche?
Adesso il mio prossimo passo sarà farlo funzionare su pin 0 e 1 perchè gli altri mi servono tutti :frowning:

No, puoi scegliere la velocità che vuoi ... entro certi limiti XD XD XD
Vai in modalità comando e cambi la velocità con cui il modulo BT colloquia con i pin TX e RX e poi, su Arduino, apri la seriale alla stessa velocità :wink:

Farlo funzionare sui pin 0 e 1 ... la vedo brutta purtroppo ...
... in un altra discussione abbiamo fatto una serie di prove e ... non mi è ben chiaro da cosa dipenda (probabilmente dal fatto che questi modulini, pur essendo 5v tolerant, in realtà lavorano a 3.3v) il Arduino TX -> BT RX funziona (ovviamente), mentre BT TX -> Arduino RX non va :frowning:

Verifica anche tu, ma mi sa che dovrai trovare un'altra strada ... :roll_eyes:

Guglielmo

Grazie mille!
Sei stato chiarissimo! :smiley:

Proverò a vedere se riesco :wink: in caso vi faccio sapere!

Buongiorno a tutti,
non riesco a far comunicare ArduinoUno con il modulo HC-05 tramite android.
Seguendo le istruzioni sul forum so inserito le seguenti istruzioni su arduino:

Code:

// *****************************************************
//
//        Bluetooth module serial communication
//              Bluetooth <--> USB_Serial
//
// *****************************************************

#include <SoftwareSerial.h>

# define  BT_CONTROLMODE      // Uncomment if you set the KEY pin to HIGH (Control mode)

#define  BT_RX 10            // PIN to receive from bluetooth <--
#define  BT_TX 11            // PIN to transmit to bluetooth  -->

SoftwareSerial btSerial(BT_RX, BT_TX);

void setup()
{
  delay (2000);
  //
  Serial.begin(9600);        // Initialize USB Serial port
  //
  #ifdef BT_CONTROLMODE
    btSerial.begin(38400);   // Initialize Bluetooth SoftwareSerial port for default control speed
  #else
    btSerial.begin(9600);    // Initialize Bluetooth SoftwareSerial port for selected data speed
  #endif
  //
  Serial.println("--- Ports ready ---");
  Serial.println("");
  //
  #ifdef BT_CONTROLMODE
    delay(1000);  
    btSerial.print("AT");
    btSerial.print("\r\n");
  #endif
}

void loop()
{
  if (btSerial.available() > 0) Serial.write(btSerial.read());
  if (Serial.available() > 0) btSerial.write(Serial.read());
}

Fatto cio ho installato sul mio android Bluetooth Terminal e SenaBTerminal, ma il risultato é sempre uguale, in quanto non appena mando un comando ad arduino per esempio "a" sul monitor di arduino mi appare la seguente scritta:

--- Ports ready ---

x x €x