Arduino to Arduino Communication errors.Overloading UART? Too much resistance?

Hello all, I am trying to send Serial data from one Arduino Nano to six other Arduino Nanos. I have the one Arduino Nano's TX pin attached to six other Arduino Nanos' RX pins that are spaced out in a drop ceiling with an overall cable length of about 30' of unshielded 14awg cable, but not close to anything emitting EMF as far as I can tell. (See diagram for hookup) I have1n4004 diodes in place on each RX pin used as doing so resolved errors that were thrown when uploading new sketches to each Arduino attached to the line.

I receive the character perfectly when I unplug one Nano from the line and have 5 Arduinos hooked up to the one sending the data.

It does not matter where in the line I remove an arduino, it could be number 3, number 5, 1, 6, etc. as soon as one is removed, all is well with the others.

For now while I troubleshoot I'm sending a simple '1' character repeatedly every 500 milliseconds (See Sender Unit code) at a baud rate of 115200. This is being received by the 6 other Arduinos and echoed in the Arduino Terminal (See Receiver Unit code). I have tried a baud rate of 9600 to accommodate the cable length being longer, but I had the same result, with up to five it's fine, with six it's not so I switched back to 115200.

Anyone able to shed some light and educate me on what may be the problem?

The single Arduino sending the signal on TX is running off of an external 5V 1A power adapter.

The six Arduinos receiving the signal are each running off of 5V 3A power adapters.

Wire guage is 14awg.

Cable length is about 30 feet.

Thank you all!

//SENDER UNIT

void setup() {

  Serial.begin(115200);

}

void loop() {

  delay(500);

  Serial.println("1");

}
//RECEIVER UNIT

void setup() {
Serial.begin(115200);
}

void loop() {
  if (Serial.available()>0)
  {
    char inChar = Serial.read();
    Serial.println(inChar);
  }
}

I suspect that 30 feet is too much. Personally I would try RS232 (or RS422 or RS485).

The baud rate is way too high for that length of cable. Try lower baud rates until it's reliable.

I don't think you need the diodes but as you have no ground between the boards I am surprised it works at all. The ground and the data wire should be a twisted pair. Common ground and why you need one

Thank you all. Sorry I neglected to add the ground line to the diagram, they are all grounded to one another. I have tried baud rates as low as 2400, but will try again with 1200 tomorrow. Unfortunately everything in the ceiling is sealed up so getting back to the wiring to make everything twisted pair will be difficult, but I will keep that in mind should nothing else work.

Thank you for the suggestion of using RS232, would something like this SparkFun RS232 Shifter Board Kit - PRT-00133 - SparkFun Electronics work best for that? Is the benefit of RS232 that it runs at a higher voltage and allows for longer run distances?

If not twisted pair are the wires at least in a cable, as in 2 wires next to each other? That would probably be OK. I am surprised it doesn't work at 2400 Baud, I think there is something else going on. It might be as you suspect: too much load on the output pin.

You might need a driver of some sort to act as an amplifier, search for line driver, see what you find. I did a very quick search and found EL5171ISZ-T7 Renesas Electronics, Differential Line Driver. It would need a matching line receiver on the Rx end, or maybe just an opto-coupler rated for a high enough frequency with a digital output.

Would something like this SparkFun RS232 Shifter Board Kit - PRT-00133 - SparkFun Electronics work best for that? Is the benefit of RS232 that it runs at a higher voltage and allows for longer run distances?

Yes, possibly, you realise you need one at each board?

Is the 0V on each PSU for each board connected to electrical safety earth? If it is then you are creating an earth loop through the house wiring, this will pick up electrical noise. Only the main device (transmitter in your case) should be connected to safety earth unless there is galvanic isolation between the boards (read 'opto-couplers').

What about using something like this SparkFun Logic Level Converter - Bi-Directional - BOB-12009 - SparkFun Electronics, having one by the arduino sending data, converting from 5v to 12v or 24v, the other right where the first arduino in the line shows up converting the 12v or 24v back to 5v.

If I drove the HV side with 12V or 24V (says it's rated for up to 50V) might that allow the signal to travel significantly farther before being dialed back down to 5v?

At that point, there would be 15 feet of wire between the data sending board and the first light that has a "boosted" signal. Does that seem plausible?

I doubt logic level converters will do what you want; they have very little current drive capability. You need something with a buffered (amplified) output, which is what a line driver does. It's not just about voltage, it's about current capability.
You need to have enough current capability to charge and discharge the capacitance between the wires.

Thank you Perry! I will look into the EL5171ISZ-T7 and understand the solutions above would require parts at each Arduino. 0V lines for the Arduinos are not tied to the safety ground of the house, only to each other, they're all running off of their own 5v wall warts with the grounds of only the wall warts tied to one another (nothing is tied to the third prong/green wire on a wall outlet that goes to a grounding rod outside). Is that what you mean?

If I can't get the above working properly, my next thought is since the first Arduino in the line is receiving the signal perfectly fine even with all the other electronics running in the house (and is only 10 feet away from the driving arduino), I can daisy chain the Arduinos using the same single wire currently connected to all of their RX pins and then each Arduino past the first one is just relaying the message making each subsequent cable run ~4 feet. Unless you all have advice against doing something like that.

Thank you again