Par Laurent Labbe
 
J’ai déjà réalisé un moniteur de PM2.5, rechargeable avec un panneau solaire mais il n’était pas adapté à une utilisation en intérieur. J’ai également conçu une version basée sur un ESP32, où j’ai testé différents capteurs et dont les données étaient envoyées par WiFi à Thingspeak, mais il n’était pas portable. L’idée principale de ce projet est de concevoir un appareil le plus compact possible, alimenté par batterie, avec une autonomie de plusieurs semaines et pouvant afficher en permanence le taux de PM2.5 présent dans l’air. Ce moniteur portable peut être placé à l’extérieur, par exemple avec une ventouse collée sur une fenêtre afin que la mesure soit visible de l’intérieur. Evidemment, vous pouvez parfaitement l’utiliser en intérieur.

Design considerations

Le choix du capteur de particules est très important. Dans un précédent projet, j’en ai testé plusieurs types, comme une version d’extérieure : le capteur Sharp GP2Y10. Cependant, si nous souhaitons une conception compacte, seul le capteur Plantower PMS7003 est envisageable. Il dispose d’une interface série pour l’envoi des données mesurées. Lorsque vous commanderez ce capteur, assurez-vous d’acheter également le connecteur correspondant ! Comme ce capteur a besoin de 100 mA sous 5 V (principalement en raison de son mini-ventilateur interne), il ne peut pas fonctionner en continu, les batteries s’épuiseraient en un rien de temps. La tension d’alimentation est fournie par une batterie au lithium, et un convertisseur CC/CC (3,8 V vers 5 V) possédant une réelle mise hors-tension est nécessaire.
 
L’afficheur sélectionné est un LCD alphanumérique monochrome de 2x8. Il consomme moins de 1 mA en affichage permanent. Des afficheurs couleur ou OLED n’auraient pas pu être utilisés en raison de leur forte consommation électrique, ce qui affecterait gravement l’autonomie du projet. Pour une lecture rapide de la mesure des PM2.5, un bargraphe à LED est ajouté. Les six niveaux présents dans le tableau 1 sont affiché au moyen de cinq LEDs avec le niveau le plus élevé signalé par les LEDs rouge et bleue allumées simultanément (indice bordeaux dans le tableau). Toutes les LEDs sont de type basse consommation, par ex. Série Kingbright WP71xx qui ont un courant direct de 2 mA. Une version faible consommation et forte luminosité peut être envisagée si l’équipement est placé en extérieur.

Tableau 1 : Les niveaux IQA expliqués.

 

Un affichage de la température et de l’humidité (optionnel) est prévu à l’aide d’un capteur I²C SHT20/SHT21. Le microprogramme prend également en charge le capteur de température 1-Wire DS1820, mais il n’a pas été testé dans ce projet.
 
Le cœur du projet est un PIC18F2520, accompagné d’un MAX931 pour surveiller la tension de la batterie et d’un LTC4054 pour la recharger.

La consommation électrique globale du détecteur dépend principalement de l’intervalle entre les mesures. Selon la spécification du PMS7003, il doit être mis sous tension pendant au moins 30 s avant que la première mesure fiable puisse être effectuée. Par défaut, l’intervalle est réglé sur 20 mn, mais il pourra être modifié dans le menu. Avec cet intervalle et une batterie de 1000 mAh, ce détecteur peut fonctionner pendant deux semaines sans le recharger. N’importe quelle batterie au lithium, LiPo ou de forme prismatique peut être utilisée, cependant ses dimensions dépendent du boîtier. Pour ce projet, et ayant déjà conçu un boîtier compact, j’ai fait en sorte que la batterie soit la plus grande possible (en volume) dans l’espace restant. J’ai trouvé une batterie de 1100 mAh qui convient parfaitement.

 

Fonctionnalités du moniteur de PM2.5

La mesure du niveau de particules de 2,5 µm est effectuée à intervalles réguliers. Celle-ci peut être ajustée dans le menu entre 10 mn et 60 mn, 20 mn étant un bon compromis entre précision de mesure et consommation électrique. Toutes les heures, le programme calcule la moyenne des dernières mesures conservées dans un tableau. Il existe plusieurs façons de calculer le niveau de qualité de l’air (associé aux PM2.5). Dans ce projet, deux méthodes sont implémentées :
 
  • IQA : moyenne arithmétique sur 24 h
  • IQA nouvelle version : moyenne mobile pondérée sur 12 h (appelée NQI). La mesure la plus récente a un poids plus important que celle faite il y a 11 h.

Par défaut, la méthode NQI est employée.
 
Les LEDs du bargraphe peuvent afficher :
 
  • La mesure la plus récente
  • La moyenne sur une heure
  • L’IQA ou le NIQ

Les LEDs peuvent être désactivées pendant la nuit pour économiser les batteries. Une photorésistance mesure la luminosité ambiante et permute le mode (jour/nuit).
 
Une option intéressante est l’affichage instantané du niveau de PM2.5 en temps réel. Le capteur est actif en permanence et la valeur affichée est actualisée toutes les secondes. Cependant, cette option consomme beaucoup d’énergie et décharge la batterie en peu de temps.
 
Les autres valeurs pouvant être affichées sont :
 
  • La température et l’humidité
  • La tension de la batterie sur 3 chiffres (par exemple "384" signifie 3,84 V)
  • Lorsque la tension de la batterie est faible, les LEDs clignotent, indiquant qu’il faut recharger l’appareil

Un port est prévu pour connecter, en option, une cellule photovoltaïque 5 V pour permettre le rechargement lors d’une utilisation en extérieur.
 
Les paramètres du menu sont enregistrés dans l’EEPROM du microcontrôleur. Toutes les autres valeurs, tableaux et variables sont réinitialisés lorsque l’appareil est mis hors tension ou redémarré.

 

Calcul de l’indice de qualité de l’air

Il existe de nombreuses méthodes pour calculer l’indice de qualité de l’air. Dans ce projet, deux versions sont implémentées. La première est la moyenne sur les dernières 24 h en utilisant la méthode de calcul des États-Unis, des détails sur cette méthode peuvent être trouvés au lien [1]. L’inconvénient de cette méthode est qu’elle utilise une moyenne mobile sur 24 h. Par conséquent, la valeur affichée est influencée par des mesures relativement anciennes. Pour cette raison, la seconde méthode de calcul (NowCast) utilise une moyenne pondérée. La mesure effectuée lors de la dernière heure possède un poids plus important dans le calcul final que celle d’il y a 11 h. C’est aussi une moyenne mobile mais sur 12 h. Elle se nomme NQI (New Quality Index) et elle garde les mêmes limites que la première méthode. Le lien expliquant cette méthode en détail est donné au lien [2]. Mais pour faire simple, la valeur mesurée lors de l’heure précédente possède un poids de 50%, celle de l’heure -2 a un poids de 25%, celle de l’heure -3 a un poids de 12,5%, etc. L’algorithme est discuté dans le lien [3].

 

La partie matérielle

Le schéma de la figure 1 montre les détails de ce moniteur de la qualité de l’air.

Figure 1 : Le schémas électrique du moniteur de PM2.5.

Le convertisseur élévateur CC/CC du capteur PMS7003 est un LT3525ESC6-5 (U6). Il s’agit d’un convertisseur élévateur dit "à coupure réelle" (true shutdown en anglais). La plupart des convertisseurs élévateurs CC/CC ont une fonction d’arrêt qui stoppera simplement la commutation du transistor dans le circuit. Mais la tension de sortie suivra toujours l’entrée à travers la bobine et le circuit consommera toujours de l’énergie. Les circuits à coupure réelle arrêtent réellement le convertisseur et aucun courant ne peut circuler vers la sortie. Le seul vrai problème avec ce circuit intégré est de le souder. Il est vraiment petit, de la crème à braser et une station à air chaud sont recommandées ...

Le régulateur LP2980 3,3 V  (U7) est commandé par U1, un comparateur à hystérésis MAX931. Il éteint le régulateur si la tension de la batterie descend en dessous de 3,2 V et ne peut être réactivé que si celle-ci dépasse 3,8 V. Cette fonction, pas forcément utile en mode normal, est nécessaire lors de l’utilisation d’un panneau solaire pour la recharge. Le MAX931 stoppera également le convertisseur CC/CC via la diode D5 pour éviter les démarrages involontaires lorsque la batterie est faible.
 
La liaison série est partagée entre le connecteur externe J8 (pour le monitoring et le téléchargement) et le PMS7003 (connecté à J1). Le signal TX du microcontrôleur est connecté aux deux connecteurs. Le signal RX est, quant à lui, connecté via une fonction OU logique crée avec les diodes D2 et D12. Comme le microprogramme n’envoie pas de commandes au PMS dans sa version actuelle, la résistance R16 (0 Ω) n’est pas montée.

Pour le capteur SHT20/21, la connexion I²C se fait par émulation logicielle, via RB0 et RB1, sans utiliser l’I²C interne du PIC (qui est utilisé pour l’affichage).
 
L’afficheur LCD utilisé ici est un Eastrising Serial COG 8x2 LCD Module I²C Character Display Il possède une interface I²C et est connecté via U3.
 
Le chargeur de batterie au lithium est un LTC4054 (ou un EUP8054 équivalent, U4). Il peut être alimenté soit via USB (J2) soit via un panneau solaire externe connecté à J4. Le courant est limité à 400 mA par les deux résistances R19 et R20. La LED D4 indique que la batterie est en charge, elle est placée à proximité du connecteur USB. Le connecteur J4 est utilisé pour connecter un panneau solaire de 5 V, qui rechargera la batterie via la diode Schottky D7.

Les cinq LEDs du bargraphe (D8 à D11 et D13) sont contrôlées par le PIC. La résistance de limitation de courant de chaque LED dépend du type de LED utilisé (faible puissance ou non) et de la tension directe de chaque LED de couleur. La LED D1 (rouge) s’allume lorsque le convertisseur CC/CC est actif et donc lorsque le capteur de particules fonctionne.
 
Concernant l’afficheur, les condensateurs C10 et C11 peuvent être compris entre 1 µF et 2,2 µF, avec une tension de 10 V. Le rétroéclairage de l’afficheur n’est pas utilisé (et peut être retiré avant le montage). Il est attaché au circuit imprimé avec du ruban adhésif double face. Il est recommandé d’acheter l’afficheur avec son connecteur dédié.

La luminosité permutant le mode jour/nuit est détectée par une photorésistance (C1) placé sur le panneau avant. Elle est connectée à l’entrée analogique AN0 du microcontrôleur.

Figure 2 : Le circuit imprimé, la batterie et le capteur PMS7003 dans le boitier ouvert

Assemblage du circuit imprimé

The schematic and PCB were designed using Novarm’s DipTrace CAD software, the design files can be downloaded from the Elektor Labs project page. All components except for the LEDs are SMDs. The most difficult part to solder is the DC/DC converter, I used solder paste and a hot air soldering station for this. Given the compactness of the case, it is difficult to mount standard connectors to connect the 2 sensors. It is therefore preferable to solder the wires directly to the circuit. Only the battery and the display use a connector.

There are two solutions for programming the microcontroller. Either connect a PicKit3 to J7, or via the serial connector shared with the PMS7003 sensor. In this case, the microcontroller must be programmed with a bootloader before soldering and the PMS7003 must be disconnected each time the uC is reprogrammed. Personally, I always use a bootloader called Tiny bootloader, which can be found here. It is necessary that the version embedded in the PIC has the right value for the watchdog (here 256 ms) and so the source must be recompiled with it. The .asm and .hex of this bootloader for the PIC18F2520 is also part of the software download on the Elektor Labs project page.

Figure 3 : Le moniteur de PM2.5 dans son boitier imprimé vu de face.

Le microprogramme

Le microprogramme est développé en C, avec une ancienne version du compilateur MikroC. Il peut être porté sur la nouvelle version, MikroC Pro, mais je n’ai pas essayé. Les fichiers sources et HEX peuvent être téléchargés à partir de la page Elektor Labs de ce projet. Le microprogramme est assez simple :

  • Initialisation
  • Une boucle infinie scrute l’état des boutons poussoirs
  • Affichage des différents écrans et du niveau des LED (en fonction de la lecture de la luminosité pour la commutation jour/nuit)
  • Toutes les xx minutes, le convertisseur 5 V CC/CC du capteur de particules est activé. 30 s plus tard, la mesure des PM2.5 est lue et le convertisseur CC/CC est désactivé.
  • Toutes les heures, la valeur moyenne est calculée
  • Enregistrement de cette valeur dans un tableau à 24 positions (pour 24 h)
  • Calcul de l’IQA (moyenne mobile sur 24 h) ou NQI (moyenne pondérée mobile sur 12 h)

La fonction calculation_aqi() calcule la valeur de l’indice de qualité de l’air, suivant le principe de la moyenne simple sur 24 h. Un tableau contient les 24 dernières valeurs et celles-ci sont simplement moyennées. La fonction calculation_nqi() calcule la valeur pondérée de l’indice de qualité de l’air. La formule est expliquée dans la lien [3].

La conversion de ces valeurs en indices (0-500) est effectuée par la fonction conversion_aqi(), selon la formule indiquée dans le document pour les USA.

La boucle principale du microprogramme se termine par une instruction «sleep». Le processeur se réveille lorsque le chien de garde est de nouveau déclenché, l’intervalle de surveillance doit être réglé à 256 ms (dans le cas du PIC18F2520, cela doit être fait lors de la programmation du microcontrôleur). Cet intervalle est suffisamment court pour ne pas manquer les pressions sur les touches. Un temps plus long serait préférable en ce qui concerne la consommation d’énergie, mais il serait alors possible de manquer une pression sur les boutons. Le microprogramme fonctionne également sans le capteur de température/humidité attaché, mais bien sûr, l’afficheur affichera alors des valeurs invalides pour la température et l’humidité.

 

Le boitier

Le boîtier a été conçu dans ThinkerCad et imprimé sur une imprimante 3D. C’est assez simple, avec des ouvertures pour le capteur SHT sur le dessus ainsi que pour le capteur PMS7003, une pour l’entrée d’air, une pour la sortie. La version la plus récente du boitier peut être téléchargée. Un support pour cellule solaire a également été développé. Il est fixé au boitier à l’aide de petits crochets.
 
Cet appareil compact et alimenté par batterie fonctionne parfaitement, mais cette conception peut toujours être améliorée. Par exemple, le schéma et le PCB possède un connecteur (J6) pour un LCD graphique de faible puissance 128 x 64 pixels, mais cela n’a pas été testé et n’est pas pris en charge dans la version actuelle du microprogramme. J6 et les condensateurs adjacents dans le schéma peuvent être omis.
 
Malheureusement, la pollution de l’air reste un problème d’avenir, pas seulement dans les grandes villes d’Extrême-Orient. Il est bon d’avoir un moniteur de PM2.5 à portée de main pour surveiller la qualité de l’air, mais le plus inquiétant c’est d’en avoir besoin. 

(191215-01)


Avez-vous des questions ou des commentaires ?
Vous avez des questions ou des commentaires sur son article? Envoyez un courrier électronique à l’auteur à laurent.elektor@gmail.com ou contactez Elektor à editor@elektor.com.