Hi Dario, hi All.
Sorry for the late answer to this thread I started a long time ago... but holidays and other jobs have taken precedence.
I would like to summarize the point where we are and what we understood by discussing on this topic.
We started the idea to develop an Arduino based system targeted to antitheft systems. The first approach was to develop a multi purposes Arduino with some relays, digital and analog inputs, digital outputs, a power supply and an RS485 based communication interface onboard. The main goal was to produce a board able to fit into a standard European 503 box so people could place it anywhere in the house. The RS485 was chosen because it's a well known standard, used on many commercial antitheft systems as main field bus.
We developed two version of that systems. The first version was build around a linear power supply that was replaced by a switching power supply on the second version. I've personally build two units fully working (some pictures are still at the EtherMania Blog
) and I've developed a library useful to easy control the onboard SPI expander.
Suggestions came by this thread allow me to change a little bit the original target: the final unit I've on my desk mounts a set of Arduino's compatible headers that allow people to use the board not only for antitheft systems, but as a main block to develop/prototype domotics applications.
And that was the incipit...
but... we wanted more....
We started speaking to replace the RS485 transceiver with a custom communication system that should provide the power required by each board and allow multimaster communications between boards. This should be done through a simple twisted pair, thus reducing the connection complexity. The idea is to have a distributed system where all boards are connected together by a "simple two wire cable" altogether connected in a multiple star topology and, luckily, not terminated.
We don't need super high transfer rates: we need to be able to transfer only actuation commands and other possible parameters like the status of a remote switch, temperature and so on.
Summarizing the full thread contents I can say that:
- we opted for a modulation system based on FSK. Two different symbols for the 0 and 1 bit statuses. The modulation is simple. The demodulation could be done through an hardware comparator embedded on the Atmel micro and measuring the timing between incoming frontends. We can do some hardware assisted time measures so they are enough accurate for the purpose.
- we defined a physical layer based on a set of capacitors, inductors, drivers and comparators/filters. The first were used to decouple either the Tx either the Rx stages from the DC on the bus; the inductors were used to provide high impedance to the FSK signal when feed into the main and distributed power supplies. Push pull drivers were used to "inject" the FSK over the DC line and comparators and active filters were used to filter out and square the incoming Rx signal.
This solution was very interesting and strong enough to produce good results in the simulated environment. We were able to transmit and receive the simulated FSK signal between nodes connected together by simulated cable (with some added resistors and inductors to simulate a real working situation).
Unfortunately this is not something that could be easily replicated in the real world. The proposed circuits work well when large inductors are used. Inductors are big and not cheap. Large inductors are not "friends" of electronic systems because they introduce spikes, high voltages and currents.
So we ended up with a NO valid solution but with a lot of information and experience that I would like to use to start a new thread because I think that here we're now out of topic.
The new topic is here: http://arduino.cc/forum/index.php/topic,121868.0.html