HC-05 con Arduino

Descrizione

Una lezione incentrata sull'utilizzo del modulo Bluetooth HC-05 con Arduino per stabilire una comunicazione wireless tra uno smartphone e una scheda elettronica. Esamineremo come collegare e configurare il modulo Bluetooth, comprenderemo il funzionamento della comunicazione seriale e impareremo a inviare comandi da dispositivi mobili utilizzando le app "Arduino Bluetooth Controller" e "BT Car Controller". Si tratta di un'introduzione pratica al controllo remoto di progetti Arduino, ideale per veicoli robotizzati, dispositivi smart, sistemi di domotica e applicazioni di elettronica fai-da-te.

Componenti necessari:

  • 1x Arduino UNO
  • 1x Modulo Bluetooth HC-05
  • Cavi jumper (e breadboard opzionale)

Immagine del modulo

1 Immagine del modulo HC-05 2 Immagine del modulo HC-05

Modulo Bluetooth HC-05 con Arduino: come funziona e come configurarlo

Che cos'è il modulo Bluetooth HC-05?

Il modulo Bluetooth HC-05 permette ad Arduino di comunicare senza fili con smartphone, tablet, computer e altri dispositivi Bluetooth.
Il suo funzionamento è molto semplice: riceve dei dati tramite Bluetooth e li invia ad Arduino attraverso una comunicazione seriale.
Può quindi essere utilizzato per controllare robot, macchinine, luci, motori e sensori direttamente da un'applicazione.
L'HC-05 non controlla personalmente i componenti elettronici: fa da “ponte” tra Arduino e il dispositivo Bluetooth.

Collegare il modulo HC-05 ad Arduino

I pin più importanti del modulo sono VCC, GND, TXD e RXD.
Sulle comuni schede HC-05 dotate di regolatore, il pin VCC può essere collegato ai 5V di Arduino, mentre GND deve essere collegato a GND.
Il pin TXD dell'HC-05 deve essere collegato al pin 10 di Arduino, che nel nostro esempio verrà utilizzato per ricevere i dati.
Il pin 11 di Arduino deve invece essere collegato al pin RXD dell'HC-05.
I collegamenti TX e RX sono quindi incrociati: chi trasmette deve essere collegato a chi riceve.

È consigliabile inserire un partitore di tensione tra il pin 11 di Arduino e il pin RXD del modulo.
Arduino Uno trasmette infatti segnali da 5V, mentre l'ingresso RX dell'HC-05 utilizza una logica da circa 3,3V.
Il pin TXD dell'HC-05 può invece essere collegato direttamente al pin 10 di Arduino.

Capire la modalità normale e la modalità AT

Il modulo HC-05 può funzionare in due modalità differenti.
La modalità comunicazione viene utilizzata normalmente per inviare dati tra Arduino e lo smartphone.
La modalità AT serve invece per modificare le impostazioni interne del modulo, come il nome Bluetooth, il PIN di abbinamento, la velocità seriale e il ruolo master o slave.
In pratica, la modalità AT è una piccola area di configurazione nascosta del modulo.

Attivare la modalità AT dell'HC-05

Prima di alimentare il modulo, tieni premuto il piccolo pulsante presente sulla scheda HC-05 oppure porta il pin KEY o EN a livello alto, seguendo le indicazioni della tua scheda.
Mantenendo premuto il pulsante, collega l'alimentazione.
Quando il LED lampeggia lentamente, generalmente una volta ogni due secondi circa, il modulo si trova in modalità AT.
La modalità AT completa dell'HC-05 utilizza normalmente una velocità di 38400 baud.

Su alcune schede potrebbe essere necessario mantenere premuto il pulsante anche durante l'invio dei comandi.
Se il LED continua a lampeggiare molto velocemente, probabilmente il modulo è ancora nella normale modalità di abbinamento.

Caricare il codice Arduino per i comandi AT

Questo codice crea un collegamento tra il Monitor Seriale del computer e il modulo HC-05.
Tutto quello che scriverai nel Monitor Seriale verrà inviato al modulo Bluetooth, mentre le sue risposte verranno mostrate sullo schermo.

bluetooth_module.ino
// https://nemiatools.com
#include <SoftwareSerial.h>

// RX Arduino, TX Arduino
// HC-05 TXD → Arduino pin 10
// Arduino pin 11 → partitore → HC-05 RXD
SoftwareSerial hc05(10, 11);

void setup() {
  // Comunicazione tra Arduino e il computer
  Serial.begin(9600);

  // Comunicazione con HC-05 in modalità AT
  hc05.begin(38400);

  Serial.println("HC-05 pronto in modalita AT");
  Serial.println("Seleziona Entrambi NL e CR nel Monitor Seriale");
}

void loop() {
  // Mostra sul computer le risposte dell'HC-05
  if (hc05.available()) {
    Serial.write(hc05.read());
  }

  // Invia all'HC-05 ciò che viene scritto dal computer
  if (Serial.available()) {
    hc05.write(Serial.read());
  }
}

Dopo aver caricato il codice, apri il Monitor Seriale di Arduino IDE.
Imposta la velocità del Monitor Seriale su 9600 baud e seleziona l'opzione Entrambi NL e CR.
I 9600 baud riguardano la comunicazione tra computer e Arduino, mentre i 38400 baud presenti nel codice riguardano la comunicazione tra Arduino e HC-05 in modalità AT.

Cambiare nome, password e impostazioni dell'HC-05

Per verificare che tutto funzioni, scrivi il comando AT nel Monitor Seriale e premi Invio.
Se il collegamento è corretto, il modulo dovrebbe rispondere con OK.

AT

Per cambiare il nome Bluetooth del modulo, utilizza il comando seguente.
Al posto di NEMIATOOLS puoi inserire il nome che preferisci.

AT+NAME=NEMIATOOLS

Per controllare il nome attualmente salvato puoi utilizzare:

AT+NAME?

Per modificare il PIN di abbinamento, utilizza il comando seguente.
Nell'esempio il nuovo PIN sarà 2580.

AT+PSWD=2580

Per leggere il PIN attualmente impostato:

AT+PSWD?

Per utilizzare il modulo con uno smartphone è consigliabile lasciarlo in modalità slave.
Il valore 0 indica la modalità slave, mentre il valore 1 imposta il modulo come master.

AT+ROLE=0

Per controllare il ruolo attualmente impostato:

AT+ROLE?

La velocità utilizzata durante la normale comunicazione Bluetooth può essere impostata con il comando seguente:

AT+UART=9600,0,0

Il primo valore indica una velocità di 9600 baud.
Il secondo valore indica l'utilizzo di un solo bit di stop.
Il terzo valore disattiva il controllo di parità.
Questa è una configurazione semplice e adatta alla maggior parte dei progetti Arduino con HC-05.

Per controllare la velocità seriale salvata:

AT+UART?

Puoi anche leggere la versione del firmware e l'indirizzo Bluetooth del modulo:

AT+VERSION?
AT+ADDR?

Se hai modificato troppe impostazioni e vuoi ripartire dalla configurazione originale, puoi utilizzare:

AT+ORGL

Attenzione: questo comando ripristina le impostazioni originali del modulo e cancella le modifiche effettuate.
Per riavviare il modulo tramite comando puoi invece utilizzare:

AT+RESET

Uscire dalla modalità AT e collegare lo smartphone

Dopo aver salvato le impostazioni, scollega l'alimentazione del modulo.
Ricollegalo senza premere il pulsante e senza attivare il pin KEY.
Il LED dovrebbe tornare a lampeggiare rapidamente, indicando che il modulo sta aspettando una connessione.
Apri le impostazioni Bluetooth dello smartphone e cerca il nuovo nome scelto, per esempio NEMIATOOLS.
Quando richiesto, inserisci il nuovo PIN configurato tramite il comando AT+PSWD.

Se lo smartphone aveva già memorizzato il modulo con il vecchio nome o con il vecchio PIN, potrebbe essere necessario eliminare il precedente abbinamento e ripetere la procedura.

Controllare Arduino con un'app Bluetooth

Dopo aver associato lo smartphone all'HC-05, puoi utilizzare un'applicazione compatibile con la comunicazione seriale Bluetooth.
Queste applicazioni inviano ad Arduino semplici lettere, numeri o parole.
Arduino può quindi interpretare ogni carattere come un comando: per esempio una lettera può far avanzare una macchinina, mentre un'altra può accendere una luce.

Le applicazioni che noi di NEMIATOOLS utilizziamo maggiormente sono Arduino Bluetooth Controller e BT Car Controller.
Arduino Bluetooth Controller offre diverse interfacce, pulsanti e terminali per inviare comandi al modulo.
BT Car Controller presenta invece un'interfaccia pensata soprattutto per robot e macchinine Bluetooth.

Arduino Bluetooth Controller: Play Store
BT Car Controller: Play Store

Utilizzare il modulo nella modalità normale

Dopo la configurazione, il modulo non deve più comunicare a 38400 baud, ma alla velocità impostata con il comando AT+UART.
Se hai utilizzato AT+UART=9600,0,0, nel programma Arduino dedicato al tuo progetto dovrai quindi impostare la comunicazione con l'HC-05 a 9600 baud.
Nel codice precedente sarebbe sufficiente sostituire:

hc05.begin(38400);

con:

hc05.begin(9600);

Il modulo dovrà inoltre essere acceso normalmente, senza premere il pulsante e senza attivare la modalità AT.

Risolvere i problemi più comuni

Se il comando AT non restituisce OK, controlla prima di tutto che il modulo sia realmente in modalità AT.
Verifica inoltre che TXD sia collegato al pin 10, che RXD sia collegato al pin 11 e che Arduino e HC-05 condividano lo stesso GND.
Controlla che il Monitor Seriale sia impostato su 9600 baud e sull'opzione Entrambi NL e CR.

Se compaiono caratteri incomprensibili, probabilmente è stata selezionata una velocità seriale errata.
Se lo smartphone non accetta il nuovo PIN, elimina il vecchio abbinamento Bluetooth e associa nuovamente il modulo.
Se alcuni comandi non rispondono, prova a mantenere premuto il pulsante del modulo mentre li invii.

Una volta completati questi passaggi, il tuo modulo Bluetooth HC-05 con Arduino sarà pronto per essere utilizzato in robot, macchinine radiocomandate, sistemi domotici e molti altri progetti wireless.