Модернизация IoT-решения: Flutter + ESP32-C3 датчик пыли
📌 О проекте
В рамках самообразования и расширения портфолио выполнил модернизацию открытого IoT-проекта — беспроводного датчика пыли на базе ESP32-C3 и клиентского приложения на Flutter. Исходный код (GitHub: 0015/ThatProject) был написан несколько лет назад и содержал устаревшие зависимости, критические ошибки соединения и процедурный стиль, затруднявший поддержку.
Цель: привести проект к современным стандартам, обеспечить стабильную работу Bluetooth-соединения и подготовить код к дальнейшему развитию.
🛠 Что сделано
🔹 Рефакторинг Flutter-приложения
Переход на Flutter 3.x и Dart 3, обновлены все зависимости.
Внедрена чистая архитектура с разделением на слои (данные, домен, презентация).
Управление состоянием переведено на BLoC — состояние Bluetooth-соединения, данные с датчика, ошибки.
Организован отдельный сервис Bluetooth (BluetoothParticleSensor), инкапсулирующий логику сканирования, подключения, подписки на уведомления и повторного подключения.
🔹 Исправление критических проблем
Автоматическое переподключение при потере связи с ESP32-C3.
Обработка краевых случаев: отключение питания датчика, выход из зоны действия, множественные попытки reconnect.
Устранены состояния гонки (race conditions) при работе с потоками данных.
Добавлены таймауты и экспоненциальная задержка (backoff) для повторных попыток.
🔹 Доработка прошивки ESP32-C3
Адаптация Arduino-скетча под архитектуру RISC-V и стабильную работу BLE.
Оптимизация отправки данных: добавлены контрольные суммы, фильтрация шумов.
🧰 Используемые технологии
Платформа Технологии
Flutter Dart, BLoC, FlutterBluePlus, Stream, ValueNotifier ESP32-C3 Arduino framework, BLE, RISC-V Инструменты Git, VS Code, Postman (тестирование BLE), DeepSeek Chat (AI-ассистент)
📈 Результат
✅ Приложение стабильно подключается к датчику, отображает уровень пыли в реальном времени. ✅ Автоматически восстанавливает сессию при временном отключении устройства. ✅ Кодовая база готова к расширению — легко добавить новые датчики или экраны. ✅ Проект полностью работоспособен на Linux, Android и OS Linux.
Консультации и услуги программиста
- Составить техническое задание
- Написать программу для микроконтроллера или компьютера
- Применение микроконтроллеров в проектах
- Cократить сроки разработки программ для микроконтроллеров, миникомпьютеров
