- Componenti richiesti
- Sensore Sharp GP2Y1014AU0F
- Modulo display OLED
- Schema elettrico
- Costruire il circuito su Perf Board
- Spiegazione del codice per l'analizzatore della qualità dell'aria
- Test dell'interfacciamento del sensore Sharp GP2Y1014AU0F con Arduino
L'inquinamento atmosferico è un problema importante in molte città e l'indice di qualità dell'aria peggiora ogni giorno. Secondo il rapporto dell'Organizzazione mondiale della sanità, più persone vengono uccise prematuramente dagli effetti delle particelle pericolose presenti nell'aria che dagli incidenti stradali. Secondo l'Environmental Protection Agency (EPA), l'aria interna può essere da 2 a 5 volte più tossica dell'aria esterna. Quindi qui costruiamo un progetto per monitorare la qualità dell'aria misurando la densità delle particelle di polvere nell'aria.
Quindi, in continuazione dei nostri progetti precedenti come rilevatore GPL, rilevatore di fumo e monitor della qualità dell'aria, qui interfacciamo il sensore Sharp GP2Y1014AU0F con Arduino Nano per misurare la densità della polvere nell'aria. Oltre al sensore di polvere e Arduino Nano, viene utilizzato anche un display OLED per visualizzare i valori misurati. Il sensore di polvere GP2Y1014AU0F di Sharp è molto efficace nel rilevare particelle molto fini come il fumo di sigaretta. È progettato per l'uso in purificatori d'aria e condizionatori d'aria.
Componenti richiesti
- Arduino Nano
- Sensore Sharp GP2Y1014AU0F
- Modulo display OLED SPI da 0,96 '
- Cavi per ponticelli
- Condensatore da 220 µf
- Resistenza da 150 Ω
Sensore Sharp GP2Y1014AU0F
Il GP2Y1014AU0F di Sharp è un minuscolo sensore ottico di qualità dell'aria / polvere ottica con uscita analogica a sei pin progettato per rilevare le particelle di polvere nell'aria. Funziona secondo il principio della diffusione laser. All'interno del modulo sensore, un diodo a emissione di infrarossi e un fotosensore sono disposti diagonalmente vicino al foro di ingresso dell'aria come mostrato nell'immagine sottostante:
Quando l'aria contenente particelle di polvere entra nella camera del sensore, le particelle di polvere disperdono la luce LED IR verso il fotorilevatore. L'intensità della luce diffusa dipende dalle particelle di polvere. Maggiore è il numero di particelle di polvere nell'aria, maggiore è l'intensità della luce. La tensione di uscita sul pin V OUT del sensore cambia in base all'intensità della luce diffusa.
Piedinatura sensore GP2Y1014AU0F:
Come accennato in precedenza, il sensore GP2Y1014AU0F viene fornito con un connettore a 6 pin. La figura e la tabella seguenti mostrano le assegnazioni dei pin per GP2Y1014AU0F:
S. NO. |
Nome pin |
Descrizione pin |
1 |
V-LED |
Pin LED Vcc. Collegare a una resistenza da 5V a 150Ω |
2 |
LED-GND |
Pin di messa a terra LED. Connettiti a GND |
3 |
GUIDATO |
Utilizzato per attivare / disattivare il LED. Collegati a qualsiasi pin digitale di Arduino |
4 |
S-GND |
Pin di messa a terra del sensore. Connettiti a GND di Arduino |
5 |
V OUT |
Pin di uscita analogica del sensore. Connettiti a qualsiasi pin analogico |
6 |
V CC |
Pin di alimentazione positivo. Collegati a 5V di Arduino |
Specifiche del sensore GP2Y1014AU0F:
- Basso consumo di corrente: 20 mA max
- Tensione operativa tipica: da 4,5 V a 5,5 V.
- Dimensione minima rilevabile della polvere: 0,5 µm
- Intervallo di rilevamento della densità della polvere: fino a 580 ug / m 3
- Tempo di rilevamento: meno di 1 secondo
- Dimensioni: 1,81 x 1,18 x 0,69 pollici (46,0 x 30,0 x 17,6 mm)
Modulo display OLED
OLED (Organic Light-Emitting Diodes) è una tecnologia autoemittente, costruita inserendo una serie di film sottili organici tra due conduttori. Quando una corrente elettrica viene applicata a queste pellicole, viene prodotta una luce intensa. Gli OLED utilizzano la stessa tecnologia dei televisori, ma hanno meno pixel rispetto alla maggior parte dei nostri televisori.
Per questo progetto, utilizziamo un display OLED SSD1306 da 0,96 pollici monocromatico a 7 pin. Può funzionare su tre diversi protocolli di comunicazione: modalità SPI 3 fili, modalità SPI a quattro fili e modalità I2C. I pin e le sue funzioni sono spiegati nella tabella seguente:
Abbiamo già trattato OLED e le sue tipologie in dettaglio nell'articolo precedente.
Nome pin |
Altri nomi |
Descrizione |
Gnd |
Terra |
Pin di massa del modulo |
Vdd |
Vcc, 5V |
Pin di alimentazione (3-5 V tollerabile) |
SCK |
D0, SCL, CLK |
Funge da perno dell'orologio. Utilizzato sia per I2C che per SPI |
SDA |
D1, MOSI |
Pin dati del modulo. Utilizzato sia per IIC che per SPI |
RES |
RST, RESET |
Resetta il modulo (utile durante SPI) |
DC |
A0 |
Pin di comando dati. Utilizzato per il protocollo SPI |
CS |
Chip Select |
Utile quando più di un modulo viene utilizzato con il protocollo SPI |
Specifiche OLED:
- IC driver OLED: SSD1306
- Risoluzione: 128 x 64
- Angolo visivo:> 160 °
- Tensione di ingresso: 3,3 V ~ 6 V.
- Colore pixel: blu
- Temperatura di lavoro: -30 ° C ~ 70 ° C
Ulteriori informazioni su OLED e il suo interfacciamento con diversi microcontrollori seguendo il link.
Schema elettrico
Di seguito è riportato lo schema del circuito per l' interfacciamento del sensore Sharp GP2Y1014AU0F con Arduino:
Il circuito è molto semplice in quanto stiamo collegando solo il sensore GP2Y10 e il modulo display OLED con Arduino Nano. Il sensore GP2Y10 e il modulo display OLED sono entrambi alimentati con + 5V e GND. Il pin V0 è collegato al pin A5 di Arduino Nano. Il pin LED del sensore è collegato al pin 12 digitale di Arduino. Poiché il modulo display OLED utilizza la comunicazione SPI, abbiamo stabilito una comunicazione SPI tra il modulo OLED e Arduino Nano. I collegamenti sono mostrati nella tabella seguente:
S.No |
Pin del modulo OLED |
Pin di Arduino |
1 |
GND |
Terra |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
S.No |
Pin del sensore |
Pin di Arduino |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
GUIDATO |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
Resistenza da 5V a 150Ω |
Costruire il circuito su Perf Board
Dopo aver saldato tutti i componenti sulla scheda perf, apparirà qualcosa di simile sotto. Ma può anche essere costruito su una breadboard. Ho saldato il sensore GP2Y1014 sulla stessa scheda che ho usato per interfacciare il sensore SDS011. Durante la saldatura, assicurati che i fili di saldatura siano a una distanza sufficiente l'uno dall'altro.
Spiegazione del codice per l'analizzatore della qualità dell'aria
Il codice completo per questo progetto è fornito alla fine del documento. Qui stiamo spiegando alcune parti importanti del codice.
Il codice utilizza l'Adafruit_GFX , e Adafruit_SSD1306 librerie. Queste librerie possono essere scaricate da Library Manager nell'IDE di Arduino e installate da lì. Per questo, apri l'IDE di Arduino e vai a Sketch <Include Library <Manage Libraries . Ora cerca Adafruit GFX e installa la libreria Adafruit GFX di Adafruit.
Allo stesso modo, installa le librerie Adafruit SSD1306 di Adafruit.
Dopo aver installato le librerie sull'IDE di Arduino, avvia il codice includendo i file delle librerie necessari. Il sensore di polvere non richiede alcuna libreria in quanto stiamo leggendo i valori di tensione direttamente dal pin analogico di Arduino.
#includere
Quindi, definire la larghezza e l'altezza dell'OLED. In questo progetto, stiamo utilizzando un display OLED 128 × 64 SPI. È possibile modificare lo SCREEN_WIDTH , e SCREEN_HEIGHT variabili in base al vostro display.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Quindi definire i pin di comunicazione SPI a cui è collegato il display OLED.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Quindi, crea un'istanza di visualizzazione Adafruit con la larghezza e l'altezza definite in precedenza con il protocollo di comunicazione SPI.
Display Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Successivamente, definire il senso dei sensori di polvere e i perni dei LED. Il pin di rilevamento è il pin di uscita del sensore di polvere che viene utilizzato per leggere i valori di tensione mentre il pin del LED viene utilizzato per accendere / spegnere il LED IR.
int sensePin = A5; int ledPin = 7;
Ora all'interno della funzione setup () , inizializza il monitor seriale a una velocità di trasmissione di 9600 per scopi di debug. Inoltre, inizializza il display OLED con la funzione begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
All'interno della funzione loop () , leggi i valori di tensione dal pin analogico 5 di Arduino Nano. Innanzitutto, accendi il LED IR e quindi attendi 0,28 ms prima di eseguire una lettura della tensione di uscita. Successivamente, leggi i valori di tensione dal pin analogico. Questa operazione richiede da 40 a 50 microsecondi, quindi introdurre un ritardo di 40 microsecondi prima di spegnere il led del sensore di polvere. Secondo le specifiche, il LED dovrebbe essere acceso una volta ogni 10 ms, quindi attendere il resto del ciclo di 10 ms = 10000 - 280 - 40 = 9680 microsecondi .
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); delayMicroseconds (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
Quindi, nelle righe successive, calcolare la densità della polvere utilizzando la tensione di uscita e il valore del segnale.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Successivamente, imposta la dimensione e il colore del testo utilizzando setTextSize () e setTextColor () .
display.setTextSize (1); display.setTextColor (WHITE);
Quindi, nella riga successiva, definire la posizione in cui inizia il testo utilizzando il metodo setCursor (x, y) . E stampare i valori di densità della polvere sul display OLED utilizzando la funzione display.println () .
display.println ("Dust"); display.println ("Densità"); display.setTextSize (3); display.println (dustLevel);
Infine, chiama il metodo display () per visualizzare il testo sul display OLED.
display.display (); display.clearDisplay ();
Test dell'interfacciamento del sensore Sharp GP2Y1014AU0F con Arduino
Una volta che l'hardware e il codice sono pronti, è il momento di testare il sensore. Per questo, collega Arduino al laptop, seleziona la scheda e la porta e premi il pulsante di caricamento. Come puoi vedere nell'immagine qui sotto, mostrerà Dust Density sul display OLED.
Il video e il codice di lavoro completi sono riportati di seguito. Spero ti sia piaciuto il tutorial e hai imparato qualcosa di utile. Se hai domande, lasciale nella sezione commenti o usa i nostri forum per altre domande tecniche.