Many of the most dangerous natural disasters come from the earth, such as earthquakes, avalanches or volcanic eruptions, causing great losses both material and human.
Adequate ground monitoring can help predict, avoid and warn, as far as possible, these types of disasters, saving large material costs and lives.
The problem is that nowadays, this monitoring is carried out with large high-precision equipment, whose cost is very high and many countries with fewer resources and very affected by this type of natural disasters, cannot afford.
Using a mesh of interconnected IOT sensors, large tracks of land can be monitored, obtaining information at various points in real time.
Using motion sensors, mesh devices placed at fixed points in the ground can detect small earth movements.
All this information will be propagated to a central station, which will collect the data, process them, and act accordingly, being able to predict earthquakes and warning the population.
Proposed solutionThe ground sensors will be developed on the Particle Argon Kit, assisted by an Inertial Movement Unit to detect ground movements. The data will be collected and processed in a central computer.
Later more functionalities can be added, such as connecting a GPS module to obtain the precise locations of the sensors and create a mapping of the area.
In this way, this system can be used for very diverse situations, such as detecting earthquakes, detecting avalanches or even predicting volcanic eruptions with earth tremors.
The projectThe IMU we have used for this project, is the common BMX055, connnected like this:
The communication between the Particle's Argon board and the IMU is done by I2C, with a speed of 400Khz, being the Argon board the master of the I2C bus, and the IMU the slave. The data wires called SCL and SDA of the IMU, are connected to the SCL and SDA pins of the Argon board, respectively.
For the software, I have used mainly Visual Studio Code as well the Particle web IDE for OTA development. Using Visual Studio Code, with the Particle extension installed, we can simply compile and flash our projects to the Argon board, which is the one we are going to use for this project.
The software for this projects is separated in three main parts.
- The IMU: Is the part of the code responsible to setup the neccessary I2C connection to configure and communicate with the IMU. This set up the I2C speed, and writes in the proper registers of the IMU to configure data bandwith and accelerometer precision. Provides functions to read temperature, gyroscope and accelerometer, and also provides a function to get the absolute position as pitch, yaw and roll.
- The movement calculator: At the begining, provides functions to read values from the IMU and calibrate the device, to get the absolute diference between movements in the subsequent calls. Subsequently, receives periodically new movements from the IMU, and depending on a threshold, if the movement is hard enough, publish an event to warn other devices of an earth movement. This threshold is published by a function and can be dinamically modified,.
- The main loop: Is called periodically every 200ms and is responsible to intialize, configure, call and manage the IMU and the movement calculator. At the begining is responsible of the device calibration. On the main loop, read values from the IMU accelerometer and pass it to the movement calculator for the terrain warning.
When an earth movement over the threshold is detected, the software generates a movement event with the value (in g) of the absolute movement.
I have tested the proper function of this project locally. I attach a image of an execution example of the project, which firstly calibrates the device and calculates the deviation in g, after a time, detects two hard movements, and finally, receives a new threshold remotely and apply it. The default threshold is 1g.
Comments