Il modulo 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.
Indice
Descrizione
Il 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, codice HMTHC05 ricordo che chi inserirà il mio codice sconto “ADRIROBOT” riceverà uno sconto.
Altra possibilità è il HC05 modulo Bluetooth Transceiver – con Pin Strip, presso il sito Futura Elettronica, codice 2846-HC05STRIP
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <SoftwareSerial.h> SoftwareSerial BTSerial(10, 11); // RX | TX void setup() { pinMode(9, OUTPUT); // pin connesso al n.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 AT | Funzione 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #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.