Maximum cable length for 5V or 3.3V I2C, UART, or 1-wire signals over Ethernet and how to increase it

arduinoetherneti2cserialuart

I know similar questions have been asked before (Maximum cable length for 3.3V UART signals) but I would like to know the answer more specifically for a hobbyist.

I've been experimenting connecting various devices to an Arduino via I2C, UART and 1-wire. I have an adapter the goes form pins to RJ45, so I'm using them on both ends. I keep getting data errors when I use certain Ethernet cables, mostly in lengths over 10 feet. While I understand in principal the signal loss due to interference and resistance. I'm finding little information on how to quantify or overcome it.

I'm trying to figure out a way to boost the signal or utilize the Ethernet cable in a different way so that the lengths of cable can be longer.

Best Answer

For longer distances, and greater immunity to electrical noise, differential signalling is often used.

For example RS-422

RS-422 drivers are relatively low-cost (start at under £2). They can be connected directly to the UART for point-to-point communication.

There are also specific drivers to extend the range of I2C e.g. NXP datasheet or TI datasheet.

These should work well over twisted pair cables, e.g. Ethernet twisted pairs.