Датчик 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 │
│термо- термо- │
│пара пара │
└───────────────────┘
│
▼
[ Воздушный поток ]
- Без потока: Нагреватель равномерно прогревает обе термопары T1 и T2. Разница температур ≈ 0.
- При потоке: Воздух охлаждает термопары, но неравномерно - та, что находится «по ветру», остывает сильнее.
- Измерение: Электроника фиксирует разницу напряжений термопар и вычисляет скорость потока по калибровочной кривой.
💡 Преимущество метода: Нет движущихся частей, высокая чувствительность к малым скоростям (от 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 + питание ]
Ключевые правила монтажа:
- Материал отборной трубки: Медь или нержавеющая сталь, диаметр 4–6 мм.
- Длина охлаждающего участка: Минимум 15 см открытой трубки для естественного охлаждения потока.
- Расположение отверстия: На боковой стенке дымохода, на высоте 30–50 см выше топки - там поток стабильнее.
- Защита от конденсата: Установите датчик с небольшим наклоном вниз, чтобы конденсат стекал обратно в трубу, а не в электронику.
- Герметизация: Все соединения должны быть герметичны, чтобы не нарушать тягу и не допускать подсоса воздуха.
🤖 Автоматизация: уведомления и управление
После подключения к 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 в щитке управления ]
Рекомендации по монтажу:
- Позиционирование: Устанавливайте датчик на расстоянии не менее 5 диаметров канала от поворотов и заслонок - для стабилизации потока.
- Ориентация: Стрелка на корпусе датчика должна совпадать с направлением потока. Для двунаправленных систем используйте два датчика или механический переключатель.
- Защита от пыли: В запылённых помещениях установите перед датчиком съёмный фильтр тонкой очистки (меняется раз в 3–6 месяцев).
- Доступ для обслуживания: Предусмотрите лючок или быстросъёмное крепление для чистки сенсора.
⚙️ Конфигурация 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
- Силиконовый герметик для влагозащиты соединений
- Сетчатый фильтр на входе от крупного мусора
📐 Калибровка и точность
Для повышения точности уличных измерений рекомендуется:
- Сравнение с эталоном: Проведите параллельные замеры с профессиональным анемометром в безветренную погоду и при разных скоростях.
- Коррекция в коде: Добавьте в ESPHome калибровочный множитель:
filters:
- lambda: |-
return x * 1.05 + 0.12; // пример коррекции
- Усреднение: Используйте фильтр
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 м/с"
✅ Чек-лист безопасности перед запуском
Перед первым включением системы в реальных условиях проверьте:
- 🔌 Питание: Напряжение на VCC датчика строго 3.3 В (проверить мультиметром).
- 🌡️ Температура: Датчик не нагревается выше 60 °C после 30 минут работы рядом с источником тепла.
- 💧 Влагозащита: Все соединения в зоне возможного конденсата загерметизированы.
- 🔗 I2C-линии: Стабильная связь, нет ошибок в логах ESPHome.
- 📊 Калибровка: Показания в статичном воздухе близки к 0, при обдуве - адекватный отклик.
- 🚨 Тревоги: Сценарии уведомлений срабатывают при имитации аварийной ситуации.
- 🔄 Резерв: Система не блокирует механическое управление заслонками/вентиляторами.
⚠️ Никогда не полагайтесь на электронику как на единственную систему безопасности! Датчик 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 на столе», отладите связь и фильтрацию, и только потом переходите к монтажу в дымоход или вентиляцию. Пошаговый подход минимизирует риски и экономит время.
Удачных экспериментов и безопасного воздуха в вашем доме! 🌬️✨