Differenze tra le versioni di "HC-05 e HC-06"

Da raspibo.
Jump to navigation Jump to search
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 3: Riga 3:
 
[[File:Hc-05.jpg]]
 
[[File:Hc-05.jpg]]
  
Nella foto potete vedere a sinistra il modulo senza lo zoccolo, i cui pin sono i contatti intorno, a destra la versione più comune, saldata su uno zoccolo con i pin di alimentazione e la seriale libera. Gli zoccoli hanno diverse forme e alcuni (come questo) hanno anche alcuni pin in più con funzioni diverse che cambiano a seconda dello zoccolo.
+
Nella foto potete vedere a sinistra il modulo senza lo zoccolo, i cui pin sono i contatti intorno, a destra la versione più comune, saldata su uno zoccolo con i pin di alimentazione e la seriale libera. Gli zoccoli hanno diverse forme e alcuni (come questo) hanno anche alcuni pin in più con funzioni diverse.
  
 
= Pinout =
 
= Pinout =
  
Essendo la Board spesso saldata su uno zoccolo ed essendo quest'ultimo non standard, non è possibile dare un pinout preciso.
+
Le board hanno il seguente pinout ([http://www.14core.com/working-with-hc05-hc06-to-configure-and-implementations/ immagine tratta da 14core.com])
 +
[[File:Bluetooth-HC06-Versus-HC05-Bluetooth-Module-Comparison-001.jpg]]
 +
 
 +
Essendo la board spesso saldata su uno zoccolo ed essendo quest'ultimo non standard, non è possibile dare un pinout preciso. I pin che troverete sempre sono:
 +
 
 +
* '''Vcc''' e '''GND'''
 +
* '''TXD''' e '''RXD''' (sono TX e RX seriali)
 +
 
 +
Quelli opzionali:
 +
 
 +
* '''Key''' questo pin è collegato al pin della board che deve essere collegato alla 3,3V per entrare in modalità AT, normalmente lo zoccolo ha anche un pulsante che fa la stessa cosa, in mancanza dell'uno e dell'altro dovrete fare ponte con qualcosa di conduttivo fra una sorgente a 3,3V e il pin Key sulla board
 +
* '''State''' questo pin dovrebbe essere alto quando il device è connesso a qualcosa e basso quando non è collegato a niente
 +
* '''EN''' dovrebbe essere l'enable, ma non è chiaro come funzioni
 +
 
 +
Le board hanno anche il collegamento per un LED di stato. Lo zoccolo di solito ne possiede uno. Il LED ha tre stati:
 +
 
 +
* Lampeggia velocemente: la board è accesa e non è collegata a niente
 +
* Lampeggia piano (circa 1s): la board è collegata a qualcosa
 +
* Lampeggia molto piano (circa 2s): la board è in modalità AT
  
 
= Differenze HC-05 e HC-06 =
 
= Differenze HC-05 e HC-06 =
Riga 17: Riga 35:
 
* L'HC-06 è sempre in modalità AT quando non è collegato a un altro dispositivo, mentre l'HC-05 occorre accenderlo mandando 3,3 volt allo speciale pin "key" (gli zoccoli di solito hanno un pin "Key" oppure un pulsante da premere).
 
* L'HC-06 è sempre in modalità AT quando non è collegato a un altro dispositivo, mentre l'HC-05 occorre accenderlo mandando 3,3 volt allo speciale pin "key" (gli zoccoli di solito hanno un pin "Key" oppure un pulsante da premere).
  
* Il pinout è diverso.
+
* Il pinout è diverso (ovviamente s'intende il pinout della board, non quello dello zoccolo).
  
 
= Alimentazione =
 
= Alimentazione =
Riga 66: Riga 84:
  
 
[[File:Hc0506 5.png]]
 
[[File:Hc0506 5.png]]
 +
 +
== bluetoothctl ==
 +
 +
È possibile anche usare questo tool per riga di comando, molto utile se ad esempio siete in collegamento ssh con un Raspberry o se non amate le GUI.
 +
 +
Anzitutto, consiglio di usare l'agente KeyboardOnly, altrimenti potrebbe chiedervi il pairing in un pop-up, e se siete in modalità solo testo c'è il caso che non compaia.
 +
 +
# agent off
 +
 +
# agent KeyboardOnly
 +
 +
Per vedere la lista dei dispositivi bluetooth occorre usare il comando scan.
 +
 +
# scan on
 +
 +
Questo mostrerà gli indirizzi MAC dei dispositivi rilevati.
 +
Per fare il pairing si usa il comando pair:
 +
 +
# pair <indirizzo MAC>
 +
 +
A questo punto dovremo inserire il PIN del dispositivo. Una volta fatto questo il nostro computer e il dispositivo saranno accoppiati. Dando il comando quit si potrà uscire da bluetoothctl. A questo punto apriamo una porta seriale con rfcomm
 +
 +
$ sudo rfcomm connect /dev/rfcomm0 <indirizzo MAC> 1 &
 +
 +
Questo creerà una porta seriale su /dev/rfcomm0 alla quale possiamo collegarci con screen, minicom o qualsiasi altro programma per la comunicazione seriale.
 +
 +
= Cambiare configurazione =
 +
 +
Gran parte di questo capitolo è preso da [http://www.instructables.com/id/AT-command-mode-of-HC-05-Bluetooth-module/ questa guida su Instructables].
 +
Per cambiare configurazione al vostro modulo (ad es. cambiare velocità di trasmissione, nome, pin, ecc.) dovete entrare in modalità AT. L'HC-06 dovrebbe essere sempre in questa modalità, mentre l'HC-05 dev'essere acceso tenendo premuto il tasto "KEY" oppure mettendo a +3.3v il pin key sulla board. Quando è in modalità AT, l'HC-05 lampeggerà a intervalli di 2 secondi circa e potrete mandare i comandi AT alla seriale fisica sulla board. Se non avete un convertitore USB TTL, potete riciclare un Arduino per fare da ponte. Poiché l'Arduino Uno e simili (non il Mega, ad es.) ha una sola porta seriale, dovrete usare una porta seriale emulata via software. Lo sketch sarà più o meno così:
 +
 +
#include <SoftwareSerial.h>
 +
SoftwareSerial mySerial(10, 11); // RX, TX
 +
void setup() {
 +
    Serial.begin(9600);
 +
    pinMode(9,OUTPUT); digitalWrite(9,HIGH);
 +
    Serial.println("Enter AT commands:");
 +
    mySerial.begin(38400);
 +
}
 +
 +
void loop() {
 +
    if (mySerial.available()) Serial.write(mySerial.read());
 +
    if (Serial.available()) mySerial.write(Serial.read());
 +
}
 +
 +
Notate alcune cose di questo codice: mySerial è la software seriale dove andrà collegato il vostro HC, nei pin 10 e 11 (10 è RX e 11 TX, quindi il 10 andrà collegato al TX dell'HC e l'11 al RX). '''In modalità AT il modulo HC comunica a 38400 baud'''.
 +
 +
Ora aprite una seriale (va bene anche quella dell'IDE di Arduino, ricordatevi di mettere come CR e NL come fine linea) a 38400 baud e scrivete:
 +
 +
AT
 +
 +
L'HC dovrebbe rispondervi
 +
 +
OK
 +
 +
Se non lo fa forse avete sbagliato uno dei passi precedenti.
 +
 +
I comandi più utili sono:
 +
* AT+NAME=<nome> cambia nome all'ID Bluetooth
 +
* AT+UART=<baudrate> cambia la velocità della trasmissione Bluetooth (la modalità AT rimane a 38400)
 +
* AT+ROLE=<1:master 0:slave> permette l'HC-05 di essere master o di essere solo slave in una comunicazione
 +
* AT+ORGL ripristina le configurazioni di fabbrica
 +
* AT+PSWD cambia la password
 +
 +
I comandi, se seguiti da ?, dovrebbero dire quale è il valore al momento memorizzato, ad esempio:
 +
 +
AT+UART?
 +
 +
dovrebbe restituire
 +
 +
9600
 +
 +
In [http://cdn.instructables.com/ORIG/FKY/Z0UT/HX7OYY7I/FKYZ0UTHX7OYY7I.pdf questa guida] potete trovare dettagli più approfonditi.

Versione attuale delle 14:06, 1 feb 2021

HC-05 e HC-06 sono due tipi di moduli Bluetooth che ci permettono di trasmettere e ricevere dati tramite l'interfaccia seriale (ma non solo). Sono molto semplici da usare e hanno molteplici utilizzi.

Hc-05.jpg

Nella foto potete vedere a sinistra il modulo senza lo zoccolo, i cui pin sono i contatti intorno, a destra la versione più comune, saldata su uno zoccolo con i pin di alimentazione e la seriale libera. Gli zoccoli hanno diverse forme e alcuni (come questo) hanno anche alcuni pin in più con funzioni diverse.

Pinout

Le board hanno il seguente pinout (immagine tratta da 14core.com) Bluetooth-HC06-Versus-HC05-Bluetooth-Module-Comparison-001.jpg

Essendo la board spesso saldata su uno zoccolo ed essendo quest'ultimo non standard, non è possibile dare un pinout preciso. I pin che troverete sempre sono:

  • Vcc e GND
  • TXD e RXD (sono TX e RX seriali)

Quelli opzionali:

  • Key questo pin è collegato al pin della board che deve essere collegato alla 3,3V per entrare in modalità AT, normalmente lo zoccolo ha anche un pulsante che fa la stessa cosa, in mancanza dell'uno e dell'altro dovrete fare ponte con qualcosa di conduttivo fra una sorgente a 3,3V e il pin Key sulla board
  • State questo pin dovrebbe essere alto quando il device è connesso a qualcosa e basso quando non è collegato a niente
  • EN dovrebbe essere l'enable, ma non è chiaro come funzioni

Le board hanno anche il collegamento per un LED di stato. Lo zoccolo di solito ne possiede uno. Il LED ha tre stati:

  • Lampeggia velocemente: la board è accesa e non è collegata a niente
  • Lampeggia piano (circa 1s): la board è collegata a qualcosa
  • Lampeggia molto piano (circa 2s): la board è in modalità AT

Differenze HC-05 e HC-06

I due device sono molto simili. Nella maggior parte dei casi potete prendere l'uno o l'altro indifferentemente. Le uniche differenze degne di nota sono:

  • L'HC-05 può essere impostato come master, mentre l'HC-06 è solo slave. Questo comporta che entrambi possono ricevere connessioni ma solo l'HC-05 può iniziarne una.
  • L'HC-06 è sempre in modalità AT quando non è collegato a un altro dispositivo, mentre l'HC-05 occorre accenderlo mandando 3,3 volt allo speciale pin "key" (gli zoccoli di solito hanno un pin "Key" oppure un pulsante da premere).
  • Il pinout è diverso (ovviamente s'intende il pinout della board, non quello dello zoccolo).

Alimentazione

I moduli vanno alimentati a 3,3V. Gli zoccoli più comuni permettono anche alimentazioni diverse tramite un regolatore di voltaggio, ma i livelli logici sono sempre a 3,3V.

Collegamento all'Arduino

Potete collegare direttamente la seriale UART dell'Arduino al modulo HC-0X. RX (ricevitore seriale) e TX (trasmittente seriale) di Arduino (pin 0 e 1) vanno collegati rispettivamente al TX e all'RX del modulo Bluetooth (in pratica: dovete incrociarli: RX con TX e TX con RX). Se vi serve solo come ricevente, potete collegare solo il TX dell'HC-0X all'RX dell'Arduino, al contrario se vi serve solo una trasmittente collegate solo l'RX dell'HC-0X al TX dell'Arduino. RX e TX a volte sono scritti RXD e TXD. Non cambia assolutamente nulla.

Se la seriale fisica dovesse essere occupata, è possibile averne una software su due pin diversi con la libreria SoftwareSerial.

Collegamento Bluetooth al PC

Sotto Linux ci sono diversi modi per attivare una comunicazione seriale fra il SO e un dispositivo che permette questo tipo di servizio. La seriale comparirà come file di device nella posizione /dev/rfcommX dove X è un numero che parte da 0. Se abbiamo una sola comunicazione seriale avremo quindi /dev/rfcomm0. A questo file ci si può collegare ad esempio con il comando screen.

# screen /dev/rfcommX <velocità baud>

Occorre essere root o dare il comando con sudo, perché l'utente normale non dovrebbe essere in grado di scrivere su rfcommX.

Prerequisiti

L'utente deve essere nel gruppo "bluetooth". Per aggiungersi al gruppo bisogna editare il file /etc/group e aggiungere il vostro nome al gruppo, troverete qualcosa come

bluetooth:x:<ID>:

dovete aggiungere l'utente dopo i due punti

bluetooth:x:<ID>:utente

per attivare la modifica fate log out e log in

Bluetooth Manager

Bluetooth Manager è il programma che viene aperto di default quando un adattatore Bluetooth USB è collegato al PC. Purtroppo è anche pieno di bug e abbastanza prono a crashare. Nelle ultime versioni pare che vada molto meglio. Nel caso abbiate problemi vi consiglio di chiudere il programma (dovete cliccare col tasto destro sull'icona del Bluetooth sulla barra delle applet oppure killate blueman-manager) e lanciare da un terminale blueman-manager. Vediamo passo passo come fare a creare un collegamento seriale.

Cliccate su "Search" e cercate il dispositivo a cui dovete collegarvi. Se non l'avete rinominato, gli HC si chiameranno HC-05 o HC-06. Nel caso ce ne sia più di uno, cercate di ricordare l'indirizzo fisico, il MAC Address.

Hc0506 1.png

Cliccate col tasto destro e selezionate "Pair". Uscirà un pop up in cui vi verrà chiesto il pin. Se non l'avete modificato normalmente è 1234.

Hc0506 2.png

Una volta avvenuto il pairing, comparirà il simbolo di una chiave vicino all'icona del vostro device Bluetooth. Cliccate di nuovo il tasto destro e selezionate Serial Port.

Hc0506 4.png

Se tutto è andato come doveva, vedrete l'indicazione di quale file di device è la vostra comunicazione seriale. Ora potete aprirlo con screen o altri programmi.

Hc0506 5.png

bluetoothctl

È possibile anche usare questo tool per riga di comando, molto utile se ad esempio siete in collegamento ssh con un Raspberry o se non amate le GUI.

Anzitutto, consiglio di usare l'agente KeyboardOnly, altrimenti potrebbe chiedervi il pairing in un pop-up, e se siete in modalità solo testo c'è il caso che non compaia.

# agent off
# agent KeyboardOnly

Per vedere la lista dei dispositivi bluetooth occorre usare il comando scan.

# scan on

Questo mostrerà gli indirizzi MAC dei dispositivi rilevati. Per fare il pairing si usa il comando pair:

# pair <indirizzo MAC>

A questo punto dovremo inserire il PIN del dispositivo. Una volta fatto questo il nostro computer e il dispositivo saranno accoppiati. Dando il comando quit si potrà uscire da bluetoothctl. A questo punto apriamo una porta seriale con rfcomm

$ sudo rfcomm connect /dev/rfcomm0 <indirizzo MAC> 1 &

Questo creerà una porta seriale su /dev/rfcomm0 alla quale possiamo collegarci con screen, minicom o qualsiasi altro programma per la comunicazione seriale.

Cambiare configurazione

Gran parte di questo capitolo è preso da questa guida su Instructables. Per cambiare configurazione al vostro modulo (ad es. cambiare velocità di trasmissione, nome, pin, ecc.) dovete entrare in modalità AT. L'HC-06 dovrebbe essere sempre in questa modalità, mentre l'HC-05 dev'essere acceso tenendo premuto il tasto "KEY" oppure mettendo a +3.3v il pin key sulla board. Quando è in modalità AT, l'HC-05 lampeggerà a intervalli di 2 secondi circa e potrete mandare i comandi AT alla seriale fisica sulla board. Se non avete un convertitore USB TTL, potete riciclare un Arduino per fare da ponte. Poiché l'Arduino Uno e simili (non il Mega, ad es.) ha una sola porta seriale, dovrete usare una porta seriale emulata via software. Lo sketch sarà più o meno così:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
    Serial.begin(9600);
    pinMode(9,OUTPUT); digitalWrite(9,HIGH);
    Serial.println("Enter AT commands:");
    mySerial.begin(38400);
}

void loop() {
    if (mySerial.available()) Serial.write(mySerial.read());
    if (Serial.available()) mySerial.write(Serial.read());
}

Notate alcune cose di questo codice: mySerial è la software seriale dove andrà collegato il vostro HC, nei pin 10 e 11 (10 è RX e 11 TX, quindi il 10 andrà collegato al TX dell'HC e l'11 al RX). In modalità AT il modulo HC comunica a 38400 baud.

Ora aprite una seriale (va bene anche quella dell'IDE di Arduino, ricordatevi di mettere come CR e NL come fine linea) a 38400 baud e scrivete:

AT

L'HC dovrebbe rispondervi

OK

Se non lo fa forse avete sbagliato uno dei passi precedenti.

I comandi più utili sono:

  • AT+NAME=<nome> cambia nome all'ID Bluetooth
  • AT+UART=<baudrate> cambia la velocità della trasmissione Bluetooth (la modalità AT rimane a 38400)
  • AT+ROLE=<1:master 0:slave> permette l'HC-05 di essere master o di essere solo slave in una comunicazione
  • AT+ORGL ripristina le configurazioni di fabbrica
  • AT+PSWD cambia la password

I comandi, se seguiti da ?, dovrebbero dire quale è il valore al momento memorizzato, ad esempio:

AT+UART?

dovrebbe restituire

9600

In questa guida potete trovare dettagli più approfonditi.