Moduli Bluetooth HC-05
Se vogliamo far comunicare 2 schede Arduino con moduli Bluetooth è necessario configurare i moduli in modo che possano trasmettere dati tra loro.
In particolare è necessario configurare uno di questi come MASTER e l'altro come SLAVE e per farlo possiamo utilizzare i comandi AT.
Vediamo innanzitutto come collegare il modulo bluetooth ad Arduino per metterlo nella modalità programmazione. Li collegheremo uno alla volta e li imposteremo uno come modulo MASTER e l’altro SLAVE.
Come si vede dall'immagine abbiamo connesso i PIN RX e TX ai pin 11 e 10 di Arduino in modo da lasciare liberi i PIN RX e TX di Arduino per utilizzare la connessione seriale con il PC. Per fare ciò abbiamo utilizzato la libreria SoftwareSerial che ci permette di utilizzare i pin 10 e 11 per la comunicazione con il modulo bluetooth.
Abbiamo quindi collegato il pin KEY del modulo bluetooth al pin 9 di Arduino.
Colleghiamo il PIN GND del modulo bluetooth con il PIN GND di Arduino, mentre lasciamo per un attimo scollegato il PIN Vcc.
Carichiamo quindi lo sketch seguente sul nostro Arduino.
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
void setup()
{
pinMode(9, OUTPUT); // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
digitalWrite(9, HIGH);
Serial.begin(9600);
Serial.println("Enter AT commands:");
BTSerial.begin(38400); // HC-05 default speed in AT command more
}
void loop()
{
// Keep reading from HC-05 and send to Arduino Serial Monitor
if (BTSerial.available())
Serial.write(BTSerial.read());
// Keep reading from Arduino Serial Monitor and send to HC-05
if (Serial.available())
BTSerial.write(Serial.read());
}
Questo sketch ci permette di eseguire dei comandi AT sul modulo bluetooth e leggere le risposte.
Una volta caricato lo sketch su Arduino eseguiamo dei comandi AT per impostare il primo dei 2 moduli bluetooth come SLAVE:
- apriamo il monitor seriale del programma Arduino
- assicuriamoci che sia impostato il valore “Both NL & CR” e la velocità di connessione a 9600
- quando resettiamo Arduino (aprendo il monitr seriale Arduino si resetta), dovremmo vedere apparire sul monitor seriale la scritta: “Enter AT commands:”
- connettiamo il PIN Vcc del modulo bluetooth al PIN 5Vdi Arduino, dovremmo vedere il led di Arduino lampeggiare lentamente (ogni circa 2 secondi)
- scriviamo nel monitor seriale il comando AT e premiamo INVIO (bottone Send del monitor seriale)
- scriviamo quindi il comando AT+ROLE=0; questo configurerà il modulo bluetooth come SLAVE. Per verificare il comando appena eseguito digitiamo AT+ROLE? e dovremmo vedere restituito: +ROLE:0
- ora eseguiamo il comando AT+BIND= e premiamo INVIO. In questo modo rimuoviamo qualunque binding esistente. Per verificare eseguiamo il comando AT+BIND? e dovremmo ottenere: +BIND:0:0:0
- eseguiamo quindi il comando AT+ADDR? per ottenere l’indirizzo MAC del nostro modulo (avrà la forma 2837:3:92); segnamoci questo indirizzo perchè ci servirà nella programmazione del modulo master
Scolleghiamo il primo modulo bluetooth senza togliere tutti i collegamenti su Arduino in quanto ci serviranno per programmare il secondo modulo.
Per impostare il secondo modulo bluetooth eseguiamo invece i seguenti comandi:
- apriamo il monitor seriale del programma Arduino
- assicuriamoci che sia impostato il valore “Both NL & CR” e la velocità di connessione a 9600
- quando resettiamo Arduino (aprendo il monitr seriale Arduino si resetta), dovremmo vedere apparire sul monitor seriale la scritta: “Enter AT commands:”
- connettiamo il PIN Vcc del modulo bluetooth al PIN 5Vdi Arduino, dovremmo vedere il led di Arduino lampeggiare lentamente (ogni circa 2 secondi)
- scriviamo nel monitor seriale il comando AT e premiamo INVIO (bottone Send del monitor seriale)
- scriviamo quindi il comando AT+ROLE=1; questo configurerà il modulo bluetooth come MASTER. Per verificare il comando appena eseguito digitiamo AT+ROLE? e dovremmo vedere restituito: +ROLE:1
- ora eseguiamo il comando AT+BIND=2837,3,92 sostituendo l’indirizzo MAC che abbiamo segnato precedentemente e premiamo INVIO. Questo forzerà il nostro modulo master a connettersi automaticamente all’altro nostro modulo. Eseguendo il comando AT+BIND? dovremmo vedere restituito 2837:3:92.
A questo punto quando accenderemo i 2 moduli questi si connetteranno tra di loro indipendentemente da quale accendiamo per primo. Tutto quello che ti servirà per utilizzarli è aprire una connessione seriale e comunicare attraverso di essa.
Ottima guida solo che io essendo un principiante non so come aprire una connessione seriale tra i 2 moduli, e quindi comunicare. Mi potresti dire anche quest'ultimo come farlo? grazie in anticipo.
RispondiEliminaCiao, grazie. E' sufficiente fare uno sketch in cui crei un'istanza della classe SoftwareSerial, come ad esempio:
RispondiEliminaSoftwareSerial BTSerial(10, 11); // RX | TX
e poi quando devi scrivere dal modulo bluetooth A al modulo bluetooth B utilizzi:
BTSerial.write("stringa") //sostituendo a "stringa" il comando che vuoi inviare
e sul modulo B resti in ascolto leggendo quanto arriva sulla seriale con il comando:
if (BTSerial.available())
String comando=BTSerial.read();
Fammi sapere se hai problemi.
C.
mi scusi, ma a me non funziona, non è per cortesia, potrebbe mettere lo sketch di arduino
Eliminagrazie
Salve scusami se scrivo dopo tutto questo tempo. neanche a me funziona. per caso hai risolto? se e si come? grazie mille
EliminaComplimenti per la guida !
RispondiEliminaSeguendo le tue indicazioni, sono riuscito ad entrare in modalità AT con il modulo HC-05 e Arduino Uno. Ti segnalo che nel mio caso ci sono riuscito solo premendo il 'tastino' sulla scheda HC-05 , collegato l'alimentazione e solo dopo aver alimentato il modulo ho rilasciato il 'tastino'. Con questa sequenza di operazioni i due led presenti sull' HC-05 hanno iniziato a lampeggiare lentamente e tramite la console seriale sono riuscito ad eseguire i comandi AT. Ti segnalo questa variante. Saluti
scusi ma non funziona
RispondiElimina