Arduino UNO R4 RS485

In this guide, we will learn how to use RS485 communication with Arduino UNO R4. We will learn the following topics in detail:

The guide includes instructions for both Hardware Serial and SoftwareSerial.

Arduino UNO R4 RS-485

Hardware Preparation

1×Arduino UNO R4 WiFi
1×Arduino UNO R4 Minima (Alternatively)
1×USB Cable Type-C
1×TTL to RS485 Module
1×Jumper Wires
1×(Optional) RS485 to USB Cable
1×(Optional) 9V Power Adapter for Arduino UNO R4
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Disclosure: Some of the links provided in this section are Amazon affiliate links. We may receive a commission for any purchases made through these links at no additional cost to you. We appreciate your support.

Overview of TTL to RS485 Module

When using serial communication on Arduino UNO R4 with Serial.print(), Serial.read(), and Serial.write(), the Arduino UNO R4 sends data through the TX pin and receives data via the RX. These pins work at TTL level, so the signals has a limited range. Hence, for serial communication across longer distances, you need to change the TTL signal to RS232, RS485, or RS422 signal.

In this guide, we will explore how to use RS485 with Arduino UNO R4 by using a TTL to RS485 module. This module helps change TTL signals into RS485 signals and vice versa.

Pinout

The RS485 to TTL module comes with two types of connections:

  • The TTL interface, which connects to the Arduino UNO R4, has 4 pins:
    • VCC pin: this is the power pin and should be connected to VCC (either 5V or 3.3V).
    • GND pin: another power pin that must be connected to GND (0V).
    • RXD pin: a data pin that connects to the TX pin on the Arduino UNO R4.
    • TXD pin: a data pin that connects to the RX pin on the Arduino UNO R4.
  • The RS485 interface consists of the following pins:
    • D+ (A or TR+) pin: used for data communication.
    • D- (B or the TR-) pin: also used for data transmission.
    • GND pin: although optional, connecting this pin is recommended to reduce noise interference.
    RS-485 module Pinout
    image source: diyables.io

Wiring Diagram

  • Wiring diagram for using hardware serial with RS485.
The wiring diagram between Arduino UNO R4 TTL to RS485

This image is created using Fritzing. Click to enlarge image

  • Wiring diagram for using software-based RS485 communication
The wiring diagram between Arduino UNO R4 RS-485 to TTL

This image is created using Fritzing. Click to enlarge image

How To Program Arduino UNO R4 to use the RS485 module

  • Starts the Serial connection:
Serial.begin(9600);
  • If you use SoftwareSerial, you must add the library and create a SoftwareRegular object:
#include <SoftwareSerial.h> SoftwareSerial rs485(6, 7); // RX on pin 6, TX on pin 7

Arduino UNO R4 Code for Hardware Serial

/* * This Arduino UNO R4 code was developed by newbiely.com * * This Arduino UNO R4 code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-rs485 */ void setup() { // start communication with baud rate 9600 Serial.begin(9600); // wait a moment to allow serial ports to initialize delay(100); } void loop() { // Check if there's data available on Serial if (Serial.available()) { char data = Serial.read(); // read the received character Serial.print(data); // echo back to data to the sender } }

Arduino UNO R4 Code for Software Serial

/* * This Arduino UNO R4 code was developed by newbiely.com * * This Arduino UNO R4 code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-rs485 */ #include <SoftwareSerial.h> SoftwareSerial rs485(6, 7); // RX: 6, TX: 7 void setup() { // start communication with baud rate 9600 rs485.begin(9600); // wait a moment to allow serial ports to initialize delay(100); } void loop() { // Check if there's data available on rs485 if (rs485.available()) { char data = rs485.read(); // read the received character rs485.print(data); // echo back to data to the sender } }

Testing

Follow these instructions step by step:

  • If this is your first time using the Arduino Uno R4 WiFi/Minima, refer to the tutorial on setting up the environment for Arduino Uno R4 WiFi/Minima in the Arduino IDE.
  • Connect the Arduino Uno R4 to the TTL-to-RS485 module according to the provided diagram.
  • Connect the Arduino Uno R4 to board to your computer using a USB cable.
  • Launch the Arduino IDE on your computer.
  • Select the appropriate Arduino Uno R4 board (e.g., Arduino Uno R4 WiFi) and COM port.
  • Copy the provided code and paste it into the Arduino IDE.
  • Click the Upload button in the Arduino IDE to transfer the code to the Arduino UNO R4.

You can perform a test to send data between your PC and Arduino UNO R4 using RS-485. Here's how to do it:

  • Connect your Arduino UNO R4 to your computer using an RS485-to-USB cable as follows:
Arduino UNO R4 RS485 to PC communication
  • Download and install a Serial Terminal Program, such as Tera Term or PuTTY.
  • Open the Serial Terminal Program and set the Serial parameters (COM port, baud rate, etc.).
  • Enter data in the Serial Terminal to send to the Arduino UNO R4.
  • If it works, you will see the echoed data in the Serial Terminal.

Video Tutorial

※ OUR MESSAGES

  • As freelancers, We are AVAILABLE for HIRE. See how to outsource your project to us
  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!