Modulo convertitore Seriale/Bluetooth HC-05

Il modulo convertitore seriale/bluetooth HC-05 è uno dei moduli più popolari e poco costosi utilizzati per le comunicazioni RF, il suo costo è di meno di 6 € e risulta facile da implementare nei vostri progetti.
La portata è di 10 mt, e si imposta facilmente tramite comandi AT ed è programmabile sia come master che come slave a differenza del modello HC-06 che è solo utilizzabile come slave.

Il modulo convertitore seriale/bluetooth HC-05 permette di trasformare una porta UART\USART più comunemente conosciuta come seriale in una porta Bluetooth, generalmente con profilo SPP( Serial Port Profile), diventando cosi una seriale over Bluetooth.
Normalmente questo dispositivo viene usato quando si vuole far comunicare un microprocessore (MCU) per esempio un processore ATmel di norma montato su schede Arduino con il mondo esterno, dove il mondo esterno può essere un uno SmartPhone, un Personal Computer, o altro dispositivo fornito di una connessione Bluetooth.
Il modulo può essere trovato sia come semplice componente oppure già montato su una scheda di breakout, il consiglio è di optare per la seconda soluzione.

nel secondo caso, infatti. il modulo è montato su una piccola basetta su cui sono presenti un regolatore LDV – 662K  (XC6206) e un LED che indica lo stato del dispositivo.

Sull’altro lato è possibile vedere una descrizione e funzione di ciascun pin e l’indirizzo internet del fabbricante
La tensione di alimentazione può essere compresa tra i 3,6 e i 6 V dc, mentre le linee dati sono a 3,3 V dc, il peso è di 5 gr.

NOTA: Attenzione in commercio esistono svariate versioni modulo convertitore seriale/bluetooth HC-05, la piedinatura non è standard, quindi prestare attenzione quando effettuate i collegamenti e fate riferimento alle indicazioni relative al vostro modello.

Caratteristiche tecniche

  • Dimensione minime (riferito al solo modulo) 28 x 15 x 2,35 mm
  • Versione del Bluetooth è la v 2.0 + EDR.
  • Frequenza di funzionamento è 2.4GHz ISM band.
  • Processore a bordo è un CSR Bluecore4.
  • Tensione di alimentazione consigliata 3,3 V 50mA.
  • Corrente richiesta in fase di accoppiamento è circa 30/40 mA mentre in fase di comunicazione è di circa 8 mA.
  • Possibili velocità della seriale configurabili 4800, 9600, 19200, 38400, 57600, 115200, 234000, 460800, 921600, 1382400 bps.
  • Il modulo HC-05  è di classe 2 (potenza in mW 2,5, potenza dBm 4, distanza metri circa 10).

Dove trovare il modulo

Il modulo convertitore seriale/bluetooth HC-05  può essere acquistato presso il sito Homotix, ad un costo di 5,80€, ricordo che chi inserirà il mio codice sconto “ADRIROBOT_20” riceverà uno sconto del 3%.

Atri modelli di moduli bluetooth

Il modulo RBT-001 è un Bluetooth 2.0, misura solamente 29x29mm.

Il Modulo Easy Bluetooth permette un facile interfacciamento con il modulo RBT-001

Il modulo BlueSMiRF Silver è un modulo di ricetrasmissione di tipo Bluetooth con velocità di trasmissione da 2400 a 115200 bps, alimentazione da 3,3 V a 6V

Schema base di collegamento

Vediamo ora lo schema minino di collegamento tra il modulo HC-05 e una scheda Arduino UNO, dato che le linee dati sono a 3.3V mentre quelle di Arduino sono a 5V, sarà necessario inserire un partitore per ridurre la tensione in ingresso sul pin RX del modulo HC-05, mentre questo non sarà necessario sul pin TX.
In teoria si ha che se R1=R2 qualsiasi sia il loro valore quello che ottiene è un partitore di tensione simmetrico ossia applicando in ingresso 10V in uscita si avranno 5V, variando il rapporto tra R1 ed R2 a favore di R1 ( R1 > R2 ) in uscita al partitore di tensione si avrà una tensione di uscita inferiore a Vi/2; variando il rapporto a favore di R2 ( R1 < R2 ) si ottiene una Vo > Vi/2.

Dato che dobbiamo avere in uscita una tensione inferiore ai 3.3V partendo da una tensione di 5V, si è optato per un valore di R1 pari a 1.2kΩ e R2= 2.2 kΩ, con un rapporto pari a 0,545 il che garantisce un valore della tensione in uscita pari a 3.2V

Componenti necessari

Scheda Arduino Uno R3

Breadboard

Modulo Bluetooth HC-05

1 resistenza 1.2 kΩ + 1 da 2.2 kΩ 1/4W
Fili per collegamenti

Codice del programma di test

Vediamo un primo test che ci permetterà di verificare il funzionamento del modulo e la verifica di alcuni suoi parametri.

Scheck Test_HC-05.ino

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX

void setup()
{
  pinMode(9, OUTPUT);  // questo pin è connesso al relativo pin 34 (pin KEY) del HC-05
  // che portato a HIGH permette di passare alla modalità AT
  digitalWrite(9, HIGH);
  Serial.begin(9600);
  Serial.println("Inserire i comandi AT:");
  BTSerial.begin(38400);  // Velocità di default del modulo HC-05
}

void loop()
{
  // Continua a leggere da HC-05 e invia Serial Monitor Arduino
  if (BTSerial.available())
    Serial.write(BTSerial.read());

  // Continua a leggere da Arduino Serial Monitor e invia a HC-05
  if (Serial.available())
    BTSerial.write(Serial.read());
}

Commutazione del modulo HC-05 in command mode

Seguono le istruzione per impostare il modulo HC-05 in modalità command mode
Per il modulo HC-05 per passare alla modalità di comando AT, il pin HC-05 (spesso indicato come il Pin Key) deve essere posto a livello HIGH ma come di seguito mostrato.
Quando il modulo l’HC-05 entra in modalità di comando AT, comunicherà di default a 38400 baud rate.

  • Collegare come indicato il modulo HC-05 e Arduino Uno tralasciando per il momento il collegamento il cavo di alimentazione verso il modulo HC-05.
  • Ora collegare la scheda Arduino Uno con il cavo USB al PC e caricare il programma di comunicazione con il modulo.
  • Collegare il filo di alimentazione tra Arduino Uno 3.3V al relativo pin del modulo HC-05.
  • Il LED posto sul modulo HC-05 inizierà a lampeggiare con un intervallo di 2 secondi, segnalando che è in modalità comandi AT e quindi pronto ad accettare comandi per modificare la configurazione e le impostazioni.
  • Per verificare se tutto è collegato correttamente, aprire il Serial Monitor di Arduino IDE e digitare “AT” e cliccare su INVIA. Si dovrebbe ricevere un “OK”
  • Se non si vede un “OK” ricontrollare il cablaggio.

Esempio Comandi AT per HC-05

È possibile inviare comandi AT al modulo HC-05 dal Serial Monitor IDE Arduino mentre sulla scheda Arduino è in esecuzione il programma.
Vediamo di seguito alcuni comandi AT più popolari che permettono per esempio di cambiare il nome del dispositivo, modificare il codice di sicurezza, variare la velocità di comunicazione.
La serie completa dei comandi AT vedere l’elenco.

  • Digitare: “AT + VERSIONE?” per ottenere la versione del vostro HC-05
  • Se si intende cambiare il nome del dispositivo dal default HC-05 per esempio a adrirobot immettere: “AT + NAME = adrirobot
  • Il codice di sicurezza predefinito 1234, se lo volete cambiare ad esempio in 4567 digitare : “AT + PSWD = 4567”
  • Per modificare il baud rate di default ad un valore 115.200, 1 bit di stop, parità 0 immettere: “AT + UART = 115200,1,0
  • Digitando  “AT + ORGL”  imposta il modulo HC-05 alle impostazioni predefinite:

NOTA: (rimuovere le virgolette dal comando AT)

Elenco comandi AT

Comandi ATFunzione del comando
AT Testa la connessione all’interfaccia AT
AT + reset Resetta il nostro componente
AT + version Comunica la versione del firmware
AT + orgl Riporta le impostazioni correnti alle predefinite
AT + addr Il dispositivo ci comunica il proprio indirizzo
AT + name Domandiamo o impostiamo il nome del dispositivo
AT + rname Domandiamo il nome di un dispositivo bluetooth a cui siamo collegati (remoto)
AT + role Domandiamo o impostiamo il ruolo del dispositivo (1=Master / 0=Slave)
AT + class Domandiamo o impostiamo la classe del dispositivo ( Classe of Device CoD)
AT + iac Domandiamo o impostiamo le richieste del codice di accesso
AT + inqm Domandiamo o impostiamo le richieste della modalità di accesso
AT + pswd Domandiamo la password o ne impostiamo l’associazione
AT + uart Domandiamo i parametri UART o li reimpostiamo
AT + cmode Domandiamo la modalità di connessione o la impostiamo
AT + bind Domandiamo o impostiamo l’associazione all’indirizzo del bluetooth
AT + polar Domandiamo o impostiamo la polarità di output del LED
AT + pio Impostiamo o resettiamo un pin di Input/Output (I/O) utente
AT + mpio Impostiamo o resettiamo più pin di I/O utente
AT + mpio? Domandiamo l’I/O di un pin utente
AT + ipscan Domandiamo o impostiamo i parametri di scansione
AT + sniff Domandiamo o impostiamo i parametri di risparmio energetico SNIFF
AT + senm Domandiamo o impostiamo i modi di sicurezza e crittografia
AT + rmsad Elimina un dispositivo autenticato dalla lista
AT + fsad Trova un dispositivo dalla lista dei dispositivi autenticati
AT + adcn Domandiamo il numero totale dei dispositivi dalla lista dei dispositivi autenticati
AT + mrad Domandiamo quale è il dispositivo autenticato utilizzato più di recente
AT + state Domandiamo lo stato corrente del dispositivo
AT + init Inizializziamo il profilo SPP (ricerca)
AT + inq Domandiamo quale sia il dispositivo individuabile più vicino
AT + inqc Cancelliamo la ricerca dei dispositivi individuabili
AT + pair Associazione al dispositivo
AT + link Connessione ad un dispositivo remoto
AT + disc Disconnessione da un dispositivo remoto
AT + ensniff Entriamo in modalità risparmio energetico
AT + exsniff Usciamo dalla modalità di risparmio energetico

Comandiamo un relè con una connessione Bluetooth

Vediamo ora un’applicazione più complessa, in cui tramite l’utilizzo di una speciale APP, possiamo comandare un relè, in questo caso montato su un Modulo KY-019 e leggere la temperatura misurata da un sensore LM35, per specifiche informazioni sul sensore vedere l’articolo relativo.

Componenti necessari

Scheda Arduino UNO R3

Breadboard

Modulo bluetooth HC-05

1 resistenza 1.2 kΩ + 1 da 2.2 kΩ 1/4W

Fili per collegamenti

Modulo KY-019

Sensore LM 35

Oltre ai componenti sopra serviranno

  • Arduino IDE
  • APP Bluetooth Terminal HC-05

Sotto è riportato lo schema dei collegamenti

 

Foto del montaggio realizzato

Sketch HC-05_rele.ino

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
float tempC;
int PinTemp = 0;
int rele = 8;

void setup()
{
  pinMode(rele, OUTPUT);  // questo pin è connesso al relè
  digitalWrite(rele, HIGH);
  Serial.begin(9600);
  BTSerial.begin(38400);  // Velocità di default del modulo HC-05
  Serial.println("Comando rele' e rilevazione temperatuira con LM 35");
  Serial.println("tramite collegamento Bluetooth mod.HC-05");
  Serial.println("By adrirobot");
  delay (2000);
}

void loop()
{
  tempC = analogRead (PinTemp);
  tempC = (5.0 * tempC * 100.0) / 1024.0;
  Serial.println (tempC);
  delay (1000);
  while (BTSerial.available())
  {
    char dato = BTSerial.read(); // "dato" è il valore che viene ricevuto dalla seriale
    switch (dato)
    {
      case 'A': // Se riceve la lettera A
        // accende rele'
        {
          digitalWrite(rele, LOW); // eccito il relè collegato al pin8
          BTSerial.println("Rele' ON");
          Serial.println("Rele' ON");
          break;
        }
      case 'S': // Se riceve la lettera S
        // Spegne rele'
        {
          digitalWrite(rele, HIGH); // Spengo il relè
          BTSerial.println("Rele' OFF");
          Serial.println("Rele' OFF");
          break;
        }
      case 'T': // Se ricevo la lettera T
        // trasmette la temperatura
        {
          BTSerial.print("Temperatura:");
          BTSerial.println(tempC);
          break;
        }
    }
  }
}

App Bluetooth Terminal HC-05

L’applicazione utilizzata è la “Bluetooth Terminal HC-05” è potrà essere scaricata da Google Play.
L’applicazione è compatibile con gli Smartphone Android è compatibile con tutti i controller, come Arduino, Raspberry Pi, AVR, PIC, ARM così come i controllori TI.
Tutto ciò che serve è una connessione adattatore seriale HC-05/ HC-06 con porte seriali dei controllori.
Questa applicazione può inviare e ricevere comandi via Bluetooth in modo da poter eseguire il debug dei sistemi hardware facilmente.

Alcune caratteristiche

  • Pannelli separati per l’invio e la ricezione dei dati.
  • Possibile personalizzate dei pulsanti utilizzati
  • Selezione per specificare le opzioni di invio dei dati. \r \n al termine
  • Monitoraggio ricezione dei dati come HEX o ASCII.

In questo caso si sono utilizzati tre dei tasti, definendo per ognuno la lettera assegnata nel codice di Arduino, da da inviare alla pressione del tasto.

  • ON” Lettera “A
  • OFF” Lettere “S
  •  “Temp.” Lettera “T

A ogni pressione Arduino eseguirà il comando e risponderà con la frase appropriata o con il valore di temperatura letto dal sensore.

Esempio di utilizzo

U n esempio del modulo convertitore seriale/bluetooth HC-05 è visibile nella scheda di controllo del Robot Littlebot.

costruzione robot cingolato