Сила природы способна впечатлять своей красотой, и она же порой вызывает у нас самый настоящий ужас. Бури, ураганы и торнадо ежегодно лишают жизни сотни людей и приносят ущерб на десятки миллиардов долларов. Предотвратить такие явления нельзя, но если своевременно проинформировать о грядущем катаклизме, то можно сильно снизить количество жертв и сократить финансовые потери.

В США этим занимается агентство National Weather Service (NWS), и именно их усилиями граждане своевременно получают оповещения об экстремальной погоде. В этой публикации мы коснемся одного из способов с помощью протокола S.A.M.E. Надевайте дождевики, запасайтесь фонариками и спичками — сегодня посмотрим, как выглядит предупреждение о торнадо, и даже сгенерируем радиосигнал об этом своими руками.

NOAA Weather Radio

Мы уже рассказывали, что у NWS есть большое количество источников данных — начиная от сотен метеорологических станций и заканчивая сетью из 6 700 волонтеров, ежедневно сообщающих о наблюдаемых погодных явлениях. Когда становится ясно, что они станут опасными на какой-либо территории, в радиоэфир выпускается специальное предупреждение. Такое оповещение можно принять на любой радиоприемник или VHF-рацию, поддерживающую прием в морском диапазоне (используются частоты от 162.400 MHz до 162.550 MHz).

Многие производители радиооборудования реализуют Weather Radio в виде отдельной фичи. Например, всеми любимый «народный» Quansheng UV-K5/K6 прямо заявляет о поддержке приема погодных оповещений, хотя эти станции не сертифицированы в США:

Источник

На практике это значит, что в стоковой прошивке уже занесены все частоты, на которых передается экстренный сигнал оповещения. У этого трансивера есть возможность работать одновременно на двух частотах. Если углубиться в детали, то там нет двух отдельных радиотрактов, просто трансивер быстро переключается с одной частоты на другую и останавливается там, где появляется сигнал.

Чтобы включить прием погодных оповещений, нужно сделать два простых действия:

  1. Активировать опцию NOAA_S (номер 49 в стоковой прошивке).

  2. Нажать последовательно клавиши F и 5, после чего трансивер автоматически перейдет на первый погодный канал на частоте 162.550 MHz.

Пользователю может показаться, что опция работает неправильно, ведь даже если есть полезный сигнал (горит зеленый индикатор), динамик будет молчать. Но это не баг, а фича. Если нужно прослушать текущий прогноз погоды, то достаточно нажать кнопку мониторинга (обозначена ■, расположена под PTT). Но настоящая магия тут в другом. 

Дело в том, что определенный сигнал на канале способен сам переключить ваш трансивер в режим мониторинга, чтобы вы услышали предупреждение. Все остальное время динамик выключен, дабы не тратить батарею. Если же говорить о более продвинутых и современных радиоприемниках, то они способны еще и выдавать текстовое сообщение вместе с голосовым, декодируя поступающую информацию в цифровом виде по протоколу S.A.M.E.

Сигнал пробуждения

Когда нужно было выбрать частоту для такого сигнала, инженеры NOAA изначально выбирали из диапазона 800–1 600 Hz. Наиболее правильной казалась 1 000 Hz, поскольку ее было очень легко отфильтровать, а также она традиционно использовалась в телефонных системах для тоновой сигнализации. Но был и серьезный «подводный камень». Эту частоту много где задействовали в роли опорного тона, а значит, возможность ложного срабатывания резко увеличивалась.

В радиовещательной и телефонной аппаратуре тех лет (речь идет о 70-х), помимо 1 000 Hz, активно использовались частоты 440 Hz и 700 Hz, а также их гармоники. Нужно было, чтобы тон пробуждения выпадал из этой условной сетки. В итоге остановились на частоте 1 050 Гц, которая стала разумным компромиссом. Ее можно было легко выделить без сложных микросхем, она очень проста для реализации и на слух хорошо узнаваема — противный, резкий звук, легко ассоциируемый с аварийным сигналом.

Для уменьшения вероятности ложного срабатывания такой тон должен прозвучать в эфире не менее 10 секунд. Этого достаточно, чтобы «разбудить» радиоприемники с поддержкой NOAA Weather Radio и включить их на прием. Многие из них еще выставляют средний уровень громкости, даже если ранее вы сделали тише или вообще заглушили звук с помощью кнопки Mute.

Для старых радиоприемников магия заканчивается на автоматическом включении, но вот новые способны декодировать цифровую часть сигнала, а не только тон 1 050 Hz. Чтобы понять, о чем идет речь, имеет смысл заглянуть в сами сообщения.

Структура S.A.M.E.

Проще всего разобраться с тем, как именно выглядит S.A.M.E., можно на примере строки с данными:

ZCZC-WXR-TOR-020173+0200-2300200-HABRHABR-

Начинается она с символов ZCZC. Это самый настоящий цифровой исторический артефакт. В международной телеграфной связи так обозначали начало сообщения. Здесь им была отведена похожая роль — маячка начала пакета (preamble marker).

Далее идет трехзначный код инициатора сообщения. Наша придуманная строка отправлена из агентства National Weather Service, которое обозначается кодом WXR в таблице S.A.M.E. После этого идет следующий код TOR, обозначающий тип оповещения (в нашем случае торнадо).

Таблицу со всеми кодами вы можете посмотреть под спойлером:

Код

Описание

Код

Описание

ADR

Administrative Message

AVA

Avalanche Watch

AVW

Avalanche Warning

BHW

Biological Hazard Warning

BWW

Boil Water Warning

BZW

Blizzard Warning

CAE

Child Abduction Emergency

CDW

Civil Danger Warning

CEM

Civil Emergency Message

CFA

Coastal Flood Watch

CFW

Coastal Flood Warning

CHW

Chemical Hazard Warning

CWW

Contaminated Water Warning

DBA

Dam Watch

DBW

Dam Break Warning

DEW

Contagious Disease Warning

DMO

Demo Warning

DSW

Dust Storm Warning

EAN

Emergency Action Notification

EAT

Emergency Action Termination

EQW

Earthquake Warning

EVA

Evacuation Watch

EVI

Evacuation Immediate

EWW

Extreme Wind Warning

FCW

Food Contamination Warning

FFA

Flash Flood Watch

FFS

Flash Flood Statement

FFW

Flash Flood Warning

FLA

Flood Watch

FLS

Flood Statement

FLW

Flood Warning

FRW

Fire Warning

FSW

Flash Freeze Warning

FZW

Freeze Warning

HLS

Hurricane Local Statement

HMW

Hazardous Materials Warning

HUA

Hurricane Watch

HUW

Hurricane Warning

HWA

High Wind Watch

HWW

High Wind Warning

IBW

Iceberg Warning

IFW

Industrial Fire Warning

LAE

Local Area Emergency

LEW

Law Enforcement Warning

LSW

Land Slide Warning

NAT

National Audible Test

NIC

National Information Center

NMN

Network Message Notification

NPT

National Periodic Test

NST

National Silent Test

NUW

Nuclear Plant Warning

POS

Power Outage Statement

RHW

Radiological Hazard Warning

RMT

Required Monthly Test

RWT

Required Weekly Test

SMW

Special Marine Warning

SPS

Special Weather Statement

SPW

Shelter in Place Warning

SSA

Storm Surge Watch

SSW

Storm Surge Warning

SVA

Severe Thunderstorm Watch

SVR

Severe Thunderstorm Warning

SVS

Severe Weather Statement

TOA

Tornado Watch

TOE

911 Outage Emergency

TOR

Tornado Warning

TRA

Tropical Storm Watch

TRW

Tropical Storm Warning

TSA

Tsunami Watch

TSW

Tsunami Warning

VOW

Volcano Warning

WFA

Wild Fire Watch

WFW

Wild Fire Warning

WSA

Winter Storm Watch

WSW

Winter Storm Warning

Вспоминая прекрасное произведение Александра Волкова «Волшебник Изумрудного города», я решил, что предупреждение о торнадо имеет смысл сгенерировать для какого-либо из округов штата Канзас. Для примера я взял округ Седжвик (Sedgwick County), FIPS-код которого — 020173. В некоторых радиоприемниках можно специально выбрать код своей местности, чтобы отключить лишние срабатывания.

Следующие символы +0200 обозначают, что предупреждение будет актуально еще 02 часа и 00 минут. А вот далее довольно любопытный способ указания даты и времени начала действия — 2300200. На самом деле тут две группы цифр: 230 — 230-й день текущего года, ну а 0200 — время в UTC. В итоге комбинация 2300200 означает 18 августа 2025 года 02:00 UTC.

Заключительным элементом строки является идентификатор станции, отправившей сообщение (Sender ID). В нашем примере это HABRHABR, но в реальных условиях было бы что-то вроде KWNS/NWS (Storm Prediction Center). Протокол допускает в этой части максимум 8 символов. Подводя итог, на английском языке такая строка могла бы звучать следующим образом:

The National Weather Service in Wichita has issued a Tornado Warning for Sedgwick County in south central Kansas, effective until 11 PM Central Daylight Time.

На русском это переводится примерно так:

«Национальная служба погоды в городе Уичито объявила предупреждение о торнадо для округа Седжвик в южно-центральной части Канзаса. Предупреждение действительно до 23:00 по центральному летнему времени».

Теперь давайте посмотрим на то, как полностью выглядит оповещение по этапам:

  1. S.A.M.E.-строка трижды (модуляция FSK).

  2. Тон 1 050 Hz длительностью 10 секунд.

  3. Голосовое сообщение.

  4. Завершающий код NNNN (модуляция FSK, еще один привет из эпохи телеграфа).

Вы можете самостоятельно попробовать собрать WAV-файл с такой строкой при помощи онлайн-инструмента https://cryptodude3.github.io/same/.

Если у вас есть приемник с поддержкой NOAA Weather Radio и одноплатник Raspberry Pi, то вы без проблем сможете протестировать его, передав WAV-файл через GPIO-пин «малинки». Делается элементарно, проверял на Raspberry Pi 4. Обновляем пакеты и ставим клиент git (если не установлен):

$ sudo apt-get update && sudo apt-get install git

Клонируем репозиторий проекта RPITX:

$ git clone https://github.com/F5OEO/rpitx

Переходим в скачанную директорию:

$ cd rpitx

И запускаем скрипт установки. Обратите внимание, что в процессе работы нужно обязательно дать разрешение ему менять содержимое /boot/config.txt. Собственно, там он принудительно задаст частоту GPU, равную 250 MHz:

$ ./install.sh

Останется лишь перезагрузить одноплатник:

$ sudo reboot

Далее нужно подключить к пину GPIO 4 небольшой кусок провода, который будет играть роль антенны. Автор проекта, конечно, предупреждает, что нельзя включать передачу без подключенного band-pass-фильтра:

В его словах есть резон, ведь GPIO-пин напрямую модулирует на нужной частоте. Если мы попробуем излучать напрямую, то тем самым создадим кучу гармоник:

  1. 162.550 MHz (основная).

  2. 325.100 MHz (2-я).

  3. 487.650 MHz (3-я).

  4. 650.200 MHz (4-я).

  5. 812.750 MHz (5-я).

  6. 975.300 MHz (6-я).

  7. 1137.850 MHz (7-я).

  8. 1300.400 MHz (8-я).

  9. 1462.950 MHz (9-я).

  10. 1625.500 MHz (10-я).

Несмотря на малую мощность, RPITX способен породить весьма «грязный» спектр, который может потенциально привести к нарушению местного законодательства. Если надумаете экспериментировать дома, то полосовой фильтр нужен в обязательном порядке. 

Как альтернатива — закинуть Raspberry PI и приемник в простейшую «клетку Фарадея» из коробки, оклеенной фольгой без щелей. Но самым правильным способом будет вообще не выдавать сигнал в антенну, а через аттенюатор 30–40 dB подать его непосредственно в приемник. Дополнительно можно еще и нагрузку 50 Ω добавить для спокойствия. 

Для проверки работы воспользовался штатным скриптом:

$ ./easytest.sh

Заключение

NOAA Weather Radio — уникальная система, которая дает возможность оперативно оповещать население об экстремальных погодных условиях. Большим преимуществом является то, что для получения предупреждения достаточно бытового радиоприемника на батарейках или дешевой радиостанции, такой как Quansheng UV-K5. Особенно это ценно в условиях, когда привычные каналы связи вроде интернета или сотовой сети недоступны или перегружены.

Минус — то, что работает это исключительно на территории США. В Японии существует похожая система под названием J-Alert, которая вещает как через наземные станции, так и со спутника Superbird-B3. От землетрясения и цунами до летящей баллистической ракеты со стороны КНДР — все это практически мгновенно превращается в оповещения для жителей страны восходящего солнца.

А вам было бы интересно узнать о том, как работает J-Alert? Жду вас в комментариях!

Комментарии (1)


  1. SergeiPod
    23.08.2025 15:51

    Поддержка SAME есть в моей виндовой программе SeaTTY.