- Composants requis
- Capteur Sharp GP2Y1014AU0F
- Module d'affichage OLED
- Schéma
- Construire le circuit sur Perf Board
- Explication du code pour l'analyseur de la qualité de l'air
- Test de l'interface du capteur Sharp GP2Y1014AU0F avec Arduino
La pollution de l'air est un problème majeur dans de nombreuses villes et l'indice de qualité de l'air s'aggrave chaque jour. Selon le rapport de l'Organisation mondiale de la santé, plus de personnes sont tuées prématurément par les effets de particules dangereuses présentées dans l'air que par des accidents de voiture. Selon l'Agence de protection de l'environnement (EPA), l'air intérieur peut être 2 à 5 fois plus toxique que l'air extérieur. Nous construisons donc ici un projet de surveillance de la qualité de l'air en mesurant la densité des particules de poussière dans l'air.
Donc, dans la continuité de nos projets précédents tels que le détecteur de GPL, le détecteur de fumée et le moniteur de qualité de l'air, nous allons ici interfacer le capteur Sharp GP2Y1014AU0F avec Arduino Nano pour mesurer la densité de poussière dans l'air. Outre le capteur de poussière et Arduino Nano, un écran OLED est également utilisé pour afficher les valeurs mesurées. Le capteur de poussière GP2Y1014AU0F de Sharp est très efficace pour détecter les particules très fines comme la fumée de cigarette. Il est conçu pour être utilisé dans les purificateurs d'air et les climatiseurs.
Composants requis
- Arduino Nano
- Capteur Sharp GP2Y1014AU0F
- Module d'affichage OLED SPI 0,96 '
- Fils de cavalier
- Condensateur 220 µf
- Résistance 150 Ω
Capteur Sharp GP2Y1014AU0F
Le GP2Y1014AU0F de Sharp est un minuscule capteur optique de qualité de l'air / de poussière optique à sortie analogique à six broches conçu pour détecter les particules de poussière dans l'air. Il fonctionne sur le principe de la diffusion laser. À l'intérieur du module de capteur, une diode émettrice infrarouge et un capteur photoélectrique sont disposés en diagonale près du trou d'entrée d'air, comme indiqué dans l'image ci-dessous:
Lorsque de l'air contenant des particules de poussière entre dans la chambre du capteur, les particules de poussière diffusent la lumière LED IR vers le photo-détecteur. L'intensité de la lumière diffusée dépend des particules de poussière. Plus il y a de particules de poussière dans l'air, plus l'intensité de la lumière est grande. La tension de sortie à la broche V OUT du capteur change en fonction de l'intensité de la lumière diffusée.
Brochage du capteur GP2Y1014AU0F:
Comme mentionné précédemment, le capteur GP2Y1014AU0F est livré avec un connecteur à 6 broches. La figure et le tableau ci-dessous montrent les affectations des broches pour GP2Y1014AU0F:
S. NO. |
Nom de la broche |
Description des broches |
1 |
V-LED |
Broche Vcc LED. Connectez-vous à 5V via une résistance de 150Ω |
2 |
LED-GND |
Broche de masse LED. Connectez-vous à GND |
3 |
LED |
Utilisé pour activer / désactiver la LED. Connectez-vous à n'importe quelle broche numérique d'Arduino |
4 |
S-GND |
Broche de masse du capteur. Connectez-vous à GND d'Arduino |
5 |
V OUT |
Broche de sortie analogique du capteur. Connectez-vous à n'importe quelle broche analogique |
6 |
V CC |
Broche d'alimentation positive. Connectez-vous à 5V d'Arduino |
Spécifications du capteur GP2Y1014AU0F:
- Faible consommation de courant: 20mA max
- Tension de fonctionnement typique: 4,5 V à 5,5 V
- Taille minimale de la poussière détectable: 0,5 µm
- Plage de détection de la densité de la poussière: jusqu'à 580 ug / m 3
- Temps de détection: moins de 1 seconde
- Dimensions: 1,81 x 1,18 x 0,69 '' (46,0 x 30,0 x 17,6 mm)
Module d'affichage OLED
OLED (Organic Light-Emitting Diodes) est une technologie auto-émettrice de lumière, construite en plaçant une série de couches minces organiques entre deux conducteurs. Une lumière vive est produite lorsqu'un courant électrique est appliqué à ces films. Les OLED utilisent la même technologie que les téléviseurs, mais ont moins de pixels que dans la plupart de nos téléviseurs.
Pour ce projet, nous utilisons un écran OLED Monochrome 7 broches SSD1306 0,96 ”. Il peut fonctionner sur trois protocoles de communication différents: le mode SPI 3 Wire, le mode SPI quatre fils et le mode I2C. Les broches et ses fonctions sont expliquées dans le tableau ci-dessous:
Nous avons déjà couvert OLED et ses types en détails dans l'article précédent.
Nom de la broche |
Autres noms |
La description |
Gnd |
Sol |
Broche de masse du module |
Vdd |
Vcc, 5 V |
Broche d'alimentation (3-5V tolérable) |
SCK |
D0, SCL, CLK |
Agit comme la broche de l'horloge. Utilisé pour I2C et SPI |
SDA |
D1, MOSI |
Broche de données du module. Utilisé pour IIC et SPI |
RES |
RST, RÉINITIALISER |
Réinitialise le module (utile pendant SPI) |
DC |
A0 |
Broche de commande de données. Utilisé pour le protocole SPI |
CS |
Sélection de puce |
Utile lorsque plus d'un module est utilisé sous le protocole SPI |
Spécifications OLED:
- Pilote OLED IC: SSD1306
- Résolution: 128 x 64
- Angle visuel:> 160 °
- Tension d'entrée: 3,3 V ~ 6 V
- Couleur du pixel: bleu
- Température de fonctionnement: -30 ° C ~ 70 ° C
En savoir plus sur OLED et son interface avec différents microcontrôleurs en suivant le lien.
Schéma
Le schéma de circuit pour l' interfaçage du capteur Sharp GP2Y1014AU0F avec Arduino est donné ci-dessous:
Le circuit est très simple car nous ne connectons que le capteur GP2Y10 et le module d'affichage OLED avec Arduino Nano. Le capteur GP2Y10 et le module d'affichage OLED sont tous deux alimentés par + 5V et GND. La broche V0 est connectée à la broche A5 d'Arduino Nano. La broche LED du capteur est connectée à la broche numérique 12 de l'Arduino. Étant donné que le module d'affichage OLED utilise la communication SPI, nous avons établi une communication SPI entre le module OLED et Arduino Nano. Les connexions sont indiquées dans le tableau ci-dessous:
S. Non |
Broche du module OLED |
Broche Arduino |
1 |
GND |
Sol |
2 |
VCC |
5V |
3 |
D0 |
dix |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
sept |
CS |
12 |
S. Non |
Broche du capteur |
Broche Arduino |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
LED |
sept |
5 |
LED-GND |
GND |
6 |
V-LED |
Résistance 5V à 150Ω |
Construire le circuit sur Perf Board
Après avoir soudé tous les composants sur la carte de performance, cela ressemblera à quelque chose comme ci-dessous. Mais il peut également être construit sur une maquette. J'ai soudé le capteur GP2Y1014 sur la même carte que j'ai utilisée pour interfacer le capteur SDS011. Lors du soudage, assurez-vous que vos fils de soudure doivent être suffisamment éloignés les uns des autres.
Explication du code pour l'analyseur de la qualité de l'air
Le code complet de ce projet est donné à la fin du document. Nous expliquons ici certaines parties importantes du code.
Le code utilise le Adafruit_GFX , et Adafruit_SSD1306 bibliothèques. Ces bibliothèques peuvent être téléchargées à partir du gestionnaire de bibliothèque dans l'IDE Arduino et l'installer à partir de là. Pour cela, ouvrez l'IDE Arduino et accédez à Sketch <Inclure la bibliothèque <Gérer les bibliothèques . Recherchez maintenant Adafruit GFX et installez la bibliothèque Adafruit GFX d'Adafruit.
De même, installez les bibliothèques Adafruit SSD1306 d'Adafruit.
Après avoir installé les bibliothèques sur Arduino IDE, démarrez le code en incluant les fichiers de bibliothèques nécessaires. Le capteur de poussière ne nécessite aucune bibliothèque car nous lisons les valeurs de tension directement à partir de la broche analogique d'Arduino.
#comprendre
Ensuite, définissez la largeur et la hauteur OLED. Dans ce projet, nous utilisons un écran OLED SPI 128 × 64. Vous pouvez modifier le SCREEN_WIDTH et screen_height des variables en fonction de votre écran.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Définissez ensuite les broches de communication SPI sur lesquelles l'écran OLED est connecté.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Ensuite, créez une instance d'affichage Adafruit avec la largeur et la hauteur définies précédemment avec le protocole de communication SPI.
Affichage Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Après cela, définissez le sens des capteurs de poussière et les broches LED. La broche de détection est la broche de sortie du capteur de poussière qui est utilisée pour lire les valeurs de tension tandis que la broche LED est utilisée pour allumer / éteindre la LED IR.
int sensePin = A5; int ledPin = 7;
Maintenant, dans la fonction setup () , initialisez le Serial Monitor à une vitesse de transmission de 9600 à des fins de débogage. Également, initialisez l'écran OLED avec la fonction begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
À l'intérieur de la fonction loop () , lisez les valeurs de tension de la broche analogique 5 d'Arduino Nano. Tout d'abord, allumez la LED IR, puis attendez 0,28 ms avant de prendre une lecture de la tension de sortie. Après cela, lisez les valeurs de tension sur la broche analogique. Cette opération prend environ 40 à 50 microsecondes, introduisez donc un délai de 40 microsecondes avant d'éteindre le voyant du capteur de poussière. Selon les spécifications, la LED doit être allumée une fois toutes les 10 ms, alors attendez le reste du cycle de 10 ms = 10000 - 280 - 40 = 9680 microsecondes .
digitalWrite (ledPin, LOW); delayMicrosecondes (280); outVo = analogRead (sensePin); delayMicrosecondes (40); digitalWrite (ledPin, HIGH); delayMicrosecondes (9680);
Ensuite, dans les lignes suivantes, calculez la densité de poussière en utilisant la tension de sortie et la valeur du signal.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Après cela, définissez la taille et la couleur du texte à l'aide de setTextSize () et setTextColor () .
display.setTextSize (1); display.setTextColor (BLANC);
Ensuite, dans la ligne suivante, définissez la position où le texte commence à l'aide de la méthode setCursor (x, y) . Et imprimez les valeurs de densité de poussière sur l'écran OLED à l'aide de la fonction display.println () .
display.println ("Poussière"); display.println ("Densité"); display.setTextSize (3); display.println (dustLevel);
Et dans le dernier, appelez la méthode display () pour afficher le texte sur l'écran OLED.
display.display (); display.clearDisplay ();
Test de l'interface du capteur Sharp GP2Y1014AU0F avec Arduino
Une fois que le matériel et le code sont prêts, il est temps de tester le capteur. Pour cela, connectez l'Arduino à l'ordinateur portable, sélectionnez la carte et le port, puis appuyez sur le bouton de téléchargement. Comme vous pouvez le voir dans l'image ci-dessous, il affichera la densité de la poussière sur l'écran OLED.
La vidéo de travail complète et le code sont donnés ci-dessous. J'espère que vous avez apprécié le tutoriel et appris quelque chose d'utile. Si vous avez des questions, laissez-les dans la section commentaires ou utilisez nos forums pour d'autres questions techniques.