I have a project where I need multiple devices and they can only connect over an existing 2-wire connection. The environment is not conducive to RF communication (grounded metal boxes) so I have been looking for ways to transmit data over the power liine.
I keep coming back to 2-wire RS485 (but it really needs 3 cables as a common ground is also required). I found a chip that looked very easy to use that provided UART and DC over a 2-wire connection, but there are no authorised retailers and the manufacturer would only entertain an order of 10,000 units.
The requirement in this project for communication is small and only short bursts so half-duplex is sufficient.
After considerable research and many dead-ends I found a page about a positive biased diode clamp circuit and with a little experimenting came up with the schematic in the attached image. The top schematic shows the MASTER (the unit from which the power will originate) and the bottom one SLAVE. The idea is to chain up to 3, maybe 4 slaves from one master. The 2-core wire runs between OUT/IN connectors.
I am left with some questions though, partly because I don’t fully understand exactly what I’ve done here! I have proved the concept, by removing the Arduinos and hooking a function generator to what would have been D4 at one end and my scope on what would be D3 at the far end and I can see the signal. I can do it in reverse too.
- Is there anything I can do to simplify the circuit further? Could I “transmit” from D4 as well as “listen” on it for example? (Only planning half duplex so can’t send and receive at the same time anyway)
- Will the connection at D3/D4 rise above 5v and damage the Arduino? Do I need to add a transistor here to protect them? (I used 12v as the carrier to minimise the impact of voltage drop over the cable)
- Have I missed anything glaringly obvious that would stop this working?
My background is coding, I haven’t really ventured much into analogue electronics before, so please be patient if I’ve either just re-invented the wheel or make a complete mess!
Obviously this needs appropriate code with an appropriate OOK/ASK protocol to actually do anything, the purpose of this thread is simply to confirm the theory of the physical layer.
Look forward to the words of wisdom, thank you!