Introduction: SaferWork 4.0 - Industrial IoT for Safety

Project Description:

SaferWork 4.0 intents to provide an real-time environmental data of industrial areas. Currently available regulation such as OHSAS 18001 (Occupational Health and Safety Assessment Series) or Brazilian NR-15 (Unhealthy activities) considers periodical inspections to classify the areas and propose mitigations. Intermittent conditions are not captures by these periodical inspections and can harm the workers due to lack of mitigation actions.

In a concept of distributed devices and a main gateway, sensors are distributed in an industrial plant to measure environmental conditions and these data are presented in a dashboard available to Safety Specialists, Physicians, Up Management, Human Resources and many other, supporting key insights leading to risk assessments and mitigation actions aiming to reduce or preventing injuries and accidents.

The current prototype measures:

  • Temperature
  • Humidity
  • Gases (Air Quality, Flammable, Combustible and Smoke)

To be implemented:

  • Noise

How it works

The device send a JSON package containing sensors data to gateway that will process and send it to cloud ( and also provide it on a dashboard (

Parts List - Hardware

  1. Gateway
    1. Qualcomm Dragonboard 410c (Debian Linux)
    2. HC-12 Wireless Transceiver (Datasheet)
    3. Level Shifter to convert Dragonboard 1.8V to 5V (Datasheet)
  2. Device
    1. Arduino Uno
    2. HC-12 Wireless Transceiver (Datasheet)
    3. DHT-11 Temperature and Humidity Sensor (Datasheet)
    4. MQ-2 - Sensitive for flamable and combustible gasses (Methane, Butane, LPG, smoke) (Datasheet)
    5. MQ-9 - Sensitive for Carbon Monoxide, flammable gasses (Datasheet)
    6. MQ-135 - For Air Quality (sensitive for Benzene, Alcohol, smoke) (Datasheet)

Step 1: Device Implementation

The device represents a sensors bed to be located in many areas in an industrial site for real time environment sensing.

In this project was used the Arduino Uno Platform with 3 gas sensors (MQ-2, MQ-9 and MQ-135), 1 temperature/humidity sensor (DHT-11) and a RF transceiver (HC-12).

The Arduino to Sensors Pinout:


  • A1 to DHT11 analog pin
  • A3 to MQ135 analog pin
  • A4 to MQ9 analog pin
  • A5 to MQ2 analog pin


  • D7 to HC-12 SET pin
  • D10 to HC-12 TX pin (configured as RX on Arduino)
  • D11 to HC-12 RX pin (configured as TX on Arduino)

Code Implemented

Visit: GitHub Sourcecode

Step 2: Gateway Implementation

As stated by Wikipedia:

"An Internet of Things (IoT) Gateway provides the means to bridge the gap between devices in the field (factory floor, home, etc.), the Cloud, where data is collected, stored and manipulated by enterprise applications, and the user equipment"

To implement this functionality we are using the Qualcomm Dragonboard 410c. In conjunction with the Dragonboard we uses a bi-directional level shifter, to convert the Dragonboard operational voltage of 1.8V to HC-12 RF Transceiver Operational Voltage of 5V.

The Dragonboard 410c was also configured with the Debian/Linaro Linux.

Dragonboard 410c Pinout as Gateway:

  • Low Speed Connector Pin 5 (TxD) -> Level Shifter -> HC-12 RX Pin
  • Low Speed Connector Pin 7 (RxD) <- Level Shifter <- HC-12 TX Pin
  • Low Speed Connector Pin 29 (GPIO) -> Level Shifter -> HC-12 SET Pin

The code implemented in Python to setup the Gateway Service can be obtained in project GitHub repository:

It is important to mention that this project uses to send the device info and this info is consumed on the service as illustrated in this step.

The setup is very simple and can be understand by the commented source code. The is an intuitive dashboard creator that interacts directly with

Step 3: Conclusion

Challenges During Development

  • Wireless Transceiver Definition

During conceptual design it was considered typical 443 MHz RX/TX circuits (RT3/4 and RR3/4) with limited range and which required specific processing for data retrieval (example). To overcome all these challenges it was changed for a HC-12 Transceiver that embeds all circuitry for rx/tx providing the clear serial data directly to Dragonboard avoiding the hard working and risks of the prior option.

  • Dragonboard 410c Level Shifter

It was provided the Linker Sprite Mezzanine with the Level Shifter for UART but the Port is the same as the one used by OS for console communication (Low Speed connector Pins 11-TX and 13-RX) presenting conflict during implementation, so it was required to use another available UART port (Low Speed Connector Pins 5-TX and 7-RX) which are not available on Linker Sprite Mezzanine with the Level Shifter, so it was required to obtain one. Prior to buy a specific chip for that it was tried to implement a transistor activated level shifter which does not worked for UART usage.