Модернизация IoT-решения: Flutter + ESP32-C3 датчик пыли

Приложение на flutter для получения данных количества пыли от IoT.

Модернизация 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ократить сроки разработки программ для микроконтроллеров, миникомпьютеров

 Ссылки :