Датчик FS3000 + ESP32: измерение тяги дымохода, вентиляции и ветра - полное руководство 



Датчик FS3000 + ESP32🔥: измерение тяги дымохода, вентиляции и ветра - полное руководство

Контроль воздушных потоков - задача, которая кажется простой только на первый взгляд. От правильной тяги в дымоходе зависит безопасность жилища, от эффективности вентиляции - комфорт и здоровье, от точного измерения ветра - качество метеонаблюдений. В этом материале мы подробно разберём, как использовать доступный датчик SparkFun FS3000 вместе с микроконтроллером ESP32 для решения этих задач.

Особый акцент сделаем на самом неочевидном и критически важном применении - измерении тяги в дымоходе. Это тема, где ошибки в проектировании могут стоить дорого, а готовые промышленные решения стоят сотни долларов. Мы покажем, как собрать надёжную систему своими руками, соблюдая все требования безопасности.

🔥 Важно: Работа с дымоходами и системами отопления связана с риском отравления угарным газом. Все рекомендации в статье носят информационный характер. При монтаже оборудования вблизи источников тепла и дыма обязательно консультируйтесь со специалистами и соблюдайте нормы пожарной безопасности.


Оглавление

📦 Что такое датчик FS3000 и как он работает

FS3000 - это компактный датчик скорости воздушного потока на базе термического принципа измерения. Выпускается компанией Amphenol, продаётся через SparkFun в виде удобной breakout-платы с разъёмом Qwiic.

📋 Технические характеристики

Параметр Значение
Диапазон измерения 0 – 7,23 м/с (версия 1005) / 0 – 15 м/с (версия 1015)
Точность ±5% от полного диапазона
Разрешение 12 бит
Интерфейс I2C (адрес 0x28)
Питание 2,7 – 3,3 В
Потребление ~10 мА
Рабочая температура -20 … +85 °C

🌡️ Принцип работы: термопара и нагреватель

В основе датчика лежит термопильная технология. Внутри корпуса расположены:

[ Корпус датчика ]
        │
        ▼
┌───────────────────┐
│  Нагреватель      │
│       │           │
│   ┌───┴───┐       │
│   ▼       ▼       │
│T1       T2        │
│термо-  термо-     │
│пара    пара       │
└───────────────────┘
        │
        ▼
[ Воздушный поток ]
  1. Без потока: Нагреватель равномерно прогревает обе термопары T1 и T2. Разница температур ≈ 0.
  2. При потоке: Воздух охлаждает термопары, но неравномерно - та, что находится «по ветру», остывает сильнее.
  3. Измерение: Электроника фиксирует разницу напряжений термопар и вычисляет скорость потока по калибровочной кривой.

💡 Преимущество метода: Нет движущихся частей, высокая чувствительность к малым скоростям (от 0,1 м/с), устойчивость к пыли и влаге.

🔍 Версии датчика: 1005 vs 1015

Существует две основные модификации FS3000:

Модель Диапазон Точность Рекомендация
FS3000-1005 0 – 7,23 м/с ±5% FS Вентиляция, дымоходы, помещения
FS3000-1015 0 – 15,0 м/с ±5% FS Анемометры, внешние потоки, запас по диапазону

Для измерения тяги в дымоходе версия 1005 полностью достаточна - типичные скорости потока в бытовых дымоходах не превышают 3–4 м/с. Версию 1015 стоит брать, если планируете использовать датчик также как уличный анемометр.


🔥 Измерение тяги в дымоходе: главное применение

Это самая важная и одновременно самая ответственная задача. Неправильная тяга в дымоходе - причина:

  • 🚫 Попадания угарного газа (CO) в помещение
  • 🚫 Снижения КПД печи или котла
  • 🚫 Образования конденсата и коррозии трубы
  • 🚫 Обратной тяги при ветре или перепадах давления

❓ Зачем измерять тягу цифровым датчиком

Традиционные методы контроля (дым, пламя, «на слух») субъективны и не позволяют:

  • ✅ Зафиксировать постепенное ухудшение тяги из-за загрязнения
  • ✅ Получить уведомление при остановке вентилятора в системах с принудительной тягой
  • ✅ Автоматизировать управление заслонками или поддувом
  • ✅ Вести журнал параметров для анализа эффективности системы

📊 Типичные значения тяги в бытовых дымоходах

Режим Скорость потока Признаки
Нет тяги 0 – 0,2 м/с Дым идёт в помещение, опасность!
Слабая тяга 0,2 – 0,5 м/с Возможно загрязнение, требуется проверка
Нормальная тяга 0,5 – 1,5 м/с Стабильное горение, безопасная работа
Сильная тяга 1,5 – 4,0 м/с Эффективный отвод, возможен перерасход топлива
Избыточная тяга > 4,0 м/с Риск переохлаждения топки, шум, износ

⚠️ Критически важно: Датчик FS3000 рассчитан на температуру до +85 °C. Температура дымовых газов в дымоходе может достигать 150–400 °C. Прямая установка датчика в поток дыма недопустима!

🛡️ Безопасная установка: байпас и отбор пробы

Для защиты датчика от высокой температуры используется схема отбора пробы через байпас:

[ Дымовая труба ]
        │
        │  🔥 Горячие газы 200-400°C
        ▼
    ┌───────┐
    │       │
    │  🔘  │ ← малое отверстие 3-5 мм
    │       │    для отбора пробы
    └───┬───┘
        │
        │  🌬️ Охлаждённый поток
        │  (смешивается с воздухом)
        ▼
┌─────────────────┐
│ Медная трубка   │
│ длиной 15-30 см │
│ для охлаждения  │
└──────┬──────────┘
       │
       ▼
[ Датчик FS3000 ]
       │
       ▼
[ ESP32 + питание ]

Ключевые правила монтажа:

  1. Материал отборной трубки: Медь или нержавеющая сталь, диаметр 4–6 мм.
  2. Длина охлаждающего участка: Минимум 15 см открытой трубки для естественного охлаждения потока.
  3. Расположение отверстия: На боковой стенке дымохода, на высоте 30–50 см выше топки - там поток стабильнее.
  4. Защита от конденсата: Установите датчик с небольшим наклоном вниз, чтобы конденсат стекал обратно в трубу, а не в электронику.
  5. Герметизация: Все соединения должны быть герметичны, чтобы не нарушать тягу и не допускать подсоса воздуха.

🤖 Автоматизация: уведомления и управление

После подключения к ESP32 и Home Assistant можно реализовать сценарии:

[ ESP32 считывает FS3000 ]
        │
        ▼
[ ESPHome: фильтрация данных ]
        │
        ▼
[ Home Assistant: логика ]
        │
    ┌───┴───────────────┬───────────┐
    ▼                   ▼           ▼
Норма          Тревога      Предупреждение
0,5-4 м/с        <0,3 м/с      0,3-0,5 м/с
    │                   │           │
    ▼                   ▼           ▼
Журнал    🔔 Push-уведомление  📧 Email-отчёт
            🚨 Сирена (опционально)
            📱 Звонок (через API)

Пример YAML-конфигурации для ESPHome (фрагмент):

sensor:
  - platform: fs3000
    address: 0x28
    model: FS3000_1005
    name: "Chimney Draft Velocity"
    unit_of_measurement: "m/s"
    accuracy_decimals: 2
    filters:
      - sliding_window_moving_average:
          window_size: 10
          send_every: 5
      - lambda: |-
          if (x < 0.3) {
            id(draft_alarm).turn_on();
          } else {
            id(draft_alarm).turn_off();
          }
          return x;
    on_value_range:
      - above: 4.0
        then:
          - homeassistant.service:
              service: persistent_notification.create
              data:
                title: "⚠️ Избыточная тяга"
                message: "Скорость в дымоходе превысила 4 м/с"

binary_sensor:
  - platform: template
    id: draft_alarm
    name: "Chimney Draft Alarm"
    device_class: problem

💡 Совет: Добавьте в конфигурацию update_interval: 5s - частые опросы не нужны для мониторинга тяги, а снижение частоты экономит ресурсы ESP32.

🔍 Диагностика проблем с тягой

Система может помочь выявить типичные неисправности:

Симптом Возможная причина Действие
Постоянно < 0,3 м/с Забит дымоход, закрыта заслонка Проверить чистоту трубы, положение заслонок
Резкие скачки 0 → 3 → 0 м/с Порывы ветра, обратная тяга Установить дефлектор, проверить высоту трубы
Постепенное снижение за недели Накопление сажи, сужение канала Запланировать чистку дымохода
Нет данных, датчик «молчит» Обрыв провода, перегрев, конденсат Проверить монтаж, герметичность, температуру

🌬️ Контроль вентиляции: второе по важности применение

Системы приточно-вытяжной вентиляции в домах, квартирах и офисах часто работают «вслепую». Датчик FS3000 позволяет перевести их в режим постоянного мониторинга.

🎯 Сценарии использования

  • Обнаружение остановки вентилятора: Если поток упал до нуля при включённом питании - тревога.
  • Контроль загрязнения фильтров: Постепенное снижение скорости при неизменной мощности вентилятора сигнализирует о необходимости замены фильтра.
  • Балансировка системы: Измерение потока в разных ветках воздуховода для настройки заслонок.
  • Энергосбережение: Автоматическое снижение оборотов вентилятора при достаточном воздухообмене.

🔧 Установка в вентиляционный канал

В отличие от дымохода, здесь условия мягче, но есть свои нюансы:

[ Прямоугольный воздуховод ]
        │
        ▼
┌─────────────────────┐
│  ┌─────────────┐    │
│  │  FS3000     │    │
│  │  на штанге  │    │
│  └──────┬──────┘    │
│         │           │
│  🌬️ поток воздуха  │
└────────┴────────────┘
        │
        ▼
[ ESP32 в щитке управления ]

Рекомендации по монтажу:

  1. Позиционирование: Устанавливайте датчик на расстоянии не менее 5 диаметров канала от поворотов и заслонок - для стабилизации потока.
  2. Ориентация: Стрелка на корпусе датчика должна совпадать с направлением потока. Для двунаправленных систем используйте два датчика или механический переключатель.
  3. Защита от пыли: В запылённых помещениях установите перед датчиком съёмный фильтр тонкой очистки (меняется раз в 3–6 месяцев).
  4. Доступ для обслуживания: Предусмотрите лючок или быстросъёмное крепление для чистки сенсора.

⚙️ Конфигурация ESPHome для вентиляции

Базовый шаблон с фильтрацией и интеграцией в Home Assistant:

esphome:
  name: ventilation-monitor
  platform: ESP32
  board: esp32dev

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

sensor:
  - platform: fs3000
    address: 0x28
    model: FS3000_1005
    name: "Ventilation Airflow"
    unit_of_measurement: "m/s"
    filters:
      - multiply: 3.6  # конверсия м/с → км/ч для удобства
      - sliding_window_moving_average:
          window_size: 20
          send_every: 10
      - throttle: 30s  # не чаще раза в 30 секунд
    on_value:
      then:
        - lambda: |-
            if (id(ventilation_airflow).state < 1.0) {
              // 1.0 м/с = 3.6 км/ч - порог для тревоги
              id(vent_alert).publish_state(true);
            } else {
              id(vent_alert).publish_state(false);
            }

binary_sensor:
  - platform: template
    id: vent_alert
    name: "Ventilation Flow Alert"
    device_class: problem
    on_press:
      then:
        - homeassistant.service:
            service: notify.mobile_app_user
            data:
              message: "⚠️ Вентиляция: поток ниже нормы!"

api:
  encryption:
    key: !secret api_encryption_key

ota:
  password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

🔥 Важно: Не забудьте заменить !secret на реальные значения или вынести их в файл secrets.yaml для безопасности.


🌪️ FS3000 как анемометр: измерение скорости ветра

Хотя датчик FS3000 предназначен для измерения потоков внутри каналов, его можно адаптировать и для уличного использования - с определёнными оговорками.

⚠️ Ограничения для уличного применения

Фактор Проблема Решение
🌧️ Дождь и влага Попадание воды на сенсор искажает измерения Герметичный корпус с гидрофобной мембраной
🌬️ Турбулентность Порывы ветра дают «шумные» данные Аэродинамическая трубка-стабилизатор
❄️ Температура Рабочий диапазон до +85 °C, но на солнце возможен перегрев Светоотражающий кожух, вентиляция корпуса
🧊 Обледенение Лёд на сенсоре блокирует поток Подогрев корпуса (сложно) или зимний демонтаж

🔨 Простая конструкция метеодатчика

[ Ветер ]
   │
   ▼
┌──────────────┐
│ Входная воронка │ ← сужение для стабилизации
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ Прямая трубка  │ ← длина 10-15 см, диаметр 2-3 см
│  (ламинаризатор)│
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ FS3000 датчик  │ ← стрелка по направлению потока
└──────┬───────┘
       │
       ▼
[ ESP32 в защищённом боксе ]

Материалы для корпуса:

  • ПВХ-труба диаметром 32–40 мм для ламинаризатора
  • 3D-печатный адаптер для крепления FS3000
  • Силиконовый герметик для влагозащиты соединений
  • Сетчатый фильтр на входе от крупного мусора

📐 Калибровка и точность

Для повышения точности уличных измерений рекомендуется:

  1. Сравнение с эталоном: Проведите параллельные замеры с профессиональным анемометром в безветренную погоду и при разных скоростях.
  2. Коррекция в коде: Добавьте в ESPHome калибровочный множитель:
    filters:
      - lambda: |-
          return x * 1.05 + 0.12;  // пример коррекции
  3. Усреднение: Используйте фильтр sliding_window_moving_average с окном 30–60 секунд для сглаживания порывов.

💡 Идея: Создайте универсальный прибор с переключателем режимов (дымоход / вентиляция / ветер), где в коде меняются только коэффициенты калибровки и пороги тревог.


🔌 Полное руководство: подключение FS3000 к ESP32

🔌 Схема подключения (I2C)

[ ESP32 DevKit ]          [ FS3000 Qwiic ]
        │                         │
   3.3V ●─────────────────────● VCC
    GND ●─────────────────────● GND
 GPIO21 ●─────────────────────● SDA
 GPIO22 ●─────────────────────● SCL
        │                         │
        ▼                         ▼
[ Питание 5V через USB ]   [ Датчик готов к работе ]

Важные замечания:

  • ✅ Используйте именно 3.3V, а не 5V - датчик не имеет встроенного стабилизатора.
  • ✅ Подтягивающие резисторы I2C (4.7 кОм) уже есть на плате SparkFun - дополнительные не нужны.
  • ✅ Если используете длинный кабель (>30 см), добавьте резисторы 100 Ом последовательно в линии SDA/SCL для подавления помех.

🔍 Диагностика I2C-подключения

Перед загрузкой основной прошивки проверьте, «видит» ли ESP32 датчик:

// Простой скетч для Arduino IDE для сканирования I2C
#include 

void setup() {
  Serial.begin(115200);
  Wire.begin(21, 22);  // SDA, SCL для ESP32
  Serial.println("Scanning I2C...");
  
  for (byte address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    if (Wire.endTransmission() == 0) {
      Serial.print("Found device at 0x");
      Serial.println(address, HEX);
    }
  }
}
void loop() {}

Ожидаемый результат: Found device at 0x28. Если адрес не найден - проверьте пайку, полярность, питание.

📄 Полный пример конфигурации ESPHome

esphome:
  name: fs3000-airflow-monitor
  friendly_name: "Airflow Monitor"
  platform: ESP32
  board: esp32dev

logger:
  level: INFO

api:
  encryption:
    key: !secret api_key

ota:
  password: !secret ota_pass

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:
    ssid: "FS3000-Fallback"
    password: !secret ap_pass

captive_portal:

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true
  frequency: 100kHz

sensor:
  - platform: fs3000
    id: airflow_raw
    address: 0x28
    model: FS3000_1005
    name: "Air Velocity Raw"
    unit_of_measurement: "m/s"
    accuracy_decimals: 3
    update_interval: 2s
    filters:
      - sliding_window_moving_average:
          window_size: 15
          send_every: 5
      - throttle: 10s
    on_value:
      then:
        - lambda: |-
            float v = id(airflow_raw).state;
            if (v < 0.25) {
              id(status_led).turn_off();
              id(alert_buzzer).turn_on();
            } else if (v < 0.5) {
              id(status_led).turn_on();  // жёлтый режим
              id(alert_buzzer).turn_off();
            } else {
              id(status_led).turn_off();
              id(alert_buzzer).turn_off();
            }

  - platform: template
    name: "Air Velocity km/h"
    unit_of_measurement: "km/h"
    accuracy_decimals: 1
    lambda: |-
      return id(airflow_raw).state * 3.6;

binary_sensor:
  - platform: template
    id: airflow_alarm
    name: "Airflow Alert"
    device_class: problem

output:
  - platform: gpio
    pin: GPIO2
    id: status_led
  - platform: gpio
    pin: GPIO4
    id: alert_buzzer

web_server:
  port: 80

💡 Совет: Добавьте компонент web_server для локального доступа к показаниям без Home Assistant - удобно для отладки.

📈 Фильтрация и сглаживание данных

«Сырые» данные с FS3000 могут «прыгать» из-за турбулентности. ESPHome предлагает несколько фильтров:

Фильтр Назначение Пример
sliding_window_moving_average Сглаживание краткосрочных колебаний window_size: 10, send_every: 5
throttle Ограничение частоты отправки данных throttle: 30s
lambda Пользовательская коррекция, пороги Конвертация м/с → км/ч, триггеры тревог
median Подавление выбросов (спайков) window_size: 5

Рекомендуемая комбинация для дымохода:

filters:
  - median:
      window_size: 3
  - sliding_window_moving_average:
      window_size: 15
      send_every: 5
  - throttle: 20s

🚀 Расширенные сценарии и идеи

🌐 Сеть датчиков на ESP-NOW

Для больших объектов (цех, многоэтажный дом) можно создать беспроводную сеть:

[ Датчик 1: дымоход ]
        │
        │ ESP-NOW
        ▼
[ ESP32-Координатор ] ──WiFi──► [ Home Assistant ]
        ▲
        │ ESP-NOW
[ Датчик 2: вентиляция ]
        ▲
        │ ESP-NOW
[ Датчик 3: улица ]

Преимущества:

  • ✅ Нет необходимости прокладывать провода к каждому датчику
  • ✅ Масштабируемость: до 20 узлов на одном координаторе
  • ✅ Низкое энергопотребление: датчики могут работать от батарей

💾 Локальное логгирование данных

Для анализа долгосрочных тенденций (загрязнение фильтра, сезонные изменения тяги) полезно сохранять данные:

# В ESPHome: запись на SD-карту
sd_card:
  cs_pin: GPIO5
  spi_id: my_spi

sensor:
  - platform: fs3000
    # ... остальные параметры ...
    on_value:
      then:
        - lambda: |-
            File f = SD.open("/log.csv", FILE_APPEND);
            f.print(millis());
            f.print(",");
            f.println(x);
            f.close();

🔗 Интеграция с внешними системами

Помимо Home Assistant, данные можно передавать:

  • 📡 MQTT: Для интеграции с Node-RED, OpenHAB, собственными системами
  • 🌐 HTTP POST: Отправка JSON на любой веб-сервер для аналитики
  • 📱 Telegram Bot: Прямые уведомления в мессенджер без посредников
# Пример отправки в Telegram через ESPHome
telegram_bot:
  bot_token: !secret telegram_token
  chat_id: !secret telegram_chat_id

sensor:
  - platform: fs3000
    # ...
    on_value_range:
      - below: 0.3
        then:
          - telegram_bot.send_message:
              message: "🔥 Тревога! Тяга в дымоходе упала ниже 0.3 м/с"

✅ Чек-лист безопасности перед запуском

Перед первым включением системы в реальных условиях проверьте:

  1. 🔌 Питание: Напряжение на VCC датчика строго 3.3 В (проверить мультиметром).
  2. 🌡️ Температура: Датчик не нагревается выше 60 °C после 30 минут работы рядом с источником тепла.
  3. 💧 Влагозащита: Все соединения в зоне возможного конденсата загерметизированы.
  4. 🔗 I2C-линии: Стабильная связь, нет ошибок в логах ESPHome.
  5. 📊 Калибровка: Показания в статичном воздухе близки к 0, при обдуве - адекватный отклик.
  6. 🚨 Тревоги: Сценарии уведомлений срабатывают при имитации аварийной ситуации.
  7. 🔄 Резерв: Система не блокирует механическое управление заслонками/вентиляторами.

⚠️ Никогда не полагайтесь на электронику как на единственную систему безопасности! Датчик FS3000 - это инструмент мониторинга, а не замена дымовым извещателям, детекторам CO и регулярному техобслуживанию.


🎯 Заключение: почему FS3000 + ESP32 - удачный выбор

Комбинация датчика FS3000 и контроллера ESP32 открывает возможности для создания профессиональных систем мониторинга воздушных потоков по цене любительского проекта.

Ключевые преимущества:

  • Универсальность: Один датчик - три сценария (дымоход, вентиляция, ветер)
  • Доступность: ESP32 стоит $3–5, FS3000 - ~$60, что в разы дешевле промышленных аналогов
  • Гибкость: ESPHome позволяет быстро прототипировать логику без глубокого знания C++
  • Интеграция: Готовая поддержка Home Assistant, MQTT, Telegram «из коробки»
  • Масштабируемость: Легко добавить новые датчики в сеть через ESP-NOW или LoRa

Ограничения, о которых стоит помнить:

  • ⚠️ Температурный лимит 85 °C требует аккуратного монтажа в горячих зонах
  • ⚠️ Точность ±5% достаточна для мониторинга, но не для метрологических измерений
  • ⚠️ Уличное использование требует дополнительной защиты от погоды

🔥 Финальный совет: Начните с простого стенда «ESP32 + FS3000 на столе», отладите связь и фильтрацию, и только потом переходите к монтажу в дымоход или вентиляцию. Пошаговый подход минимизирует риски и экономит время.

Удачных экспериментов и безопасного воздуха в вашем доме! 🌬️✨