Home > Projects > Development Board – Kits Projects > Android Arduino Communication through Modbus and Rs485

Android Arduino Communication through Modbus and Rs485

Summary of Android Arduino Communication through Modbus and Rs485


This article details a smart home project connecting an Android development board to Arduino slaves via RS485 and Modbus RTU. The system enables light dimming, temperature monitoring, and status display using a touch panel. The author selected RS485 for its industrial reliability and distance capabilities where Ethernet is unavailable on standard Arduinos. The solution integrates electrical components, circuit design, Arduino code using the SimpleSlaveModbus library, and a custom Android application to manage data registers for analog inputs, digital I/O, and PWM outputs.

Parts used in the Android-Arduino Modbus Project:

  • An Android based multi touch panel
  • One (or more) Arduino board
  • A Maxim's Max485 chip or TI's sn75176a
  • Led
  • A temperature sensor (like TMP36)
  • Switches
  • A potentiometer
  • One 120 Ohm resistor
  • Wires and some soldering experience

In this post I’d like to describe you a project I’m working on that consists of connecting an Android development board to one (or more) Arduino slave(s) using modbus protocol and rs485.
Even though the idea of this project could be applied in many fields, I chose to contextualize it in a typical smart home context: a touch display that dims lights, shows temperatures and bulbs statuses.
The nice feature of the development board I used is that it has many interfaces such as Ethernet, rs485, rs232 and I²C as well.
I expressly selected rs485 because Arduino-based microcontrollers are not ready for Ethernet yet (even though some examples still exist but without great success). Indeed, rs485 is a well known standard that has been widely used in the indus­trial con­text and in building automa­tion appli­ca­tions. It is a half-duplex, 2-wires, low noise bus that allows high speeds and remote devices connection (up to 1200 meters).Android Arduino Communication through Modbus and Rs485Furthermore, modbus is a serial communication protocol, developed for industrial applications, open and easy to deploy and maintain. I used modbus RTU, but other variations of the protocol still exist though.

I divided the project into core parts, namely:

Electrical parts

The key ingredients for this project are the following:

  • An Android based multi touch panel
  • One (or more) Arduino board (not necessarily Mega)
  • A Maxim’s Max485 chip (or eventually a cheaper one like TI’s sn75176a)
  • Led
  • A temperature sensor (like TMP36)
  • Switches
  • A potentiometer
  • One 120 Ohm resistor (not used in this project because of the short distance of master and slave)
  • Wires and some soldering experience

Circuit diagram

The picture on the right shows an overview of the circuit diagram of the project (some parts of the picture made with Fritzing). More than one Arduino board could be connected to the bus though.

Arduino sketch

Arduino sketch essentially uses SimpleSlaveModbus library (Tutorial on how to install a new Arduino library). I personally suggest you to take a look at documentation in order to have a better idea on how this library works.Android Arduino Communication through Modbus and Rs485 SchematicAfter including the modbus library header at the beginning of the source code,I declared an integer array (named holdingRegs) that stores the modbus registers. Function code 16 writes into them whereas function code 3 read them. The first two registers are reserved for analog values such as those gathered from A0 and A1 Arduino’s pins. INDIG0 to INDIG4 are served for digital inputs, OUTD0 to OUTD4 to digital outputs and AOUT0 for PWM.
In the setup section of the sketch, I call the modbus_configure function in order to configure the modbus with the following parameters: the baud rate, the ID of the slave (address), the transmit enable pin and the number of registers. Subsequently, I basically configure the digital Arduino pins with pinMode. In the loop of the sketch, I inserted a call to modbus_update specifying, as a first parameter, the reference to the array that stores the modbus registers. This function will take care of the received modbus commands and will modify the registers accordingly in case of writing or reading requests.

 

For more detail: Android Arduino Communication through Modbus and Rs485

Quick Solutions to Questions related to Android-Arduino Modbus Project:

  • Why was RS485 chosen over Ethernet for this project?
    Arduino-based microcontrollers are not ready for Ethernet yet, while RS485 is a well-known standard suitable for building automation.
  • What type of Modbus protocol variation is used in this project?
    The project uses Modbus RTU, though other variations of the protocol exist.
  • Which Arduino library is recommended for the sketch?
    The project uses the SimpleSlaveModbus library to handle communication.
  • How does the Arduino sketch store Modbus register data?
    An integer array named holdingRegs stores the registers, with function code 16 writing and function code 3 reading them.
  • What parameters are configured in the modbus_configure function?
    It configures the baud rate, slave ID, transmit enable pin, and the number of registers.
  • Can multiple Arduino boards be connected in this setup?
    Yes, more than one Arduino board could be connected to the bus.
  • What is the maximum distance allowed for RS485 remote devices?
    RS485 allows remote device connection up to 1200 meters.
  • What specific pins are reserved for analog values in the sketch?
    The first two registers are reserved for analog values gathered from A0 and A1 Arduino pins.

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter
Scroll to Top