Yet another vote for either RS485 or CAN transceivers.
The're just small 8 pin chips that turn UART signals into a differential pair.
I am aware of the ENC28J60 and thw Wiznet 5600, but those need far more complex hardware and software.
There are plenty of networking libraries you can use with RS485 or CAN.
A little search in platromio from the command line shows 57 libraries for "rs485, a lot of them are based around modbus.
--------------------
me@home:~$ pio lib search rs485
Found 57 libraries:
--------------------
For the power supply:
Long cables have a significant DC resistance, and will therefore drop voltage over their length (on both the "power" and the "GND" wire!)
Therefore it is best to start with a high voltage, (for example 24V) and then use small SMPS modules at your network nodes to make the supply voltage for your microcontrollers.
Also read the "10 ways to bulleproof RS485" Application note
https://html.duckduckgo.com/html?q=10+ways+to+bulleproof+RS485Also note that 100Mbit/s Ethernet only uses 4 wires.
This means you can use an CAT5 cable for all of:
1. One pair for 24Vdc.
2. One pair for RS485 data.
3. Two pairs for regular 100MBit/s Ethernet.
CAT5 cable and connectors can handle up to about 1Amp of current, and a small Linux computer only needs about 1A@ 5V, and with an SMPS that is about 200mA from 24V.
This means you can have a central power supply, a few Linux computers and a whole lot of smart sensor nodes all from the same CAT5 cable.
You do need to regard the topology of your network. Ethernet needs switches while a star configuration sort of works for RS485 if the baudrate is low (and your transceivers are slew rate limited), but a star topology should be avoided for RS485 (and CAN).
RS485 only defines signal levels (the lowest layer of the OSI model), while CAN defines a complete network stack.
AVR controllers do not have a built in CAN hardware peripheral, and doing it in software would be cumbersome.
You can just use CAN transceivers with normal UART though.