Salve, tempo fa ho acquistato un modulo bluetooth hc-05 (http://www.ebay.it/…/HC-05-modulo-Bluetooth-T…/330928828354…) ma non riesco in alcun modo a configuarlo. Ho seguito varie guide ma non riesco ad accendere un led.
Per esempio ho provato questo programma:
Ovviamente ho collegato rx con il pin 0 e tx con 1. Il problema è che con un app qualsiasi mi riseva hc-05 ma quando provo ad inviare qualcosa non succede nulla. Qualcuno sa aiutarmi?
In conformità al regolamento, punto 7, edita (in basso a destra del post, bottone More -> Modify) il tuo post e racchiudi il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra), poi ...
... NON puoi usare i pin 0 ed 1 se usi il monitor seriale (... a parte che con gli HC-05 e sempre bene usare la SoftwareSerial perché la maggior parte da problemi sui pin della vera seriale) dato che va in conflitto il HC-05 e il convertitore seriale <-> USB con cui ti colleghi al PC.
Usa la SoftwareSerial (... consiglio i pin 10 RX e 11 TX) e sistema il tuo programma.
Ho riscritto il programma quasi del tutto utilizzando la softwareSerial ma non va lo stesso.
#include <SoftwareSerial.h> //Includiamo la libreria per la gestione delle istruzioni di utilizzo del modulo bluetooth
const int rxpin = 10; //Andiamo ad assegnare al pin 2 l’indirizzo di ricezione dati (e lo colleghiamo al pin TXD del modulo)
const int txpin = 11; //Assegnamo invece al pin 3 l’indirizzo di trasmissione dati (collegandolo al pin RXD del nostro componente
const int led = 13;
SoftwareSerial bluetooth(rxpin, txpin); //Assegnamo ad un nome (bluetooth) i suoi pin di ricezione e trasmissione, per facilitarci la scrittura del codice
void setup(){
Serial.begin(38400); //Inizializziamo l’interfaccia seriale al baud rate dell’AT-mode
bluetooth.begin(38400); //Inizializziamo l’interfaccia del modulo bluetooth sempre al baud rate riferito alla modalità AT
pinMode(led, OUTPUT);
}
void loop(){
if(bluetooth.available()){ //Se il bluetooth riceve qualche dato
char c = bluetooth.read(); //Il dato viene posto in una variabile di tipo char, così da essere adatta sia a lettere che a numeri
Serial.write(c); //Si scrive sul monitor seriale i dati presi dalla variabile, così da poterli osservare
if (c == 'a') {
digitalWrite(led,HIGH);
}
else if (c == 'b')
digitalWrite(led, LOW);
if(Serial.available()){ //Se invece il serial monitor riceve un dato da inviare
char c = Serial.read(); //La variabile c viene memorizzata e letta dal monitor seriale
bluetooth.write(c); //Il dato viene inviato al bluetooth perchè sia elaborato e quindi trasmesso
}
}
}
Non capisco perché imposti la velocità per la modalità "AT" che è quella che si usa per "configurare" il modulo, NON per usarlo .. e tu lo stai semplicemente usando !
La velocità di default del HC-05, nell'uso normale, è di 9600 baud ... il 38400 si usa solo per inviare i "comandi" di configurazione in AT mode tenendo il pin KEY "HIGH" ... ma normalmente questo non ti serve.
Ho impostato le comunicazioni a 9600 baud ma niente.
#include <SoftwareSerial.h> //Includiamo la libreria per la gestione delle istruzioni di utilizzo del modulo bluetooth
const int rxpin = 10; //Andiamo ad assegnare al pin 2 l’indirizzo di ricezione dati (e lo colleghiamo al pin TXD del modulo)
const int txpin = 11; //Assegnamo invece al pin 3 l’indirizzo di trasmissione dati (collegandolo al pin RXD del nostro componente
const int led = 13;
SoftwareSerial bluetooth(rxpin, txpin); //Assegnamo ad un nome (bluetooth) i suoi pin di ricezione e trasmissione, per facilitarci la scrittura del codice
void setup(){
Serial.begin(9600); //Inizializziamo l’interfaccia seriale al baud rate dell’AT-mode
bluetooth.begin(9600); //Inizializziamo l’interfaccia del modulo bluetooth sempre al baud rate riferito alla modalità AT
pinMode(led, OUTPUT);
}
void loop(){
if(bluetooth.available()){ //Se il bluetooth riceve qualche dato
char c = bluetooth.read(); //Il dato viene posto in una variabile di tipo char, così da essere adatta sia a lettere che a numeri
Serial.write(c); //Si scrive sul monitor seriale i dati presi dalla variabile, così da poterli osservare
if (c == 'a') {
digitalWrite(led,HIGH);
}
else if (c == 'b')
digitalWrite(led, LOW);
if(Serial.available()){ //Se invece il serial monitor riceve un dato da inviare
char c = Serial.read(); //La variabile c viene memorizzata e letta dal monitor seriale
bluetooth.write(c); //Il dato viene inviato al bluetooth perchè sia elaborato e quindi trasmesso
}
}
}
Solo ho risolto e non vorrei dire come ho fatto perchè provo quasi vergogna ahah..
Io collegavo RX di hc-05 su RX di arduino e TX di hc-05 su TX di arduino ahah per questo non andava.
Grazie mille dell'aiuto