v 0.1 - Author: Mirco Piccin aka pitusso
La connessione seriale ai moduli BT permette di inviare dati dal pc/smartphone/altro ad Arduino, in modalita wireless.
In questa parte vederemo solo come fare ad instaurare la connessione da Linux (in modalità GUI e CLI), e da Windows.
Per quel che riguarda gli smartphone, la procedura è molto semplice e per ora non trattata.
Perchè la ricerca dei moduli abbia successo, è necessario che questi siano configurati come Slave.
Nella sezione relativa all’interfacciamento, vedremo come utilizzare questa connessione seriale per interagire con Arduino da pc (Linux) e da smartphone (Android).
Per gli esempi Linux viene utilizzata una macchina Debian Squeeze, con Gnome 2.3 come desktop manager.
Per gli esempi Windows viene utilizzata una macchina Windows 7.
su linux è possibile connettersi in 2 modi:
- usando interfaccia grafica
- utilizzando CLI
Assicurarsi di avere installati i pacchetti bluez, bluetooth e blueman.
Se si utilizza un portatile, assicurarsi che il bluetooth sia attivato.
Accertarsi di avere installato il pacchetto Blueman [2].
Selezionando l’icona di blueman-manager sulla barra delle applicazioni, effettuare una ricerca :
una volta terminata la ricerca, selezionare il dispositivo ed effettuare il setup
qui avviene la fase di pairing con la richiesta di inserimento del pin (ricordiamo che di default il pin è 1234)
definiamo quindi a quale servizio vogliamo connetterci.
In questo caso a noi interessa la connessione seriale (oltretutto la sola disponibile):
ci viene segnalato il caso di connessione avvenuta con successo, e il relativo device seriale creato, sia da barra degli strumenti:
che da blueman-manager:
Una volta chiusa la connessione, è possibile ripristinarla in questo modo:
Dev B è il nome del servizio offerto dal modulo BT, associato alla seriale
Linux - Utilizzo Command Line Interface
Innanzitutto assicurarsi di avere installati i pacchetti base necessari, in particolarte bluez e bluetooth.
Se si utilizza un portatile, assicurarsi che il bluetooth sia attivato.
Tutti i comandi, se non specificato diversamente, si possono eseguire come user normale (no root). Per approfondire il funzionamento dei singoli comandi, è sufficiente utilizzare la pagina di manuale :
$ man <comando>
Come prima cosa effettuare uno scan alla ricerca di dispositivi bt::
$ hcitool scan
Scanning ...
00:12:01:07:01:40 pitusso05
la scansione ha trovato il modulo con MAC 00:12:01:07:01:40, che ha nome pitusso05.
Ora interroghiamo il modulo, per capire che tipo di servizi offre:
$ sdptool records 00:12:01:07:01:40
Service Name: Dev B
Service RecHandle: 0x10000
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Quel che si vede, è che ha un servizio chiamato Dev B (si può vedere lo stesso nella sezione GUI sopra), che altro non è che una Porta Seriale.
Il numero di canale utilizzato è 1.
In specifico, quel che interessa a noi è il protocollo RFCOMM [2], che fornisce una porta seriale emulata, sopra a L2CAP [1].
Il passo successivo è quindi di creare una entry nel file di configurazione rfcomm.
Il file in questione è :
/etc/bluetooth/rfcomm.conf
Per poterlo modificare è necessario avere i permessi di root
# nano /etc/bluetooth/rfcomm.conf
...
rfcomm6 {
bind no;
device 00:12:01:07:01:40;
channel 1;
comment "Modulo BT - pitusso05";
}
...
nella modifica del file, abbiamo creato una nuova voce rfcommX (il numero assegnato è arbitrario, di solito incrementale rispetto alle entry già presenti).
Di base, il parametro bind specifica se deve essere attivata la connessione non appena il device è acceso; il paramtero device specifica il MAC del device BT; il parametro channel specifica il canale su cui è disponibile il servizio (vedi sopra); il parametro comment è del tutto arbitrario.
Dopo aver salvato il file rfcomm.conf, è necessario riavviare i servizi bluetooth.
# /etc/init.d/bluetooth restart
Stopping bluetooth: bluetoothd.
Starting bluetooth: bluetoothd.
Ora si dovrebbe trovare un nuovo device:
/dev/rfcomm6
Questo sarà il device seriale associato al modulo BT.
Per effettuare la prima connessione (e quindi gestire il pairing), è sufficiente tentare la connessione al modulo:
$ cat /dev/rfcomm6
Poichè non abbiamo effettuato ancora il pairing, i possibili scenari sono 2.
Se non abbiamo installato bluetooth-manager / blueman-manager, ovvero dei tool di gestione grafica, questo comando darà come output:
cat: /dev/rfcomm6: Connection refused
Il settaggio di PIN da command line non è supportato, si utilizzerà pertanto il pin helper fornito da blueman-applet (o bluetooth-applet). Si aprirà una finestra in popup che ci chiederà il pin:
Portebbe altresì aprirsi la finestra di blueman-manager, con il nuovo device in lista, da configurare (vedi sopra i passaggi).
Dopo il pairing, il modulo sarà associato al pc, e pertanto non verrà richiesto più il pin.
Windows
Se si utilizza un portatile, assicurarsi che il bluetooth sia attivato.
dalla barra degli attrezzi (come si chiama? :-D), selezionare l’icona del BT, e selezionare “Aggiungi un dispositivo”
Selezionare dalla lista il dispositivo con cui ci si vuole collegare
scegliere di immettere il pin per il pairing
ed inserire quindi il pin
Al termine di questa operazione, il pairing è di fatto avvenuto.
Viene quindi presentato un prospetto del device e dei servizi a disposizione
In questo caso ci vengono mostrate 2 COM associate al modulo BT.
Queste 2 nuove COM le ritroveremo anche nel pannello di gestione dei Dispositivi:
In realtà, la porta che a noi interessa, è quella associata al servizio RFCOMM.
Per capire di quale si tratta, possiamo verificare le proprietà del device, da pannello di gestione dispositivi BT:
In questo caso specifico, si vede che la porta che a noi interessa è la COM26.
Per verificare l’avvenuta connessione, inviamo dei dati verso e da il modulo BT.
Una volta effettuato il pairing, utilizzare uno degli strumenti citati nella sezione 2 (Putty, GTKTerm, CLI ): la configurazione è la seguente
- da un lato, aprire una connessione con il device dell’adattatore usb2serial
- dall’altro, aprire una connessione con la seriale BT.
Sarà possibile inviare stringhe da una consolle all’altra
es:
Lato Windows apertura Putty su COM seriale via bt (nel caso specifico COM26)
Lato Linux, apertura GTKterm su /dev/ttyUSB1 (device associato all’adattatore)
Invio striga “ciao pitusso” da putty:
ricezione stringa su GTKTerm, e invio stringa “hello pitusso”
ricezione stringa su Putty:
[2] http://en.wikipedia.org/wiki/Bluetooth_protocols#Radio_frequency_communication_.28RFCOMM.29
[3] http://www.gentoo.org/doc/en/bluetooth-guide.xml
[4] http://debian-bluetooth.blogspot.it/
Mirco Piccin aka pitusso, pictux@gmail.com