Impariamo come gestire connessioni seriali Bluetooth tra due device Arduino.
Negli articoli precedenti ci siamo occupati di definire la struttura del protocollo seriale: abbiamo collegato i pin 0 ed 1 di Arduino incrociandoli, poi abbiamo utilizzato il protocollo RS-232 attraverso un opportuno amplificatore di segnale per garantire una maggiore copertura esente da disturbi elettromagnetici. Quindi siamo passati alle connessioni USB per velocizzare ulteriormente le trasmissioni tra due ricetrasmittenti.
Purtroppo non è sempre possibile “stendere un filo” tra un trasmettitore ed un ricevitore, e sappiamo quanto lavorare a livello di protocolli di rete sia impegnativo per Arduino.
Fortunatamente il mondo degli shield per Arduino produce continuamente interessanti piccoli gadgets che ci consentono di risolvere piccoli (o complicati) problemi legati alla logistica. Nel caso particolare vedremo come l’utilizzo di due piccoli ricetrasmettitori Bluetooth basati su HC-05 possano trarci d’impaccio in modo semplice ed elegante.
In questo articolo parleremo del circuito di collegamento, lasciando al prossimo l’onere di descrivere più in profondità la storia ed il funzionamento dei sistemi Bluetooth. Al momento ci è sufficiente sapere che il Bluetooth è il sostituto moderno della comunicazione seriale.
Il transceiver HC-05
Un ricetrasmettitore è un dispositivo in grado di trasmettere e ricevere informazioni, che di solito sono ottenute tramite onde radio. HC-05 è un dispositivo Bluetooth che può essere impostato tanto in trasmissione quanto in ricezione, mentre il modello HC-06 ha solo funzionalità di slave. Per i test di questo articolo utilizzeremo una coppia di device HC-05 fornitoci da AZ-Delivery, in quanto più ricchi di documentazione (giungono con un manuale d’utilizzo in formato e-book ed una serie di esempi e librerie pronte all’uso) e testati in modo approfondito prima della messa in vendita.
Si è scelto questo modulo in quanto in grado di passare rapidamente dalla modalità Master a quella Slave. Benché il modulo sia alimentato con una tensione di 5V, i pin RX e TX utilizzano un livello logico di 3.3V.
La disposizione dei pin può variare a seconda del fornitore, mentre in genere le indicazioni sulla serigrafia del chip mantengono il loro significato, ovvero:
- EN – Enable pin
- Vcc (o 5V) alimentazione
- GND – Ground o massa comune
- TX – Pin di trasmissione
- RX – Pin di ricezione
- State – Pin di stato
Come nel caso dell’adattartore USB, ciò che a noi interessa sono i 4 pin legati all’alimentazione ed alla ricetrasmissione. Ricordiamo inoltre che, a causa della configurazione del sistema di ricetrasmissione, occorre progettare un piccolo partitore di tensione che riduca a 3.3V il voltaggio verso il pin RX del modulo HC-05 per entrambi i moduli.
Saranno sufficienti un paio di resistori da 1000-1200Ω e 2000-2200Ω secondo lo schema seguente (si è utilizzato un Arduino Nano per una questione di comodità e portabilità):
Configurazione del transceiver HC-05
La scheda Bluetooth del nostro esempio viene fornita con un LED, che lampeggerà secondo il seguente schema:
- 2 secondi acceso, 2 secondi spento – Modalità AT
- Lampeggi continui – Attesa di connessione
- 2 lampeggi ogni 2 secondi – Accoppiato
L’idea di base resta quella di configurare il nostro sistema di ricetrasmissione in modalità trasparente, tale che i due moduli di trasmissione e ricezione si “riconoscano” automaticamente senza bisogno di modifiche del software. Per gestire Arduino con connessioni seriali Bluetooth sarà necessario procedere prima alla configurazione del device HC-05 tramite i comandi AT.
Purtroppo lo spazio è tiranno, e siamo costretti a dividere l’esempio in due puntate.Nel prossimo articolo affronteremo il discorso Bluetooth in modo più approfondito, e termineremo la configurazione del nostro sistema di trasmissione.
A risentirci tra sette giorni!
Link utili
- Ricetrasmettitore Bluetooth HC-05
- Adattatore seriale FT232RL da USB a TTL
- Adattatore seriale MAX232 su RS232
- Paolo Di Leo – Seriale e Arduino
Le puntate precedenti:
- Comunicazione seriale tra due schede Arduino – #01
- Serial Arduino – Ricezione e trasmissione dati – #02
- Hardware vs. Software serial – The Arduino choices #03
- Connessione seriale-USB e protocolli su Arduino #04
Join our groups on Telegram…