### 4.3.8 Détection de poussière PM2.5 #### 4.3.8.1 Vue d'ensemble ![Img](./media/top1.png) Dans la détection de poussière PM2.5, un compteur de poussière laser est utilisé pour mesurer la concentration de PM2.5 dans l'air. Il peut surveiller en continu la concentration de poussière tout en collectant les particules et en analysant leurs composants. Les particules dont le diamètre aérodynamique est inférieur à 2,5 micromètres sont ce que nous appelons PM2.5. Si la taille des particules diminue, le taux d'absorption par le système respiratoire augmentera. Dans ce projet, nous allons construire un système de détection de PM2.5 avec une carte micro:bit, un capteur de poussière PM2.5, un affichage OLED, un module d'atomisation et le haut-parleur embarqué. Le capteur de poussière PM2.5 détecte les particules PM2.5 dans l'air, et l'OLED affiche la valeur PM2.5 détectée en temps réel. Lorsque la valeur atteint un seuil, le haut-parleur déclenche une alarme, et le module d'atomisation pulvérise une brume d'eau pour réduire la poussière. ![Img](./media/bottom1.png) #### 4.3.8.2 Connaissances sur les composants ![Img](./media/2top.png) **Capteur de poussière PM2.5** ![Img](./media/PM2.5.png) Le capteur de poussière PM2.5 est équipé d'une puce GP2Y1014AU0F pour détecter efficacement des particules extrêmement fines d'un diamètre supérieur à 0,8μm, comme la fumée de cigarette. Il est également équipé d'une LED infrarouge et d'un phototransistor disposés en diagonale pour détecter la lumière réfléchie par la poussière dans l'air. Il présente une très faible consommation d'énergie (maximum 20mA, typique 11mA), et sa sortie de tension analogique varie linéairement avec la densité de poussière, il est donc largement utilisé dans les purificateurs d'air, les moniteurs d'air conditionné, les détecteurs PM2.5, etc. ⚠️ **Remarque : le capteur de poussière PM2.5 avec la puce GP2Y1014AU0F nécessite au moins 30 secondes à 2 minutes de préchauffage sous tension pour obtenir des lectures relativement précises.** **Paramètres :** - Tension d'alimentation : DC 5 ~ 7V - Courant de fonctionnement : 20mA(Max) - Valeur minimale de détection des particules : 0.8μm - Sensibilité : 0.5V/(0.1mg/m³) - Tension en air propre : 0.9V (typique) - Température de fonctionnement : -10℃~65℃ ![Img](./media/2bottom.png) #### 4.3.8.3 Composants requis | ![Img](./media/microbitV2.png)|![Img](./media/ExpansionBoard.png)|![Img](./media/Atomization1.png)| | :--: | :--: | :--: | | carte principale micro:bit V2 ×1 | carte d'extension micro:bit ×1 |module d'atomisation ×1| |![Img](./media/PM2.5-1.png)|![Img](./media/OLED.png)| ![Img](./media/AAbattery.png)| |capteur de poussière PM2.5 ×1|afficheur OLED ×1 |piles AA(**préparées par vos soins**) ×6| |![Img](./media/batterycase.png) |![Img](./media/4pin.png)|![Img](./media/3pin.png)| |porte-piles ×1|câble 4 broches ×2 |câble 3 broches ×1 | |![Img](./media/usb.png) | | | | câble micro USB ×1 | | | #### 4.3.8.4 Schéma de câblage ⚠️ **Lors du câblage, veuillez faire attention à la couleur des fils.** | PM2.5 dust sensor | wire color | micro:bit shield pin | micro:bit board pin | | :---------------: | :--------: | :------------------: | :-----------------: | | GND | black | G | G | | VCC | red | V2 | V | | LED | blue | 1 | P1 | | OUT | green | 2 | P2 | | OLED display | wire color | micro:bit shield pin | micro:bit board pin | | :----------: | :--------: | :------------------: | :-----------------: | | GND | black | G | G | | VCC | red | V2 | V | | SDA | blue | 20 | P20 | | SCL | green | 19 | P19 | | Atomization module | wire color | micro:bit shield pin | micro:bit board pin | | :----------------: | :--------: | :------------------: | :-----------------: | | G | black | G | G | | V | red | V2 | V | | S | yellow | 16 | P16 | ![Img](./media/couj8.png) #### 4.3.8.5 Flux du code ![Img](./media/flow-chart-08.png) #### 4.3.8.6 Code de test ⚠️ **Astuce 1 : Avant de télécharger le code sur la carte Microbit, veuillez importer le fichier de bibliothèque “oled_ssd1306\.py” en vous référant à ** “[Import Library on MU](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” . ![Img](./media/WPSA1.png) ⚠️ **Astuce 2 : Le seuil 500 dans la condition if() peut être modifié en fonction de la situation réelle.** **Code complet :** ```Python ''' Theme: PM2.5 dust detection Function: OLED displays the amount of PM2.5 dust and the PM2.5 dust sensor controls the micro:bit 5×5 dot matrix, speaker and atomization module Compiling IDE: MU 1.2.0 Author: https://docs.keyestudio.com ''' # importer les bibliothèques associées from microbit import * from oled_ssd1306 import * import music import time # initialiser et effacer l'oled initialize() clear_oled() # Configuration des broches led_Pin = pin1 out_Pin = pin2 pin16.write_digital(1) # définir la broche P16 à l'état haut # Paramètres de temps delayTime = 280 delayTime2 = 40 offTime = 9680 def microsecond_delay(us): """Precise microsecond delay""" start = time.ticks_us() while time.ticks_diff(time.ticks_us(), start) < us: pass while True: # Séquence de mesure led_Pin.write_digital(0) # LED ÉTEINTE microsecond_delay(delayTime) # 280μs dustVal = out_Pin.read_analog() # Lire le capteur microsecond_delay(delayTime2) # 40μs led_Pin.write_digital(1) # LED ALLUMÉE microsecond_delay(offTime) # 9680μs # Calcul et affichage if dustVal > 36.455: # Formule de calcul exacte voltage = dustVal / 1024.0 pm25 = (voltage - 0.0356) * 120000 * 0.035 # OLED affiche les informations détaillées add_text(0, 0, "PM2.5 dust: ") # Afficher la valeur de PM2.5 à la position correspondante de l'OLED add_text(0, 2, str(round(pm25)) + " ug/m3") # Afficher la valeur de PM2.5 à la position correspondante de l'OLED # Indication de la qualité if pm25 > 500 : # Valeur PM2.5 > 500 display.show(Image.SAD) # la matrice LED affiche un motif triste music.play("E5:4") # le haut-parleur joue la note E5 sleep(1000) pin16.write_digital(0) # définir la broche P16 à l'état bas sleep(200) pin16.write_digital(1) # définir la broche P16 à l'état haut sleep(3000) pin16.write_digital(0) # définir la broche P16 à l'état bas sleep(200) pin16.write_digital(1) # définir la broche P16 à l'état haut sleep(1000) else: # ou display.show(Image.HAPPY) # la matrice LED affiche un motif heureux music.reset() # aucun son pin16.write_digital(1) # définir la broche P16 à l'état haut else: print("Low value:", dustVal) display.show(Image.NO) # délai 0.2s sleep(200) clear_oled() # effacer l'OLED ``` ![Img](./media/line1.png) **Brève explication :** ① Importer les bibliothèques microbit, oled_ssd1306, music et time. ```Python from microbit import * from oled_ssd1306 import * import music import time ``` ② Initialiser les pixels de l'OLED, effacer l'OLED. ```Python initialize() clear_oled() ``` ③ Initialiser les broches du capteur de poussière PM2.5. ```Python led_Pin = pin1 out_Pin = pin2 ``` ④ Connecter le module d'atomisation à la broche P16, et le mettre hors tension initialement. ```Python pin16.write_digital(1) ``` ⑤ Définir la valeur initiale des variables temporelles. ```Python delayTime = 280 delayTime2 = 40 offTime = 9680 ``` ⑥ Définir une sous-fonction de délai en microsecondes. ```Python def microsecond_delay(us): """Precise microsecond delay""" start = time.ticks_us() while time.ticks_diff(time.ticks_us(), start) < us: pass ``` ⑦ Définir le contrôle du timing de mesure du capteur de poussière PM2.5, utilisé principalement pour détecter la concentration de poussière dans l'air. ```Python led_Pin.write_digital(0) # LED ÉTEINTE microsecond_delay(delayTime) # 280μs dustVal = out_Pin.read_analog() # Lire le capteur microsecond_delay(delayTime2) # 40μs led_Pin.write_digital(1) # LED ALLUMÉE microsecond_delay(offTime) # 9680μs ``` ⑧ Instruction de jugement : if()...else... Lorsque la valeur analogique des particules de poussière PM2.5 dépasse 36.455, sa valeur de concentration peut être calculée et affichée sur l'OLED. Sinon, le moniteur série affiche les valeurs analogiques de poussière correspondantes. ```Python if dustVal > 36.455: # The exact same calculation formula voltage = dustVal / 1024.0 pm25 = (voltage - 0.0356) * 120000 * 0.035 # OLED displays detailed information add_text(0, 0, "PM2.5 dust: ") # Display the value of PM2.5 in the corresponding position of OLED add_text(0, 2, str(round(pm25)) + " ug/m3") # Display the value of PM2.5 in the corresponding position of OLED else: print("Low value:", dustVal) display.show(Image.NO) ``` ⑨ Instruction de jugement : if()...else... Lorsque la concentration détectée de particules de poussière PM2.5 dépasse 500ug/m³, la matrice 5×5 LED affiche ![Img](./media/ab2.png), et le haut-parleur déclenche l'alarme. Après 1 seconde, le module d'atomisation pulvérise une brume d'eau. Sinon, la matrice 5×5 LED affiche ![Img](./media/ab3.png), le haut-parleur ne sonne pas, et le module d'atomisation ne fonctionne pas. ```Python if pm25 > 500 : # PM2.5 value > 500 display.show(Image.SAD) # LED matrix displays a sad pattern music.play("E5:4") # speaker plays E5 tone sleep(1000) pin16.write_digital(0) # set P16 pin to low level sleep(200) pin16.write_digital(1) # set P16 pin to high level sleep(3000) pin16.write_digital(0) # set P16 pin to low level sleep(200) pin16.write_digital(1) # set P16 pin to high level sleep(1000) else: # or display.show(Image.HAPPY) # LED matrix displays a happy pattern music.reset() # no tone pin16.write_digital(1) # set P16 pin to high level ``` #### 4.3.8.7 Résultat du test ![Img](./media/4top.png) Après le câblage et l'alimentation via le câble micro USB, connectez une alimentation externe (6 piles AA) pour garantir une alimentation suffisante, puis cliquez sur “Flash” pour télécharger le code sur la carte micro:bit. ![Img](./media/A130.png) Après avoir téléchargé le code de test, appuyez sur le bouton reset au dos de la micro:bit. ![Img](./media/A455.png) Balayez le sol à l'intérieur / allumez des allumettes / brûlez une petite quantité de papier en toute sécurité pour produire des particules PM2.5 évidentes, elles seront détectées par le capteur de poussière PM2.5 et leur concentration sera affichée en temps réel sur l'OLED. Lorsque la concentration détectée de particules de poussière PM2.5 dépasse 500ug/m³, la matrice 5×5 LED affiche ![Img](./media/ab2.png), et le haut-parleur déclenche l'alarme. Après 1 seconde, le module d'atomisation pulvérise une brume d'eau. Sinon, la matrice 5×5 LED affiche ![Img](./media/ab3.png), le haut-parleur ne sonne pas, et le module d'atomisation ne fonctionne pas. | Valeurs détectées sur l'OLED | Qualité de l'air | | :--------------------------: | :--------------: | | 0-75 | Excellent | | 75-150 | Très bon | | 150-300 | Bon | | 300-1050 | Normal | | 1050-3000 | Mauvais | | 3000 + | Très mauvais | ![Img](./media/dongtu-8.gif) ⚠️ **Remarque : Les blocs de construction dans l'expérience ne sont pas inclus dans ce kit.** (**Astuce :** Si aucun résultat n'est observé, veuillez appuyer sur le bouton reset de la carte micro:bit.) ![Img](./media/4bottom.png)