In questo articolo parleremo di un modulo Bluetooth interessantissimo e prodotto da un'azienda specialista del settore: Amp'ed RF Technology. Il modulo è il BT53, si presenta in un formato agevolmente saldabile su una qualunque scheda di sviluppo e può essere controllato tramite una serie di comandi in formato AT. Nel corso dell'articolo vedremo le diverse varianti del modulo disponibili, i profili Bluetooth supportati e qualche schema applicativo.
Il modulo BT53
Per prima cosa parliamo un pò del modulo Bluetooth; più che di un modulo Bluetooth si tratta di un micromodulo poiché misura solamente 11.6 x 13.5 mm e può essere indistintamente e agevolmente utilizzato su schede professionali e su progetti di hobbistica grazie al suo montaggio superficiale (vedi Figura 1). Sarà, infatti, sufficiente realizzare le opportune piazzole di saldature sul PCB della vostra board e il modulino potrà poi essere saldato tramite saldatura manuale oppure utilizzando processi industriali (pick and place).
Il modulo BT53 supporta il protocollo Bluetooth sia in modalità classica sia in modalità Low Energy, in base allo standard Bluetooth 4.1. Per chi fosse interessato a scoprire qualcosa in più sul Bluetooth Low Energy ed i relativi vantaggi, ecco il link ad un altro interessante articolo nel blog.
Sul PCB è già integrata un'antenna SMD, perciò il modulo si può ritenere completo e non necessita di nessun altro componente esterno. Ovviamente l'elettronica del modulo viene protetta da uno schermo metallico che riduce gli effetti di rumore e disturbi sul circuito di trasmissione e ricezione radio.
Dal punto di vista hardware, sotto lo schermo troviamo un microprocessore Cortex-M4 che lavora ad 84 MHz, ci sono 256 kbytes di memoria Flash e 64 kbytes di RAM. Il modulino dialoga attraverso una UART che si può spingere fino ad una baudrate di 2M baud ed in aggiunta mette a disposizione 7 pin di input/output da utilizzare come si vuole. Su questi sette pin general purpose possono essere instanziate una SPI, una I2C e due canali ADC a 12 bit.
In Figura 2 è visibile un disegno del modulo con i suoi relativi pin e le dimensioni. Il modulo necessita di un'alimentazione compresa tra 2.2 V e 4.8 V, quindi una 3.3 V è perfetta, non si può utilizzare una 5 V, tuttavia, alcuni pin risultano tolleranti se pilotati a questa tensione, in particolare sono i pin della UART di controllo e i 7 pin general purpose. Il modulo per funzionare correttamente necessita di un clock fornito dall'esterno, per esempio da un'altra logica di controllo (ad esempio il micro che comanda il modulo tramite la UART) oppure tramite un oscillatore dedicato. Questo ingresso di clock è a bassa frequenza, parliamo di 32.768 kHz, ma anche a bassa tensione, infatti, necessita di un livello alto di massimo 1.8 V. Niente paura perché il modulo a bordo dispone anche di un LDO a 1.9 V la cui tensione è disponibile su un pin di uscita del modulo e può essere utilizzato per alimentare una circuiteria di conversione. La circuiteria di conversione dovrà anche preoccuparsi di gestire i segnali della UART in uscita dal modulo e diretti verso il micro, questi escono con un livello alto di 1.9 V e perciò, nel caso di microcontrollori a 3.3 V, dovranno essere convertiti.
Poiché al giorno d'oggi molti dispositivi Bluetooth sono dedicati alla riproduzione audio, si pensi ad esempio ad auricolari, cuffie o speaker, il modulo permette sui 7 pin general purpose di realizzare un'interfaccia I2S che può pilotare direttamente un codec audio, come per esempio il WM8904 di Cirrus Logic di Figura 3.
Come avrete notato dall'immagine di Figura 3 il modulo viene identificato come BT53S. Questo perché il modulo BT53 viene "declinato" in 3 versioni: BT53H, BT53S e BT53i. Rispettivamente, sono le High performance version, Audio application version e Updated high performance version. In Tabella 1 sono riassunte le differenze tra le tre versioni del modulo.
Features | BT53H | BT53S | BT53i |
CPU Speed | 84MHz Max. | 84MHz Max. | 100MHz Max. |
CPU Memory | 256K Flash, 64K RAM | 256K Flash, 64K RAM | 512K Flash, 128K RAM |
Bluetooth Profile Support | SPP, IAP, HID, OBEX | SPP, IAP, A2DP, HFP, AVRCP, HID, OBEX | SPP, IAP, HID, OBEX |
Bluetooth Stack | Amp’edUP, BT v4.1 + BLE | Amp’edUP, BT v4.1 + BLE | Amp’edUP, BT v4.1 + BLE |
Apple iOS Support | Supported | Supported | Supported |
AT Command Interface | abSerial | abSerial | abSerial |
Multiple Connections | 4 Max. | 4 Max. | 4 Max. |
Link Throughput | 1.5M bps max | 1.5M bps max | 1.5M bps max |
Serial Interface | UART, I2S, I2C, SPI | UART, I2S, I2C, SPI | UART, I2S, I2C, SPI |
General I/O Lines | 7 | 7 | 7 |
A/D Lines | 4 | 4 | 4 |
Tabella 1: Confronto tra le diverse versioni del modulo BT53
Profili Bluetooth
Dalla Tabella 1 si evince che, in base all'applicazione che si intende realizzare, è opportuno scegliere un modulo piuttosto che un altro anche perché non tutti i moduli BT53 supportano tutti i profili Bluetooth. Se si opta per le versioni premium sarà possibile utilizzare i profili SPP, IAP, HID e OBEX. Se invece ci si orienta sulla versione S si avranno in aggiunta i profili A2DP, HFP e AVRCP. In generale il profilo più utilizzato dagli hobbisti è l'SPP ma conviene considerare anche l'HID per la sua semplicità e compatibilità.
Tramite il profilo SPP è possibile abbinare alla connessione Bluetooth una porta seriale virtuale, qualunque cosa si trasmetta su questa porta seriale può arrivare al modulo, e qualunque cosa il modulo sia in grado di trasmettere viene ricevuta dall'applicazione su host remoto collegata alla porta seriale. Praticamente si va ad utilizzare una porta seriale virtuale per dialogare con il modulo.
Il profilo IAP non è nient'altro che il profilo SPP per i dispositivi Apple e consente di implementare una trasmissione dati tra un dispositivo iOS e un accessorio, rispetto alla classica SPP ha delle funzionalità supplementari, come il download automatico di applicazioni e la relativa esecuzione. Lo svantaggio in questo caso è che chi realizza un accessorio che sfrutta il protocollo IAP deve anche premunirsi della relativa certificazione MFi (Made for iPhone) che prevede hardware supplementare e royalty da pagare.
Il profilo HID, invece, permette di realizzare una interfaccia testuale, il dispositivo, in sostanza, emulerà il funzionamento di una tastiera. Ovviamente in questo caso il flusso della comunicazione è forzatamente unidirezionale, tuttavia, si possono trasferire anche grandi quantità di caratteri in un tempo relativamente breve. Solitamente può essere utile questa interfaccia se si intende raccogliere una certa quantità di informazioni in poco tempo. Queste informazioni potrebbero essere inserite anche attraverso la tastiera di sistema ma, inserite attraverso un dispositivo Bluetooth arrivano anche da remoto e in tempo rapidissimo, per esempio può essere il caso di un lettore di codici QR o di un tag reader NFC. Il profilo HID è universale quindi supportato anche dai dispositivi iOS ed è quindi il metodo più semplice per trasmettere dati ad un iPhone. Oltre alla tastiera è possibile emulare anche un mouse o un joystick.
Il profilo OBEX serve per lo scambio di oggetti binari tra dispositivi, ovvero lo scambio di file; infatti OBEX è l'abbreviazione di "OBject EXchange".
Il profilo A2DP, abbreviazione di "Advanced Audio Distribution Profile", serve se tramite il modulo Bluetooth vogliamo trasmettere musica o più in generale un flusso audio, mentre HFP ("Hands-Free Profile") è il profilo nel caso si vogliano realizzare dispositivi per l'utilizzo in auto e in grado di dialogare con uno smartphone. Se poi si vuole realizzare un telecomando Bluetooth per controllare un dispositivo di riproduzione audio o video, il profilo giusto è AVRCP ("Audio/Video Remote Control Profile"). [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2616 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.