Configurare la STM32F103C8T6 per la connessione Bluetooth con modulo HC-05

Abbiamo visto già sul sito la STM32F103C8T6 per programmarla con la IDE Arduino. In questo articolo impareremo a configurare il modulo Bluetooth HC-05 e programmarlo per fare accendere e spegnere un Led tramite smartphone. Vi ricordiamo che per caricare lo sketch sulla dev-board sarà necessario un modulo adattatore FTDI e adoperare la seriale per caricare il codice.

Componenti

Per realizzare questo tutorial e imparare la base di configurazione del Bluetooth su STM32, abbiamo necessità ovviamente della STM32F103C8T6, di un modulo Bluetooth HC-05, un LED con una resistenza da 220OHM e il modulo USB FTDI per poter caricare lo sketch sulla scheda. Adopereremo due sulle tre seriali disponibili, la prima per collegarci la FTDI e la seconda per collegarci il modulo HC-05.

Lista componenti su Amazon:



Collegamenti

La STM32F103C8T6  è dotata di 3 seriali, la prima useremo per collegarci il modulo FTDI, assicurandoci che quest’ultimo abbiamo il proprio jumper di alimentazione posizionato sui 5V.

Il pin RX del modulo va connesso al pin A9, il pin TX al pin A10, mentre il Vcc ai 5V della STM32F103C8T6 e il GND al GND. Riportiamo i collegamenti come da tabella:

STM32F103C8T6 FTDI
5VVCC
GNDGND
A9RX
A10TX

Il modulo Bluetooth HC-05 va invece connesso con la seconda seriale, in modo che i pin A2 e A3 della scheda vadano rispettivamente ai pin TX e RX. Il modulo può essere alimentato a 5V, quindi possiamo collegarlo all’omonimo pin della STM32. Infine, il Led va connesso al pin B15.

HC-05

Una volta collegata la STM32F103C8T6  al modulo FTDI, dobbiamo, con attenzione, spostare uno dei jumper della STM32 dalla posizione 0 a 1 per predisporlo in Program Mode e premere il pulsante RESET. Vi rimandiamo, nuovamente, alla guida che realizzando tempo fa per ulteriori dettagli e chiarimenti riguardo l’uso del modulo FDTI e il relativo caricamento dello sketch.



Codice

Passiamo ora al codice, scaricabile a questo LINK, iniziando a dichiarare il pin a cui è collegato il Led e creando due costanti per gestire lo stato di accensione e spegnimento del Led.


#define LED PB15

const char stato0 = 'S';
const char stato1 = 'A';

Nel VOID SETUP avviamo la seconda seriale e facciamo stampare un messaggio di avvio quando un dispositivo sarà connesso e inizierà a comunicare con il modulo HC-05. Concludiamo dichiarando la direzione del pin a cui abbiamo connesso il Led.


Serial2.begin(9600);
Serial2.println("Avvio Bluetooth:");

pinMode(LED, OUTPUT);

Nel VOID LOOP controlliamo che la comunicazione seriale sia stata avviata e mentre è attiva legge il contenuto del monitor seriale memorizzandolo su una variabile. Se il contenuto della comunicazione seriale coincide con uno dei due stati dichiarati, il Led si accenderà o si spegnerà.


while(Serial2.available() > 0) {

char msg = Serial2.read();
if(msg == stato1) {
digitalWrite(LED, HIGH); // Accendo LED
Serial2.println("LED ON");
}

if(msg == stato0) {
digitalWrite(LED, LOW); // Spengo LED
Serial2.println("LED OFF");
}
}

Passiamo ora allo scopo pratico del codice. Per far comunicare la dev-board con uno smartphone, scaricheremo l’applicazione Serial Bluetooth Terminal dal Google Play Store.

Quando avremo finito di caricare il codice sulla STM32 e aver installato l’APP sul nostro smartphone, apriamo le impostazioni del Bluetooth e cerchiamo un dispositivo chiamato HC-05. Selezioniamolo e inseriamo il pin 1234.

Apriamo ora l’applicazione Serial Bluetooth Terminal e, assicuratoci che i due dispositivi siano connessi, iniziamo a digitale il comando A per accendere il Led e S per spegnerlo. Come conferma appariranno i messaggi di esecuzione del comando e il Led dovrebbe accendersi e spegnersi.