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-05Arduino Uno / Quasar BasicNote
VCC5VIl modulo ha un suo regolatore
GNDGND
TXDD2L'RX della scheda per il Bluetooth
RXDD3 tramite il partitore1 kΩ da D3 a RXD, 2 kΩ da RXD a GND
Arduino Uno Quasar Basic HC-05 5VGND D2D3 VCCGND TXDRXD 1 kΩ 2 kΩ GND ≈ 3,3 V
Il partitore: 1 kΩ tra D3 e RXD, 2 kΩ tra RXD e GND. Su RXD arrivano circa 3,3 V.

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

  1. Alimenta la scheda: il LED dell'HC-05 lampeggia veloce mentre aspetta una connessione.
  2. Sul telefono o sul computer cerca i dispositivi Bluetooth: il modulo di solito compare come HC-05.
  3. Abbinalo con il PIN 1234 (su alcuni moduli 0000).
  4. 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 ON e OFF.
  • 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.

Domande frequenti

Di solito funziona, e molte guide fanno così, ma è consigliato usare un partitore: i pin dei dati dell'HC-05 lavorano a 3,3 V. Usa un partitore con 1 kΩ dal pin di Arduino e 2 kΩ verso GND, che porta i 5 V a circa 3,3 V. Il pin TX dell'HC-05 invece può andare direttamente ad Arduino.

Di solito PIN 1234 (a volte 0000) e 9600 baud in modalità dati. La modalità AT, che si attiva tenendo premuto il tasto all'accensione, usa 38400 baud.

No. iOS non permette ad app e browser di usare i moduli seriali Bluetooth Classic. Per l'iPhone serve un modulo Bluetooth Low Energy e un'app compatibile.

Sì, con Chrome o Edge su computer (dalla versione 117) o con Chrome su Android (dalla 137), grazie a Web Serial. La console web di Quasar funziona così.