Saltar al contenido

Arduino Pro Micro, ¿sacar datos del pin Tx?

Solución:

Parece tener una placa de estilo “pro micro” en la que la comunicación USB proviene directamente del procesador principal ATmega32u4, en lugar de generarse como datos en serie y luego reenviarse a un convertidor USB-serie distinto como en los Arduinos tradicionales. Su pregunta podría haberse resuelto mucho más rápido si hubiera indicado claramente el tipo de tablero que estaba usando en palabras, en lugar de solo como un enlace de producto (así que lo edité en su pregunta).

Según la documentación del Arduino Pro Micro oficial:

Serie: 0 (RX) y 1 (TX). Se utiliza para recibir (RX) y transmitir (TX) datos en serie TTL utilizando la capacidad de serie de hardware ATmega32U4. Tenga en cuenta que en el Micro, la clase Serie se refiere a la comunicación USB (CDC); para TTL serial en los pines 0 y 1, use la clase Serial1.

Por lo tanto, para generar salida en el hardware UART, deberá cambiar todas las apariciones de Serial para Serial1

void setup(){ 
    Serial1.begin(9600);
}

void loop(){
    Serial1.print("HelloWurld");
}

Los datos de transmisión se obtendrán del pin 21 de ATmega32u4, que es “D1” (pin digital 1) en los encabezados. Si desea probarlo, ese sería el mejor lugar para hacerlo.

Si desea transmitir datos desde un pin diferente que no está conectado al UART del ATmega32u4 (como su ejemplo con el pin digital 5 sugiere que podría), debe usar SoftwareSerial o una implementación similar para extraer los datos en serie de un pin de E / S de propósito general.

Por ejemplo (inspirado en este ejemplo):

SoftwareSerial mySerial(4, 5); // RX, TX

void setup(){ 
    mySerial.begin(9600);
}

void loop(){
    mySerial.print("HelloWurld");
}

La placa bluetooth utiliza 3,3 V, no 5V según la hoja de datos.

Entonces necesitarás cambiar el nivel de voltaje entre él y la placa Arduino (que es 5V). Tenga en cuenta que la hoja de especificaciones muestra cómo esto se puede hacer fácilmente con 2 resistencias (R1 y R2 en la hoja del circuito de aplicación típico, página 5).

Además, en el módulo bluetooth, la interfaz RS232 tiene 4 pines:

  • UART_TX
  • UART_RX
  • UART_CTS
  • UART_RTS

UART_CTS debe ser 0 para asegurarse de que el dispositivo lea los bytes entrantes. Normalmente, esto se hace mediante una resistencia pulldown interna, pero debe asegurarse de no conectar ese pin a + V.

Por último, asegúrese de que la velocidad en baudios del módulo esté configurada correctamente en 9600 baudios, lo mismo que en su programa.

Así que me topé con este hilo mientras tenía un problema similar, pero con el módulo HC-05. Entonces, debido a que tengo demasiado tiempo libre en mis manos durante las finales (no, no lo tengo), decidí crear un pequeño repositorio de github que podría ayudar a alguien en algún momento. https://github.com/Sackhorn/HC-05-Pro-Micro-Hookup

El codigo es:

//Writen for pro micro
//These proved to be usefull 
//http://arduino.stackexchange.com/questions/1471/arduino-pro-micro-get-data-out-of-tx-pin
//https://forum.sparkfun.com/viewtopic.php?f=32&t=38889&sid=8178cdb38005ff33cc380a5da34fb583&start=15

void setup()
{
  pinMode(9, OUTPUT);  
  digitalWrite(9, HIGH); 
  Serial.begin(9600);
  Serial1.begin(38400);
}

void loop()
{

  //Serial1 is the physical Serial Connections on TX and RX pins
  if (Serial1.available()) Serial.write(Serial1.read());

  // Serial is from my understanding the virtual connection with computer via USB 
  if (Serial.available()) Serial1.write(Serial.read());
}

ingrese la descripción de la imagen aquí

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *