Arduino Bluetooth (HC-06 Bluetooth module)

Questo breve articolo ti fornirà tutte le conoscenze necessarie per integrare un modulo Bluetooth (HC-06) nei tuoi progetti embedded.
Come sempre, la spiegazione è corredata da esempi e immagini. In poco meno di una pagina vedremo come funziona il modulo HC-06, come collegarlo ad Arduino e come configurarlo ed usarlo nei nostri progetti.

HC-06 Bluetooth moduleHo recentemente comprato questo modulo Bluetooth economico, ed è stato sorprendentemente facile farlo funzionare.
Bastano pochi minuti per imparare a collegarlo, configurarlo ed utilizzarlo per controllare o monitorare progetti basati su Arduino, Pic, o RaspBerry.

Il modulo in questione è l’ HC-06, che ha il grande vantaggio di costare poco, il che lo rende perfetto per imparare e sperimentare.
Tuttavia, nonostante il prezzo davvero contenuto (attorno ai 5 euro), da molte soddisfazioni.

Senza ulteriori indugi cerchiamo ora di capire come funziona, e quali sono le caratteristiche del dispositivo.

 

Bluetooth HC-06 : Come funziona

Comunica mediante interfaccia seriale (UART TTL).
Ha un set di AT commands tramite i quali è possibile pingare il dispositivo, impostare il nome visibile dagli altri apparecchi Bluetooth, il PIN, il baudrate e altri parametri.

Una volta configurato (o anche semplicemente acceso e lasciato con la configurazione di default) fornirà una comunicazione seriale trasparente, ovvero non occorre istruire il modulo per inviare o ricevere dati, se non si dialoga con esso mediante i comandi AT, tutto quello che mandiamo sulla UART viene trasmesso al dispositivo accoppiato, e tutto quello che è ricevuto dal modulo ci viene ritrasmesso così com’è, senza bisogno di ulteriori interventi.

Bluetooth HC-06 : Piedinatura e cablaggio

HC-06 Bluetooth module

Piedinatura del modulo HC-06, CLICCA PER INGRANDIRE

Nell’immagine è visibile il retro del modulo dove si trovano le informazioni sulla piedinatura.

La disposizione ed il numero dei pin potrebbero variare da modulo a modulo, ma i più importanti sono : VCC, GND, TX, RX.

La tensione di alimentazione puà variare da 3.3V a 5V, le linee di comunicazione sono tollerandi ai 5V e funzionano anche a 3v3.

I collegamenti da fare sono banali, VCC va collegato all’alimentazione del vostro dispositivo, attenzione, non fonire più di 5V al modulo. L’alimentazione del modulo può essere fornita direttamente da Arduino, gli assorbimenti sono bassi ed è sicuro.

GND va colleato a massa, occorre una massa comune tra il modulo e il dispositivo che lo utilizza.

Una cosa importante è ricordasi di incrociare i pin TX e RX. Informazione scontata per chi sa come funziona una comunicazione seriale, tuttavia vale la pena di esplicitarlo.

Il pin TX del modulo va collegato al pin RX del dispositivo, allo stesso modo, il pin RX del modulo va collegato al pin TX del dispositivo.
Per essere ancora più chiari :

Modulo    Arduino
TX     –>     RX
RX     –>     TX

Bluetooth HC-06 : Comandi AT e configurazione

Se si collega il modulo senza configurazione verrà utilizzata questa configurazione di default :

Nome  : “HC-06”
PIN : 1234Baudrate : 9600 bit/s

Si può usare un PC o un dispositivo mobile per connettersi al modulo usando i dati sopra riportati. Quando la comunicazione è stabilita il led presente sul modulo si accederà e resterà fisso. Se lampeggia invece la comunicazione non è stabilita.

A questo punto, se non si usano i comandi AT per cambiare la configurazione, il modulo è già operativo. Il servizio esposto è quello di Virtual COM, quindi tutti i dati trasmessi dal dispositivo associato arriveranno sul vostro dispositivo come se al posto del modulo ci fosse una normale comunicazione seriale tra i due dispositivi.

Ma vedremo ulteriori dettagli in seguito, ora ci occupiamo invece dei comandi per configurare il modulo, eccone una lista :

Nota : ‘<‘ e ‘>’ racchiudono parti di testo che vanno fornite, ma non vanno inserite nel comando da inviare.
Ad esempio AT+BAUD<n> con n che vale 2 verrà mandato come : AT+BAUD2

  • AT
  • AT+VERSION
  • AT+NAME<nome>
  • AT+BAUD< una cifra >
  • AT+PIN<4 cifre>

AT : Serve a pingare il modulo, la risposta è ‘OK’, che indica che il modulo è raggiungibile, pronto, e che la comunicazione seriale è attiva.

AT+VERSION : Ottiene una stringa che rappresenta la versione

AT+NAME<nome> : setta il nome del dispositivo. Esempio : AT+NAMEGandotech.net

AT+BAUD<1 cifra> : setta il baudrate della comunicazione seriale. Default è 9600, e va codificato secondo questa tabella
1:1200, 2:2400, 3:4800, 4:9600, 5:19200, 6:38400, 7:57600, 8:115200, 9:230400, A:460800, B:921600, C:1382400
Esempio : AT+BAUD4

AT+PIN<4 cifre> : Imposta il pin da usare per associare un dispositivo al modulo. Deve essere di 4 cifre.
Esempio : AT+PIN1234

Bluetooth HC-06 : Accendiamo un led dallo smartphone

Ora che abbiamo visto come si configura e come si collega il modulo HC-06 al nostro microcontrollore, possiamo realizzare una prova di concetto.

Sullo smarthpone useremo un’applicazione che sia in grado di mandare testo tramite il bluetooth. Ne esistono diverse, una gratuita è ad esempio : Bluetooth Controller, disponibile sul Play Store di Big G, ma ne esistono molte altre gratuite, ed è ovviamente possibile programmarsi la propria ad hoc.

Questo è un esempio per Arduino, ma un programma analogo può essere relizzato per qualsiasi microcontrollore, ed anche per RaspBerry.
Sostanzialmente staremo in ascolto sulla porta seriale, e quando riveremo il carattere ‘A’ accenderemo un led, per qualunque altro carattere lo spegneremo. Andremo così a realizzare un semplice comando via bluetooth.

int incomingByte;

void setup() {
  pinMode(13, OUTPUT);
  Serial.begin(9600);
  
}

void loop() {
  
  // send data only when you receive data:
  if (Serial.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial.read();
    
    if (incomingByte == 65) 
      digitalWrite(13, HIGH);
    else 
      digitalWrite(13, LOW);
  }
  
}

Lista della spesa :

Ecco il modulo in questione
Modulo HC-06

Your Turn !

Cosa pensi della guida ? Ti è stata di aiuto ?
Non esitare a commentare e/o a fare domande, se l’articolo ti è piacuto condividilo usando i pulsanti qua sotto :)

 

Computer geek e appassionato di elettronica dall'infanzia. Nel tempo libero oltre a realizzare progetti inutili ma entusiasmanti mi dedico ai videogiochi, rigorosamente su pc. Condivido su questo blog e su youtube i miei interessi nella speranza di entusiasmare tutti i matti come me.

10 comments for “Arduino Bluetooth (HC-06 Bluetooth module)

  1. Savio
    15 luglio 2016 at 10:42

    Ciao, posso chiederti un consiglio?
    Sto usando l’HC05 per comandare un robot da smartphone ma non prende subito i comandi impartiti, potrebbe essere un problema di baudrate? Ora è a 9600 , se lo aumento potrebbe essere più reattivo?
    Grazie

  2. alessandro civetti
    28 maggio 2016 at 9:37

    Ciao,sono un vecchio elettronico rimasto ai transistors;ti volevo esporre il mio problema:avrei bisogno di agire, tramite bluetooth, su un relè,possibilmente in due modi(astabile o bistabile)è possibile con il tuo progetto ?tieni conto che io non conosco arduino per cui dovresti montare tu il tutto.
    Ti ringazio anticipatamente
    Alessandro

    • 28 maggio 2016 at 12:20

      Ciao Alessandro,

      Si può certamente fare, nell’articolo trovi già le basi per realizzare un controllo simile a quello che ti serve.
      Sostanzialmente il tutto sta nel software, dovrai fare in modo che il micro-controllore stia sempre in uno stato di attesa di messaggi dal modulo BT, ed agisca su una porta di output in base ai messaggi che riceve.
      Avrai probabilmente bisogno di 3 messaggi diversi, che potremmo definire come segue:
      1. Avvia astabile
      2. Trigger bistabile (inverte lo stato dell’output)
      3. Arresto (arresta il bistabile e forza l’uscita a 0)

      Per l’HW basta realizzare uno stadio pilota per il relè, che può tranquillamente essere a BJT oppure MOSFET. Scopo di questo driver sarà prelevare l’uscita TTL del micro-controllore (5v 20mA MAX) e fornire la giusta corrente e tensione per pilotare la bobina del relè che ti occorre.

      Volendo posso anche progettarti io circuito e software, posso anche fornirti il master per realizzare un PCB. Il mio compenso è a ore, se sei interessato a seguire questa strada puoi contattarmi a alessio@gandotech.net
      Saluti e buona fortuna! :)

  3. Roberto Placido
    10 ottobre 2015 at 17:26

    Ciao Alessio,
    volevo chiederti se sai come fare per creare una picorete bluetooth; ho letto che in una picorete possono essere connessi ad un master (es. HC-05) sino a 7 slaves (es. HC-06); io sono riuscito ad arrivare ad 1 (mannaggia).
    La sequenza che imposto è la seguente:
    ROLE=1
    INIT
    PAIR=1234,56,789abc,20
    PAIR=1234,56,789xyz,20
    LINK=1234,56,789abc,20
    A questo punto il modulo 12:34:56:78:9a:bc è connesso; se ora tento di connettere il secondo modulo…
    LINK=1234,56,789xyz,20
    … ottengo il KO
    Mi puoi aiutare? Ancora non ho capito se il PAIR è limitato a 7 ma il link può essere uno solo alla volta o se (come credo) è il link ad essere limitato a 7; in effetti il pairing è solo lo scambio e la memorizzazione delle chiavi mentre il link richiede effettivamente risorse e dunque è naturale che ci sia un limite.
    Grazie per ogni risposta.

  4. piv99
    16 giugno 2015 at 22:47

    Ciao , ho da poco acquistato il modulo HC 06
    Ora pero’ non funziona piu’ , continua a lampeggiare il led e non viene riconosciuto dallo smartphone.
    E’ possibile che sia guastato ? Lo smartphone con altri apparecchi bluetooth funziona regolarmente ,
    hai qualche consiglio?
    Grazie

    • 16 giugno 2015 at 22:53

      Ciao,

      Il led che lampeggia vuol dire che il modulo non è associato allo smartphone. Potrebbe anche trattarsi di un guasto, tuttavia forse si tratta solo di un problema di configurazione.

      Assicurati di settare bene nome e pin (sia nel software di arduino, dove li imposti mediante AT command) sia lato smartphone. Prova a spegnere tutto e a riavviare.

      Se i problemi continuano allora forse si è in qualche modo danneggiato. Però io prima di darlo per morto proverei magari con un altro telefono giusto per verificare che non ci siano problemi strani nella situazione attuale.

      • piv99
        20 giugno 2015 at 15:24

        Ciao Alessio ,
        ho provato anche con un altro smartphone :
        viene effettuata la ricerca e l’associazione tramite pass.1234 .
        Il cell. mi dice “associazione eseguita ” ma il led continua a lampeggiare .
        Il modulo e’ collegato con arduino , alimentato a 5V e GND , con Tx ed Rx incrociati .
        ps :( non so cosa sia AT command)

        • giorgio
          7 luglio 2015 at 22:36

          ciao Alessio,volevo porti una domanda!!!!!!!!!!!!!!!
          facciamo finta di avere un circuito con il HC-06 che mi fa accendere un led tramite una App;mi domandavo se con piu telefonini posso attivare lo stesso LED senza avere problemi??????????

          • 7 luglio 2015 at 22:42

            Ciao,
            Non puoi contemporaneamente, i dispositivi Bluetooth si “accoppiano”, quindi puoi accoppiare un solo telefono alla volta.
            Puoi tuttavia usare più telefoni, in momenti diversi, quindi uno solo alla volta può essere collegato al modulo. Per cambiare telefono devi prima scollegare quello già collegato.

        • SimoneB
          15 dicembre 2016 at 20:49

          Ciao, ho avuto anche io questo problema poco tempo fa. L’ho risolto nel seguente modo:
          Togli il modulo bt da arduino
          Carica lo sketch nel microcontrollore
          Dopo aver caricato lo sketch, ricollega il modulo BT.
          Vedo che la domanda é del 2015. Spero che almeno sia utile a qualcun altro che ha lo stesso problema e che legge l’articolo. :s

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Verifica anti-spam *