IoT Device installed on Worker's Helmet
Web Application - Dashboard
Dashboard and IoT Device
During our internship at a utility industry, we build software that supports many fields workers. These are folks whose work may include performing inspections and repairs in potentially hazardous environments. Most of the software we’ve been developing aids these folks from a productivity standpoint by improving how they perform their work.
However, we’ve noticed that nothing really supports them from a safety perspective. They are required to take safety-training courses and acquire certifications, which are useful, but as a team, we started thinking about how could software be used to improve worker safety.
We noticed that sometimes field workers working in hazardous conditions are not able to focus on safety while they are working on their assigned work. For example, a construction worker working near a Gas Pipeline may not able to sense minor gas leaks as he/she is focused on their assigned task. This can cause loss of life and property.
Work Safety Management System is our attempt at addressing this problem.
What it does
This IoT System contains an Arduino based IoT device which can be connected to worker's helmet, this device senses the Temperature, Pressure, Humidity, Heart Rate, Gas Concentration around the worker and sends it to Azure IoT hub.
An Azure Function App gets a trigger via Event Hub whenever there is a new reading available at the IoT Hub. That function stores the reading in the Azure SQL Database and if the readings are above the Threshold levels ( threshold levels are stored in the database and can be configured by Administrators) then the Function App sends a Cloud-to-Device alert message to the device to inform the workers to move to a safe area.
A WebApp (hosted on Azure App Service) allows the managers/supervisors to log-in and see their team's status on a Dashboard in a Web Browser. If the managers/supervisors want to send an alert message manually then they can do so by just a click of a button.
In this device prototype, we are getting real values for Temperature, Humidity & Pressure from the on board sensors and we are simulating the Hear Rate, GeoLocation and Gas Concentration readings in code.
How we built it
IoT Device: We are using MXChip IoT DevKit (AZ3166) as the device. The source code for this Arduino based development board is written in C/C++. It has many sensors embedded on the board, so we didn't have to solder the sensors manually and we were able to focus more on the functionality.
- We are using Azure SQL Database for storing all the application data.
Challenges we ran into
Initially, we were facing issues making the IoT DevKit send telemetry data to IoT Hub. Later we found out that the issue was because of a bug in the older version of IoT Workbench Extention for Visual Studio Code. Updating that extension to the latest version Fixed that issue.
We also faced some challenges while making the Function App trigger automatically when the device sends the readings to IoT Hub.
Accomplishments that we're proud of
We are most proud of how far the project has come in such a short development time span. As we came to know about this Hackathon just 4 weeks before the deadline. Over the course of development, we thought of many great ideas that we would like to add to the application but were unable to implement due to time constraints. However, despite this, we have built out all of the core functionality and UI to serve a strong foundation going forward.
What we learned
Since this project uses many third party tools we learned a lot by working on this project, including how to use Azure Function App with automatic triggering with IoT Hub, Azure Maps, ASP.NET Core, Entity Framework, and using VS Code for Arduino development.
What's next for Work Safety Management (WSM)
We will continue to work on the project to expand and improve upon it. The current project will serve as a strong foundation. Going forward, we would like to support different type of devices, as well as to provide access control on the dashboard to support employees of different levels. We are already doing research on how we can use Machine Learning to predict the unsafe work conditions before they become severe.