Skip to content
Урок 3. EXTI против RTC: разбудить по делу или по расписанию

Урок 3. EXTI против RTC: разбудить по делу или по расписанию

Урок 3. EXTI против RTC: разбудить по делу или по расписанию

Паспорт урока

ПараметрЗначение
Место в модулеPowerSentry, модуль 2 «Событийная модель», урок 3 из 8
Длительность45 мин
Возраст13–16
ОборудованиеУзел протечки (электроды), климат-узел, стакан воды
Предварительные знанияУроки 1–2: бюджет, измеренный ток сна
ПредметИнформатика (события и прерывания), физика

Образовательные цели

ЦельБлумМиллерЧем доказывается
3.1Различать событийную и периодическую архитектуры пробужденияпониматьзнает какРасчёт разницы сроков жизни
3.2Выбирать парадигму под характер физической величиныоцениватьпоказывает какОбоснование для нового датчика
3.3Объяснять send-on-change и роль heartbeatпониматьзнает какОтвет: «молчит» ≠ «умер»
3.4Обосновывать связь редкости передачи с автономностьюанализироватьзнает какРазбор двух парадигм по бюджету

Сценарий занятия (45 минут)

ВремяБлокЧто делает педагогЧто делают ученики
0–5RetrievalМини-квиз по урокам 1–2Пишут, разбор
5–13Задача«Как узел узнает о протечке?»Предлагают варианты
13–25ТеорияДве парадигмы: EXTI и RTCРазбирают, считают
25–33ДемонстрацияМокрый палец будит узел мгновенноНаблюдают, проверяют
33–42Send-on-changeМолчание как информацияРазбирают heartbeat
42–45Итог и ДЗФиксацияЗаписывают

Блок 1. Постановка задачи (5–13 мин)

Вопрос

«Датчик протечки лежит в подвале. Вода может появиться сегодня ночью, а может — через три года. Как узел узнает, что она появилась?»

Сбор вариантов

Идея ученикаКомментарий педагога
«Пусть постоянно проверяет»Тогда он не спит и живёт дни. Считали на уроке 1
«Пусть просыпается раз в минуту и смотрит»Уже лучше. Но посчитаем, сколько проживёт
«Пусть вода сама его разбудит»Ключевая идея! А как это возможно?

Постановка проблемы

«Мы уперлись в противоречие: чтобы заметить событие, надо следить. Чтобы жить долго, надо спать. Как совместить?»


Блок 2. Теория: две парадигмы (13–25 мин)

2.1. Базовый уровень (13–14 лет)

Через будильник и дверной звонок.

Есть два способа не пропустить гостя.

Способ 1 — будильник. Каждые пять минут просыпаться и выглядывать в окно: не пришёл ли кто. Работает, но спать почти не получится.

Способ 2 — дверной звонок. Спать спокойно, а гость сам нажмёт кнопку и разбудит. Спишь сколько угодно и всё равно не пропустишь.

Перенос:

Датчик протечки — это дверной звонок. Вода замыкает электроды, и сам этот факт будит процессор. Никакой проверки не нужно: событие само сообщает о себе.

2.2. Углублённый уровень (14–16 лет)

Шаг 1. Аппаратное прерывание (EXTI).

EXTI (External Interrupt) — аппаратный механизм: при изменении уровня на выводе микроконтроллера схема формирует прерывание, которое выводит процессор из сна даже из глубокого режима Stop2.

Важно: за отслеживание отвечает аппаратура, а не программа. Процессор при этом полностью спит и потребляет микроамперы.

Схема датчика протечки:

3,3 В ──[ 4,7 МОм ]──┬── вывод PA1 (вход с прерыванием)
                      │
                  электрод 1
                      ⌇  вода замыкает
                  электрод 2 ── GND

Сухо — вход подтянут к 3,3 В (высокий уровень). Появилась вода — сопротивление между электродами падает до килоом, вход притягивается к нулю, формируется фронт → прерывание → пробуждение.

Шаг 2. Периодическое пробуждение (RTC).

RTC (Real-Time Clock) — часы реального времени, работающие во время сна и будящие процессор по таймеру.

Применяется там, где нет «события» как такового: температуру никто не «включает», её надо периодически измерять.

Шаг 3. Сравнение по бюджету.

ПараметрEXTI (событийный)RTC (периодический)
Что будитсам датчиктаймер
Средний токравен току снаток сна + активность
Пробуждений за год без событийнольтысячи
Задержка реакциимгновеннодо периода опроса
Для чего подходитредкие события: вода, движение, дверьнепрерывные величины: температура, влажность

Шаг 4. Расчёт разницы.

Сравним датчик протечки в двух реализациях (сухой подвал, событий нет):

РеализацияПробуждений/сутРасход, мкА·ч/сутСрок жизни
EXTI (2 уплинка heartbeat)258десятилетия*
RTC раз в минуту1440≈ 7 328менее года

*с учётом оговорки о саморазряде из урока 1

Разница более чем в 100 раз — и это при том, что за всё время не произошло ни одного события. Периодическая проверка платит за готовность, событийная — нет.

Ключевая идея урока: событийная архитектура позволяет узлу быть одновременно максимально экономным и мгновенно реагирующим. Обычно это взаимоисключающие требования; аппаратное прерывание снимает противоречие.

Блок 3. Демонстрация (25–33 мин)

Опыт «мокрый палец»

  1. Узел протечки работает, в мониторе видна строка [СОН] Stop2 на N c..., дальше тишина.
  2. Педагог: «Узел спит. Он ничего не проверяет, ничего не измеряет. Он просто спит.»
  3. Прикоснуться мокрым пальцем к электродам.
  4. Мгновенно появляется: [ПРОБУЖДЕНИЕ #k] причина: EXTI ВОДА.

Что проговорить

«Обратите внимание: между сном и реакцией не было никакой проверки. Процессор не опрашивал датчик — датчик сам его разбудил. Это стоило нам ноль микроампер ожидания.»

Контрольный вопрос классу

«Сколько энергии узел потратил на ожидание этого события за последний час?»

Ответ: столько же, сколько на сон, — ожидание бесплатно.


Блок 4. Send-on-change и heartbeat (33–42 мин)

Проблема периодических узлов

«Климат-узел не может использовать EXTI: температура не “происходит”, её надо мерить. Он просыпается по таймеру. Но обязан ли он отправлять результат каждый раз?»

Принцип send-on-change

Узел измеряет регулярно, а передаёт только изменения:

проснулся по таймеру
    → включил питание датчика (power gating)
    → измерил
    → выключил питание датчика
    → изменение больше порога? (|ΔT| ≥ 0,3 °C или |ΔRH| ≥ 2%)
        да  → передать
        нет → МОЛЧАТЬ
    → пришло время heartbeat? → передать в любом случае
    → превышен аварийный порог? → передать тревогу
    → спать

Эффект: в стабильных условиях узел молчит часами. Замеры дёшевы (миллиамперы доли секунды), передача дорога — экономится именно она.

Проблема молчания

«Узел молчит сутки. Что это значит: всё стабильно — или он умер?»

Класс должен осознать неоднозначность. Без её разрешения система бесполезна: диспетчер не может отличить норму от отказа.

Решение: heartbeat

Heartbeat («сердцебиение») — обязательная передача через фиксированный интервал, даже если ничего не изменилось.

Что наблюдает диспетчерДиагноз
Пакеты приходят, значения не меняютсявсё стабильно, узел жив
Пакетов нет дольше 2× периода heartbeatузел молчит — проблема

Формулировка, которую надо закрепить: «молчит по расписанию» означает «всё стабильно», а не «умер». Различить их позволяет только heartbeat, и именно его возраст мониторит диспетчерский пульт.

Это прямое продолжение принципа из BeaconRadio: отсутствие данных — тоже данные, но только если предусмотрен способ его интерпретировать.

Двойная выгода редких передач

«Каждый несостоявшийся уплинк — это и заряд, оставшийся в батарее, и место, освобождённое в эфире для других узлов.»

Вторая половина этой фразы станет темой урока 5.


Блок 5. Практические задачи

Уровень A (13–14 лет)

A1. Чем событийное пробуждение (EXTI) отличается от периодического (RTC)?

Ответ

При EXTI узел будит сам датчик в момент события — процессор всё остальное время спит и ничего не проверяет. При RTC узел просыпается по таймеру независимо от того, произошло что-нибудь или нет.

A2. Почему для датчика протечки выбрали EXTI, а не проверку раз в минуту?

Ответ

Потому что протечки может не быть месяцами. Проверка раз в минуту означает 1440 пробуждений в сутки впустую и сокращает срок жизни с десятилетий до года. EXTI даёт то же самое обнаружение, но бесплатно по энергии.

A3. Узел молчит сутки. Как понять, что он жив?

Ответ

По heartbeat — обязательному сообщению, которое узел шлёт через определённый интервал даже при отсутствии изменений. Если heartbeat приходит, узел жив; если пропал дольше двух периодов — есть проблема.

Уровень B (14–15 лет)

B1. Посчитайте разницу сроков жизни между EXTI (2 уплинка/сут) и опросом раз в минуту.

Решение

EXTI: 48 (сон) + 10 (2 уплинка) = 58 мкА·ч/сут → T ≈ 118 лет по арифметике.

Опрос раз в минуту: 48 + 7200 (эфир) + 80 (замеры) = 7328 мкА·ч/сут → T ≈ 0,9 года.

1180,9131 раз\frac{118}{0{,}9} \approx \mathbf{131\ \text{раз}}

Разница более чем в сто раз при одинаковом железе. Решает архитектура.

B2. Почему внешний резистор 4,7 МОм лучше внутренней подтяжки 40 кОм?

Решение

Пока электроды замкнуты водой, через подтяжку течёт ток:

  • внутренняя 40 кОм: 3,3 / 40 000 ≈ 82 мкА;
  • внешняя 4,7 МОм: 3,3 / 4 700 000 ≈ 0,7 мкА.

Разница более чем в сто раз. При затоплении подвала (а это может длиться сутками) внутренняя подтяжка одна съедала бы больше, чем весь остальной узел.

B3. Для каких из перечисленных величин подойдёт EXTI, а для каких — RTC: температура, открытие двери, движение, влажность, уровень воды в резервуаре?

Ответ
ВеличинаПарадигмаПочему
ТемператураRTCнепрерывная величина, «события» нет
Открытие двериEXTIдискретное редкое событие
ДвижениеEXTIдискретное событие (но см. ловушку RCWL из урока 2)
ВлажностьRTCнепрерывная величина
Уровень водызависитесли важен факт превышения порога — EXTI с компаратором; если нужна динамика — RTC

Правило: EXTI — для дискретных редких событий, RTC — для непрерывных величин, которые надо наблюдать.

Уровень C (15–16 лет)

C1. Освещённость можно измерять обеими парадигмами. Опишите обе реализации и сравните.

Разбор

Вариант RTC: цифровой датчик (например, BH1750) по шине I2C, опрос раз в N минут с power gating. Даёт значение освещённости, годится для графиков и анализа.

Вариант EXTI: фоторезистор в делителе + компаратор с порогом; выход компаратора на вывод с прерыванием. Даёт событие «стало темно / стало светло», значения не даёт.

КритерийRTC + BH1750EXTI + компаратор
Что получаемчисленное значениефакт пересечения порога
Энергияпробуждения по расписаниюноль до события
Гибкость порогапрограммнаяаппаратная, менять сложнее
Применениемониторинг, аналитика«включился свет», охрана

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

C2. Предложите архитектуру узла, который должен и реагировать мгновенно на протечку, и раз в час сообщать температуру. Как совместить парадигмы?

Разбор

Гибридная архитектура — оба источника пробуждения одновременно:

deepSleep(Stop2)
    источники пробуждения:
        - EXTI на выводе электродов (протечка)
        - RTC-таймер (1 час, для замера температуры)
    
при пробуждении определить причину:
    EXTI  → обработать протечку (подтверждение, тревога)
    RTC   → замерить температуру, send-on-change, heartbeat

Это ровно то, что реализовано в прошивке PowerSentry: у узла несколько источников пробуждения, и в коде первым делом определяется причина.

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

C3. Как выбрать период heartbeat? Сформулируйте компромисс и предложите значение для датчика протечки.

Разбор

Компромисс:

Короткий период (например, 1 час)Длинный период (например, сутки)
Отказ обнаруживается быстроОтказ может остаться незамеченным до суток
Больше расход энергииЭкономия энергии
Больше нагрузка на эфирОсвобождение канала

Расчёт для датчика протечки. Событие «узел умер» не требует мгновенной реакции: авария развивается медленнее, чем протечка. Приемлемо узнать об отказе в течение суток.

При периоде heartbeat 12 часов: 2 уплинка в сутки → срок жизни в порядке десятилетий (то, что считали на уроке 1). Диспетчер поднимает тревогу при отсутствии пакетов дольше 2× периода = 24 часа.

Рекомендация: период heartbeat выбирается из допустимого времени необнаружения отказа, делённого на два. Для критичных систем — часы, для инфраструктурного мониторинга — сутки.


Ответы на вопросы, которые прозвучат

Вопрос ученикаКак отвечать
«Как датчик может будить процессор, если процессор спит?»Прерывание обрабатывает аппаратура, а не программа. Специальная схема следит за выводом даже в глубоком сне и включает процессор при изменении уровня
«А если вода испарится, пока узел спит?»Тогда события не будет. Но протечка в подвале — это не капля, она сохраняется. Для быстро исчезающих явлений EXTI не подойдёт
«Почему не слать данные всегда — вдруг пригодятся?»Каждая передача стоит энергии и места в эфире. Данные, которые никто не читает, — чистая трата. Send-on-change передаёт информацию, а не шум
«Что если heartbeat потеряется в эфире?»Поэтому тревогу поднимают при отсутствии двух heartbeat подряд, а не одного. Одиночная потеря — нормальное явление
«Можно ли будить по нескольким событиям сразу?»Да, именно так и сделано: наш узел просыпается и по протечке, и по кнопке, и по таймеру. При пробуждении программа определяет причину

Раздаточный лист (для печати)

Урок 3. Две парадигмы пробуждения

Сравните:

ПараметрEXTI (событийный)RTC (периодический)
Что будит
Средний ток
Пробуждений за год без событий
Задержка реакции
Для чего подходит

Расчёт разницы (сухой подвал, событий нет):

РеализацияПробуждений/сутмкА·ч/сутСрок жизни
EXTI (2 heartbeat)
RTC раз в минуту

Во сколько раз отличается? ________

Схема датчика протечки — подпишите:

3,3 В ──[ _______ ]──┬── вывод ____ (вход с прерыванием)
                      │
                  электрод 1
                      ⌇  вода
                  электрод 2 ── ____

Почему резистор именно 4,7 МОм, а не внутренняя подтяжка 40 кОм?

Ток через 40 кОм: _____ мкА · Ток через 4,7 МОм: _____ мкА

Send-on-change и heartbeat:

«Молчит по расписанию» означает ___________________________

Как отличить «молчит» от «умер»? ___________________________

Выберите парадигму для каждой величины:

ВеличинаEXTI или RTCПочему
Температура
Открытие двери
Влажность
Движение

Домашнее задание

Обязательная часть

Врайтап по рубрике А. Обязательный пункт: опишите опыт с мокрым пальцем и объясните, почему ожидание события не стоило энергии.

Уровень A

Найти дома три устройства, которые «просыпаются» от события (датчик движения, автоматический кран, ночник). Описать, что именно их будит.

Уровень B

Рассчитать срок жизни узла протечки при периоде heartbeat 1 час, 12 часов и 24 часа. Сравнить и выбрать оптимум с обоснованием.

Ответ для педагога
  • 1 час (24 уплинка/сут): 48 + 120 = 168 мкА·ч/сут → ≈ 41 год;
  • 12 часов (2 уплинка/сут): 58 мкА·ч/сут → ≈ 118 лет;
  • 24 часа (1 уплинк/сут): 53 мкА·ч/сут → ≈ 129 лет.

Наблюдение: переход с 1 часа на 12 даёт трёхкратный выигрыш, а с 12 на 24 — уже незначительный. Оптимум около 12 часов: дальнейшее разрежение почти не экономит, но ухудшает обнаружение отказов. Классический закон убывающей отдачи.

Уровень C

Спроектировать узел контроля открытия двери в подъезде: выбрать парадигму, оценить бюджет, предложить период heartbeat, назвать ожидаемые проблемы (например, дверь открывают сотни раз в сутки).

Ориентир для педагога

Ключевая ловушка задачи: EXTI кажется очевидным выбором, но при сотнях событий в сутки узел будет просыпаться и передавать сотни раз — бюджет рухнет, как у «болтливого» узла.

Правильное решение: EXTI для пробуждения, но агрегация — не передавать каждое открытие, а накапливать счётчик и передавать сводку раз в час. То есть событийное пробуждение с периодической передачей.

Вывод ученика: парадигма пробуждения и парадигма передачи — разные решения, их выбирают независимо.


Итог урока: что записать в журнал

Вывод урока 3

  1. EXTI — аппаратное прерывание: сам датчик будит спящий процессор. Ожидание события ничего не стоит.
  2. RTC — пробуждение по таймеру: для непрерывных величин, где «события» нет.
  3. EXTI подходит для редких дискретных событий, RTC — для наблюдаемых непрерывных величин.
  4. Разница в сроке жизни между EXTI и опросом раз в минуту — более чем в 100 раз при одинаковом железе.
  5. Внешний резистор 4,7 МОм вместо внутренней подтяжки 40 кОм экономит около 80 мкА при затоплении.
  6. Send-on-change: передавать только изменения; замеры дёшевы, передача дорога.
  7. Heartbeat различает «молчит, потому что стабильно» и «молчит, потому что умер».

Связь с курсом

Что родилось на этом урокеГде станет инструментом
Событийная архитектураУрок 5 (редкость передач = ёмкость сети)
Heartbeat, «молчит ≠ умер»Урок 8 (защита), диспетчерский пульт
ПрерыванияRFCurtain (приём по прерыванию)
Power gating датчикаУрок 2 (охота на микроамперы)

Чек-лист педагога перед уроком

  • Узел протечки собран: электроды, резистор 4,7 МОм, прошивка с EXTI
  • Проверено накануне: мокрый палец действительно будит узел мгновенно
  • Стакан воды и салфетки для опыта
  • Климат-узел работает для демонстрации send-on-change
  • Раздаточный лист распечатан