4

I am trying to build Project which communicate multiple Arduino Nanos. I wanted to understand if Arudino Nano is capable of doing that, while doing research I came across post where it says communication with nano can be done up to 2-3 meter, where as my goal is up to 30 meter.

Project - I am trying intercom system, I have 4 Ring button at main gate, when user press any one of those 4 the Arduino will understand it and send to one of the 4 Arduino sitting at other place. Each Arduino will read that message if its for them they will perform activity if not they will skip it.

My problem is I am in selection mode and want know if Arduino Nano can handle that, communication is not that complex. It will be just sending 2/3 value max during communication. As I saw post of distance limitation, I just want get inputs from community. If you have any similar examples of serial communication between multiple Arduino Nano please let me know, I found several but it might save my time if I find something more similar.

  • 1
    why do you need MCUs for a door bell? – Juraj Apr 28 at 6:25
  • @Juraj Its intercom i am trying to build which will connect 5 apartment with 3 different doors. Using MCU i am trying to control 3 camera situated at each door and then allowing user to open that door from selected room. – Akshay Apr 29 at 3:36
  • I agree with Bob Croft, Nick Gammon has a very good description of how to do what you need. Here is a link to his RS485 site. gammon.com.au/forum/?id=11428 – Wendall May 1 at 20:50
7

For that sort of difference you are better using RS-485 instead of UART. UART is really only designed for short-distance communication.

Converting UART to RS-232 will give an improvement, but switching to RS-485 instead will give you the ability to create a multi-drop bus for connecting more than two Arduinos together over a long distance.

  • UART uses 5V logic level signalling (on the normal Arduinos - 3.3V on most 32-bit boards). It has a "weak drive" and is highly susceptible to induced noise over longer distances.
  • RS-232 uses ±10V "Non Return to Zero" signalling. This gives far greater immunity to noise and a stronger drive for greater distances.
  • RS-485 (and the associated peer-to-peer RS-422) use differential signalling. This gives the greatest immunity to noise over the longest distances.

In summary:

  • RS-232 can be used if you only want to connect two devices together in a low noise environment.
  • RS-422 can be used to connect two devices together in a high noise (industrial) environment.
  • RS-485 can be used to connect lots of devices together in a high noise environment.

For more information on how they work there are some good Wikipedia pages:

For interfacing any of these to an Arduino you will need extra hardware ("Driver Chips"). For example:


There is also "CAN", which is a more modern replacement for RS-485 and is used in many industrial and automotive environments. As this is a newer technology than RS-485 there are fewer resources available and "initial cost to entry" can be higher.

  • Do you have any example which i can refer for this. I did found youtube video but it doesn't have much details. – Akshay Apr 27 at 22:19
  • There are millions online. Just Google Arduino rs485 or Arduino max485. – Majenko Apr 27 at 22:25
4

Roughly speaking, for a given protocol and medium (cable) the data rate and the distance are inversely related, that is, a connection with half the data rate can work across twice the distance. You will eventually hit the hard limit when the total capacitance of the cable will become too much for the driver.

RS-232 standard provides this table of maximum cable lengths for standard shielded cables:

Data rate (bps) Distance (m)
2400            60
4800            30
9600            15
19200           7.6
38400           3.7
56000           2.6

So, 30 meters can be easily achieved even with RS-232, if you don't mind the 4800 bps baudrate. Even longer distances (or higher baudrates) can be achieved by running RS-232 over a twisted pair, e.g. a UTP 5 cable: these cables have lower capacitance and can run at 9600 bps over 100 m or more.

There are other protocols suitable for long-distance communication. There are Arduino shields for CAN, RS-485 and even Ethernet.

  • 1
    It's worth noting that RS-232 is not the same as the TX/RX pins. The protocol is the same, but electrically it's not. UART is 5V logic levels and weak drive, whereas RS-232 is ±10V NRZ signalling and stronger drive. Whether you go for RS-232, CAN, or RS-485 you will be needing extra hardware "driver chips" to make it work. – Majenko Apr 28 at 10:03
  • @Majenko Obviously. I believe the 2-3 meters limit mentioned in the question refers to the built-in UART driver. The same remarks apply to it: using lower baudrate and lower-capacitance cable can make it work over a longer distance (though 30 meters is most likely unachievable). – Dmitry Grigoryev Apr 29 at 10:34
0

Hi please have a look at Nick Gammon's website as he does an Arduino libary for RS485 using cheap driver modules. In particular the non blocking example may well fit your needs. The library also works for ESP8266 and ESP32 modules under the Arduino IDE.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.