Skip to content

apolon13/dryer

Repository files navigation

Dryer - Умная сушилка для ESP32

Описание проекта

Dryer - это встраиваемое приложение для микроконтроллера ESP32, предназначенное для управления умной сушилкой. Проект написан на языке Rust с использованием ESP-IDF фреймворка и обеспечивает автоматическое управление температурой, вентиляцией и удаленное управление через MQTT.

Основные возможности

  • 🌡️ Контроль температуры - автоматическое поддержание заданной температуры с использованием датчика DS18B20
  • 🔄 Управление вентилятором - плавное регулирование скорости вращения вентилятора через PWM
  • 🔥 Управление нагревателем - автоматическое включение/выключение нагревательного элемента
  • 📡 MQTT интеграция - удаленное управление и мониторинг состояния через MQTT брокер
  • 📶 WiFi подключение - автоматическое подключение к WiFi сети
  • Таймеры и планировщик - возможность запуска по расписанию
  • 🛡️ Безопасность - защита от перегрева и автоматическое охлаждение

Архитектура системы

Основные компоненты

1. Dryer Module (src/dryer/)

Центральный модуль управления сушилкой:

  • State - управление состоянием устройства (активно/неактивно)
  • Heater - управление нагревательным элементом и логика сушки
  • Fan - управление вентилятором с PWM регулированием
  • Sensor - интерфейс для датчиков температуры

2. Temperature Sensor (src/dryer/sensor/temperature.rs)

Реализация датчика температуры DS18B20:

  • Поддержка протокола OneWire
  • Автоматический поиск устройства
  • Высокая точность измерений (±0.5°C)

3. MQTT Module (src/mqtt/)

Удаленное управление и мониторинг:

  • Подключение к MQTT брокеру
  • Команды: Start (с указанием времени), Stop
  • Публикация состояния устройства
  • Обработка команд в реальном времени

4. WiFi Module (src/wifi/)

Сетевое подключение:

  • Автоматическое подключение к WiFi
  • Поддержка WPA2-Personal
  • Автоконфигурация параметров сети

5. Time Management (src/time/)

Управление временем и таймерами:

  • SyncTimer - синхронные таймеры с возможностью отмены
  • OnceIn - ограничитель частоты выполнения операций
  • Scheduler - планировщик периодических задач

6. Schedule Module (src/schedule/)

Планировщик задач:

  • Периодические задания по времени
  • Уникальные идентификаторы задач (UUID)
  • Предотвращение повторного выполнения

Алгоритм работы

Цикл сушки

  1. Нагрев - включение нагревателя при температуре ниже целевой
  2. Сушка - включение вентилятора на среднюю скорость при достижении целевой температуры
  3. Охлаждение - выключение нагревателя и вентилятора при превышении максимальной температуры

Управление вентилятором

  • Off - постепенное снижение скорости до полной остановки
  • Middle - работа на 70% от максимальной мощности
  • Max - постепенное увеличение скорости до максимума

Безопасность

  • Защита от перегрева (автоматическое охлаждение)
  • Обработка ошибок датчика температуры (максимум 3 неудачных попытки)
  • Graceful shutdown при получении команды Stop

Конфигурация

Переменные окружения (.env)

# WiFi настройки
SSID=your_wifi_network
PASS=your_wifi_password

# MQTT настройки
MQTT_CLIENT_ID=your_client_id
MQTT_USERNAME=your_mqtt_username
MQTT_PASSWORD=your_mqtt_password
MQTT_URL=mqtt://your_broker:1883

# Целевая температура (в градусах Цельсия)
TARGET_TEMPERATURE=45

MQTT API

Топики

Команды (входящие)

  • /start - запуск сушки
    {"duration": 3600}  // время в секундах
  • /stop - остановка сушки

Состояние (исходящие)

  • /state - текущее состояние устройства

Зависимости

Основные зависимости

  • esp-idf-svc - ESP-IDF сервисы для Rust
  • embedded-svc - встраиваемые сервисы
  • anyhow - обработка ошибок
  • serde - сериализация/десериализация
  • chrono - работа с датой и временем
  • uuid - генерация уникальных идентификаторов
  • onewire - протокол OneWire для датчиков
  • log - логирование

Сборка

  • embuild - система сборки для ESP-IDF

Сборка и запуск

Требования

  • Rust toolchain с поддержкой ESP32
  • ESP-IDF SDK
  • Настроенные переменные окружения

Команды сборки

# Сборка в режиме разработки
cargo build

# Сборка в release режиме
cargo build --release

# Прошивка на устройство
cargo run

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

src/
├── main.rs                 # Точка входа приложения
├── dryer/                  # Основной модуль сушилки
│   ├── mod.rs             # Состояние и сообщения
│   ├── fan/               # Управление вентилятором
│   ├── heater/            # Управление нагревателем
│   └── sensor/            # Датчики
│       └── temperature.rs # Датчик температуры DS18B20
├── mqtt/                  # MQTT клиент
├── wifi/                  # WiFi подключение
├── time/                  # Управление временем
│   ├── timer/             # Синхронные таймеры
│   └── limit/             # Ограничители частоты
└── schedule/              # Планировщик задач

Особенности реализации

Многопоточность

  • Основной поток: MQTT обработка и WiFi
  • Вторичный поток: управление сушилкой и датчиками
  • Синхронизация через каналы (mpsc/mpmc)

Управление ресурсами

  • Автоматическое управление периферией ESP32
  • Безопасное освобождение ресурсов при завершении
  • Обработка ошибок на всех уровнях

Производительность

  • Оптимизированная сборка для встраиваемых систем
  • Минимальное потребление памяти
  • Эффективное управление питанием

Безопасность и надежность

  • Валидация всех входящих команд
  • Защита от переполнения буферов
  • Graceful degradation при ошибках
  • Автоматическое восстановление соединений
  • Логирование критических событий

Лицензия

Проект разработан для внутреннего использования. Все права защищены.

Автор

Разработано для проекта умного дома на базе ESP32.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages