Hace poco compré un módulo BLE Hm-11 y lo conecté a un Teensy 3.2.
Puedo ver el módulo BLE (AnyFlite) en mi teléfono usando la aplicación MSMBle.
Se utilizó el siguiente código para inicializarlo:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 8); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
mySerial.println("Hello, world?");
}
void loop() // run over and over
{
if (mySerial.available()) {
Serial.write(mySerial.read());
}
if (Serial.available())
mySerial.write(Serial.read());
}
Al abrir el monitor en serie, veo el texto "Buenos días", sin embargo, al enviar comandos AT no hay respuesta. No hay nada recibido en la aplicación de teléfono tampoco. (cuando conecto todo lo que veo es received text: 00
Al enviar comandos desde mi teléfono al módulo, veo valores de basura en el monitor serie.
Comprendo que esto se debe a una falta de coincidencia de la velocidad en baudios. He repasado todos los índices de baudios y aún tengo el mismo problema.
Verifiqué el voltaje entre masa y vcc del módulo y está en 3.3v, que es lo que se requiere.
Agotó todas las opciones de solución de problemas.
EDIT
Se cambió al siguiente código cuando me informaron sobre UARTS:
#define HWSERIAL Serial3
void setup() {
Serial.begin(9600);
HWSERIAL.begin(57600);
}
void loop() {
int incomingByte;
if (Serial.available() > 0) {
incomingByte = Serial.read();
Serial.print("USB received: ");
Serial.println(incomingByte, DEC);
HWSERIAL.print("USB received:");
HWSERIAL.println(incomingByte, DEC);
HWSERIAL.write(Serial.read());
}
if (HWSERIAL.available() > 0) {
incomingByte = HWSERIAL.read();
Serial.print("UART received: ");
Serial.println(incomingByte, DEC);
HWSERIAL.print("UART received:");
HWSERIAL.println(incomingByte, DEC);
Serial.write(HWSERIAL.read());
}
}
Cuando envío un comando AT
desde el Monitor Serial, obtengo lo siguiente:
USB received: 65
USB received: 10
Cuando envío un comando desde mi teléfono (en este caso AT+ADDR?
), obtengo lo siguiente:
UART received: 12
ÿUART received: 8
ÿUART received: 13
î
Aún así, la basura se está imprimiendo.