Сейсмограф из динамика: слушаем дрожание Земли
Земля постоянно дрожит. В большинстве мест — совсем слабо, на уровне шума. Иногда — от далёкого землетрясения, сигнал которого прошёл тысячи километров сквозь мантию. У тебя дома есть инструмент, который может это поймать — старый динамик от колонки.
Принцип работы сейсмографа
Все сейсмографы основаны на инерции: тяжёлое тело сопротивляется изменению движения. Если корпус прибора резко сдвинуть — массивный маятник внутри «не успеет» за корпусом. Относительное смещение маятника и корпуса — это и есть измеряемый сигнал.
Динамик как сейсмограф:
Динамик — это катушка в магнитном поле. При движении катушки возникает ЭДС (закон Фарадея). Обычно катушка движется — мы слышим звук.
Если перевернуть логику: прикрепить магнит к массивному маятнику, а катушку — к корпусу. Земля трясётся → корпус движется вместе с ней → катушка движется → маятник с магнитом остаётся неподвижным (инерция) → катушка движется относительно магнита → ЭДС.
Что фактически делаем: кладём динамик мембраной вниз на твёрдую поверхность (пол). При сейсмических колебаниях корпус динамика движется с полом, а подвешенная катушка с диффузором остаётся неподвижной. Сигнал снимается с клемм.
Сборка уровня 1: динамик + Arduino
Что понадобится:
- Широкополосный динамик 4–8 Ом, диаметр 10–15 см (со свалки, из старой колонки — 0 руб, или купить ~150–300 руб)
- Arduino Uno или Nano (~400 руб)
- Резистор 10 кОм
- USB-кабель + компьютер
- Провода
Схема подключения:
Динамик генерирует переменное напряжение — от −100 мВ до +100 мВ при типичных вибрациях. Arduino читает только 0–5 В. Нужен сдвиг уровня:
Динамик (+) ── R1 (10кОм) ── A0 Arduino
┌─ R2 (10кОм) ── GND
Динамик (-) ── GND Arduino
Питание (5V) ── R3 (10кОм) ──┘
Проще: делитель напряжения сдвигает сигнал динамика на 2.5 В (середина диапазона Arduino).
Код (Arduino):
const int SEISMIC_PIN = A0;
const int SAMPLE_RATE = 100; // Гц
unsigned long lastTime = 0;
void setup() {
Serial.begin(115200);
analogReference(DEFAULT); // 0–5В
}
void loop() {
unsigned long now = millis();
if (now - lastTime >= (1000 / SAMPLE_RATE)) {
lastTime = now;
int raw = analogRead(SEISMIC_PIN);
// Вычесть смещение (2.5В = ~512 единиц)
int signal = raw - 512;
Serial.println(signal);
}
}
Визуализация: используй Serial Plotter в Arduino IDE. При топоте рядом — увидишь импульсы.
Сборка уровня 2: вертикальный маятник
Для чувствительного прибора нужен собственный подвес:
- Возьми пластиковый контейнер или деревянную рамку.
- Подвесь динамик мембраной вниз на длинных (20–30 см) нитях — пусть качается как маятник.
- К центру мембраны прикрепи груз (гайка 50–100 г).
- Поставь конструкцию на пол.
Теперь при горизонтальных колебаниях маятник будет двигаться сильнее — лучше откликается на горизонтальные P-волны.
Сборка уровня 3: Raspberry Pi + 24/7 запись
Что понадобится:
- Raspberry Pi Zero 2W (~1200 руб) или Pi 4
- USB звуковая карта (~300 руб)
- Динамик
Звуковая карта как АЦП: выход динамика подключается к линейному входу звуковой карты. Linux видит это как аудиоустройство. Частота дискретизации 44 100 Гц — гораздо лучше, чем 100 Гц Arduino. Сейсмические волны — от 0.01 до 20 Гц, так что высокая частота здесь для надёжности.
Программное обеспечение:
# Запись через arecord
arecord -D hw:1,0 -f S16_LE -r 44100 -c 1 -d 3600 seismo_$(date +%Y%m%d_%H%M).wav
# Или непрерывная запись с буферизацией
sox -t alsa hw:1,0 -t wav - | python3 seismo_monitor.py
Python-анализ:
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import butter, filtfilt
def bandpass_filter(data, lowcut=0.1, highcut=20, fs=44100):
"""Полосовой фильтр для сейсмических частот"""
nyq = 0.5 * fs
b, a = butter(4, [lowcut/nyq, highcut/nyq], btype='band')
return filtfilt(b, a, data)
# Загрузить wav, отфильтровать, построить сейсмограмму
Raspberry Shake: профессиональная сеть любителей
Raspberry Shake — стартап из Панамы, выпустил доступный (~300$) профессиональный сейсмограф на базе Raspberry Pi. Сеть насчитывает >20 000 станций в 140 странах.
Данные всех станций открыты. Сайт позволяет увидеть сейсмические события в реальном времени.
Концепция та же, что и у нас, но с профессиональным датчиком (MEMS-акселерометр). Наш динамик — первый шаг к этому.
Citizen Science: школьная сеть сейсмографов России
Россия — одна из наиболее сейсмически активных стран мира (Камчатка, Сахалин, Байкал, Кавказ). При этом сеть сейсмических станций на огромной территории имеет «белые пятна».
Идея: разместить самодельные сейсмографы в 100 школах по всей России. При одновременном срабатывании нескольких приборов можно локализовать источник по разнице времён прихода волн.
Типы сейсмических волн:
- P-волны (продольные) — распространяются через любые среды, быстрые (~6–8 км/с в коре)
- S-волны (поперечные) — только через твёрдые тела, медленнее (~3.5–4.5 км/с)
- Поверхностные волны — самые разрушительные, самые медленные
Разница во времени прихода P и S-волн позволяет оценить расстояние до эпицентра.
Вопросы для исследования
- Как далеко от прибора можно обнаружить человека, идущего по коридору? Зависит ли это от типа пола?
- Есть ли разница в сейсмическом шуме днём и ночью? (Городской сейсмический шум от транспорта.)
- Можно ли записать отклик здания на сейсмическое возбуждение (топот)? Что такое резонансная частота здания?
- Сравни чувствительность своего прибора с ближайшей профессиональной станцией (данные открыты на IRIS, GFZ).
- Может ли сейсмограф зафиксировать удар молнии (электромагнитный импульс)? Или это другой принцип?