Uso de Serial1 para HM10 con Arduino Mega Pro Mini

Buenas noches.
Resulta que llevo un rato trabajando con el arduino Mega Pro Mini y he tenido dificultades para utilizar el módulo BLE 4.0 HM10. Logré cambiarle el nombre al HM10 usando los pines TX y RX del Mega, también usando la aplicación de Serial Bluetooth Terminal en mi teléfono, pude mandar mensajes desde el monitor serial del IDE de arduino a mi teléfono y viceversa.
El problema está en que para lograr esto, mi arduino no tiene ningún código cargado ya que al subirle aunque sea una línea que no sean los void loop y void setup, deja de mandar mensajes a pesar de estar conectado.
Intenté usar los pines 18 y 19 para usar el Serial1 y no he tenido resultados, con la diferencia que aún sin tener líneas de código, no me he podido comunicar con arduino desde mi teléfono.
Basandome en un video que mostraba como conectarlo, las conexiones iban así:
HM10-------------Mega Pro Mini
VCC----------------5V
GND---------------GND
TX------------------TX
RX------------------RX (con un divisor de voltaje)

Cuando intento usar el Serial1, se ve así:

HM10-------------Mega Pro Mini
VCC----------------3.3V (para la seguridad de mi módulo)
GND---------------GND
TX------------------pin 18
RX------------------pin 19 (usando el mismo divisor de voltaje)

En fin, debo admitir que es la primera vez que trabajo con un módulo bluetooth para el arduino, por lo que agradecería si me señalan donde está mi error o si requiero de alguna adición a lo que estoy haciendo. Y una disculpa si el tema había sido previamente abordado, estuve buscando mas no encontré lo que encontraba.

Primero si usas el puerto Serial o sea lo que sería el primer puerto Serie comprometes la posibilidad de subirle un código, asi que nunca lo uses, en cambio si usa el Serial1,2 o 3.
Le debes subir un código simple como este

// He puesto Serial1, pero cambia el 1 x 2 o x 3 según elijas. 
// Y usa los pines indicados para cada caso 

void setup()
{
  Serial.begin(9600);    // Monitor Serie, o sea via USB
  Serial1.begin(9600);  // Las conexiones del BT. Normalmente invertidas. 
                                        // Rx1 con TX BT 
                                       // Tx1 con RX BT
}

void loop(){
  char ser_char;
  if (Serial.available() > 0) {
    Serial1.write(Serial.read());
  }
  if (Serial1.available() > 0) {
    ser_char = Serial1.read();
    Serial.write(ser_char);
    Serial1.write(ser_char);
  }
}
1 Like

Si me funcionó, el único detalle fue que al momento de ponerle el el divisor de voltaje no estaba recibiendo la información (quise dejarselo para ver si funcionaba ya que tengo entendido que podría dañar el módulo, pero ahora empiezo a creer que no es del todo cierto), al quitarselo ya empezó a funcionar como debería, aunque no me permite usar todos los comandos AT (sospecho que eso ya es cosa de mi módulo).
Muchas gracias por su ayuda.

Tu módulo es 3.3V?
Tienes que usar el divisor solo del lado del TX del MEGA que va al RX del HM10
image
R1 = 1k
R2 = 2K o 2 de 1K en serie.

Entrada es lado MEGA o sea 5V Tx
Salida es lado HM10 o sea 3.3V RX

TX del HM10 directo al RX del Mega. No hay problema ahi
Compartir GND siempre entre dispositivos pero eso esta garantizado porque lo alimentas desde el MEGA mini seguramente.

1 Like

Es correcto, así mismo estaba haciendo el divisor de voltaje y ahora que lo estoy monitoreando con la aplicación del teléfono funciona sin problemas. Muchas gracias nuevamente por su atención.

Por nada. Resuelto entonces!!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.