Cos'è l'HC-05
L'HC-05 è un modulo Bluetooth Classic con il profilo porta seriale (SPP): quello che riceve via radio esce dal pin TX come normali dati seriali, e viceversa. Per Arduino è semplicemente una porta seriale.
- L'HC-06 per questo uso funziona allo stesso modo, ma può solo aspettare le connessioni.
- Moduli come l'HM-10 usano il Bluetooth Low Energy: funzionano in modo diverso e non sono trattati qui.
- La portata è di circa 10 m al chiuso.
Pin e tensioni
L'HC-05 si trova di solito su una piccola scheda con sei pin: EN (o KEY), VCC, GND, TXD, RXD e STATE. La schedina ha un suo regolatore, quindi VCC va ai 5V di Arduino.
I pin dei dati però lavorano a 3,3 V. Il TXD dell'HC-05 può andare direttamente ad Arduino, che legge i 3,3 V come HIGH. Per l'RXD dell'HC-05 invece è consigliato non mandare direttamente i 5 V di Arduino: molte guide lo collegano dritto al pin e di solito funziona, ma è fuori dalle specifiche del chip e alla lunga il modulo può scaldarsi o rovinarsi. Basta un partitore di tensione con due resistenze.
5 V × 2 kΩ / (1 kΩ + 2 kΩ) ≈ 3,3 V
Il collegamento
Evita D0 e D1: sono la porta seriale dell'USB, e l'HC-05 lì darebbe fastidio al caricamento dei programmi. Usa altri due pin con SoftwareSerial, per esempio D2 e D3, gli stessi usati dalla console web di Quasar. La libreria ricrea una porta seriale via software: accende e spegne il pin con i tempi esatti di ogni bit e misura quelli in arrivo, quindi per l'HC-05 non cambia niente.
| HC-05 | Arduino Uno / Quasar Basic | Note |
|---|---|---|
| VCC | 5V | Il modulo ha un suo regolatore |
| GND | GND | |
| TXD | D2 | L'RX della scheda per il Bluetooth |
| RXD | D3 tramite il partitore | 1 kΩ da D3 a RXD, 2 kΩ da RXD a GND |
Sulla breadboard: metti la resistenza da 1 kΩ tra D3 e una fila libera, da quella stessa fila porta il filo a RXD e collega la resistenza da 2 kΩ tra quella fila e GND. Non hai la 2 kΩ? Vanno bene anche due da 1 kΩ in serie o una da 2,2 kΩ.
Lo sketch
Questo sketch riceve i comandi dal Bluetooth e accende o spegne il LED sul pin 13. Inoltre ripete tutto sul monitor seriale dell'USB, comodo durante le prove.
#include <SoftwareSerial.h>
SoftwareSerial bt(2, 3); // RX su D2, TX su D3
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
bt.begin(9600); // velocità predefinita dell'HC-05
bt.println("Pronta");
}
void loop() {
if (bt.available()) {
String cmd = bt.readStringUntil('\n');
cmd.trim();
Serial.println("Ricevuto: " + cmd);
if (cmd == "ON") { digitalWrite(13, HIGH); bt.println("LED acceso"); }
if (cmd == "OFF") { digitalWrite(13, LOW); bt.println("LED spento"); }
}
}
SoftwareSerial è affidabile a 9600 baud. Non può ricevere mentre sta trasmettendo: tieni i messaggi brevi e non sommergere la scheda di comandi.
L'abbinamento
- Alimenta la scheda: il LED dell'HC-05 lampeggia veloce mentre aspetta una connessione.
- Sul telefono o sul computer cerca i dispositivi Bluetooth: il modulo di solito compare come HC-05.
- Abbinalo con il PIN 1234 (su alcuni moduli 0000).
- Apri la connessione da un'app o dal browser: quando è collegato, di solito il LED passa a due lampeggi lenti.
Controllarlo dal telefono o dal browser
- Android: qualsiasi app di terminale seriale Bluetooth può inviare
ONeOFF. - Browser: Chrome ed Edge possono aprire le porte seriali Bluetooth con Web Serial (Chrome 117+ su computer, Chrome 137+ su Android). La console web di Quasar usa proprio questo: pin, PWM, servo e comandi vocali tramite l'HC-05, senza installare nulla.
- iPhone: iOS non permette ad app e browser di usare i moduli seriali Bluetooth Classic, quindi l'HC-05 non si può usare da iPhone.
Problemi comuni
- Caratteri strani: la velocità non coincide. L'HC-05 usa 9600 baud di fabbrica.
- La scheda non riceve niente: TX e RX sono invertiti. Il TXD del modulo va al pin RX della scheda (D2 nello sketch).
- Il caricamento non funziona: l'HC-05 è su D0/D1. Spostalo su D2/D3.
- Si collega ma non risponde: controlla che lo sketch usi gli stessi pin del collegamento e che GND sia in comune.
- Cambiare nome, PIN o velocità: si usano i comandi AT. Tieni premuto il tasto del modulo mentre lo accendi per entrare in modalità AT (38400 baud), poi invia per esempio
AT+NAME=Quasar. I comandi esatti dipendono dalla versione del firmware.
