Cet article est la suite de celui-ci (Protégez votre santé grâce au capteur de qualité d’air BME680) dans lequel je décris le capteur de pollution BME680.

Je propose ici la conception d’un appareil de surveillance de la qualité de l’air intérieur que j’ai nommé « SIRONA ».

Cahier des charges

Voici le cahier des charges très simple de notre appareil de surveillance :

  • Mesure de la qualité de l’air, la température et l’humidité
  • Alimentation par pile alcaline
  • Interface Bluetooth pour communication avec smartphone
  • Stockage des données pendant une semaine
  • Horloge interne précise pour datation des données

Conception et schéma électrique

La conception de la carte électronique est faite grâce au logiciel gratuit Kicad. Voici le lien vers le site web de l’éditeur.

image schéma sirona

Cliquez sur l’image ci-dessus pour télécharger le PDF du schéma électrique de la carte.

Microcontroleur

Le capteur BME680 doit être utilisé avec un microcontrôleur embarquant les logiciels fournis par son fabricant pour exploiter le plus efficacement possible toutes ses mesures.

Mon choix s’est tourné vers un microcontrôleur STM32 de la famille L0 destinée aux applications très faible consommation et low cost. Il s’agit du STM32L031K6T6 dont la datasheet est téléchargeable ici.

Le critère de faible consommation est primordial car notre appareil est censé être alimenté par des piles. La durée de vie des piles doit être la plus longue possible pour ne pas obliger l’utilisateur à en changer trop souvent. Une durée de vie de 3 mois de fonctionnement continu est un objectif.

Un lien I2C permet la communication entre le microcontrôleur et le capteur.

Vous pouvez trouver ici un article expliquant le fonctionnement de ce bus très couramment utilisé.

Bluetooth

Le lien Bluetooth est assuré par le module RN4871 dont la datasheet est téléchargeable ici. Il s’agit d’une mini-carte embarquant tous les composants nécessaires à la mise en œuvre d’une liaison Bluetooth BLE. Fonctionnellement ce module permettra de transférer les données du capteur BME680 traitées par le microcontrôleur vers un smartphone.

Le module RN4871 communique avec le microcontrôleur via un lien UART. Voici un article ici expliquant le fonctionnement de ce bus très couramment utilisé.

Alimentation

La carte est alimentée grâce à deux piles alcaline de format AAA. Ces deux piles montées en série fournissent une tension de 2 x 1.5V avec une capacité de 1250 mAh. Cela signifie que si la carte consomme 1 mA en permanence, les piles pourront l’alimenter pendant 1250 heures (environ 52 jours). Notre objectif étant de 3 mois de durée de vie (2160 heures), la consommation de notre carte ne devra pas excéder 570 µA.

La consommation estimée de la carte pour notre application est la suivante :

  • BME680 en mode ultra low power : 90 µA (une mesure toutes les 5 min)
  • Consommation STM32 en moyenne : 6.2 µA
    • Mode actif 2% du temps : 260 µA
    • Mode veille 98% du temps : 1 µA
  • Consommation RN4871 : 113 µA dans un mode basse consommation suffisant pour notre application

La consommation totale moyenne est d’environ 209 µA ce qui est bien inférieur à notre objectif de 570 µA. On pourrait donc tenir 6 mois dans ce cas.

En réalité il faudrait aussi prendre en compte la consommation de la LED mais qui devrait être négligeable car peu utilisée.

Le BME680 associé à son logiciel BSEC possède 2 modes de fonctionnement :

  • Low Power : une mesure toutes les 3 secondes : 900 µA de consommation moyenne
  • Ultra Low Power : une mesure toutes les 300 secondes (5 minutes) : 90 µA de consommation moyenne

Le mode Low power n’est pas compatible de notre objectif d’autonomie car la consommation de 900 µA est très supérieure à notre objectif de 570 µA. Il faut donc utiliser le mode Ultra Low Power consommant 90 µA. Cependant l’intervalle de 5 minutes entre chaque mesure parait énorme. En réalité, il est suffisant car nous cherchons à mesurer des phénomènes physiques lents. Le niveau de pollution d’une pièce ne change pas rapidement.

L’alimentation direct des composants par 2 piles alcalines implique un niveau de tension variable entre 3V en début de vie et 2V en fin de vie des piles ce qui est compatible de tous les composants.

Voici les niveaux de tension supportés par les composants actifs :

  • Microcontrôleur STM32 : entre 1.8V et 3.6V
  • Module Bluetooth RN4871 : entre 1.9V et 3.6V
  • Capteur BME680 : entre 1.71V et 3.6V

Cependant, pour de meilleurs performances, le capteur BME680 requière une tension d’alimentation stable. Un régulateur de tension LDO génère donc une tension de 1.8V à partir de la tension pile et permet d’alimenter le cœur du composant. Ces entrées – sorties sont tout de même alimentées par la tension pile pour rester compatible du STM32 au niveau de la communication I2C.

Des condensateurs sont ajoutés au plus près de chaque composants actifs. Il sont appelés couramment capacités de découplage. Ils ont pour rôle de fournir une réserve d’énergie indispensable lors des appels de courants brefs. En effet la consommation d’un composants actifs n’est jamais stable et comportent des « pics ». Sans capacités de découplage ces pics pourraient faire écrouler brièvement et localement la tension d’alimentation du composant et donc perturber son fonctionnement.

Voyant lumineux

Une LED a été ajoutée permettant d’informer l’utilisateur sur des événements. Par exemple, un clignotement bref de la LED peut indiqué le début d’une connexion bluetooth.

La résistance série de la LED définit le courant la traversant et donc son intensité lumineuse. La difficulté ici réside dans le faite que la tension d’alimentation de la LED est directement la tension pile variable entre 2V et 3V. Le calcul de la résistance série doit donc prendre en compte le niveau de tension le plus faible (2V) pour garantir son fonctionnement à ce niveau en faisant attention au courant généré par le niveau de tension le plus fort (3V) pour éviter de détruire la LED.

D’après les éléments de la datasheet de la LED, une résistance de 60.9 ohm implique un courant de 10mA suffisant pour allumer la LED. Avec cette valeur de résistance, un niveau de tension de 3V, implique un courant de 21.9 mA compatible du fonctionnement de la LED (inférieur à 30mA) dans des conditions normales.

Mise en oeuvre du STM32

La mise en œuvre du STM32 est assez simple.

Un oscillateur à quartz de 32.768 kHz est connecté au microcontrôleur afin de générer une horloge interne précise pour la datation des résultats.

Le signal de reset du microcontrôleur est filtré par rapport à l’alimentation (filtre RC). Cela va forcer le microcontrôleur en reset pendant l’établissement des alimentions et permettre un démarrage une fois celles ci parfaitement établie.

Après fabrication de la carte, le microcontrôleur est vierge. Il faut donc le programmer. Ceci est réalisé grâce à un connecteur de programmation donnant accès à certains signaux. Le protocole de programmation utilisé est le « Serial Wire Debug (SWD) ». Ce lien permet également de débugger et d’instrumentaliser le microcontrôleur pendant la phase de conception et validation du logiciel embarqué.

Le connecteur de programmation permet également un accès au lien UART du module bluetooth RN4871 pour d’éventuelles mises au point.

Conception du PCB (circuit imprimé)

Le routage du PCB (circuit imprimé) de la carte est assez simple à condition de bien choisir l’emplacement des composants.

J’ai toujours l’habitude de placer le microcontrôleur au centre de la carte.

Le capteur BME680 est placé en bord de carte et le module bluetooth RN4871 de l’autre coté (comme suggéré par la datasheet du module).

Le routage s’est fait sur seulement 2 couches car la carte n’est pas compliquée. Quelques vias ont été nécessaires pour router tous les signaux.

Tous les composants sont placées sur la couche « TOP ». Le routage des signaux s’est donc fait principalement sur cette couche. L’alimentation a également été routée sur la couche TOP.

Le GND (0V générale de la carte) est routé sur forme d’un plan sur la couche BOTTOM.

4 trous de fixation M2 ont été ajoutés. Leurs pastilles sont connectées au GND.

A la fin du routage, les espaces non utilisés sur la couche TOP ont été remplis par du cuivre non connecté. Cela facilite la fabrication du PCB.

Conclusion

La suite du projet consistera à réaliser le logiciel embarqué. Elle se fera en plusieurs étapes

  • Développement du logiciel embarqué avant fabrication de la carte
  • Fabrication de la carte
  • Validation du logiciel embarqué sur la carte

Notre appareil étant connecté à un smartphone, il faudra également développer l’application (Android dans un premier temps).

Ceci fera l’objet d’un futur article.

Si vous êtes intéressé par ce projet et souhaitez le voir se concrétiser rapidement ou bien vous souhaitez adapter ce projet à vos besoins spécifiques, contactez moi ici.