Utilizzare i moduli Bluetooth con Arduino
Scarica il firmware
Tra le funzionalità più importanti di Arduino, c’è quella di poter comunicare con altri dispositivi tramite l’interfaccia seriale di cui è dotato il micro-controller.
Tale funzionalità può essere ampliata grazie alla connessione BlueTooth, nella quale lo scambio di dati avviene, anziché tramite un cavo di collegamento, attraverso segnali trasmessi via radio, quindi in modalità senza fili. Questa caratteristica ci permette di realizzare progetti molto interessanti, consentendo ad esempio di interagire con le apparecchiature tramite lo smartphone.
Vediamo quindi come sfruttare questa interessante tecnologia.
I moduli per la comunicazione BlueTooth più diffusi sono quelli denominati HC-05 o HC-06.
La differenza tra i due sta nel fatto che l’HC-05 ha delle funzionalità in più, in quanto può funzionare anche come master. Nella maggior parte dei casi, però, questo non è necessario. E’ quindi possibile utilizzare indifferentemente uno o l’altro di questi modelli.
I moduli HC-06 dispongono di 4 terminali, 2 per l’alimentazione (VCC e GND) e 2 per i dati (TX ed RX). I modelli HC-05 hanno 2 terminali in più, che possono essere tranquillamente ignorati. I 4 terminali centrali corrispondono infatti con quelli dell’HC-06.
Il terminale TX del modulo andrebbe collegato all’RX dell’Arduino e viceversa. Questi terminali non possono però essere collegati direttamente tra loro. Questo perché nonostante il modulo BlueTooth sia alimentato a 5V, le sue linee dati funzionano a 3.3 V. E’ quindi necessario adattare i livelli dei segnali, sia per evitare di danneggiare i componenti che per ottenere una comunicazione affidabile.
Vediamo quindi come effettuare i collegamenti.
Per fare le cose a regola d’arte, occorrerebbe usare un convertitore di livelli logici. Spesso però, se non si ha a disposizione uno di questi dispositivi, si ripiega su un metodo alternativo, che funziona comunque bene, a patto di essere consapevoli di ciò che si sta facendo.
NOTA: Prima di iniziare i collegamenti vi consiglio di caricare su Arduino un sketch vuoto. E’ sufficiente aprire un nuovo file e caricarlo così com’è. Può sembrare una precauzione inutile, ma vedremo che serve ad evitare possibili problemi.
Dal momento che i terminali TX ed RX sono sfruttati dall’Arduino sia per la comunicazione USB che per il caricamento del firmware, sarebbe preferibile lasciarli liberi per queste funzioni. Per questo motivo, al posto dei terminali 0 e 1, che corrispondono alla porta seriale hardware del micro-controller, utilizzeremo rispettivamente il terminale 2 come RX e il 3 come TX, andando poi ad emulare una porta seriale virtuale tramite la libreria SoftwareSerial.
Il segnale TX proveniente dall’Arduino, in questo caso quindi il piedino 3, deve essere collegato all’ingresso RX dell’HC-06. Per evitare che la tensione eccessiva vada a danneggiare il modulo utilizzeremo un partitore resistivo. Si possono usare usare semplicemente 3 resistenze da 1 k collegate in questo modo.
L’uscita TX dell’HC-06 può invece essere collegata direttamente all’RX dell’Arduino, in questo caso quindi il piedino 2. Essendo l’uscita a 3.3V, non c’è nessun rischio per l’Arduino.
Questa soluzione è quindi accettabile, e funziona nella maggioranza dei casi, bisogna però fare attenzione a due aspetti.
Per prima cosa dobbiamo considerare che sebbene 3.3 V sia un livello di segnale sufficiente, siamo comunque un po’ al limite delle specifiche dell’Arduino, per cui potrebbe verificarsi delle perdite di dati, soprattutto a bitrate elevati.
In secondo luogo, e questo è più importante, potrebbe capitare di caricare per sbaglio uno sketch che porta il piedino RX a livello alto. In questo modo ci ritroveremmo 5 V sul piedino TX dell’HC-06, col rischio di danneggiarlo. E’ per questo motivo che vi ho consigliato di caricare uno sketch vuoto prima di iniziare i collegamenti.
Oltre a collegare le 2 linee di dati, occorre ovviamente alimentare il modulo. Per fare questo basta semplicemente collegare i terminali GND e VCC alle linee GND e 5 Volt prelevate dall’Arduino.
A questo punto il circuito è pronto per essere utilizzato. Di seguito trovate alcuni sketch utili per testarne il funzionamento.
Commenti
Posta un commento