Electronic – Arduino Uno R3 hardware serial: peripheral interfering with the USB/Serial-converter


I like to use the hardware serial port (pin 0 RX and 1 TX) to connect a bluetooth module.
Internally these pins are also connected to the onboard USB to serial converter microcontroller which is used to flash the ATMega328 using the bootstrap code.

enter image description here
(From http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf)

Now these two signals would interfer, I think.

  • Can the RX/TX pins be used to interface with an UART peripheral?
  • If, what should one do to avoid colliding signals?

I couldn't find examples in my Arduino books and with Google that used the hardware serial port of the Uno R3 to connect peripherals.

Edit 1:

Let me add the following: I don't want to use the Serial monitor (of the Arduino IDE) and the peripheral (Bluetooth module) at the same time. I don't expect that it can be used at the same time. The device should run without USB connected. The Bluetooth module, in this case, will be used to remotely and wirelessly control the Arduino.

Even when not using both together, I suspect the ATMega16U and the periperal might interfer.

And: I know, there's a shield and also an "ArduinoBT", but I don't want to use them as long as it's possible to do this with the hardware serial port of the Uno.

Edit 2:

The peripheral (Bluetooth) module operates at 3.3V while the Arduino operates at 5V.

Best Answer

Those two resistors, marked RN4A and RN4B, are used to protect the uart line from conflicts, while also assigning priority to the external header. They act like weak pullups, in that anything before (In this case, left of) the resistors will only affect the line after them, if the lines are not being used.

Anything serial connection plugged into the header, will take priority over the Arduino's usb/serial connection, as they can directly power the lines.

But this will also provide issues during programming, so use an enable pin, or power switch, or simply remove the bluetooth module while programming.