Dream to Learn is shutting down...

We are very sorry to say that Dream to Learn will be shutting down as of December 28th, 2019. If you have content that you wish to keep, you should make a copy of it before that date.


Citizen Science: Private Earthquake Early Warning Systems

POSTED IN: Data Analytics & Visualization Blog


Early warning systems for earthquakes can save lives.  At present, California lags behind other regions such as Japan and Mexico in providing citizens living in quake regions (like San Francisco bay area) with effective advance warnings.   This blog outlines a "Citizen Science" effort in the development of prototype systems that will use multiple data sources, tuned to P-wave detection, to provide people with advance warning (typically up to ~10 seconds) when a larger magnitude earthquake is imminent.  

This blog outlines an ARDUINO BASED prototype that samples from a high-sensitivity OILFIELD GEOPHONE to trigger on user specified conditions.  It also references several other Citizen Science efforts focused on other areas (like Broadcast and notifications);   Warning: it's pretty "hacky" :)

Background  & Operation 

We are located in the San Francisco bay area - Kensington, California; Berkeley California and Daly City, California.  We experimented with a few modules in 2012 and 2013.  The system here was deactivated about 12 months ago (I moved house); - others (like Daly City) remained in operation;

Key points for this Module (Arduino/Geophone):

  • Using sensitive geophones to gather seismic telemetry data FROM USER'S OWN LOCATION
  • Methods (like DFT and FFT) running in Arduino to analyze signal components
  • Simple user interface (Serial Coms) to allow user to see triggers and set thresholds; (minimize false positives) 
  • LED to provide a strong visual of trigger; can also connect this to audio alarms.
  • Groundwork - exploring methods to push information to wider network (e.g. HTTP POST, UDP Stream, Twitter Chirp, other citizen science elements.

The other systems focus on other areas in the system (Josh's uses California ShakeAlert data and focuses on alerting, Chris' uses chip based accelerators and logging and pushing data) 

Below: Data from the Daly City monitor from the August 24, 2014 Napa Quake (IC accelerometer inputs)

User Interface

To calibrate, test and tune the Arduino code - the serial interface in the Adruino UI is called.  By pressing "S" to toggle the "S"tream (or data "S"pew) - user can enter into "M"enu mode to set "T"hreshold sensitivity (0-9) and "D"ecay rate (0-9) which governs how quickly the system resets after a trigger.   

Frequencies and frequency bins are also presented, as part of FFT spectral analysis, but not covered in depth here.

BRIEF VIDEO - Sept 7 2014 - Version 2.0 (Dollhouse) https://www.facebook.com/video.php?v=10152644173475310&set=vb.735770309&type=2&theater


Device Hardware

Ardiuno Uno

  • 5V Pin (red wire) pulled from Arduino to provide 5v rail on breadboard
  • Ground (green wire) pulled from Arduino to provide 0v
  • PIN9 (digital side) running into resistor that runs to LED that runs to ground rail (alert bulb) - a 330 ohm resister from 5v will give you about 15 miliamps - usually fine for standard LEDs (check data sheet if not sure)
  • PINA0 - Analog input.  This pin has a 2.5 volt DC bias - set by taking two, largish, equal resistors (330k) and 'splitting' the 5v and 0v rails; your DMM should show you around 2.5 volts when powered up. RUnning into this 2.5v, higher impedance node, is a capacitor - with the INPUT signnal - mine is from a geophone - the capacitor let's AC signal across, but not DC.
  • DC input circuit - may need to fiddle with it.  what's here is crude, you can tune it and smooth/filter it better for more stability (i'm doing smoothing in software)


https://github.com/rustyoldrake/earthquake.arduino  Code is from 2012, and my first GIT commit - so it's pretty rough - but works at a basic level. As I was dusting it off in 2014 - a few other notes:

1) To 'activate' it - you need to open up serial comms window
2) Set it to 115200 Baud (when you open serial comms window and press 's') to spew data - Make sure you select right COM port
3) For wiring up - Analog Pin A0 input
- Analog input MUST be DC biased at around 2.5 volts - and then the input sensor signal is Capacitively coupled - so basically, find two large value resistors and divide 5v and 0v rails in half - THEN - run your geophone or speaker or whatever input transducer you have, into it.

If any questions, feel free to ping me at ryan[at]dreamtolearn.com


I'm grateful to all the other folks that I've had the pleasure of working with since 2011 on the projects in the quake warning systems - including


Interested in more content by this author?

About the Author

Ryan Anderson

Ryan Anderson

Hi! I like to play with data, analytics and hack around with robots and gadgets in my garage. Lately I've been learning about machine learning.

About this blog

Description is...<br/>Data Analytics & Visualization Blog - Generating insights from Data since 2013

Created: July 25, 2014


Up Next