Dryer - это встраиваемое приложение для микроконтроллера ESP32, предназначенное для управления умной сушилкой. Проект написан на языке Rust с использованием ESP-IDF фреймворка и обеспечивает автоматическое управление температурой, вентиляцией и удаленное управление через MQTT.
- 🌡️ Контроль температуры - автоматическое поддержание заданной температуры с использованием датчика DS18B20
- 🔄 Управление вентилятором - плавное регулирование скорости вращения вентилятора через PWM
- 🔥 Управление нагревателем - автоматическое включение/выключение нагревательного элемента
- 📡 MQTT интеграция - удаленное управление и мониторинг состояния через MQTT брокер
- 📶 WiFi подключение - автоматическое подключение к WiFi сети
- ⏰ Таймеры и планировщик - возможность запуска по расписанию
- 🛡️ Безопасность - защита от перегрева и автоматическое охлаждение
Центральный модуль управления сушилкой:
- State - управление состоянием устройства (активно/неактивно)
- Heater - управление нагревательным элементом и логика сушки
- Fan - управление вентилятором с PWM регулированием
- Sensor - интерфейс для датчиков температуры
Реализация датчика температуры DS18B20:
- Поддержка протокола OneWire
- Автоматический поиск устройства
- Высокая точность измерений (±0.5°C)
Удаленное управление и мониторинг:
- Подключение к MQTT брокеру
- Команды: Start (с указанием времени), Stop
- Публикация состояния устройства
- Обработка команд в реальном времени
Сетевое подключение:
- Автоматическое подключение к WiFi
- Поддержка WPA2-Personal
- Автоконфигурация параметров сети
Управление временем и таймерами:
- SyncTimer - синхронные таймеры с возможностью отмены
- OnceIn - ограничитель частоты выполнения операций
- Scheduler - планировщик периодических задач
Планировщик задач:
- Периодические задания по времени
- Уникальные идентификаторы задач (UUID)
- Предотвращение повторного выполнения
- Нагрев - включение нагревателя при температуре ниже целевой
- Сушка - включение вентилятора на среднюю скорость при достижении целевой температуры
- Охлаждение - выключение нагревателя и вентилятора при превышении максимальной температуры
- Off - постепенное снижение скорости до полной остановки
- Middle - работа на 70% от максимальной мощности
- Max - постепенное увеличение скорости до максимума
- Защита от перегрева (автоматическое охлаждение)
- Обработка ошибок датчика температуры (максимум 3 неудачных попытки)
- Graceful shutdown при получении команды Stop
# 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/start- запуск сушки{"duration": 3600} // время в секундах/stop- остановка сушки
/state- текущее состояние устройства
esp-idf-svc- ESP-IDF сервисы для Rustembedded-svc- встраиваемые сервисыanyhow- обработка ошибокserde- сериализация/десериализацияchrono- работа с датой и временемuuid- генерация уникальных идентификаторовonewire- протокол OneWire для датчиковlog- логирование
embuild- система сборки для ESP-IDF
- Rust toolchain с поддержкой ESP32
- ESP-IDF SDK
- Настроенные переменные окружения
# Сборка в режиме разработки
cargo build
# Сборка в release режиме
cargo build --release
# Прошивка на устройство
cargo runsrc/
├── 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.