The QuakeSense project is an open-source earthquake and environmental monitoring system consisting of a low power and low cost IoT network made of energy-autonomous sensor nodes that are powered through an energy harvesting system and are connected to a gateway in a star topology.
The project is based on two emerging IoT technologies, MQTT and LoRa, one of the most promising Low Power Wide Area Networks (LPWAN) technologies that provides a good compromise between coverage, current consumption, payload length, bandwidth, and data rate.
The collected data are offered to users thanks to a dedicated web-based interface, thus allowing real-time monitoring of both seismic events and environmental parameters.
The main components of the QuakeSense project are: one or more sensor nodes, a single-channel LoRa gateway and an IoT cloud platform.
Each sensor node consists of the following components:
By default, each sensor node runs in Low-Power mode. In this configuration, the STM32 MCU runs in Stop mode (the MCU is stopped and the clocks are switched off, but SRAM and registers content are kept), the GPS module is in AlwaysLocate mode (an intelligent power saving mode that allows the GPS module to adaptively and automatically adjust the full on time according to the environmental and motion conditions), while the LoRa module in Standby mode for the maximum energy saving.
When a seismic event occurs, the accelerometer generates an interrupt associated to the wake-up event and the node starts running in Run mode, which results in waking up the STM32 MCU and the GPS module in Full On mode, while the LoRa module is put in Transmit mode. The wake-up event happens if at least one of the 3 acceleration components exceeds the reference threshold (50 mg for the horizontal components, 1120 mg for the vertical one).
Once in Run mode, the sensor node starts reading and recording acceleration data to compute the bracketed duration, defined as the time interval between the first and last exceeding of the acceleration threshold, and the 3 components of the Peak Ground Acceleration (PGA), defined as the maximum amplitude of acceleration in absolute value. The computed strong-motion parameters are also geo-referenced thanks to the GPS module, so that latitude, longitude, altitude, date and time paramters are added to the LoRa packet that is finally sent to the gateway.
The baseline behavior of the node foresees a periodical (by default, every 15 minutes) monitoring of the environmental parameters (temperature, relative humidity and pressure) through the LPS22HB and HTS221 MEMS sensors.
The single-channel LoRa gateway consists of the following components:
The gateway is functionally in charge of receiving packets sent by sensor nodes, parsing the encapsulated values and
forwarding them to the Adafruit IO platform via the MQTT protocol.
The gateway also deals with packets integrity: every time a new packet is received, the gateway computes the checksum and compares it with the one within the received message. In case of a mismatch, the packet is dropped and an error message is sent to the Adafruit IO platform.
The Adafruit IO platform is used to collect, process and visualize in real-time environmental data and strong-motion parameters related to seismic events.
The user interface (UI) consists of a dashboard, which includes some widgets implemented through line graphs, gauges and other blocks to show the value of environmental parameters and the time trend of the three components of peak ground acceleration.
The software libraries and frameworks used to implement the QuakeSense project are:
Biagio Montaruli - [email protected]
This software is licensed under the terms of the GNU GPLv3. See the LICENSE.md file for more details.
This project has been developed for my undergraduate thesis in Internet of Things at Polytechnic University of Bari (PoliBa).
I wish to say a special thanks to my professor and supervisor Luigi Alfredo Grieco, and to all researchers and people of the Telematics' Lab (@telematics-dev) who helped me during the development of this project.