Hardware setup – Eclipse IoT Challenge project

It’s been a while since my last post. I’d like to show hardware setup for my IoT Challenge project.

My application is organized in form of services running on Eclipse Kura (OSGi based framework). I’m running it on Raspberry Pi B+ (512 MB RAM) with additional LCD shield from AdaFruit (PiTFT) and RS-485 adapter from Waveshare (RS-485 Board). Standard RASPBIAN distribution from RASPBERRY PI FOUNDATION is used.

Although Java 7 is advised by Kura documentation, I’ve used latest Java 8. Up till now I don’t have any problems.

Development Setup

LCD screen is intended to show values acquired from monitored device and alarms triggered by application logic. Currently I’m using JavaFx for visualization layer.


RS-485 Adapter is connected with RPi UART0 interface and one additional GPIO. This adapter needs additional pin to control transmission direction. I’ve used GPIO17 as direction control pin.


For development I’m using additional Raspberry Pi (old B version with 256MB of RAM) that acts as Modbus slave. I’ve created simple Modbus simulation app using libmodbus library for testing purposes.

Connection diagram using RS-485 adapter – SP3485 / MAX3485 :


Outline of my proposal for Eclipse Open IoT Challenge – monitoring MODBUS

Logging and monitoring industrial automation equipment with remote management capabilities.

It’s a time to write quick overview about my application for Eclipse Open IoT Challenge.

As I’m working with industrial automation equipment recently I started to dig into it a bit more.

Industrial automation devices like PLCs, Inverters, Power meters, Flow meters, etc used as a field devices operate as a standalone equipment with ability to interchange information between each other on demand or on a periodic basis. Field devices need to be monitored and maintained, which is usually handled manually by technician. Existing installations with legacy protocols (e.g. DeviceNet, ControlNet) usually are hard or expensive to integrate with other systems. IoT technologies currently available may constitute a significant solution when facing such problems.
Use cases like monitoring process value, operation of equipment or even power consumption in summer house can be realized with open source IoT software accompanied with hardware on common HW platform like Raspberry Pi or Beaglebone.

Wide range of field devices support MODBUS communication interface that allows to configure or access log data stored in the device.

The purpose of my project is to design an universal network integration module which would allow to utilize IoT protocols to interface with MODBUS compatible devices.

Main goals to be achieved are:

  • monitor MODBUS registers or discrete inputs – defined by address
  • send updates to remote server – MQTT
  • be remotely managed – OMA LightweightM2M

Additionally, ability to present monitored values and alarms on local display (HMI) will broaden possible applications.

The plan is to realize application based on Eclipse Kura framework that will pool defined MODBUS registers/discrete inputs and based on defined rules take actions (store in internal memory, show as value/graph on local LCD or send using MQTT protocol). Thanks to OSGi, it will be easier to achieve modularity and extensibility of the application yet at the design stage.

User will be able to freely define MODBUS registers, poling interval, monitoring rules and actions remotely over OMA Lightweight M2M. Additionally, it will be possible to control local display remotely.

Logging and monitoring industrial automation equipment - overview diagram

Logging and monitoring industrial automation equipment – overview diagram

My project will be realized using Raspberry Pi connected with monitored device using UART port with RS-485 converter. Connection to the remote server will be realized using Ethernet port or through USB WiFi. Using of mobile modem is not planned right now.

I’d like to use Leshan project as device management server and it’s client libraries inside my allocation running on Kura.

For testing my application I’m going to create simple device that will act as MODBUS slave. I was going to use 4DIAC project for this. Unfortunately, there is no MODBUS slave in 4DIAC right now. That’s why for the beginning, I’m going to implement one using libmodbus library. Additionally, I’m going to test my solution with real industrial automation device.

In the next post I will describe detailed HW setup.

Stay tuned for further info….