VVAI VODA · IoT учёт воды

Проект VODA · Техническая спецификация

Автономный узел оптического считывания показаний механических водомеров

Оптическое распознавание на оконечном устройстве ESP32-S3-CAM (N16R8) · LoRa 868 МГц · питание CR123A · опционально TPL5110 или глубокий сон

Версия документа: 1.0
Дата: 02.08.2026
Статус: рабочая спецификация под прототип и опытную эксплуатацию
Репозиторий: voda

Содержание

  1. Цель и границы системы
  2. Архитектура
  3. Спецификация комплектующих узла учёта
  4. Оптика, корпус, монтаж
  5. Питание: три варианта
  6. Связь LoRa 868
  7. Оптическое распознавание на оконечном устройстве
  8. Прошивка: цикл сессии
  9. Шлюз и серверная подсистема
  10. Этапы внедрения
  11. Риски и критерии приёмки
  12. Контрольный перечень закупки и приёмки аппаратуры
  13. Опытная эксплуатация: 10 устройств × 1 месяц
  14. Оптовые цены (ориентир, площадка Alibaba)

1. Цель и границы системы

Автоматически снимать показания со старых механических счётчиков воды (без импульсного выхода / Modbus): фотографировать циферблат, распознавать цифры на устройстве, передавать компактный зашифрованный пакет по LoRa 868 МГц на шлюз, сохранять принятые показания в серверной подсистеме.

В границах проекта

Барабанные циферблаты (целые + доли). Автосъёмка по расписанию. Оптическое распознавание на оконечном устройстве. Восходящая передача LoRa. Оповещения: вне связи / низкий заряд батареи / низкая уверенность.

Вне границ минимального продукта

Замена счётчиков. Импульсные/умные счётчики. Передача полного JPEG по LoRa. Юридическая интеграция с ГИС ЖКХ (отдельный этап).

≥1/суткичастота съёмки (минимальный продукт)
868 МГцLoRa, РФ
N16R816 МБ Flash / 8 МБ PSRAM
CR123A~1500 мАч, морозостойкая

2. Архитектура

Зафиксированный подход: распознавание на оконечном устройстве. По эфиру — только зашифрованное показание и метаданные. Wi‑Fi — только сервисный режим (пусконаладка на объекте, дистанционное обновление прошивки, выгрузка спорных кадров).

Почему распознавание на устройстве

3. Спецификация комплектующих узла учёта

Критично: маркировка памяти строго N16R8. Без 8 МБ PSRAM локальная нейросеть не разместится нормально. Радио — строго 868 МГц.

Позиция Модель / параметр Назначение Примечание
МК + камера ESP32-S3-WROOM CAM, N16R8 Съёмка, распознавание моделью, управление 16 МБ Flash / 8 МБ PSRAM. Проверить объём PSRAM функцией esp_psram_get_size()
Камера OV3660 (3 Мп) Чёткость барабанов для распознавания Часто кладут OV2640 — сверять описание/комплект
Таймер питания (опц.) TI TPL5110 (или TPL5111) Полное обесточивание между сессиями Интервал 100 мс…2 ч. Для недели — RTC (см. §5)
Радио LoRa SX1276 или SX1262 @ 868 МГц Восходящая передача показаний Не брать 433/915 под РФ
Антенна Внешняя штыревая 868 МГц, SMA Дальность «район» + пигтейл IPEX/U.FL на SMA. «Пружинка» недостаточна
Батарея Li CR123A 3 В, ~1500 мАч Основное питание Мороз, низкий саморазряд
Холдер Отсек CR123A Фиксация + пайка Пластиковый кейс
Корпус Гермо IP65/IP66 Влага, пыль, конденсат Прозрачное окошко под объектив в крышке
Подсветка Белый LED / IR + GPIO Стабильный свет в шкафу/шахте Боковой свет против бликов
Крепёж Кронштейн на счётчик/трубу Фикс ракурса 5–15 см Сдвиг области интереса = деградация распознавания

Инфраструктура (не на каждый счётчик)

ПозицияНазначение
LoRa-шлюз 868 МГц + внешняя антеннаПриём пакетов с узлов, мост в Ethernet/Wi‑Fi, далее на сервер
Сервер серверная подсистемаПриём данных, валидация, хранение, алерты, кабинет/Max

4. Оптика, корпус, монтаж

5. Питание: три варианта

Батарея: CR123A ~1500 мАч. Полный цикл сессии одинаков для всех вариантов:

Расход одной сессии (ориентир): 0.2–0.8 мАч (100–200 мА × 5–15 с).

Оценка срока — до разряда батареи при штатном режиме. На практике срок режут холод, пики TX, утечки корпуса и саморазряд. Цифры ниже — инженерный ориентир, не гарантия.

Вариант A — глубокий сон ESP32-S3

Питание на плате не снимается. Между сессиями MCU в глубокий сон. Нужен доведённый узел без лишних LED/USB-чипа, ток сна ≤30 мкА.

РежимРасход между сессиямиСрок на CR123A (оценка)
1 съёмка / сутки, сон 20 мкА ~0.5 мАч/сутки сон + ~0.5 мАч сессия ≈ ~1 мАч/сутки ~3–4 года
1 съёмка / неделя, сон 20 мкА ~3.4 мАч/неделя сон + ~0.5 мАч сессия ~5–7 лет
Отладочная плата без доработки, сон ~100–300 мкА сон доминирует ~0.5–1.5 года (1/сутки)

Вариант B — TPL5110 + MOSFET (полное обесточивание)

Таймер полностью обесточивает узел. Интервал резистором: до 2 часов (для суток — будить чаще и считать в энергонезависимое хранилище (NVS), либо ставить вариант C). После сессии сигнал GPIO DONE отключает питание. Простой ≈ ток TPL5110 (~35–50 нА).

РежимРасходСрок на CR123A (оценка)
1 полная сессия / сутки ~0.2–0.8 мАч/сутки (сон ≈ 0) ~5–10+ лет (упирается в саморазряд батареи)
Интервал таймера 2 ч, полная сессия 1/сутки 11 «пустых» пробуждение + 1 полная; пустые — миллисекунды DONE близко к 1/сутки: ~4–8 лет, если пустые запуски короткие

Вариант C — RTC RV-3028-C7 + MOSFET/ключ нагрузки

RTC всегда под батареей (~45–100 нА). По сигналу будильника включает питание платы; после сессии GPIO гасит MOSFET. Любой интервал: сутки, неделя, месяц.

РежимРасходСрок на CR123A (оценка)
1 полная сессия / сутки ~0.2–0.8 мАч/сутки + ~0.002 мАч/сутки RTC ~5–10+ лет
1 полная сессия / неделя ~0.2–0.8 мАч/неделя + ничтожный ток RTC ~10+ лет (лимит — саморазряд CR123A)

Сводка

ВариантКогда братьИнтервалСрок при 1/сутки
A. Глубокий сон Простая схема, узел ≤30 мкА любой (RTC MCU) ~3–4 года
B. TPL5110 Нужен «ноль» в простое, интервал ≤2 ч до 2 часов ~5–10+ лет
C. RV-3028-C7 + MOSFET Нужны сутки / неделя без лишних пробуждений любой ~5–10+ лет

6. Связь LoRa 868

Структура пакета

Открытый заголовок (для маршрутизации) + зашифрованная полезная нагрузка. Суммарно ориентир 20–40 байт до шифрования; после AES‑128 (блок 16 байт) — с выравниванием / тегом режима, без существенного раздувания канала.

ЧастьПолеРазмерСмысл
открытоидентификатор устройства2–4 BID узла (выбор ключа на сервере)
шифротекстпоказаниеупакованноЦелые + доли
уверенность1 байтУверенность распознавания
флаги1 байтнизкая уверенность / ошибка камеры / низкий заряд / перекрыт
номер сессии2 байтаЗащита от повтора пакета
напряжение батареи, мВ2 байтаНапряжение CR123A
версия прошивки1 байтВерсия прошивки

Шифрование

7. Оптическое распознавание на оконечном устройстве

  1. Кадр OV3660; выделяется фиксированная область интереса из энергонезависимого хранилища (NVS).
  2. Нормализация / контраст.
  3. Модель: сегментация цифр или малая свёрточная или свёрточно-рекуррентная сеть (CNN/CRNN) (ESP-DL / TensorFlow Lite Micro + ESP-NN), int8.
  4. Постобработка: только [0-9], ожидаемая длина разрядов.
  5. Локальная проверка: уверенность ≥ порога; показание ≥ предыдущего (энергонезависимое хранилище (NVS)); разумный прирост.
  6. Иначе — флаг низкой уверенности, кадр во Flash для ручной проверки.

Подготовка модели выполняется поэтапно:

8. Прошивка: цикл сессии

Рабочий цикл сессии:

Сервисный режим (кнопка / магнит / первые секунды после включения): точка доступа Wi‑Fi для выгрузки последнего кадра JPEG, калибровки области интереса и дистанционного обновления прошивки.

9. Шлюз и серверная подсистема

Функции

Модель данных (минимум)

СущностьПоля
Устройствоидентификатор, ключ AES (секрет), версия прошивки, время последней связи, батарея
Счётчикадрес, тип циферблата, область интереса (ROI), единицы
Показаниезначение, метка времени, уверенность, статус, флаги
Шлюзидентификатор, местоположение, время последней связи
ЗадачаПроверкиидентификатор показания, ссылка на кадр, решение

Структура репозитория

КаталогСодержимое
прошивка/ESP-IDF/PlatformIO: камера, распознавание, AES, LoRa, DONE / сон, энергонезависимое хранилище (NVS)
модель/Обучение, квантование, экспорт
шлюз/LoRa 868, далее MQTT или HTTP
серверная подсистема/FastAPI + PostgreSQL: расшифровка AES, валидация, хранение
кабинет/Max / веб-интерфейс
наборы_данных/Фото + разметка
аппаратура/спецификация комплектующих, схема TPL5110, корпус

10. Этапы внедрения

ЭтапСодержаниеРезультат
0. спецификация комплектующих и стендЗакупка N16R8 + OV3660 + 868 + TPL5110/RTC + CR123A + корпусPSRAM=8 МБ подтверждён
1. ОптикаКорпус, окошко, подсветка, крепление50–200 фото набор данныха
2. нейросеть на оконечном устройствеобучение, квантование, перенос на ESP32-S3Задержка + точчность на устройстве
3. LoRa и шлюзполезная нагрузка, AES‑128, шлюз, расшифровка на сервереПоказание в кабинете / БД
4. ПитаниеTPL5110 или глубокий сон, замер мА·с и срокаБюджет на CR123A
5. Опытная эксплуатация10 узлов, съёмка 1/сутки, 30 днейОтчёт стабильности (см. §13)

11. Риски и критерии приёмки

РискМитигация
Плата не N16R8 / нет 8 МБ PSRAMСамопроверка при первом запуск; возврат продавцу
Камера OV2640 вместо OV3660Проверка до сборки корпуса
LoRa не 868Маркировка частоты при заказе
Блики / конденсат / грязьУгол, боковой свет, антифог, ручная проверка
Сдвиг крепленияЖёсткий кронштейн + повторная калибровка области интереса
Плохой линк в подвалеВынос антенны, высота шлюз
Ложное принятие показанияПорог уверенности и монотонность на устройстве и сервере
Жирный глубокий сон на отладочной платеTPL5110 или доработка питания

Критерии успеха минимального продукта

12. Контрольный перечень закупки и приёмки аппаратуры

13. Опытная эксплуатация: 10 устройств × 1 месяц

Цель опытной эксплуатации — подтвердить стабильность железа, связи, распознавание и питания на реальных счётчиках до масштабирования.

Параметры опытной эксплуатации

ПараметрЗначение
Число узлов10 (каждый на своём счётчике)
Длительность30 календарных дней непрерывно
Частота съёмки1 раз в сутки (фиксированное окно, напр. 03:00–05:00)
Ожидаемый объём10 × 30 = 300 сессий / пакетов показаний
ПитаниеОдин выбранный вариант питания (A, B или C из §5) на все 10 узлов
СвязьОдин LoRa-шлюз 868 МГц с покрытием всех точек
УведомленияКабинет + Max: новое показание, вне связи, низкая уверенность, низкий заряд

Состав комплекта опытной эксплуатации

Что считаем стабильностью

МетрикаКак считаемЦель за 30 дней
Доля успешных доставокДоля суток, когда пакет узла дошёл до серверная подсистема в окне +6 ч ≥ 95% (≥ 285 из 300 сессий)
Автоматический приём показанияПоказания со статус=принято без ручной проверки ≥ 80% от доставленных
ложное принятие Авто-принятое значение ≠ контрольному (выборка ≥30 сверки вручную) < 1%
Инциденты потери связи Узел не вышел на связь > 48 ч ≤ 2 инцидента на весь парк; каждый разобран
Батарея Падение напряжения за 30 дней; экстраполяция на 12 мес Нет низкий заряд; запас согласован с §5
Связь SNR/RSSI по узлам; доля повторных передач Нет узлов с систематическим сбой передачи
Железо/оптика Смещения крепления, конденсат, отказ камеры ≤ 1 замена/ремонт узла без срыва метрик

Регламент на месяц

КогдаДействие
День 0Монтаж 10 узлов, калибровка области интереса (ROI), ручные показания, проверка радиоканала до шлюза
Каждые суткиАвтосъёмка; в кабинете — факт прихода 10/10 или список недоставленных
2 раза в неделюСверка 2–3 случайных узлов: фото/значение против циферблата визуально
ЕженедельноСводка: доля успешных доставок, низкая уверенность, батарея, SNR; выезд только по оповещению
День 30Итоговый отчёт: таблицы метрик, список инцидентов, решение «запуск / доработка» по масштабированию

Критерий «запуск / доработка» после опытной эксплуатации

Объём данных опытной эксплуатации: при 10 узлах × 30 суток = 300 ожидаемых показаний. Этого достаточно, чтобы увидеть систематические сбои распознавания, «дыры» покрытия LoRa и дрейф батареи, но не заменяет годовой прогон на морозе — холодный тест вынести отдельно при необходимости.

14. Оптовые цены (ориентир, площадка Alibaba)

Цены листингов — FOB Китай / Alibaba (август 2026). Пересчёт в рубли по формуле проекта:

₽ с пошлиной = USD × 80 × 1.20 = USD × 96
Курс: 80 ₽ / $1. Пошлина: +20%. Доставка и НДС сверх этого — отдельно (не включены в таблицы ниже). Перед закупкой — КП и образец, проверка N16R8 / OV3660 / 868 МГц.

Плата и ключевые компоненты узла

Позиция Опт ~10–50 Опт ~100–500 Опт ≥1000 Комментарий
ESP32-S3-CAM N16R8 + камера $6.5–8.5
624–816 ₽
$5.5–6.7
528–643 ₽
$3.8–6.4
365–614 ₽
С OV3660; дешёвые лоты часто OV2640
LoRa SX1262 / SX1276 @868 $3.5–7.0
336–672 ₽
$2.8–5.0
269–480 ₽
$2.5–4.5
240–432 ₽
Не брать 433 «Ra-02»
Антенна 868 SMA + пигтейл $0.8–2.0
77–192 ₽
$0.6–1.5
58–144 ₽
$0.5–1.2
48–115 ₽
TPL5110 отладочный модуль $0.5–1.5
48–144 ₽
$0.3–1.0
29–96 ₽
$0.25–0.8
24–77 ₽
Вариант питания B
RTC RV-3028-C7 $1.5–3.0
144–288 ₽
$1.3–2.0
125–192 ₽
$1.2–1.8
115–173 ₽
Оригинал; Alibaba $0.6–0.9 — риск подделки
MOSFET / LDO / мелочёвка $0.3–0.8
29–77 ₽
$0.2–0.5
19–48 ₽
$0.15–0.4
14–38 ₽
Холдер CR123A $0.15–0.40
14–38 ₽
$0.10–0.30
10–29 ₽
$0.08–0.25
8–24 ₽
Корпус IP65/66 + окошко $1.5–4.0
144–384 ₽
$1.2–3.0
115–288 ₽
$1.0–2.5
96–240 ₽
Зависит от размера
LED + крепёж $0.5–2.0
48–192 ₽
$0.4–1.5
38–144 ₽
$0.3–1.0
29–96 ₽

Батарея CR123A (литий-диоксид марганца (Li-MnO₂), ~1500–1600 мАч)

ПартияFOB / шт₽ с пошлиной / шт
100–999$0.65–0.8562–82 ₽
1 000–9 999$0.55–0.7053–67 ₽
≥10 000$0.45–0.6043–58 ₽
≥20 000$0.30–0.5529–53 ₽

Только первичный неперезаряжаемый элемент Li-MnO₂, не 16340 перезаряжаемый под видом CR123A. минимальная партия заводов часто 1k–5k.

Сводка стоимости комплекта на 1 узел (без шлюза)

Конфигурация ~10 шт (опытная эксплуатация) ~100–500 шт
A. Глубокий сон $14–24 ≈ 1 340–2 300 ₽ $11–18 ≈ 1 060–1 730 ₽
B. + TPL5110 $15–25 ≈ 1 440–2 400 ₽ $12–19 ≈ 1 150–1 820 ₽
C. + RV-3028-C7 $16–27 ≈ 1 540–2 590 ₽ $13–20 ≈ 1 250–1 920 ₽
из них CR123A $0.70–0.90 ≈ 67–86 ₽ $0.55–0.70 ≈ 53–67 ₽

Опытная эксплуатация 10 устройств — железо

СтатьяFOB₽ (×80 + пошлина 20%)
10 узлов (вариант B)$150–25014 400–24 000 ₽
Запас 2× CR123A + мелочь$5–15480–1 440 ₽
LoRa-шлюз 868$15–401 440–3 840 ₽
Итого по опытной эксплуатации$170–30516 300–29 300 ₽

Не входит: доставка из Китая, НДС, разработка, сервер, монтаж, кастомная печатная плата (PCB). Доставку закладывайте сверху отдельно (для 10 узлов часто ещё +3–8 тыс. ₽ курьером).