Salve a tutti,
ho un problema con un modulo HM-11, ovvero usando arduino mega 2560 non riesco a comunicare i comandi AT. Tuttavia usando un cp210x connesso direttamente al modulo, ed usando l'applicazione forrnita dal produttore riesce a dare un minimo di comandi AT previsti dall'applicazione stessa. Quindi dovrei dedurre che il modulo in se problemi non dovrebbe averne, in più settando con l'applicazione e liberando il canale di comunicazione sono in grado di dare tutti i comandi che voglio tramite smartphone android.
Detto ciò impostarlo da telefono non mi interessa in quanto lo scopo sarebbe quello di passare dati prodotti dai sensori montati sull'arduino su pc tramite bluetooth. Sul pc monto un classico dongle usb bluetooth.
Chiudendo il discorso sull impostazione bisogna dire come monto l'hm-11:
arduino 3.3v --->hm-11 VCC
arduino GND ---> hm-11 GND
arduino RX1 (18) ---> hm-11 TXD
arduino TX1 (19) --->ripartitore di tensione resistivo R1=10k,R2=22k --> hm-11 RXD
Il problema è che il modulo non risponde ai comandi AT rimanendo completamente muto
Il codice che uso è il seguente:
#include <SoftwareSerial.h>
uint16_t baudRateSerial = 57600;
uint32_t baudRateBLE = 9600;
#define RxD 18
#define TxD 19
SoftwareSerial BTSerie(RxD,TxD);
void setup()
{
Serial.begin(baudRateSerial); //115200 se vogliamo
delay(500);
Serial.println("Pronti per comandi AT");
// Configuration du bluetooth
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
Serial.print("BaudRate Serial impostato a: ");Serial.println(baudRateSerial);
Serial.print("BaudRate Bluetooth impostato a: ");Serial.println(baudRateBLE);
BTSerie.begin(baudRateBLE); //57600
delay(500);
//avviabile();
delay(500);
Serial.println ("Richiesta a BT: AT+VERSION");
BTSerie.write("AT+VERSION"); //Richiedi la versione
Serial.write("AT+VERSION");
delay(1000);
BTSerie.write("\r\n");
Serial.write("\r\n");
Serial.println ("richiesta effettuata");
//avviabile();
}
void loop()
{
// listen for communication from the BT module and then write it to the serial monitor
if ( BTSerie.available() ) { Serial.write( BTSerie.read() ); Serial.print("2"); }
// listen for user input
if ( Serial.available() ) { BTSerie.write( Serial.read() ); Serial.print("1"); }
}
Ho fatto parecchie prove però sono abbastanza sicuro che i collegamenti siano corretti in quanto misurando con il tester il TX di arduino misurato prima di R1 e dopo R2 risulta da 5v circa e sempre col tester sul pin RX di arduino misuro esattamente 3.3v .
Essendo che non son un esperto, la mia unica ipotesi è che non arrivi sufficiente corrente alla canale di ricezione dati del HM-11; è possibile?
Ultimo dettaglio è vero che il modulo chiede da 3,6 a 6v per funzionare, e io lo alimento a 3,3v, però usando il CP210x uso la stessa tensione di alimentazione e li funziona...
cosa sbaglio?
EDIT:
dimenticavo, uso reistenze 10k,22k perchè provando con 800/2,2k e 1,2k/2,2k la tensione al pin rx dell HM risulta poco sopra ad 1v, e comunque anche in quel caso non funziona nella stessa maniera.
Ho provato un po tutte le combinazioni di baud rate ma non cambia ( a meno di aver saltato quella magica).
Domani mi arriva l'ardino pro mini da 3,3v, che è piu adatto allo scopo finale del progetto, e spero che si risolva il problema da solo; in tal caso benino ma vorrei riuscire a farlo andare anche sul MEGA, nel caso opposto non so più cosa inventarmi.