Browse our Blog. You will find multiple applications, solutions, code examples. Navigate using the tag cloud or search using specific criteria

How to communicate Raspberry Pi 3 B+ with a MAX485 module

Industrial Arduino M-Duino working with Raspberry Pi board

Raspberry Pi 3 B+


In this post you will learn how to communicate a Raspberry Pi 3 B+ with an M-Duino by RS485 using a MAX 485 module.  


M-Duino / Ardbox family

Raspberry Pi 3 B+

MAX485 module

MAX485 Module

On-board MAX485 chip is a low-power and slew-rate-limited transceiver used for RS485 communication. By adopting half-duplex communication to implement the function of converting TTL level information into RS485 level, it can reach a maximum transmission rate of 2.5 Mbps. 


Max 485 Module

Dependig on RE and DE connection, the module works as receiver or transmitter. Connected to VCC, it transmits data and connected to GND it receives data. 

It is a cheap module. Batches of 5 units can be found for less than one euro. 


Raspberry Pi 3 B+ Pinout


Raspberry Pi to MAX485

Raspberry Pi 3 B+ PinsMAX485 Module Pins

The GPIO17/27 digital pins used to establish the type of communication. Receiver or transmitter mode.

MAX485 to M-Duino/Ardbox 

MAX485 Module PinsM-Duino / Ardbox Pin
VCC3.3 V



Python Code Example

In this example of code, we send a character from the PLC to the Raspberry, print it, and answer to the PLC with the same character, which is an "echo". Note that in case of receiving data, pins 17 and 27 are deactivated and activated in case of transmit data.

#!/usr/bin/env python3

' IMPORTANT: remember to add "enable_uart=1" line to /boot/config.txt

from gpiozero import OutputDevice
from time import sleep
from serial import Serial

' RO  <-> GPIO15/RXD
' RE  <-> GPIO17
' DE  <-> GPIO27
' DI  <-> GPIO14/TXD

' VCC <-> 3.3V
' B   <-> RS-485 B
' A   <-> RS-485 A
' GND <-> GND

re = OutputDevice(17)
de = OutputDevice(27)

' enable reception mode

with Serial('/dev/ttyS0', 19200) as s:
	while True:
		' waits for a single character
		rx =

		' print the received character
		print("RX: {0}".format(rx))

		' wait some time before echoing

		' enable transmission mode

		' echo the received character

		' disable transmission mode

Take a look at the Programmable Automation Controller based on Raspberry Pi  

Automation, monitoring and control with the power and speed of the Raspberry Pi

Programmable Automation Controller based on Raspberry Pi

Programmable Automation Controller based on Raspberry Pi

Programmable Automation Controller based on Raspberry Pi

With double RS-485 ports, a double ethernet port, UPS that will ensure a minimum power supply, this will secure a safe shut down and SD data protection. Also a CAN bus. 

A PLC with the power of Raspberry Pi.

Raspberry PLC Range >>

Do you want more information?

Open Source technology allows you to develop your installations.

Just fill the form and we will contact you as soon as we can.