Building sensor network for vibration monitoring

Thread Starter

Jurijs Ješkins

Joined Sep 22, 2017
7
Dear AAC!

tl;dr: Seismic monitoring network build with Arduino and SBC boards. Project log and different questions to the community.

Here, I will write my project log about building seismic sensor network. I will post any questions I have in this thread in order not to spam all the forum. The goal of this project is quarry blasting monitoring. I will provide a brief information about the problem shortly.

My background:
I am a software developer (mainly WEB technologies) from Latvia, developing various online software solutions already for 10 years. I am working with Java, JavaScript, different API's and different levels of architectures (back-end, front-end, standalone development). Couple of years ago my friend introduced me to Arduino. I successfully managed to complete different small projects with it and now I have first big project.

Problem I want to solve:
Here, in Latvia we have seismic monitoring, that is collecting data about seismic activities around the country. Baltic states are situated in a calm region, so no big seismic events are present. Though, we get some waves, that come from seismic active regions (such as Japan). Due to limited resources for such monitoring (we have only 1 seismic station) we can't tell precisely if the signals we are receiving have true tectonic source. Mainly we receive signals from quarry blasting. In order to identify which signals are coming from quarry blasting, our specialists usually are calling to the quarry and asking time of last blasts. It is time consuming and not effective. My goal is to develop a network of seismic sensors, which will collect data from quarries and accumulate it on the server. The sensor will sense vibrations from the blasts and will record the time of the blast and the strength. When we will have such data, we just need to compare it to the data from true seismic station and voila! we can make corrections. Subgoal for the project is to make this system as cheap as possible.

Methods:
In order to choose suitable seismic sensor, different approaches were used:
  • Accelerometer data. We have tested it on a busy road, but unfortunately no suitable data were present. The main problem was with accelerometer positioning inside the sensor. For our test it was just hanging on the wires, so it can freely swing around, when the vibrations are present. Such positioning was successful in theory, but unsuccessful in practice. Vibrations are usually so small and with a low frequency, so sensor just can't swing fast enough for generating identifiable signal.
  • Vibrations switch (you can find a bunch of different configurations on ebay). It performed better, than accelerometer, but with switch you can't distinguish signal strength, which is one of the core parameters in the signal. So, a blast and a cargo car passing by will sound the same.
  • Piezo disc. For now it is gold candidate for the sensor build. We can measure signal strength and with large enough amplification we can monitor any kind of vibrations. It will be used for the first alpha version of the sensor. Amplification of the signal is planned to be done by OpAmp circuit. I still can't figure out how OpAmp works, due to lack of knowledge, so now amplification is done by heavy objects, which I put on my piezo disc in order to get tight contact between disc and surface. Sounds horrible for the first time, but it is doing it's job good.
Arduino Pro Mini was chosen as a controller for the sensor. You don't need huge amount of batteries in order to power it for months. And it is very flexible in development.

Other components for the sensor are: RTC clock module, MicroSD card module, HC-12 radiolink and batteries.

Network configuration:
The network build for one quarry might look as: couple of vibration sensors and one SBC (single-board computer) base-station.

Basestation:
Basestation will accumulate data from Arduino sensors and will send it to the server via GSM. GSM communication will be accomplished by usage of USB GSM modems, or by integrated GSM in SBC (for now, only OrangePi 2G-IOT has such integrated circuit). Various SBC are suitable for the project, but it would be perfect to find a balance between price/performance. Now I am testing with Raspberry Pi 1 Model B without GSM (only ethernet communication), but even such board with USB GSM modem is pretty expensive.
OrangePi 2G-IOT is really affordable solution and it already has a GSM module (which runs only on 2G networks, but in Latvia we will have 2G support for at least 5 years more). By searching reviews of the board I found many bad reviews. Almost everyone has problems with board stability, which will be a crucial moment for the network, since the quarries are situated around whole country. I will not be able to restart the system every couple of days.
So, the choice for the end-solution is still open. I am looking forward for your comments about SBC.

Radio communication:
Sensors will be connected with SBC by multiple HC-12 receivers (one per each sensor). According to documentation, HC-12 can handle 100 channels, so it is enough for our purposes. First tests showed unobstructed straight-line distance about 300 meters (maybe even more) with stock antenna. More tests will be carried in order to cover different situations.
Since piezo and HC-12 module are situated near to each other, I see some interference between them. Piezo is generating false signals because of antenna transmitting them to the basestation. I will think about screening of the Piezo, since I don't want such interference to be.
Other option can be LoRa, but I don't have such modules, so need to buy a couple on the ebay in order to test them out.

Power:
Arduino sensors will be powered with 4 AA batteries. I haven't carried any tests yet on power consumption by sensor, but according to various other builds I found on the internet, I will be able to power my sensor for at least 2-3 months. With some tinkering around, I can get twice of that amount.
Hopefully basestations will be powered from 220V, which will be available in the quarry facilities.

Data storage:
By design, Arduino sensors will have MicroSD card modules in order to store data there for backup purposes. But, by writing down to file every received signal, I am taking too much processor time, so readings are occurring not fast enough. On the other hand, basestation will have separated storage also for backup purposes. Since SBC is multithreaded, I can write received data in separate thread, so it will be a HUGE benefit for the sensor.
I see following ideal design for this part: sensors have MicroSD cards, but are not writing there anything, unless basestation told them to do so, or they do not receive any callback from the basestation. Such situation means, that basestation is dead, and sensors must store all the data on their built-in memory. Basestation is storing data for the past 2 weeks. This will be rolling data, which means, that old data will be removed, when new data will come in. If basestation can't reach server, it will store all the data inside and will try to reach the server from time to time. By this design I am covered from all strange situations.

Software:
Boring part of the project. I plan to use Node.js and some fancy frameworks for server-side built of the software. Python will be used on the basestation. Software will run an admin panel for the whole network, where you can add sensors, activate/deactivate basestations and manage configurations for sensors and basestations. Of course, data management and analysis will be done in the software.
If you are interested in this part, I can tell more, but it is not the main topic of this thread.

What is done already:
I have working Piezo vibration sensor, which can send data to the SBC by HC-12. You can call it first proof-of-concept. I am working on the server-side software now.


For now, I will be happy to see your comments about this theoretical built. If you see any downsides already, please write down here. If you have any questions, please ask. I will be happy to answer. More questions will come in the following days. Thank you for reading!
 

OBW0549

Joined Mar 2, 2015
3,566
Welcome to AAC.

Rather than using a piezo disc with weight attached, I think you will achieve better repeatability (and easier construction) by using a cantilevered piezo film sensor such as this one made by Measurement Specialties.
 

Thread Starter

Jurijs Ješkins

Joined Sep 22, 2017
7
Welcome to AAC.

Rather than using a piezo disc with weight attached, I think you will achieve better repeatability (and easier construction) by using a cantilevered piezo film sensor such as this one made by Measurement Specialties.
Thank you for your comment! As far, as I understood, this sensor must be placed vertically relatively to the ground in order to produce good signal. I was planning to place Piezo disc in tight contact with dolomite plates, that are situated in the quarry. In this way, I will have tight contact with the vibrating source rock. Another solution I found can be viewed on the attached scheme:
piezo_weight.jpg

Nevertheless, I will order one of this cantilevered sensors for test purposes. Thanks!
 

Thread Starter

Jurijs Ješkins

Joined Sep 22, 2017
7
Project update:
Yesterday I left the sensor working overnight. I wanted to test, how many readings will I be able to record on my basestation, and how many memory it will take. I put a little threshold on reading strength, cause I don't want to record all the 0 readings. Despite the fact, that no vibration was present, I was able to record some interference data. Total record count was ~13000. I was shocked, when I came in in the morning, and I saw, that sensor was not working. Seems, that battery was dead. I used 5000 mAh powerbank, but it was used for a while already. I connected Arduino directly through USB UART controller to powerbank. I have not measured the current, which UART board draws, but it should be very low, so we may not take it into account. I will recharge my powerbank and try once more this night.

I measured the current with multimeter between battery and Arduino, and it seems to be really low. Only couple of readings around 20mA were present. My multimeter is not very precise (cheap Chinese stuff).

By the way, speaking about basestation. Guys, maybe someone had experience with OrangePi boards? Would you recommend them? I am looking at OrangePi Zero with 256 Mb RAM.

Any other small SBC's which you can recommend? Raspberry Pi Zero looks fine, but it is sold out and the price at resellers is really high! Stupid hype...
 

OBW0549

Joined Mar 2, 2015
3,566
I put a little threshold on reading strength, cause I don't want to record all the 0 readings. Despite the fact, that no vibration was present, I was able to record some interference data. Total record count was ~13000.
Thirteen thousand is a LOT of events, especially with no vibration present!!! I imagine no more than a handful of them were of any significance or interest.

How do you have your piezo sensor connected to the Arduino? Could you post a circuit diagram (complete with all components and connections) showing exactly what you've set up? If you could do that, I (and others) could help you with some Analog-Fu to cut down on the data overload.
 

Thread Starter

Jurijs Ješkins

Joined Sep 22, 2017
7
Thirteen thousand is a LOT of events, especially with no vibration present!!! I imagine no more than a handful of them were of any significance or interest.
I would say, that none of them were of any significance, cause sensor was just laying on a shelf. I was terrified by our office cleaner, because she will trash anything, that will be laying on the floor.

Could you post a circuit diagram (complete with all components and connections) showing exactly what you've set up?
I tried my best. Scheme is in the attachment.
 

Attachments

Thread Starter

Jurijs Ješkins

Joined Sep 22, 2017
7
Before comments about my circuit I want to add, that I have found another option for the vibration sensor. Looks like it is the same piezo disc, but already packaged with pot-OpAmp circuit. There is not datasheet present, so I can't tell if there are any signal filtering components, which can help me with my interference.

I have ordered one for the test.
 

OBW0549

Joined Mar 2, 2015
3,566
Before comments about my circuit I want to add, that I have found another option for the vibration sensor. Looks like it is the same piezo disc, but already packaged with pot-OpAmp circuit. There is not datasheet present, so I can't tell if there are any signal filtering components, which can help me with my interference.
When I followed that link, Ebay said the item is no longer available. But the text of the link contains the phrase, "TTL Level Output," which indicates to me that it outputs a logic signal, not analog, and therefore most likely acts as a vibration switch. You'd get no amplitude indication from such a device, and I don't know if it provides any means of adjusting its detection threshold, so I'm not sure it would meet your needs.

The circuit diagram you posted shows the piezo disk connected directly to an analog input on the Arduino; this, I think, is what's giving you the huge number of "events" you cited. Any seismic event consists of tens, or even hundreds, of individual + and - excursions, and by connecting the sensor directly to the Arduino you would be seeing each and every one of them.

Feeding your sensor's output into what's called an envelope detector circuit (similar to the detector stage of an AM radio receiver) will reduce these hundreds of individual excursions to a single pulse representing the amplitude of the excursions. Some of the images from that Google search results page illustrate how that works.

You will also need a suitable amplifier, with high input impedance and low output impedance, to interface between the sensor and the envelope detector circuit.

Hope this helps a bit...
 

Thread Starter

Jurijs Ješkins

Joined Sep 22, 2017
7
Thanks for your reply!

In the listing I see the following: "Analog signal output, according to the greater the vibration intensity, the higher the output voltage". So, I assume, that beside the TTL output, there must be some other options too. Anyway, there are 4 IO pins on the board. So it must be power + 2 signal pins.

The circuit diagram you posted shows the piezo disk connected directly to an analog input on the Arduino; this, I think, is what's giving you the huge number of "events" you cited. Any seismic event consists of tens, or even hundreds, of individual + and - excursions, and by connecting the sensor directly to the Arduino you would be seeing each and every one of them.
When I disconnect the HC-12 board from the circuit, I don't see any "interference" data, so it is present only when a radio-link is connected.

I assume, that you were talking about noise, which can generate these sporadic readings, but noise usually has a low voltage output, and I usually get noise frequency around 2-10 values. But, interference can be a single event with value 16-40. Which definitely is not a noise data.

Feeding your sensor's output into what's called an envelope detector circuit (similar to the detector stage of an AM radio receiver) will reduce these hundreds of individual excursions to a single pulse representing the amplitude of the excursions. Some of the images from that Google search results page illustrate how that works.
I will take a look at these envelope detector circuits. Looks like it can be handy in my project.
 

Thread Starter

Jurijs Ješkins

Joined Sep 22, 2017
7
Project update:
On Friday we had "Science Night" at our university. It is an event for the general public, that is interested in science. Every department was presenting something interesting from their field of work. We presented our sensor system. For this event, we developed a software, that was reading sensor data and drawing live plot of vibration data coming in. Everyone was welcome to test our system by jumping around the sensor. The one, who had the strongest jump got a prize.
The sensor was working good.We had some problems during the start of the event but managed to deal with them quickly. People were interested in our system. It was a lot of fun for the kids. A picture with my colleague and our system during the presentation:

viesturs_ZN_2017.jpeg
 
Top