[HOWTO] Guida (più o meno) completa all'utilizzo di Moduli Bluetooth

Ciao,
grazie di cuore a tutti per l'aiuto!

Ho risolto grazie ad uno dei vostri consigli semplicemente impostando il baud rate dell'HC-05 a 38400.

Ora risponde perfettamente ai comandi AT!

Passo a provare il pairing con lo smatphone.

Grazie grazie grazie!

ciao
Marco

gpb01:
In modalità comandi AT (pin KEY = HIGH) la velocità è fissa ed è 38400 baud. In modalità normale, di default, arriva impostato come slave a 9600 baud.

Il lampeggio DEVE cambiare a seconda se è connesso o meno ad un "master" (... cosa usi per connettertici ?) e non ha nulla a che vedere con il pin KEY ... che, per ora, ti consiglio di NON usare (lascialo volante) !

per il momento non era connesso a nulla volevo solo vedere se il modulino funzionava.
L'idea è di connetermi con uno smartphone (ho già visto che mi riconosce l'HC-05 tra le connesioni bluetooth) e di pilotarlo da lì.

Salve a tutti,
cercando nel forum non sono riuscito a togliermi un dubbio riguardo l'uso dei moduli HC-05, è possibile usando questi moduli stabilire connessioni multiple?
Se non sbaglio lo standard bluetooth prevede che un master possa avere fino a 7 connessioni con altrettanti dispositivi slave, mi chiedo quindi se sia possibile far comunicare un arduino master con più di un dispositivo oppure se di volta in volta devo stabilire una nuova connessione.
Qualcuno ha mai provato???

Nel caso avessi sbagliato luogo, scrivendo in questo topic chiedo scusa

Grazie dell'aiuto

Riccardo

Ragazzi non ne vengo a capo, dovrei avere un modulo HC05 esattamente questo:

Riesco a vederlo dal cellulare a fare il pairing ma non riesco a leggere niente sul seriale del compilatore quando invio dei comandi da una applicazione sul cell connessa via bt.

Nikka93:
Riesco a vederlo dal cellulare a fare il pairing ma non riesco a leggere niente sul seriale del compilatore quando invio dei comandi da una applicazione sul cell connessa via bt.

Dato che NON siamo indovini ...
... metti una foto NITIDA dei collegamenti che hai fatto ed il codice che stai usando su Arduino (... mi raccomando, racchiuso tra i tag CODE)

Guglielmo

#include <SoftwareSerial.h>
const int rxPin = 2;
const int txPin = 3;
SoftwareSerial bluetooth(rxPin, txPin);

void setup() {
  Serial.begin(9600);
  bluetooth.begin(9600);
  Serial.println("Bluetooth:");
}
void loop() {
  if (bluetooth.available()) {
    Serial.write(bluetooth.read());
  }
}

connessione

HC05 ARDUINO
RX---->PIN3
TX---->PIN2

Ora il modulo lampeggia velocemente e non riesco più a fare il pairing con il bluetooth del telefono... mi sa che risulta in Master

No, se non hai dato gli appositi comandi AT con il pin KEY HIGH, in modalità Master non ci può andare !

Ma su che Arduino sei ?
E ... come mai non stai usando i pin 10 ed 11 che io consiglio sempre e che indico in tutti i miei post relativi all'argomento (... la SoftwareSerial sul 2 e il 3 NON funziona su alcuni modelli di Arduino, es. Arduino Leonardo e simili) ?

Guglielmo

ho provato anche con 10 e 11 le connessioni ora sono queste, riesco ad effetturare il pairing con il telefono ma non riesco a leggere i dati che manda il telefono al modulo.

Sbaglio forse il codice... eppure è semplice

ecco una foto delle connessioni

Purtroppo la foto è fatta di profilo e non si identifica bene dove i terminali partono e arrivano, comunque, i pin che devi collegare sono :

+5 BT  -> +5 Arduino
GND BT -> GND Arduino
TX BT  -> pin 10 Arduino
RX BT  -> pin 11 Arduino

non collegare il pin KEY che al momento non ti serve.

Per i codice prova il seguente :

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

#include <SoftwareSerial.h>

#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
  btSerial.begin(9600);      // Initialize Bluetooth SoftwareSerial port for selected data speed
  //
  Serial.println("--- Ports ready ---");
  Serial.println("");
  //
}

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

... è quello che si usa sempre per fare le prove facendo parlare il BT con il monitor seriale di Arduino e ... è ampiamente collaudato :wink:

Guglielmo

Ora funziona, forse perchè non mettevo la stringa

Serial.available()>0

Karma per te

GRAZIE

Bene ! Sono contento che hai risolto ...

Quando sarà di nuovo disponibile e funzionante l'Advanced Search qui sul forum, se farai una ricerca per gpb01 e bluetooth ... troverai svariati post che magari ti potranno essere utili :wink:

Guglielmo

Ciao a tutti,sono nuovo di questa categoria e volevo imparare un come come funziona, premetto che non conosco nulla sui codici di programmazione quindi per me sarebbe una partenza da zero :-). Io avevo intenzione di collegare un smartphone (xperia z1 compact) ad (che ho già comprato) arduino UNO con shield ed un xbee bluetooth, volevo sapere con devo iniziare a fare il codice di programmazione. Il mio intento e quello di comandare a distanza una macchinina, per ora i comandi che avevo in mente erano semplici AVANTI , INDIETRO, DESTRA, SINISTRA. Che mi dite??? :slight_smile: Grazie in anticipo.

Ciao a tutti,
posto in coda a questo topic perchè ho uno strano problema con un modulo HC-05 su Arduino UNO.
Utilzzo un PC con Windows 7, che ha rilevato e fatto il pairing senza problemi con il modulo HC-05. Soltanto che la porta COM assegnata al modulo non compare nel menu dell'IDE di Arduino (v. 1.0.6).

Qualcuno ha idea di quale possa essere il problema? ho già provato a smanettare un po' con le COM, cancellandole, aggiungendole, riavviando l'IDE...insomma i soliti tentativi da esci-e-rientra, ma sistematicamente la COM su cui è mappato il modulo sparisce da quelle selezionabili dall'IDE.

Grazie!

Scusate ma sarebbe possibile passare al setup dello sketch i valori di default da impostare aziché passare tramite comandi seriali? (sono ancora in attesa del modulo bt quindi non posso ancora effettuare test)
In questo modo si otterrebbe un preset all'avvio con le ns. impostazioni personalizzate.

Allego l'Esempio che sto scrivendo:

#include <SoftwareSerial.h>

// ###########################################
// Programma di configurazione Bluetooth stack
// ###########################################

// pin ricezione n 2 sul modulo bt
const int rxPin = 2; //con resistenza 2k2

// pin trasmissione n 1 sul modulo bt
const int txPin = 3; //nessuna resistenza necessaria

// pin configurazione n pio11 su modulo bt
const int atPin = 4; //con resistenza 2k2

// pin arduino led integrato
const int connPin = 13;

// attivo la trasmissione e ricezione seriale
SoftwareSerial bluetooth(rxPin,txPin);

void setup() {
  
  // wait 2 second for inizialize
  delay (2000);
  
  // inizializzo la seriale
  Serial.begin(9600);
  // inizializzo Bluetooth SoftwareSerial port 
  bluetooth.begin(9600);
  
  // attivo la configurazione del modulo bt
  pinMode(connPin, OUTPUT);
  pinMode(atPin,OUTPUT);
  Serial.println("Seriali attive...");
  digitalWrite(atPin,HIGH);
  
  // imposto la baudrate di default
  digitalWrite(connPin, HIGH);
  bluetooth.write("AT+BAUD4");
  digitalWrite(connPin, LOW);
//     1----1200bps
//     2----2400bps
//     3----4800bps
//     4----9600bps // consigliata per HC-03-04
//     5----19200bps
//     6----38400bps // consigliata per HC-05-06
//     7----57600bps
//     8----115200bps
//     9----230400bps
//     A----460800bps
//     B----921600bps
//     C----1382400bps
  
  // imposto nome device bluetooth di default
  digitalWrite(connPin, HIGH);
  bluetooth.write("AT+NAMEArduinoBluetooth");
  digitalWrite(connPin, LOW);
  
  // imposto password bluetooth di default
  digitalWrite(connPin, HIGH);
  bluetooth.write("AT+PIN0000");
//  bluetooth.write("AT+PSWD0000");
  digitalWrite(connPin, LOW);

  // imposto modalità master o slave
  digitalWrite(connPin, HIGH);
  bluetooth.write("AT+ROLE1"); // 0=slave(default) / 1=master / 2 Slave-Loop
  digitalWrite(connPin, LOW);
 
  // imposto abbinamento fisso master/slave (binding)
  //digitalWrite(connPin, HIGH);
  //bluetooth.write("AT+CMODE=1"); //connect to everyone
  //bluetooth.write("AT+CMODE=0"); //connect only to slave
  //bluetooth.write("AT+BIND=11,3,252002"); // set mac address dello slave
  //digitalWrite(connPin, LOW);
  
  //clean pairing list
  digitalWrite(connPin, HIGH);
  bluetooth.write("AT+RMAAD"); 
  digitalWrite(connPin, LOW);
}

void loop() {
  if (bluetooth.available() > 0) {
    digitalWrite(connPin, HIGH);
    Serial.write(bluetooth.read());
    digitalWrite(connPin, LOW);
  }
  if(Serial.available() > 0) {
    digitalWrite(connPin, HIGH);
    bluetooth.write(Serial.read());
    digitalWrite(connPin, LOW);
  }
}

Ciao a tutti
Luca

Ho collegato un HC-05 direttamente ad Arduino e ha funzionato per un bel po' ma adesso con il telefono non riesco più a connettermi al modulo, dite che si è bruciato a causa della tensione del modulo di 3,3V e Arduino UNO 5V?

Qualcuno conosce hc-10 e hc-11?

non sono molto esperto, ma il mio bisogno è quello di poter collegare uno slave BT ai device Apple.

Per farlo devi saper programmare su iOS dato che i moduli BLE NON vengono visti come normali moduli Bluetooth.

Puoi leggere QUESTO thread dove c'è anche il link ad un semplice programmino per iOS che si interfaccia con il BLE.

Guglielmo

gpb01:
Per farlo devi saper programmare su iOS dato che i moduli BLE NON vengono visti come normali moduli Bluetooth.

Puoi leggere QUESTO thread dove c'è anche il link ad un semplice programmino per iOS che si interfaccia con il BLE.

Guglielmo

Provo a spiegarmi meglio, più passa il tempo e più questa questione del BT mi è meno chiara...

Io nel mio prototipo sto utilizzando uno shield come questo: Bluefruit EZ-Key - 12 Input Bluetooth HID Keyboard Controller [v1.2] : ID 1535 : $19.95 : Adafruit Industries, Unique & fun DIY electronics and kits
che è una tastiera bluetooth. Con questo riesco a collegarmi a qualsiasi dispositivo android e iOS.

Attualmente sono di uno shield BT che mi permetta di fare una tastiera BT con un Leonardo, nel disperato tentativo di rendere il progettino un po' più "economico" da realizzare.

La mia ipotesi era questa: collegare un modulino HM-11 via seriale ad Arduino Leonardo ed usare questo come tastiera BT. E' possibile?