UART pour le débogage des dispositifs embarqués : meilleures pratiques pour les dispositifs basse consommation

Alors que l'USB a pris les commandes pour la plupart des périphériques, la technologie UART existe toujours et commence à se répandre dans l'univers des systèmes embarqués, pour déboguer absolument tout, des modules GPS aux ordinateurs monocartes Raspberry Pi, en passant par les cartes Arduino.

Mais tandis que nous repoussons les limites des conceptions ultrabasse consommation, les développeurs posent souvent une question : la technologie UART est-elle en train de tuer discrètement les batteries ? La réponse courte est la suivante : non, pas nécessairement. Comme tout bon outil, tout dépend de la manière dont vous l'implémentez. Voyons tout cela plus en détail.

Garder un œil sur le courant de fuite TX/RX

Un moyen simple d'éviter toute consommation inutile consiste à régler les éventuels problèmes de courant de fuite au niveau des canaux de transmission (TX) et de réception (RX). Même si les fuites importantes ne sont pas très courantes, il vaut mieux vérifier et régler les problèmes potentiels en amont afin d'éviter toute consommation imprévue par la suite.

Écrire et exécuter le code en ciblant une basse consommation

Voyez l'émetteur-récepteur universel asynchrone (UART) comme votre couteau suisse de débogage : très pratique lors du développement, mais à ne pas laisser déplié dans votre poche en permanence. Il est judicieux d'utiliser une commande #define dans votre code pour activer l'UART pour le débogage et le désactiver lorsque votre dispositif passe à l'étape de production. Il s'agit d'une astuce simple, mais qui peut vous épargner certains cauchemars dans la réalité.

Imaginez un peu : avec votre équipe, vous vous concentrez à 100 % sur la réduction de la consommation énergétique. Vous effectuez des mesures de courant en continu et constatez des progrès très prometteurs. Lors du développement, vous laissez l'UART activé pour le débogage, acceptant la consommation temporaire que cela représente. Mais par la suite, quelqu'un fusionne par accident ce code dans la branche principale (avec l'UART toujours activé) et ce code est intégré à des millions de dispositifs. Tout d'un coup, votre conception autrefois efficace vide les batteries comme une machine d'arcade, et vous vous retrouvez face à d'innombrables clients mécontents.

La solution ? Configurez un système d'intégration continue avec des références de consommation de courant. Ainsi, vous pourrez repérer les problèmes de ce type avant qu'ils ne se transforment en erreurs coûteuses. Voyez cela comme un filet de sécurité automatisé qui permet de contrôler ce courant supplémentaire avant que votre code n'atteigne l'étape de la production.

Veiller à tout désactiver

L'activation de l'UART peut activer plusieurs parties de votre logiciel, notamment différents blocs de microcontrôleur et horloges. Les microcontrôleurs sont souvent conçus en activant tout par défaut pour simplifier le développement. Toutefois, il est essentiel de désactiver les composants inutiles avant que le microcontrôleur ne passe en mode veille. Si les horloges UART restent activées, elles peuvent empêcher le microcontrôleur d'atteindre son état de veille le plus profond, ce qui entraînera une consommation énergétique accrue. Vérifiez votre arbre d'horloge et assurez-vous que tous les composants liés à l'UART sont bien désactivés lorsqu'ils ne sont pas nécessaires.

Expérimentation Otii en action

Comparons deux versions micrologicielles exécutées sur le même dispositif, le Seeed Studio XIAO nRF52840 de Seeed Technology. Nous avons préparé un script type qui initialise le module, configure la mémoire Flash, exécute une courte séquence de clignotement LED, puis fait passer le module dans son mode présentant la plus basse consommation possible. Une version a l'UART activé, tandis que l'autre fonctionne sans UART. À l'aide du système Otii Ace Pro de Qoitech, nous avons mesuré la consommation de courant pour analyser et comparer la consommation énergétique des deux versions à différents niveaux de tension.

Dans la Figure 1, le dispositif envoie activement des messages UART, tandis que la Figure 2 montre le microcontrôleur en mode veille. La ligne bleue indique que l'UART est activé, tandis que la ligne orange montre qu'il est désactivé. La différence souligne l'impact que l'UART peut avoir sur la consommation de courant.

Figure 1 : Dispositif Seeed Studio XIAO nRF52840 actif avec communication UART | Activée (graphique bleu) | Désactivée (graphique orange). (Source de l'image : Qoitech)

Figure 2 : Dispositif XIAO nRF52840 en mode basse consommation (partie sélectionnée du graphique) avec communication UART | Activée (graphique bleu) | Désactivée (graphique orange). (Source de l'image : Qoitech)

En mode actif, la consommation de courant moyenne passe de 460 μA à 1,34 mA (comme illustré à la Figure 1). En mode veille, la consommation de courant passe de 2,27 μA à 2,19 μA (Figure 2). Même si cette différence peut paraître insignifiante, les longues périodes de veille typiques dans les dispositifs IoT font de cette augmentation une différence majeure pour la durée de vie de la batterie. Le micrologiciel est clairement optimisé pour les périodes où l'UART est désactivé.

Estimation de la durée de vie de la batterie avec Otii

Pour illustrer l'impact sur la durée de vie de la batterie, nous avons utilisé l'outil Battery Life Estimator de l'application Otii Desktop App. Nous avons supposé une période active par heure, au cours de laquelle le dispositif s'active et exécute la séquence de clignotement, avant de se remettre en veille pendant près de 3600 secondes.

Dans la Figure 3, l'UART est désactivé, et dans la Figure 4, l'UART est activé, montrant la différence significative de durée de vie de la batterie selon que l'UART est utilisé ou non.

Figure 3 : Estimation de la durée de vie de la batterie lorsque la communication UART est désactivée. (Source de l'image : Qoitech)

Figure 4 : Estimation de la durée de vie de la batterie lorsque la communication UART est activée. (Source de l'image : Qoitech)

La différence est de taille ! La durée de vie estimée de la batterie passe de 5,9 ans à seulement 11,6 jours lorsque l'UART est laissé activé.

La leçon la plus importante à retenir est de veiller à bien désactiver tout ce qui est lié à l'UART avant que le microcontrôleur ne passe en mode veille. La mise en œuvre de cette mesure dans votre processus d'intégration continue avec la suite de produits Otii permettra d'éviter les versions accidentelles avec l'UART activé, ce qui pourrait considérablement réduire la durée de vie de la batterie de votre dispositif.

À propos de l'auteur

Image of Qoitech

Qoitech offers the Otii product series, designed to help companies extend battery life throughout the prototype, development, and maintenance phases, getting insights beyond datasheets. With real-time measurements, Otii enables the optimization of devices, battery profiling, and selecting the most suitable batteries. Whether you're working from home, your desk, or outside, Otii provides a versatile on-the-bench solution.

Used by developers and teams in 3,500+ companies across more than 65 countries, Otii consists of powerful hardware options: Otii Arc, supporting up to 5V, and Otii Ace, supporting up to 25V. Coupled with the Otii Pro software, enhanced with two robust add-ons - the Battery Toolbox and Automation Toolbox - Qoitech delivers a comprehensive solution to enhance battery performance and overall device efficiency.

By leveraging Qoitech's Otii products, companies can confidently optimize battery usage, extend battery life, and streamline their development processes, resulting in improved product reliability and customer satisfaction. Qoitech empowers developers worldwide to achieve their battery life goals and deliver exceptional IoT devices.

More posts by Qoitech
 TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum