Skip to content
Code and Arduino shield for a frequency analyzer for geometric sensors
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
bitbake-recipe Watchdog added for a board where connman crashes every now and then. Apr 5, 2015
Amplifier PCB.pdf Bug in output stage fixed, redundant capacitor removed. Feb 26, 2015
Amplifier Schematic.pdf Bug in output stage fixed, redundant capacitor removed. Feb 26, 2015
Amplifier.brd Bug in output stage fixed, redundant capacitor removed. Feb 26, 2015
COPYRIGHT Initial commit. Feb 12, 2015
Geophone.ino Checksum added to human-readable output. Feb 26, 2015
LICENSE Initial commit Feb 12, 2015
README Issues communication note added Mar 24, 2016
colormaps.png Heatmap saved as PNG rather than JPEG. Apr 3, 2015 from_date bug fixed. Mar 30, 2015
geophone-timestamped.log Log filter script that selects a range of datestamps added. Mar 6, 2015
geophone.log Initial commit. Feb 12, 2015
geoplot.sce Bug fixed Feb 12, 2015
read-serial-log.c Removed the endless loop and exit on failure anyway. Mar 27, 2015
twiddle_factors_256_br.h Closes issue #1 regarding prog_const_int16 not recognized by the comp… Mar 16, 2016


Geophone is an amplifier and a frequency analyzer for geometric sensors
such as the SM-24 geophone element from ION Geophysical Corp.

The amplifier is provided as an Arduino shield and the frequency analyzer is
implemented in software on the Arduino.  Because of the memory usage an
Arduino Mega or an Arduino Due is required.  Other Arduino versions with
at least 4 Kbytes of SRAM will require modifications in the code.

The Arduino code is richly commented and should be easy to understand and/or

For the Arduino Mega, use a single-supply operational amplifier capable of
working at 5V (such as an OP213) and set a jumper on JP3 to 5V mode.  For
the Arduino Due, use a single-supply operational amplifier working at 3.3V
(such as a TLC272 or an LT1215) to avoid damaging the Arduino's analog input.
JP3 should be placed in 3.3 mode.

Every second the Arduino software reports frequency components from 0 to 256
Hz and their measured amplitudes for amplitudes that exceed a programmed
threshold over the serial port.  The amplitudes are not calibrated; you will
have to perform a calibration yourself to translate the amplitudes into
ground movement in, e.g., meters per second.

The threshold may be changed by transmitting a new value followed by a
newline character.  The threshold is stored in EEPROM.

The frequency analysis lends itself directly to a 3D (or colored) time/
frequency plot that displays the intensities of different frequencies versus
time.  The Scilab script geoplot.sce reads a log file with the output and
generates such an image; geophone.log is a short sample of the output.

Geosampler.ino is a simple piece of software that samples the geophone
output at a rate of 512 samples per second and outputs the values over the
serial port.

read-serial-log.c provides sample C code that reads the serial output from
Geophone.ino and adds a timestamp.  The output may be plotted using the perl script, which generates a JPEG file with the graphical

Inquiries via the Github issue tracker, please.  This way, others may benefit
from the answers.
You can’t perform that action at this time.