Guide by Tim; Set Up a Geophone with a Raspberry Pi and an ADC (ADS1115)

Heyya Kevin,

Does seem like something weird is going on. The ADS1115 definitely does already have pull-up resistors. It may have something to do with the Adafruit_ADS1x15 Package doesn’t have the functionality required to operate with a Raspberry Pi Pico.

I discovered this Package for using Texas Instrument ADS1115 analog-to-digital converter with the Raspberry Pi Pico which should help hugely - GitHub - antgon/pico-ads1115: A C library for using Texas Instrument ADS1115 analog-to-digital converter with the Raspberry Pi Pico

I also discovered this quite seriously in-depth video about making ADS1115 work with Raspberry Pi Pico. He is taking two Analogue inputs (from joysticks) to the ADS1115 board and then being read by a Pico - Raspberry pi pico [ADS1115 MicroPython Driver] From scratch Part 2 - YouTube

Hopefully, that information will be all you need to get your Geophone and Raspberry Pi Pico Project off the ground :blush: really looking forward to seeing it work.

Kind regards,
Tim

3 Likes

Hello all,

maybe there is something missing ?

I built all up as shown in the YT Video, but headless.
I installed all the links on a fresh RasPi Debian with user Pi.

I get this Error:

Traceback (most recent call last):
  File "Differential-Data-Collect-Gain.py", line 3, in <module>
    import Adafruit_ADS1x15
ImportError: No module named Adafruit_ADS1x15

I installed i2c-tools and my ADS was found ad address 0x48.

Maybe someone could give me a clue ?

Edit:
I got it working with:
Phyton3 Differential-Data-Collect-Gain.py

Now another Question:
I want to have a portable System, just to walk down the street.
For that I just want to use a SPI 1.8" Display “Model: SBC-LCD01”

How have I to modify the code to draw / print the Graph on the SPI Display ?

Thanks!

Kind Regards
Atratus

Hi guys! I’m new to the forum, and to the world of Raspberry Pi, so I could definitely use some help.
I am working on an art installation that uses a geophone as a trigger for sound. Is there a way to create a script that will let the geo phone trigger pre-made .wav files instead of triggering a camera?

1 Like

Hey Stef,

That sounds like a brilliant idea! And it is definitely possible to customise the photo-geophone script to instead play sounds.

A great Python Package that would work for you is | pygame |.

A basic script to make | pygame | to run a .wav file would look something like below.

import pygame
pygame.mixer.init()
pygame.mixer.music.load("YOUR_FILE.wav")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
    continue

The fun part comes in by adding those lines of code appropriately into the photo-geophone script to make it play your sounds (instead of taking a photo) once the threshold is reached.

I hope this helps :blush:

Kind regards,
Tim

That worked wonders! Thank you so much @Tim, you’re a gem!

Does anyone here have any experience using the SM24 geo-home directly as a microphone for say a ZOOM recorder or something similar? If so: how would one hook it up? Could I just attach a minijack cable to the + and - points at the Geophone?

1 Like

Hey Stef,

I absolutely love this idea! From my quick research it looks like people have done this with a geophone called LOM Geofón. https://www.robbieeliassound.com/post/lom-geofón-field-recording-experiments

I see no reason why it couldn’t be done with the SM24. We have this forum topic here but it didn’t lead anywhere of huge value - Geophone SM -24 connect to ZOOM H5 digital recorder

Ill pop your forum post around and see what others have to contribute.

Kind regards and thanks for your kind words,
Tim

Hi Stef,

The geophone is really just a passive microphone with no internal amplification so you’ll probably need some form of pre-amplifier to get meaningful signal output for any device you use it with unless your device of choice is designed for passive microphone input.
This is handled in Tim’s guide using the amplifier built into the ADC, to boost the signal up to a useful level before conversion.

If you really wanted to optimise your signal measurement you’d want to match your device input impedance to the impedance of the geophone. There are a few details on its impedance characteristics on the datasheet, but it gets into deep-level audio design fast. For most users, Tim’s setup is a good balance of complexity and performance.

1 Like

Dear all,

It’s been a while, but since your help earlier this year I have embedded the geophone in a new installation I made whilst on residency in Taiwan. You can find more information about the work, Soil Dogs, here
Now I’m invited by a dutch museum to set it up there, and I bought a new Raspberry Pi for the occasion. Unfortunately, after going through all the installation steps, both Thonny and Geanny give me an error along the following lines:

pygame 1.9.6
Hello from the pygame community. Contribute - pygame wiki
Traceback (most recent call last):
File “/home/stefveldhuis/Desktop/SoilDogs.py”, line 25, in
adc = Adafruit_ADS1x15.ADS1115(address=0x48, busnum=1)
File “/usr/local/lib/python3.9/dist-packages/Adafruit_ADS1x15/ADS1x15.py”, line 319, in init
super(ADS1115, self).init(*args, **kwargs)
File “/usr/local/lib/python3.9/dist-packages/Adafruit_ADS1x15/ADS1x15.py”, line 82, in init
self._device = i2c.get_i2c_device(address, **kwargs)
File “/usr/local/lib/python3.9/dist-packages/Adafruit_GPIO/I2C.py”, line 64, in get_i2c_device
return Device(address, busnum, i2c_interface, **kwargs)
File “/usr/local/lib/python3.9/dist-packages/Adafruit_GPIO/I2C.py”, line 97, in init
self._bus = Adafruit_PureIO.smbus.SMBus(busnum)
File “/usr/local/lib/python3.9/dist-packages/Adafruit_PureIO/smbus.py”, line 114, in init
self.open(bus)
File “/usr/local/lib/python3.9/dist-packages/Adafruit_PureIO/smbus.py”, line 140, in open
self._device = open(f"/dev/i2c-{bus}", “r+b”, buffering=0)
FileNotFoundError: [Errno 2] No such file or directory: ‘/dev/i2c-1’

My code is similar to the one you made, with tweaks here and there to customise it to my needs.
How can I fix this problem? I have tried reinstalling everything, but to no avail.

Kindest regards as always,

Stef

Hey Stef,

It looks like there is an error there with you i2c interface and the file or directory ‘/dev/i2c-1’ cannot be found.

One possible solution is to check if the necessary kernel module is loaded by running the following command in the terminal:

sudo modprobe i2c-dev

Another possibility is that the I2C interface on your system is not enabled by default. To enable it, follow the instructions in this guide.

Give those a go and see if it helps resolve any issues, if not there may be some more steps we can take to figure out what’s going on.

Cheers,
Blayden

1 Like

That did it Blayden! Works like a charm now. Thank you very much!

2 Likes

Thanks a lot for your lovely tutorial! It helps a lot!
I’m new to this field and have questions need your kind help.
I plan to deploy like 4 to 5 geophone in my room and get wave graph from each. It seems uneconomical to buy 5 RPi to implement them. Is it possible to use wireless communication module (eg, radio, wifi, IoT) instead of wired connection between geophones and RPi? Do you have tutorial?
Thanks!

@Tim Hi, Tim. Could I have a chance to get my question answered? Is it feasible to connect RPi and several geophones through wireless communication?
Thanks~~~

Hello
My name is Masoud and my work is exploratory geophysics. I saw your nice program about using geophone and making a simple seismograph and it was very nice. My question to you is how to increase the number of channels of this seismograph so that a seismic wave can be observed with it. That is, he observed several seismic signals in one record.
Thanks :pray::+1:

Hi @Masoud264880 - welcome to the forums :slight_smile:
The ADS1115 ADC is a 4 channel amplifier. To use with a geophone requires 2x channels (to take a differential measurement)

That means each ADS1115 could support 2x geophones.
To add more geophones requires additional ADS1115 ADCs, which can be added to the same I2C bus by setting a new address. Each ADS1115 requires a unique address so the Pi can talk to it individually.

Soldering the A0 jumper will allow connecting a second ADC to the I2C bus (with address 0x49) for a maximum of 4x geophones.

Hi Tim, I am trying to install the packages using the scripts. They are not working. Is there an updated path for these?

1 Like

Hi Dylan,

Welcome to the forum! Can you please share what Pi you are using and what version of the OS you have. I know there’s some issues with pip on Bookworm so you may need to install Bullseye.

1 Like

Could this be adjusted to make a triaxial geophone? That would require 3 elements (2 horizontal SM-24) - can they be sourced?

1 Like

The python code has no waits or sleeps. When you read from i2c, does it wait for the next reading before continuing? ie its however-many samples per sec (Hz), so how do you ensure you read each sample and not double-read or miss a sample?

1 Like

Why do you say you need the 3V supply for the ADC,
when the webpage for that ADS1115 says it can accept " * Wide supply range: 2.0V to 5.5V"

?

2 Likes

Hi Paul,

Welcome!

Unfortunately, we don’t have any suppliers currently stocking horizontal geophones - if you’re after a bulk QTY let us know!

I’m not too sure how Adafruit or Tim crafted the code for this one, in more modern drivers sometimes waits are added to ensure that data

Raspberry Pi’s operate on a logic level of 3.3V, the module has internal pull-up resistors to that supply voltage, so if a 5V supply was used the Pi would be damaged.

Liam

1 Like