Arduino Pro Micro, get data out of Tx pin?

You appear to have a "pro micro" style board in which the USB communication is directly sourced from the main ATmega32u4 processor, rather than generated as serial data and then forwarded to a distinct USB-serial converter as on traditional Arduinos. Your question could have been resolved much more quickly if you had clearly stated the type of board you were using in words, rather than only as a product link (so I edited that into your question).

According to the documentation for the official Arduino Pro Micro:

Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data using the ATmega32U4 hardware serial capability. Note that on the Micro, the Serial class refers to USB (CDC) communication; for TTL serial on pins 0 and 1, use the Serial1 class.

Therefore to generate output on the hardware UART you will need to change all occurrences of Serial to Serial1

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

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

The transmit data will be sourced from ATmega32u4 pin 21 which is "D1" (digital pin 1) on the headers. If you wish to probe it, that would be the best place to do so.

If you wish to transmit data out of a different pin which is not connectied to the ATmega32u4's UART (as your example with digital pin 5 hints you might) you must instead use SoftwareSerial or similar implementation to bit-bang the serial data out of a general purpose I/O pin.

For example (inspired by this example):

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

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

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

The bluetooth board uses 3.3V, not 5V according the datasheet.

So you'll need to shift the voltage level between it and the Arduino board (which is 5V). Note that the spec sheet shows how this can easily be done with 2 resistors (R1 and R2 in sheet typical application circuit, page 5).

Also, on the bluetooth module, the RS232 interface has 4 pins:

  • UART_TX
  • UART_RX
  • UART_CTS
  • UART_RTS

UART_CTS must be 0 to ensure the device reads incoming bytes. Normally this is done by an internal pulldown resistor, but you must ensure you did not connect that pin to +V.

Finally, ensure that the baud rate of the module is properly set to 9600 bauds, the same as in your program.


So I stumbled upon this thread while having similar problem, but with HC-05 module. So because I have too much free time on my hands during finals (no I don't) I decided to create a small github repo that might help someone sometime. https://github.com/Sackhorn/HC-05-Pro-Micro-Hookup

The code is:

//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());
}

enter image description here