Analyseur d'air ambiant : Différence entre versions

Ligne 163 : Ligne 163 :
 
====='''Les capteurs et l'écran'''=====
 
====='''Les capteurs et l'écran'''=====
  
# Emboîter la carte Shield sur l'Arduino (photo 1 ci-contre)
+
#Emboîter la carte Shield sur l'Arduino (photo 1 ci-contre)
# Relier les capteurs et l'écran (photo 2 ci-contre étage VigiAir)
+
#Relier les capteurs et l'écran (photo 2 ci-contre étage VigiAir)
  
 
<br />
 
<br />
Ligne 181 : Ligne 181 :
 
|D2
 
|D2
 
|}
 
|}
<br /></translate>
+
<br />
 +
{| class="wikitable"
 +
|+
 +
!Ecran NEXTION
 +
!Arduino
 +
|-
 +
| +5
 +
| +5
 +
|-
 +
|GND
 +
|GND
 +
|-
 +
|RX
 +
|TX
 +
|-
 +
|TX
 +
|RX
 +
|}</translate>
 
|Step_Picture_00=Analyseur_d_air_ambiant_Arduino-base_shield.png
 
|Step_Picture_00=Analyseur_d_air_ambiant_Arduino-base_shield.png
 
|Step_Picture_00_annotation={"version":"2.4.6","objects":[{"type":"image","version":"2.4.6","originX":"left","originY":"top","left":0,"top":0,"width":783,"height":640,"fill":"rgb(0,0,0)","stroke":null,"strokeWidth":0,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":0.77,"scaleY":0.77,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"crossOrigin":"","cropX":0,"cropY":0,"src":"https://wikifab.org/images/f/f4/Analyseur_d_air_ambiant_Arduino-base_shield.png","filters":[]},{"type":"wfnumberedbullet","version":"2.4.6","originX":"left","originY":"top","left":24,"top":427,"width":25,"height":25,"fill":"rgb(0,0,0)","stroke":"#FF0000","strokeWidth":0,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"objects":[{"type":"circle","version":"2.4.6","originX":"center","originY":"center","left":0,"top":0,"width":24,"height":24,"fill":"#FF0000","stroke":null,"strokeWidth":1,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"radius":12,"startAngle":0,"endAngle":6.283185307179586},{"type":"text","version":"2.4.6","originX":"center","originY":"center","left":0,"top":0,"width":7.79,"height":15.82,"fill":"rgba(255,255,255,255)","stroke":null,"strokeWidth":1,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"text":"1","fontSize":14,"fontWeight":"normal","fontFamily":"arial","fontStyle":"normal","lineHeight":1.16,"underline":false,"overline":false,"linethrough":false,"textAlign":"left","textBackgroundColor":"","charSpacing":0,"styles":{} }],"number":1}],"height":490,"width":600}
 
|Step_Picture_00_annotation={"version":"2.4.6","objects":[{"type":"image","version":"2.4.6","originX":"left","originY":"top","left":0,"top":0,"width":783,"height":640,"fill":"rgb(0,0,0)","stroke":null,"strokeWidth":0,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":0.77,"scaleY":0.77,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"crossOrigin":"","cropX":0,"cropY":0,"src":"https://wikifab.org/images/f/f4/Analyseur_d_air_ambiant_Arduino-base_shield.png","filters":[]},{"type":"wfnumberedbullet","version":"2.4.6","originX":"left","originY":"top","left":24,"top":427,"width":25,"height":25,"fill":"rgb(0,0,0)","stroke":"#FF0000","strokeWidth":0,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"objects":[{"type":"circle","version":"2.4.6","originX":"center","originY":"center","left":0,"top":0,"width":24,"height":24,"fill":"#FF0000","stroke":null,"strokeWidth":1,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"radius":12,"startAngle":0,"endAngle":6.283185307179586},{"type":"text","version":"2.4.6","originX":"center","originY":"center","left":0,"top":0,"width":7.79,"height":15.82,"fill":"rgba(255,255,255,255)","stroke":null,"strokeWidth":1,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"text":"1","fontSize":14,"fontWeight":"normal","fontFamily":"arial","fontStyle":"normal","lineHeight":1.16,"underline":false,"overline":false,"linethrough":false,"textAlign":"left","textBackgroundColor":"","charSpacing":0,"styles":{} }],"number":1}],"height":490,"width":600}

Version du 7 février 2022 à 17:44

Auteur avatarFDW | Dernière modification 13/02/2022 par FDW

Le projet VigiAir à pour but d’analyser l’air ambiant d’une maison pour connaitre son taux de pollution, et ainsi, nous permettre de savoir précisément à quel moment il devient nécessaire d'aérer une pièce.

Introduction

Ce projet est réalisé dans le cadre de la formation hybride à la fabrication numérique et au prototypage rapide, effectuée à l'école des Mines-Télécom d'Alès.

Au cours de cette formation, nous devons réaliser une Bentolux et choisir un dernier étage. Ce tutoriel décrit le troisième étage que j'ai choisi de fabriquer. Il s'agit d'un analyseur d'air ambiant que j'ai nommé VigiAir.

VigiAir va analyser le taux des principaux facteurs qui influencent la qualité de l’air de nos habitations : le taux de pollution, le taux de poussières, mais également le taux d’humidité et la température.

- Avec le capteur Grove-Air quality sensor V1.3 : analyse du taux de CO (monoxyde de carbone), du taux de formaldéhyde (polluant dégagé par nos produits ménagés, la peinture, meubles et autres objets de décoration)  

- Avec le capteur Grove- Dust sensor : analyse des particules fines (diesel, fumés, poussières diverses) responsables des maladies respiratoires et cardiovasculaires.

- Avec le capteur Grove Temp & Humi Sensor Pro : la température et le taux d'humidité qui jouent un rôle important sur le développement des bactéries, virus, allergies, acariens.


Ces capteurs fiables, simples d'utilisation et à faible coût, vont nous permettre de fabriquer un analyseur d'air ambiant très complet.

Un Arduino Uno est utilisé pour piloter l'ensemble, les informations seront affichées sur un écran tactile Nextion.

D'autres composants imposés pour la Bentolux sont utilisés : un potentiomètre classique, un anneau 12 leds (NeoPixel Ring Adafruit) et un afficheur OLED 0,96'' I2C TF052

Concernant le design de l'objet, il est réalisé ici dans le cadre d'une Bentolux, qui nous permet d'expérimenter l'impression 3D, la découpe laser. Mais chacun peut choisir le design qu'il souhaite, il est possible d'opter pour un design bien plus réduit.


Matériaux

Outils

Étape 1 - Liste du matériel


Matériel Liens Prix
Capteur d'analyse de qualité d'air Grove – Air quality sensor 8,70€
Capteur de poussière Grove - Dust Sensor 13,25€
Capteur température- humidité Grove - Temperature&Humidity Sensor Pro(DHT22) 11,40€
Interface Arduino-capteurs Grove Base Shield 4,80€
Ecran Nextion NX4832K035 34,85€
Câble 4 contacts Câble Grove 4 contacts 3,20
Jumper Câble Jumper Mâle/Femelle 2,90€
Panneau de bois Panneau MDF 3mm 4,32€

Étape 2 - Présentation des composants

Grove – Air quality sensor V1.3

Ce capteur est compatible 5v et 3,3v, il est relié sur entrée analogique et va donner une valeur entre 0 et 700. La librairie constructeur interprète la mesure du capteur et nous renvoie 4 états de 0 à 3 :

Etat 0 : Mesure au dessus de 700  « Pollution alert »

Etat 1 : Mesure au dessus de 400  « High pollution »

Etat 2 : Mesure au dessus de 200  « Low pollution»

Etat 3 : Mesure en dessous de 200  « Air fresh»

S’il n’est pas possible d’afficher dans le détail les mesures pour chaque gaz, ce capteur Grove offre des données qualitatives en indiquant le niveau de qualité d’air. Et ainsi nous permet de savoir le degré de pollution global dégagé par les principaux composants de notre intérieur.


Grove - Dust Sensor

Ce capteur permet de mesurer la quantité de particules de poussière de plus de 1 µm présentes dans l'air. Le signal de sortie est à modulation de largeur d'impulsion. Il fonctionne en 5V, il est relié sur une entrée numérique. Le taux de particules de poussière ou PM (acronyme de Particulate Matter en anglais) dans l'air est mesuré en comptant le temps du niveau bas de faible impulsion (temps LPO) dans une unité de temps donnée. Le temps LPO est proportionnel à la concentration de poussière. Il va nous donner une mesure entre 0 et 8000 pcs/0.01cf (1/100 de pied cube). Sachant qu'un air correct se situe en dessous de 1000, et que lors d'un pic de pollution à Paris le taux peut monter jusqu'à 7000.

J'ai donc choisi pour mon programme de découper les ranges comme suit :

Range 1 : Air correct entre 0 et 1000

Range 2 : Aérer pièce entre 1000 et 2000

Range 3 : Alerte pollution au dessus de 2000

J'ai volontairement paramétrer les ranges pour que le capteur soit sensible. Cependant, les ranges peuvent être modifiés dans le programme pour être adaptés à chaque situation.


Grove Temp & Humi Sensor Pro

Il fonctionne en 5 V. Il est relié à une entrée numérique. Ce capteur va mesurer la température et le taux d’humidité avec une précision dans sa version pro de ±0.5°C pour la température, et ±2% pour l’humidité. Deux données importantes pour la qualité de vie l’intérieur. La température idéale reconnue par tous les spécialistes se situe pour une pièce à vivre entre 20°C et 21°C. Le taux d'humidité optimal se situe entre 40% et 50%.


Grove Base Shield

Le module Grove Base Shield de Seeedstudio est une carte d'interface permettant de raccorder facilement, rapidement et sans soudure les capteurs et les actionneurs Grove de Seeedstudio sur une carte compatible Arduino.

Ce module vient s'enficher sur l'Arduino et ajoute des fiches supplémentaires qui vont permettre de connecter les capteurs. On conserve l'ensemble des input/output de l'Arduino qui sont répliquées sur le module. Le gros avantage également et d'avoir pour chaque fiche un + et un gnd qui d'habitude manquent rapidement.


Étape 3 - Affichage des informations

Nextion NX4832K035

Cet écran à faible coût permet d’afficher tout type d’interface. Il communique avec l’Arduino par le port série. Un logiciel propriétaire (Nextion Editor), très facile d’utilisation, est fourni avec l’écran pour concevoir l’interface et la transférer sur l’écran par l’intermédiaire d’une carte SD.

J'ai conçu 2 modes pour l'affichage des informations : (cf.photo ci-contre)

1- Affichage du taux par barre graphe : avec changement de texte et de couleur en cas de taux élevé (on passe de "Air correct" en vert à "Aérer pièce" en rouge)

2- Par jauge : la jauge va indiquer le taux et montrer directement l'état de la pièce (air correct, aérer pièce, ou alerte pollution)

L' écran est tactile, on va passer simplement d'un mode d'affichage à l'autre en navigant avec les flèches au bas de l'écran.

J'ai dessiné l'interface sur Inkscape, mais on peut choisir d'implémenter tout type d'image. Tout se paramètre dans Nextion Editor qui est très facile à prendre en main. Les tutos ne manque pas.


Nextion Editor

Nextion Editor est le logiciel propriétaire gratuit de Nextion qui sert à exploiter l'écran. C'est un .exe à télécharger sur le site de Nextion et à installer.

Il permet de construire l'interface qui apparaitra sur l'écran tactile. On paramètre les variables et les boutons un peu comme à l'époque avec Visual Basic.

Pour les personnes intéressés, vous le trouverez sur le site de Nextion ici avec toutes les explications ici. Il peut être utile pour de nombreux projet.

Pour les autres, vous trouverez dans ce tuto, un fichier nommé InterfaceNextion.tft , Il suffit de le copier sur une carte SD, d'introduire la carte SD dans le lecteur de l'écran, d'allumer l'écran, d'attendre que le fichier se transfère dans l'écran, vous allez voir défiler à l'écran des infos, puis lorsque le message vous indique que le fichier est téléchargé à 100%, il faut éteindre l'écran, enlever la carte sd, rallumer l'écran et le tour est joué. Vous avez une super interface VigiAir.


Étape 4 - Montage

Le montage de VigiAir est particulièrement simple grâce aux capteurs qui possèdent un connecteur à branché directement sur la carte.

Les capteurs et l'écran
  1. Emboîter la carte Shield sur l'Arduino (photo 1 ci-contre)
  2. Relier les capteurs et l'écran (photo 2 ci-contre étage VigiAir)


Capteurs Bornes
Grove – Air quality sensor V1.3 A0
Grove - Dust Sensor D8
Grove Temp & Humi Sensor Pro D2


Ecran NEXTION Arduino
+5 +5
GND GND
RX TX
TX RX


Commentaires

Draft