Arduino powered through external non-USB DI/DO port?

I have an application that uses 2 arduino uno's. The 1st one is connected to some temperature sensors. It writes data to a software serial interface, using DI/DO pins 3 (receive) and 4 (transmit) .

The 2nd arduino receives data from the 1st arduino, also using a software serial interface, also using DI/DO pins 3 (receive) and 4 (transmit). The DC ground pins of the 2 arduino's are also connected. The 2nd arduino has an Adafruit Data Logger shield. It receives data from the first arduino a couple of times a day, adds a timestamp and writes a record to the flash drive. Two separate wall worts are used to power the system - one for each of the arduino's.

The system has been working fine for several months. I needed to do some hardware maintenance on the system, so I disconnected the wall wort for the 1st arduino.

To my surprise, the 1st arduino continued to run. It didn't even get reset when its power was unplugged. I repeated the power disconnect, but this time reversing the order: with the 1st arduino powered up I unplugged the power to the 2nd arduino. And again to my surprise, the whole system (both arduino's) remained powered up and running.

The obvious implication is that the "unpowered" arduino is getting powered through the DI/DO pins. No data is being transmitted over the serial interface during this time.

How can this be? Is this normal? Is this dangerous to the electronic load of the arduino? Is there a problem with this?

Is this normal?

Yes if you do something as silly as this.

How can this be?

It is called parasitic powering and the power is coming from logic outputs going into an un powered system. The current leaks through the static protection diodes and it is a very good way of destroying electronic components.

How should I prevent the current leakage?
I'm a bit new to this, is there something wrong with having one Arduino communicate with another using software serial over 2 di/do ports? If so, how else can I arrange a simple communication between the 2 systems?

Why can't this be done on a single Arduino???

But just place 10k resistors in line :slight_smile:

Well I would suggest using optical isolators on each line.

is there something wrong with having one Arduino communicate with another using software serial over 2 di/do ports?

Not in itself but beginners do tend to opt for such a solution when the real answer is to learn how to code properly.