Puoi leggere nell’HC-05 At Command alcuni dei comandi utili per “ri-programmare” il tuo modulo.
Uno dei moduli bluetooth più utilizzati con Arduino è l’HC-05, complice il suo basso costo e la semlicità di utilizzo.
Il vero problema che potresti avere è che tutti i moduli sono impostati in fabbrica con il medesimo pin “1234” che espone le tue applicazioni al rischio di accesso indesiderato e bloccante.
Come sai infatti il modulo HC-05 esegue il paring, associazione, solo con un dispositivo alla volta per cui se qualcuno si connette al tuo progetto prima di te potrebbe impedirti la connessione fino a quando non rilascia la connessione.
Ma i comandi AT non ti servono solo per variare il codice pin di accesso come leggerai in questo articolo ma riguardano anche il ruolo e la velocità di comunicazione del dispositivo.
HC-05 At Command mode
I comandi AT da utilizzare li ho trovati in questo link in una pagina stile wiki. In questo articolo ne userò alcuni che ho provato.
Inizia dai collegamenti per i quali puoi seguire questo semplice schema:
in cui il modulo bluetooth hc-05 è collegato ad un convertitore USB-Seriale, anche se diverso da quello realmente da me utilizzato, è il più simile presente in Fritzing.
Altra piccola differenza tra lo schema e il mio collegamento “reale” è il microswitch che ti agevola nel portare il modulo in modalità comandi ( command mode ), cosa che io ho eseguito usando un cavetto da breadboard direttamente al pin 34 del modulo:
indifferentemente da come colleghi il pin 34 è importante che questo pin sia connesso al pin VCC ( +5v ) al momento dell’alimentazione.
Portando il pin 34 del modulo HC-05 a Vcc in fase di alimentazione del modulo ottieni che il led invece di lampeggiare velocemente inizia a lampeggiare con una frequenza di circa 2sec che ti indica la modalità comandi sul monitor.
In questa condizione puoi collegarti con un terminale seriale al modulo hc-05 at command ed impartire tutti i comandi che ti servono per la nuova configurazione.
Siccome l’IDE arduino ha il monitor seriale come terminale seriale puoi usarlo per programmare l’HC-05 AT Command impostando come velocità di connessione 38400 ed entrambi i caratteri di controllo:
a questo punto se tutto è collegato in modo corretto puoi procedere con il primo comando:
la cui risposta è un semplice “OK”:
che ti conferma di aver eseguito correttamente l’accesso al modulo e la connessione via seriale.
Secondo comando che puoi utilizzare è AT+VERSION? che chiede al modulo la versione del firmware presente:
la cui risposta nel mio caso è stata:
Terzo comando che puoi utilizzare ti restituisce l’indirizzo hw del modulo:
la cui risposta, nel modulo che ho utilizzato per l’esperimento è stata:
Quarto HC-05 AT commend che puoi utilizzare è AT+NAME? con cui chiedi di visualizzare il nome con cui vedrai il dispositivo bluetooth sul computer o smartphone:
La risposta, anche se già la conosci, è:
ma puoi comunque usare questo stesso comando per cambiare il nome del dispositivo; ecco come:
la cui risposta è solo un “OK” per dirti che il comando è stato recepito:
se vuoi controllare l’impostazione puoi usare nuovamente il comando AT+NAME?
ed otterrai:
da cui vedi subito che il nome del device è cambiato da HC-05 a “Mauro”, nel mio caso.
Un altro HC-05 AT command è AT+ROLE? che ti permette di sapere il ruolo ( Master o Slave ) in cui si trova il modulo al momento in cui lo interroghi:
la risposta è, come puoi vedere nella tabella riportata nei comandi at ( 0- Slave 1-Master 2-Slave-Loop ) come puoi immaginare il tuo modulo sarà configurato come:
al momento della produzione.
Se volessi eleggere il tuo modulo a Master potresti impostarlo con questo comando AT+ROLE=1
Tornando ai comandi utili è giunto il momento di cambiare il pin usato come password, prima verifica il pin attuale:
la risposta sarà il pin che già conosci:
ma puoi cambiarla con il comando AT+PSWD=nuovo_pin come nella schermata seguente:
a cui riceverai solo una conferma con il solito “OK”, per verificarla puoi utilizzare di nuovo il comando AT+PSWD?
il nuovo pin “0000” è impostato, certo non è più sicuro di quello precedente ma serve solo come esempio per spiegare come si imposta un nuovo pin.
Ultimo comando che potrebbe servirti riguarda la velocità di comunicazione seriale quando il modulo sarà in modalità di lavoro e quindo NON in HC-05 AT Command, che rimarrà sempre a 38400 anche se la velocità di lavoro cambia, diversamente da come hai visto sul modulo HC-06 nell’articolo dedicato a quel modulo.
Con il comando AT+UART? puoi chiedere al modulo di indicarti il valore correntemente impostato:
la risposta potrebbe essere simile alla seguente:
che come noti è differente dal modello hc-06 in quanto espressa in baud_rate,bit,parità anche questi ultimi due valori possono essere cambiati:
e la risposta sarà il consueto “OK”, per cui puoi verificare il valore impostato con il medesimo comando di interrogazione:
Infine non ti resta che provare come viene visto il dispositivo bluetooth hc-05 at command dal computer o dal tuo smartphone:
Ora non ti resta che modificare tutti i nomi e pin dei device bluetooth che intendi utilizzare sui tuoi progetti ed associarli ai tuoi dispositivi di controllo preferiti.
36 commenti
1 ping
Vai al modulo dei commenti
non c’è un comando per rendere nn visibile il nome del hc-05?
è anche una sicurezza
Autore
Ciao Antonio,
intendi un comando che renda invisibile il bluetooth o che ti permetta di cambiarlo in modo che sia differente da quello di default?
Salve Mauro,
si può collegare ad arduino nano invece del converitore(che non ho ) e come?
Grazie
Nino
Autore
Ciao Nino,
si puoi farlo. Segui gli articoli su come collegare un dispositivo seriale ad arduino, non cambia con il nano.
Ciao Mauro,
sto provando senza successo a fare uno sketch con il quale un modulo hc-05 impostato come master cerca i mac address dei dispositivi bluetooth nei dintorni, ma non funziona.
Secondo te è possibile realizzarlo o no?
Autore
Ciao Maurizio,
la funzione scan non l’ho mai provata, tuttavia ti direi che è possibile magari mettendo il centrale come slave e gli altri come master in modo da eseguire la scansione dal centrale.
ciao è possibile usare l’ hc-05 per far diventare un amplificatore con i fili… bluetooth… e come?
Autore
Ciao Davide,
non ho mai esplorato le possibilità audio dell’HC-05, probabilmente non ne possiede.
Se avessi una scheda master hc 05,
quante schede potrei abbinare come slave?
Autore
Ciao Gabriele,
io ho provato un solo slave connesso ad ogni singolo master.
ciao! spiegazione interessante, se possibile desidererei sapere se questo modulo può essere usato in maniera indipendente… mi spiego….. ho una montatura eqautoriale della celestron, una cg5 un po’ vecchiotta, la sua pulsantiera ha un ingresso seriale tx-rx- gnd a cui collegando un cavo o seriale diretto da pc o usb-seriale da notebook, si può comandare a distanza la stessa usando un planetario sul pc, nel mio caso ho mac ed uso equinox con cui posso fare molte cose, dall’inseguimento a far scattare la macchina fotografica, ma lo spostamento del telescopio sui vari oggetti nel cielo avviene al momento attraverso una connessione via filo… un cavo usb- serial…. viste le micro dimensioni della schedina ho visto che potrebbe essere alloggiata ed alimentata dentro la pulsantiera stessa, e mi chiedevo se questo modulo hc-05 può lavorare da solo, gli do corrente, lo collego alla porta seriale della pulsantiera ed in teoria….. dovrei comandare il tele da bluetooth! eliminando un cavo… che non è poco tra tutti quelli che servono per una serata fotografica! grazie a chi mi risponderà! un saluto Roberto.
Autore
Ciao Roberto,
non ho compreso come vuoi utilizzare questo modulo, considera che è un bluetooth seriale.
grazie per la risposta intanto….. cerco di spiegarmi meglio…. ho un telescopio con il goto, la cui pulsantiera ha una porta seriale per poter dialogare con un pc sia per l’aggiornamento firmware che per il comando del puntamento, a me interessa il puntamento del telescopio verso gli oggetti della volta celeste, attraverso un planetario che è installato sul pc ( io ho mac ed uso Equinox ma è molto efficiente anche Stellarium) ci si può collegare alla pulsantiera del telescopio attraverso un cavo seriale, a questo punto interviene per il collegamento un cavo usb- seriale che ho e funziona egregiamente, si connette alla porta della pulsantira e da pc seleziono un oggetto e con i suoi comandi fa puntare il telescopio… fin qui nulla di eclatante, il fatto di aver scoperto queste schedine ( ho la hc-06, hc-05, hm10, hm17…. una bella sfilza!) miè balenata l’idea di inserirla denrto la pulsantiera stessa al fine di evitare un cavo penzoloni tra pc e telescopio, ho visto che ci comandano pure le stampanti 3d, stampanti laser e chissà quant’altro e mi è sembrato fattibile usarla come interfaccia per il mio telescopio, ora la ho settata slave, baud 9600,0,0 ed ho cambiato il nome e la pass (0000) si connette al pc, il programma la rileva e fa il collegamento, ma il programma o la scheda o la programmazione…. non so… a quanto pare non riesce a connettersi al telescopio, i collegamenti che ho fatto però sono diretti tx->rx rx->tx gnd a gnd dell’alimentazione… sbaglio qualche cosa?? per quello la mia domanda era se è possibile usare questa hc-05 da sola….grazie per la possibile risposta….
Autore
Ciao Roberto,
quando scrivi ” il programma la rileva e fa il collegamento” a quale programma ti riferisci?
il planetario, il programma che permette lo spostamento del telescopio, o Stellarium o Equinox , ma anche altri… nelle impostazioni rilevano la porta (seriale??) bluetooth, quando tentano di collegarsi al telescopio, si vede la scheda che smette di lampeggiare, l’indicatore Bluetooth sul mio mac indica il collegamento… in teoria il collegamento tra scheda e computer avviene….ma a quanto pare la trasmissione dei dati non avviene…. credo…..
forse qui mi riesco a far capire meglio… a scrivere non è facile! https://youtu.be/7d7lcQ60UQ4
Autore
Ciao Roberto, vedi il mio commento precedente.
Autore
Ciao Roberto,
potrebbe essere un problema di baud rate, devi controllare quale sia la velocità attesa dal telescopio e quale quella impostata sui moduli.
Ciao, ho problemi con il modulo hc-05, non mi invia risposte com’è possibile ??
Autore
Ciao Antonio,
cosa intendi per “non mi invia risposte com’è possibile ??” sei riuscito a collegartici? La velocità di connessione è corretta?
Ciao Antonio,
ho acquistato due moduli HC-05 a 5 volt da collegare ad un circuito con 8 relais che vorrei comandare via bluetooth.
Dato che il modulo HC-05 dispone di almeno 7 I/O programmabili vorrei intrefacciarli tramite un driver uln2003 ai relais per controllarli inviando i relativi comandi AT all’HC-05 tramite uno smartphone utilizzando un emulatore di terminale bluetooth.
Secondo te è fattibile?
Al momento sono riuscito solo a fare il pairing del modulo con il mio tablet, invece tutti i tentativi di comunicare in command mode con l’HC-05 (sia con un adattatore usb-seriale che con un arduino) sono falliti perchè dal modulo non ricevo risposte ( ho provato sia con baudrate 38400 che 9600) anche se apparentemente il modulo va in modalità AT command perchè il led rosso lo segnala lampeggiando ad intervalli di 2 sec.
Grazie per l’attenzione.
Autore
Ciao Max,
chi è Antonio?
Non ho mai provato a indirizzare i pin dell’HC-05 con comandi AT, il firmware lo supporta?
Il primo passo è di certo riuscire a controllare il dispositivo via Seriale da un Arduino o altra interfaccia USB-Seriale, così da impartirgli i comandi di test.
Ciao Mauro,
con un Arduino Micro ho costruito un’interfaccia per collegare dei lettori di rfid zootecnici ad una maschera di input su PC. Il lettore rfid legge il codice lo trasmette via bluetooth ad un modulo HC-05 collegato ad Arduino Micro il quale legge il codice, lo manipola e lo trasmette in emulazione di tastiera al PC.
Per verificare che il modulo HC-05 si sia collegato ad un “sistema autorizzato”, all’inizio delle comunicazioni il lettore rfid trasmette una password che Arduino riconosce e da quel momento in poi iniziano a comunicare.
Effettuando tutte le prove con un cellulare, che emulava il lettore rfid (che non ho), non ho riscontrato nessun problema ma non appena ho cercato di collegare il vero lettore rfid questo non si collega al modulo HC-05.
Per verificare la funzionalità del lettore rfid ho anche provato a far comunicare il lettore con un cellulare e questi comunicavano normalmente.
Ma nel cellulare, sia che lo usi per collegarmi al lettore rfid che al modulo HC-05, naturalmente devo prima cercare il “committente” tra quelli associati e poi iniziare le comunicazioni.
Sicuramente devo settare il modulo HC-05 in una modalità tale che si connetta sempre automaticamente a qualunque apparecchiatura bluetooth rilevi in zona, poi sarà la password a permettere le comunicazioni.
Sottolineo che le apparecchiature rfid potrebbero cambiare e quindi anche il loro indirizzo bluetooth.
Puoi aiutarmi o consigliarmi qualcosa di specifico da leggere?
Autore
Ciao Claudio,
non sono certo di aver compreso il tuo problema, tu desideri usare il modulo HC05 come Master o Slave?
Di default è Slave, infatti il cellulare ti fa da Master e si collega all’HC-05.
Probabilmente anche il modulo RFID è Slave, motivo per cui con il cellulare funziona.
Si, ma mentre con il cellulare c’è: una fase di individuazione del modulo – l’inserimento della password – l’inserimento del modulo individuato nella lista dei moduli riconosciuti dal cellulare – l’inizializzazione di una sessione di colloquio, con un qualsiasi programma bluetooth, previa selezione del modulo tra quelli della lista. Io vorrei settare il modulo HC-05 in modo tale che si colleghi immediatamente a qualunque apparecchiatura bluetooth sia nelle vicinanze, tanto siamo in aperta campagna. I miei alunni, a cui ho sottoposto il problema, dicono che bisogna settare il modulo HC-05 in modalità “prostituta” perché deve “andare” con chiunque. (scusa la battuta)
Autore
Ciao Claudio,
simpatici i tuoi alunni 🙂 e bella la battuta ma se stiamo parlando di Bluetooth inferiore alla versione 4.0 ?
Te lo chiedo perché ho dedotto che stessimo parlando di Bluetooth < 4.0 dal fatto che tu stia usando un HC-05 e abbia aggiunto un commento in tale articolo. Se usi un BLE o Bluetooth 4.0, o superiore, avrai da gestire tutta l'autenticazione ed il protocollo è completamente differente. Prova a darmi maggiori info e più dettagliate su cosa tu stia facendo e che tipo di protocolli siano in gioco.
Ciao Mauro,
hai mai tentato di connettere Arduino con Mindwave Mobile tramite un modulo HC-05 usando i comandi AT?
Sei riuscito?
Autore
Ciao Ang,
purtroppo no.
Ciao, giusto per informazione i comandi At possono essere dati portando semplicemente pio34 in alto.
Il led continuerà a lampeggiare nello stesso modo, molto utile per eseguire cambiamenti a caldo di tutti i parametri del modulo H5. Quello che è importante è aprire la seriale con gli stessi baud impostati nell’ultima configurazione.
Certo che se voglio sapere il valore di uart impostato sono obbligato ad entrare in modalità AT reale eseguendo la procedura che hai descritto.
Se per esempio vuoi cambiare il nome del modulo H5 da android puoi dire al controllore di alzarti il 34 ed invii il comando at.
Dico questo in quanto ho dei sistemi che lavorano cosi e credo che questa informazione possa essere utile.
Autore
Grazie Bruno, la tua informazione è molto interessante.
Ti va di spiegarlo meglio con un articolo e delle schermate di esempio ?
Ciao Mauro io ho un problema con i moduli HC-05 in mio possesso: pur entrando in modalita AT (lampeggio lento del led) non rispondono ad alcun comando. Io ho provato sia con un convertitore usb-seriale (con i livelli impostabili a 3,3v che ho verificato corretti e sia con Arduino con restenze di limitazione). Queste prove le ho fatte sia tenendo premuto il pulsante, che collegando il famoso pin 34 a 3,3 volts (pin 12). I moduli non in modalitrà AT funzionano perfettamente, il baud rate in AT mode è impostato a 38400, i comando sono seguiti da cr+lf.
A questo punto non so più cosa fare; in un primo momento pensavo la colpa fosse dei moduletti cinesi che mancavano del supporto AT, ma visto che ne ho presi da più di un fornitore anche questa ipotesi non mi sembra giusta. Cosa posso ancora provare?
Ciao Pierluigi
Autore
Ciao Pierluigi,
hai provato a invertire TX ed Rx ? Magari lo hai già fatto ma a volte è risolutivo.
Prova anche altre velocità di baud rate.
Ciao Mauro, ti seguo da 2 anni e devo dire che è anche grazie a te e ai tuoi tutorial che comprendo sempre più cose utili che mi inspiarano a creare numerosi progetti con Arduino, di cui ne sono fiero e abbastanza contento. Volevo chiederti uma cosa riguardo ai moduli BT HC 05 e 06, la domanda è questa, potrei utilizzare una coppia di Slave e Master da far funzionare senza la gestione di un MCU, ma solo utilizzare i due moduli opportunamente programmati , velocità 9600 bps e pairing , in modo da rendere wireless una porta Com di un PC dove si collega uno strumento che appunto viene gestito dal software che gira sotto Win tramite la Rs232 del PC. In pratica evitare di attaccare via cavo questa macchina e renderla wireless. Ovviamente dovrò utilizzare dei convertitori ttl tipo rs232 o similari, questo non e un problema, ho anche in casa gli FT232… dici che sia possibile realizzarla? E se si, puoi darmi una dritta? Grazie anticipatamente e complimenti vivissimi per tutto il lavoro che fai e per il tempo che dedichi a pubblicare ogni tua esperienza.
A presto. Gaetano.
Autore
Ciao Gaetano,
si penso sia possibile, il modulo dovrebbe poter essere messo in modalità Master/Slave e preassociato, se non ricordo male.
Inoltre essendo un modulo seriale, meglio l’HC05, con un convertitore non dovrebbe essere difficile ottenere quello che ti occorre.
Online dovresti trovare molto materiale in merito e se raggiungi il tuo obiettivo mi farebbe piacere poterti offrire la possibilità di raccontarlo sul blog a beneficio ddi altri che desiderano fare la medesima cosa.
Ciao Mauro, avrei da chiederti una cosa. Nei vari comandi AT per HC-05, ne esiste uno per invertire la logica STATE in modo che sia HIGH all’accensione e diventi LOW quando inizia la comunicazione? Io ne ho uno che è impostato così ma gli altri 3 che ho, sono LOW e diventano HIGH ad inizio collegamento. Ti chiedo questo perchè avrei necessità di caricare il firmware su arduino via BT, in questo modo, tramite un semplice condensatore, senza aggiungere transistor, ecc., portei inviare il comando di reset all’Atmega 328, condizione indispensabile per avviare l’upload
Grazie, Domenico
Autore
Ciao Domenico,
non ne sono sicuro ma penso sia il firmware a stabilire tale logica, hai provato a cercare tra i comandi AT disponibili per l’HC-05?
[…] « HC-05 AT command […]