Seisberry

The Seisberry in autonomous mode: 3 orthogonal broadband geophones, oriented North, South and Vertical; a Raspberry PI running Raspian Buster (green PCB); a HAT (Hardware On Top) blue PCB to perform AD (Analogic to Digital) conversion; one internal micro SD for the Linux OS; two external Micro SD memory to store the seismic data in raw format and Miniseed / Segy; a power supply, here instantiated as a 5V battery for autonomous use. For stationary use, the battery is replaced by a regular USB charger, like an iphone charge. The network connection (either wifi or cable) is used for communication with the device (sftp, VNC, http) and synchronization of the time server.
Example of a day plot from the Vertical component of the Seisberry. The seismic events in the station area for that day, as cataloged by USGS are used for labeling the plot. The night time (with less seismic noise around the station) is easily identifiable. Time are local times.

For those eager to get going, head to the Seisberry Fast Build page. The basic build should take about 30mn if you have some previous Raspberry Pi project under your belt, maybe 1 hour if it is your first Pi project.


I wanted a seismic node, fully open source, with 1 to 4 components, able to record either autonomously in the field and output SEGYs, or be used as an Iris seismic station recording mini-seeds and uploading to an Iris server. I also wanted the node to run an Apache web server accessible in 1 click from anywhere in the world and displaying the last 48 hours of recorded seismic activity. The 1 component version needed to be under $100 and the 3C version under $160, to be truly accessible to schools or institutions in developing countries.

Before embarking on the project, I considered the Raspberry Shake, but with a price tag from $340 in the most basic 1C version to $840 for more interesting ones (May 2020 prices), a closed source software and a very limiting 10ms sample rate (suitable for seismology but insufficient for reflection seismic), I decided not to go this route. The Raspberry Shake may still be suitable for users who want a plug and play solution, and value some support. The whole shakenet infrastructure is also very valuable, for those interested in those features.

The British Geological Survey has a simple and well documented project based on Raspberry Pi, but the ADC board they use and the choice of pure Python is unfortunately limiting the performance. Still, some of the concepts of the current project draw some inspiration from the BGS project.

In the end, I decided for my efforts to fork Will’s project as it is open source and make use of one of the best (and still super cheap) ADC board available in the market (in mid 2020). The original code is clean and well documented, so I thought it would be a quick and easy project. It ended up to be much more than I anticipated, with a steep learning curve on Raspberry Pi, a deep dive into Linux systems and eventually some mechanical design.

For those who wish to reproduce the project from the source but without the pain of the discovery work, I ended up writing a very detailed guide here, also available on Github. Read the guide, it is a labor of love, and it compiles all the information I wish I had when I started this project. I distribute the source code on my Github page only, as for version control and accessibility to user it beats any static web page solution. The data processing and everything not real time is written in Python and available here. I ended up rewriting most of the Python from the original fork but the original spirit and ideas still live. Some of the python code is optimized for Raspberry hardware (with its limited memory and 32 bit system) while some other programs are optimized for a 64 bit work station. Regardless of the optimization, the Python code is OS agnostic, tested on Windows, Linux and Raspbian, and I am pretty sure it will work on Mac as well. The real-time part, close to the hardware and where performance is critical is written in C and available here. It is from the board manufacturer’s example, modified by Will for the seismo-meter purpose, to which I added a few features after the fork, like the ability to change gain or sample rate without recompiling the code. Finally, the additions to the original fork were the crontab scheduling of tasks, the disk cleaning scripts removing older files on a daily basis, the Apache server and the web page showing the last 2 days of data, all updated daily by Python scripts. Also some output options like SEGY and mini-seed, and the GPS time server for offline real time.

The transparent acrylic box is designed with boxes.py, then the various holes and the engraving are made in Inkscape. I used 9mm transparent acrylic, which is totally overkill and on the expensive side for such a small box, however… I love the look and feel of it, particularly the prismatic reflections inside the acrylic walls. The Seisberry (that’s the name of the project, if you wondered) had to be a good looking object. I got the acrylic laser cut by Ponoko. The quality was absolutely flawless but the order very slow, possibly due to the Covid19 disruptions at that time. I went through various box designs and the latest is here, ready to sent to Ponoko (or their competition) in svg format. Use 9mm thick clear acrylic, make sure the contours, including the through holes are set to “cut” and the logo is set to “engrave”.

The geophone supports are parametric and designed with OpenSCAD: one model for the vertical geophone, and one model for both horizontal geophones. The Openscad files are also here on Github if you wish to modify them. Alternatively you can download below the .stl, ready to be sliced to your 3D printer, or printed by any online supplier. I printed mine on my Ender 3 Pro, in PLA. There are grooves for cable ties, so definitely use supports in your print. I used 100% infill for rigidity. If you print online and are unsure of the material, I would recommend something more durable than PLA, maybe PETG.

Last step, you may calibrate and test your instrument.

Another view of the Seisberry. Lights are on.

5 thoughts on “Seisberry

  1. I will have a few questions/comments, but I will break these up into small segments for ease and focus.

    Great you did this project for others as great alternative to Raspberry Shake that is very costly. Great you kept with this DIY project and documented it so well. Even to purchase the Raspberry Shake ADC board is really expensive. Closed source is another aspect like you I also do not like aside from very expensive nature of. The Raspberry Shake focused on local events that seismic observatories are not focused on for most part.

    I started to work a couple months ago to replace the ADS1115 I had been using for last year with a geophone and Lehman type seismometer I made. Each are in different locations and each for a very different intended purpose. Therefore each using its own ADS1115. I decided to try the same ADS1256 Pi Hat made by Waveshare I discovered only few days ago by chance your Seisberry uses. Your Seisberry project uses the same Waveshare ADC Pi Hat as I have been working on for few months, and still am.

    One challenge with the ADS1115 is I cannot use more than one of the two differential configured channels unless I want to reduce my SPS rate to 40SPS from 100SPS while still able to use about 15-16 ENOB. The is due directly to the ADS1115 maximum data rate of 128 SPS for 15.33 bit resolution and takes 7.8125ms per sample to do ADC conversion. The rated maximum of the ADS1115 is 860SPS would have about 13.8 bit resolution and abut 1.162ms per conversion. I did not try both ADS1115 differential channels at 860SPS, but would guess I could do 100SPS with the ADS1115 at 860SPS, and in fact could do so a 475SPS at about 2.1ms per sample. Basically one has to allow for about 3.2 factor time to use both ADS1115 differential channels due to the slow data rate of the ADS1115. Maybe one day I will try these higher data rates of the ADS1115 just to see if can use both differential channels for an effective 100SPS data rate.

    With a ADS1256 data rate of 7500 SPS that the Seisberry code uses it means each sample takes about 0.434ms. Far better than 7.8125ms I have been using with the ADS1115. It alos means with mor ethan one ADS1256 channel there will be far less delay between channels sample taken as well as more channels than the ADS115. That is major difference improvement with the ADS1256 in not just time, but delay in samples between channels compared to the ADS1115.

    Once I have working ADS1256 code and related Pi configuration with at lease my gnuplot based scripts and lighthttp I will be able to see the difference between using a ADS1115 and ADS1256.

  2. I would like to try your Seisberry image. Sadly I cannot access Dropbox due to how my system is configured. Is there another venue or source to download the Seisberry image from?

  3. Is there a reason you like to run the ADS1256 software at the about 750 samples a second? You indicate 10ms is for seismic events, but not reflection seismic events. Can you indicate what is the difference between seismic events and reflective seismic events?

  4. Are you aware the one key aspect of the Raspberry Shake ADC board is to extend the frequency response of the 4.5Hz geophones the Raspberry Shake uses? I do not recall exactly, but I think the frequency of the 4.5Hz geophones is extended to about 0.8Hz? Using a geophone without low frequency extension the sensitivity falls off at very significant rate below the geophone frequency. Have you considered using some simple inexpensive electronic parts to extend the geophone low frequency response of your Seisberry?

Leave a Reply