Skip to content

Repository files navigation

📱 STM32 BLE Monitor - Application Flutter

Application Flutter cross-platform (Android & iOS) pour le monitoring en temps réel des données IMU du capteur ISM330DHCX sur STM32WB55 via Bluetooth Low Energy.

⚙️ Mise à jour 03/11/2025 : Corrections importantes du parsing des données (gyroscope et accéléromètre inversés).
📖 Voir GYROSCOPE_CORRECTIONS.md pour les détails complets.

🎯 Fonctionnalités

Scan BLE - Détection automatique des périphériques STM32 à proximité
Connexion GATT - Connexion sécurisée au périphérique
Données en temps réel - Réception et affichage des données toutes les secondes
Interface moderne - UI Material Design 3 avec animations fluides
Support multi-plateforme - Compatible Android (5.0+) et iOS (12.0+)
Logs détaillés - Suivi en temps réel de la communication BLE

📊 Données affichées

  • 🌡️ Température du capteur ISM330DHCX (en °C)
  • 🔄 Gyroscope 3 axes (X, Y, Z en dps - degrés par seconde)
    • Calibré automatiquement au démarrage (100 échantillons)
    • Filtré avec moyenne mobile (5 échantillons)
    • 📊 Valeurs au repos : ±0.2 dps (après calibration)
  • 📊 Accéléromètre 3 axes (X, Y, Z en g - gravité terrestre)
    • 📊 Au repos (à plat) : X≈0g, Y≈0g, Z≈1g

🏗️ Architecture du projet

lib/
├── main.dart                    # Point d'entrée + configuration du routing
├── models/                      # Modèles de données
│   ├── ble_device_model.dart   # Modèle d'un périphérique BLE
│   └── imu_data_model.dart     # Modèle des données IMU
├── services/                    # Services métier
│   └── ble_service.dart        # Service BLE (Singleton) - gère toute la communication
├── screens/                     # Écrans de l'application
│   ├── home_screen.dart        # Écran d'accueil avec présentation
│   ├── scanner_screen.dart     # Scanner BLE
│   └── data_screen.dart        # Affichage des données en temps réel
└── utils/                       # Utilitaires
    └── constants.dart          # Constantes (UUIDs, thème, durées)

🔧 Technologies utilisées

Technologie Version Utilisation
Flutter 3.9.2+ Framework cross-platform
flutter_blue_plus ^1.32.8 Communication BLE
permission_handler ^11.3.1 Gestion des permissions
go_router ^14.6.2 Navigation moderne
provider ^6.1.2 State management

📋 Prérequis

Outils nécessaires

Périphérique STM32

  • STM32WB55 configuré avec :
    • Service BLE IMU actif
    • UUID caractéristique : 0000abcd-8e22-4541-9d4c-21edae82ed19
    • Format des données : 20 ou 28 bytes (Little-Endian IEEE 754)

🚀 Installation

1. Cloner le projet

git clone <url-du-repo>
cd Projet_BE

2. Installer les dépendances

flutter pub get

3. Vérifier la configuration

flutter doctor

▶️ Lancement de l'application

Android

# Connecter un téléphone Android en USB (mode développeur activé)
flutter run

iOS (Mac uniquement)

# Connecter un iPhone en USB
flutter run

Mode release (optimisé)

flutter run --release

🔑 Permissions

Android

Les permissions suivantes sont automatiquement configurées dans android/app/src/main/AndroidManifest.xml :

  • BLUETOOTH / BLUETOOTH_ADMIN (Android < 12)
  • BLUETOOTH_SCAN / BLUETOOTH_CONNECT (Android 12+)
  • ACCESS_FINE_LOCATION (requis pour le scan BLE)

iOS

Les permissions suivantes sont configurées dans ios/Runner/Info.plist :

  • NSBluetoothAlwaysUsageDescription - Description de l'utilisation du Bluetooth
  • UIBackgroundModes - Mode bluetooth-central pour les connexions en arrière-plan

📱 Utilisation de l'application

1. Écran d'accueil

  • Présentation des fonctionnalités (carrousel)
  • Bouton "Scanner les périphériques"

2. Scanner BLE

  • Appuyez sur le bouton flottant pour démarrer le scan
  • La liste des périphériques découverts s'affiche
  • Touchez un périphérique pour vous connecter

3. Données en temps réel

  • Onglet "Données" : Affichage décrypté avec cartes colorées
    • Température (orange)
    • Accéléromètre (violet)
    • Gyroscope (vert)
  • Onglet "Logs" : Logs de débogage en temps réel

🎨 Personnalisation

Thème

Le thème est défini dans lib/utils/constants.dart :

class AppTheme {
  static const Color primary = Color(0xFF2196F3);    // Bleu
  static const Color accent = Color(0xFFFF9800);     // Orange
  static const Color success = Color(0xFF4CAF50);    // Vert
  // ...
}

UUIDs BLE

Les UUIDs sont définis dans lib/utils/constants.dart :

class AppConstants {
  static const String charAllDataUuid = '0000abcd-8e22-4541-9d4c-21edae82ed19';
  // ...
}

🐛 Dépannage

Problème : Aucun périphérique trouvé

Solutions :

  • Vérifiez que le Bluetooth est activé
  • Activez la localisation (requis sur Android)
  • Vérifiez que le STM32 est en mode advertising
  • Rapprochez-vous du périphérique

Problème : Échec de connexion

Solutions :

  • Redémarrez le STM32
  • Redémarrez l'application
  • Vérifiez les logs (onglet "Logs")

Problème : Aucune donnée reçue

Solutions :

  • Vérifiez que les notifications BLE sont activées
  • Vérifiez que le STM32 envoie bien les données (28 bytes)
  • Consultez les logs de débogage

Problème : Erreur de build

# Nettoyer le projet
flutter clean
flutter pub get

# Régénérer les fichiers natifs
cd android && ./gradlew clean && cd ..
cd ios && rm -rf Pods Podfile.lock && pod install && cd ..

📊 Format des données BLE ✅ CORRIGÉ 03/11/2025

Le STM32 envoie des paquets de 28 bytes au format Little-Endian IEEE 754 :

⚠️ Important : L'ordre Gyro/Accel a été inversé le 03/11/2025. Voir GYROSCOPE_CORRECTIONS.md

Offset Taille Données Unité Note
0-3 4 bytes Température °C Température du capteur ISM330DHCX
4-7 4 bytes Gyro X dps GYRO vient AVANT (calibré + filtré)
8-11 4 bytes Gyro Y dps Valeurs au repos : ±0.2 dps
12-15 4 bytes Gyro Z dps Filtrage moyenne mobile (5 échantillons)
16-19 4 bytes Accel X g ACCEL vient APRÈS
20-23 4 bytes Accel Y g Au repos (à plat) : ~0g
24-27 4 bytes Accel Z g Au repos (à plat) : ~1g (gravité)

🔗 Ressources

📄 Licence

Projet Bureau d'Étude - ISEN

👥 Auteurs

Projet réalisé dans le cadre du Bureau d'Étude ISEN 5e année.


Note : Cette application nécessite un périphérique physique avec Bluetooth. Les émulateurs/simulateurs ne supportent pas le BLE.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages