I'm thinking to connect about 50 slave Arduinos on 1 master using TX/RX. I'm following recommendation of these links:

using the cathode of diode connected to slaves TX pins and pulling up this line, like this image:

Async multi-drop diode isolation

In Arduino - Digital Pins, when pin is set to input (high impedance), it is "equivalent to a series resistor of 100 MΩ in front of the pin". Slave RX line has input (RX pin) in parallel, then, if this 'equivalent resistor' is true, we have a low resistance (duo parallel configuration) that burn the master TX. Is it make sense?

I have not found either in the Arduino or the ATmega documentation, if TX port have the internal pullup on. In ATmega documentation, TX pin is set as output and RX pin as input. The TTL logic is high on idle, then 5 V must be sourced from somewhere, correct?

  • 1
    Might want to use RS-485. Commented Jun 29, 2018 at 16:17
  • RS-485 is limited to 32 devices. For now, I need to use only TX/RX to communicate between master and slaves. It works for a master and 2 slaves. But, I'm worried when I connect 50 slaves and burn the master TX.
    – Mario J.
    Commented Jun 29, 2018 at 18:30
  • The number of devices depends on the bus driver. With "Fractional Unit-Load devices" you can have as many as 255 devices on a single bus segment. It is also possible to use multiple segments (repeater). Commented Jun 29, 2018 at 20:25
  • I checked RX (input) port in Arduino and it have 5 V and drain 0.14 mA. Then, RX is internal pulledup. But, ATmega 328P documentation say that internal pullup resistor is optional and USART section, at same documentation, have not mention about pullup TX.
    – Mario J.
    Commented Jul 1, 2018 at 18:05
  • nice project. Does it work so far? I'm going to do something similar. which diodes do I have to select for this?
    – Chris
    Commented Jan 17, 2022 at 12:12

1 Answer 1


An input pin draws 1uA or less input current, so more like 1 Megohm resistor, not 100 Megohm.

In an Uno, the USB interface chip typically is what is pulling the Tx and Rx lines high with 5mA drive (high output thru a 1K resistor to D0 or D1).

What you have drawn should work. The pullup resistor will ensure the Rx into the 1st Arduino sees a nice crisp high when the other two stop pulling the line low as they send a message out, and the diodes will prevent the one driving the line high while the other pulls it low.

  • The Arduino - Digital Pins official documentation inform a 100 Megohms resistance to out the pin as input (high impedance). Reading Arduino Schematic, the RX and TX pins in ATmega 328 is connected to ATmeg82U. Maybe this CI can source 5 V to RX/TX. But I'm not using USB to power up Arduinos. I'm using UNO and Minipro powered up through 5 V Vin. Then, I do not know where come 5 V to pulling pins high.
    – Mario J.
    Commented Jun 29, 2018 at 18:25
  • There are other mistakes in Arduino documentation as well, 100 Megohm is just one of them. The Atmega328P data sheet clearly says maximum input current is no more than 1uA. V=IR, or V/I = R. 1V/.000001A = 1,000,000 ohm resistor. Maybe 5 Megohm if you want to consider a 5V input and 1uA of current.
    – CrossRoads
    Commented Jun 29, 2018 at 18:27
  • 1
    @CrossRoads, how does a 100MΩ resistor violate the "max 1μA" requirement?
    – jsotola
    Commented Jun 29, 2018 at 23:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.