Conception d'une balance électronique intelligente basée sur STM32

Ce projet détaille la réalisation d'une balance électronique intelligente articulée autour d'un microcontrôleur STM32F103C8T6. Le système intègre des fonctionnalités de pesée précise, d'affichage dynamique via écran OLED, de communication Bluetooth pour le contrôle à distance et d'alertes sonores.

Architecture matérielle

Le système repose sur les composants principaux suivants :

  • Microcontrôleur : STM32F103C8T6 (cœur Cortex-M3).
  • Capteur de poids : Module HX711 avec cellule de charge.
  • Interface : Écran OLED 0.96 pouce (protocole I2C).
  • Connectivité : Module Bluetooth HC-05 pour la configuration des paramètres.
  • Audio : Module vocal JQ8900-16P pour la rétroaction sonore.
  • Interaction : Boutons-poussoirs pour le mode manuel.

Logique logicielle

Le code source est structuré pour gérer de manière asynchrone les entrées utilisateurs, la lecture du capteur et l'affichage. La boucle principale assure le rafraîchissement constant des données de poids et le calcul du prix en fonction du type de produit sélectionné.

Exemple de gestion des événements et calcul

L'extrait suivant illustre la logique de traitement des commandes, qu'elles proviennent des boutons physiques ou de la liaison Bluetooth :


void Processus_Controle(uint8_t commande) {
    switch (commande) {
        case '1': // Fonction Tare
            HX711_Reset_Offset();
            Audio_Jouer_Feedback(2);
            MiseAJour_Ecran_Etat("Tare OK");
            break;

        case '2': // Changement d'article
            Index_Produit = (Index_Produit + 1) % NB_PRODUITS;
            Audio_Jouer_Feedback(1);
            Afficher_Produit(Index_Produit);
            break;

        case '3': // Génération d'un ticket virtuel
            Buzzer_Activer_Bref();
            Transmettre_Facture(Index_Produit, Poids_Actuel);
            break;

        default:
            if (commande >= 'a' && commande <= 'f') {
                Index_Produit = commande - 'a';
                Afficher_Produit(Index_Produit);
            }
            break;
    }
}

Gestion de la sécurité et des alertes

Le système surveille en permanence la charge sur le capteur. Si la valeur mesurée dépasse le seuil crtiique défini (LIMITE_POIDS_MAX), une interruption logicielle bloque le fonctionnement normal pour afficher un avertissement sur l'écran OLED, forçant l'utilisateur à intervenir manuellement pour réinitialiser l'état.


void Verifier_Surcharge(uint32_t poids_lu) {
    if (poids_lu > LIMITE_POIDS_MAX) {
        OLED_Effacer();
        OLED_Afficher_Texte("ALERTE: SURCHARGE");
        OLED_Afficher_Texte("Appuyez sur 'Retour'");
        
        while (Obtenir_Touche() != TOUCHE_RETOUR);
        
        OLED_Effacer();
        Initialiser_Interface_Principale();
    }
}

Le logiciel est segmenté en modules : le répertoire Hardware contient les pilotes spécifiques aux périphériques, tandis que System regroupe les fonctions de gestion du temps et de configuration horloge. Cette séparation garantit la maintenabilité et la lisibilité du projet sur l'architecture ARM Cortex-M.

Étiquettes: STM32 HX711 Bluetooth OLED C

Publié le 13 juin à 07h34