
Строим систему круглосуточного мониторинга грозовой активности на Arduino Nano с антенным датчиком, усилителем сигнала и записью данных на компьютер.
Каждый грозовой разряд создаёт мощный электромагнитный импульс, который распространяется на сотни километров. Этот импульс можно уловить простой антенной и усилить до уровня, который Arduino способен измерить. Именно на этом принципе построены профессиональные системы обнаружения молний, и мы соберём упрощённый аналог, способный работать круглосуточно и записывать данные на компьютер.
Проект объединяет физику электромагнитных волн, аналоговую электронику (усиление слабого сигнала) и цифровую обработку данных. Ученики увидят на экране реальные всплески от грозовых разрядов -- это производит сильное впечатление.
Целевая аудитория: ученики 8-11 классов.
Время на проект: 2-3 занятия по 45 минут.
Молния генерирует электромагнитный импульс в широком диапазоне частот. Антенна улавливает этот импульс как слабое напряжение, модуль усилителя увеличивает его в тысячи раз, а Arduino Nano оцифровывает аналоговый сигнал и передаёт данные на компьютер через USB. На компьютере программа AmaSeis рисует непрерывную сейсмограмму (точнее, «электрограмму»), показывая активность за последние 24 часа.
Система работает по принципу NerdaqII -- прошивки для Arduino, которая превращает плату в 16-битный АЦП с частотой около 18.78 измерений в секунду. Данные передаются в программу AmaSeis, которая изначально создавалась для записи сейсмических данных, но отлично подходит для любых аналоговых сигналов.

Антенна -> Усилитель:
Усилитель -> Arduino Nano:
Антенну расположите как можно дальше от компьютера и силовых кабелей. Даже простой провод длиной 20 см, подключённый ко входу усилителя, способен уловить близкие разряды. Для лучших результатов используйте катушку из 50-100 витков медного провода на ферритовом стержне.

Основа проекта -- прошивка NerdaqII, которая превращает Arduino в устройство записи аналоговых данных. Ниже -- упрощённая версия, совместимая с AmaSeis.
```cpp
// Система мониторинга молний на Arduino Nano
// Считывает аналоговый сигнал и передаёт по Serial
// Совместимо с программой AmaSeis
#define SENSOR_PIN A0 // Пин аналогового входа
#define SAMPLE_RATE 19 // Частота выборки (Гц)
#define BUFFER_SIZE 64 // Размер буфера усреднения
// Переменные для передискретизации (oversampling)
long sampleSum = 0;
int sampleCount = 0;
unsigned long lastSample = 0;
unsigned long sampleInterval = 1000 / SAMPLE_RATE;
// Калибровка нулевого уровня
long zeroLevel = 512; // Среднее значение АЦП (10 бит)
void setup() {
// Скорость порта должна совпадать с настройками AmaSeis
Serial.begin(9600);
// Настраиваем АЦП для максимальной точности
analogReference(DEFAULT);
// Калибровка: определяем нулевой уровень в покое
Serial.println("Калибровка...");
long total = 0;
for (int i = 0; i < 500; i++) {
total += analogRead(SENSOR_PIN);
delay(2);
}
zeroLevel = total / 500;
Serial.print("Нулевой уровень: ");
Serial.println(zeroLevel);
Serial.println("Мониторинг запущен");
Serial.println("---");
}
void loop() {
// Непрерывное считывание с усреднением
int raw = analogRead(SENSOR_PIN);
sampleSum += raw;
sampleCount++;
unsigned long now = millis();
// Отправляем данные с заданной частотой
if (now - lastSample >= sampleInterval) {
lastSample = now;
// Среднее значение из накопленных выборок
int averaged = sampleSum / sampleCount;
sampleSum = 0;
sampleCount = 0;
// Масштабируем в 16-битный диапазон для AmaSeis
// Центр: 32768, диапазон: 0-65535
long value16bit = map(averaged, 0, 1023, 0, 65535);
// Вычисляем отклонение от нулевого уровня
long deviation = averaged - zeroLevel;
// Формат вывода для AmaSeis: одно число на строку
Serial.println(value16bit);
// Детектирование сильных импульсов (возможные молнии)
if (abs(deviation) > 50) {
// Помечаем в отладочном выводе
// (AmaSeis игнорирует строки, начинающиеся с #)
Serial.print("# ИМПУЛЬС: отклонение=");
Serial.print(deviation);
Serial.print(" сырое=");
Serial.println(averaged);
}
}
}
`
Для полноценной работы с AmaSeis скачайте оригинальную прошивку NerdaqII с сайта проекта -- она обеспечивает точную синхронизацию и формат данных, ожидаемый программой.
AmaSeis -- бесплатная программа для непрерывной записи аналоговых данных. После установки:
1. Укажите COM-порт, к которому подключена Arduino (меню Settings -> Device)
2. Выберите устройство SETUPK1 с нулевым уровнем 32768
3. Настройте фильтры: низкочастотный и высокочастотный для подавления помех
4. Установите усиление (Gain) около 300 -- подберите экспериментально
5. Длительность строки гелиокордера: 1 час (на экране уместятся 24 часа)
После запуска программа начнёт рисовать непрерывную ленту данных. Спокойный фон будет ровной линией, а грозовые разряды -- резкими всплесками.
Передискретизация (oversampling). Arduino считывает АЦП сотни раз в секунду, но передаёт только 19 значений. Усреднение множества быстрых замеров повышает эффективную разрядность: из 10-битного АЦП получается 12-14 бит полезного разрешения. Это критически важно для обнаружения слабых сигналов на фоне шума.
Калибровка нулевого уровня. При включении система в течение секунды считывает сигнал «в покое» и запоминает среднее значение. Все дальнейшие измерения сравниваются с этим уровнем. Без калибровки дрейф нуля маскировал бы слабые импульсы.
Усиление. Модуль усилителя слабых сигналов -- ключевой элемент. Электромагнитный импульс от молнии на расстоянии 50 км создаёт на антенне напряжение в микровольты. Без усиления в 1000-10000 раз Arduino просто не увидит его на фоне собственного шума АЦП.
Платформа Alashed Hardware предлагает готовые наборы с модулями усилителей и антеннами, совместимыми с Arduino Nano. В Alashed CodeStudio можно визуализировать аналоговый сигнал в реальном времени прямо в браузере, что упрощает отладку и делает проект доступным даже без установки AmaSeis на школьные компьютеры.
Подключите школу к пилоту. Генерируйте КМЖ за 2 минуты, ведите CodeStudio уроки, заказывайте оборудование — всё в одном месте.