Can Serial be a bus?


I’m wondering that can I use arduinos serial to be like bus?
How I see it:
One arduino is master outers are slaves

Slave listen to serial and when master calls it, it sends his id and some data (temperature for example)

master sends saves ID and waits for data.

Is it possible or serial can only connect 2 devices? (some handshake or data corrections???)

Yes this is the sort of thing that RS485 or DMX does.

What your are describing is a software communication protocol rather then the physical electrical requirements of a serial channel.

The Arduino TTL serial data pins can be adapted to multi-slave nodes (say by using RS-485 chips, etc) but would require some extra electrical interface components depending on the maximum distance you require. That could be as simple as diode isolation on the remote nodes transmit pins or RS-485 driver/receiver chips mentioned before.

Once the electrical requirements are satisfied you then have to design the software protocol you wish to use on the serial channel. There are existing 'standard' serial protocols that work much as you described, MODBUS is one example. I believe I have even seen a Arduino modbus library contribution somewhere in the past.

My point is that the task has two completely separate components, the physical electrical layer and then the separate software protocol layer, and each of these layers can have several options on how you might implement each of them.


I'm assuming you mean RS232 when you say serial?

RS232 is an electrical specification for a point to point connection - i.e., no busses.

However, there are applications that do just that. There are ham radio rig control systems that do such things, so that many devices can be controlled with a single PC rs232 port. I think Icom's CI-V is one such example. I don't know what the electrical specification for those implementations are, though. I vaguely recall some are TTL instead of RS232 on the electrical side, but I could be wrong.

Mike and lefty have it right, though, it's best to use something designed for the application, like RS485.