- Απαιτούμενα στοιχεία
- Αισθητήρας Sharp GP2Y1014AU0F
- Ενότητα οθόνης OLED
- Διάγραμμα κυκλώματος
- Χτίζοντας το κύκλωμα στο Perf Board
- Επεξήγηση κώδικα για Αναλυτή ποιότητας αέρα
- Δοκιμή της διασύνδεσης του αισθητήρα Sharp GP2Y1014AU0F με το Arduino
Η ατμοσφαιρική ρύπανση είναι ένα σημαντικό ζήτημα σε πολλές πόλεις και ο δείκτης ποιότητας του αέρα επιδεινώνεται καθημερινά. Σύμφωνα με την έκθεση του Παγκόσμιου Οργανισμού Υγείας, περισσότεροι άνθρωποι σκοτώνονται πρόωρα από τις επιπτώσεις επικίνδυνων σωματιδίων που εμφανίζονται στον αέρα παρά από τροχαία ατυχήματα. Σύμφωνα με την Υπηρεσία Προστασίας Περιβάλλοντος (EPA), ο αέρας εσωτερικού χώρου μπορεί να είναι 2 έως 5 φορές πιο τοξικός από τον εξωτερικό αέρα. Εδώ λοιπόν χτίζουμε ένα έργο για την παρακολούθηση της ποιότητας του αέρα μετρώντας την πυκνότητα των σωματιδίων σκόνης στον αέρα.
Συνεχίζοντας λοιπόν τα προηγούμενα έργα μας, όπως ανιχνευτή υγραερίου, ανιχνευτής καπνού και παρακολούθηση ποιότητας αέρα, εδώ θα συνδέσουμε τον αισθητήρα Sharp GP2Y1014AU0F με τον Arduino Nano για τη μέτρηση της πυκνότητας σκόνης στον αέρα. Εκτός από τον αισθητήρα σκόνης και το Arduino Nano, μια οθόνη OLED χρησιμοποιείται επίσης για την εμφάνιση των μετρημένων τιμών. Ο αισθητήρας σκόνης GP2Y1014AU0F του Sharp είναι πολύ αποτελεσματικός στην ανίχνευση πολύ λεπτών σωματιδίων όπως ο καπνός των τσιγάρων. Έχει σχεδιαστεί για χρήση σε καθαριστές αέρα και κλιματιστικά.
Απαιτούμενα στοιχεία
- Arduino Nano
- Αισθητήρας Sharp GP2Y1014AU0F
- Ενότητα οθόνης OLED 0,96 'SPI
- Καλώδια αλτών
- Πυκνωτής 220 μf
- Αντίσταση 150 Ω
Αισθητήρας Sharp GP2Y1014AU0F
Ο Sharp's GP2Y1014AU0F είναι ένας μικροσκοπικός αισθητήρας οπτικής ποιότητας / οπτικής σκόνης αναλογικής εξόδου έξι ακίδων που έχει σχεδιαστεί για να ανιχνεύει σωματίδια σκόνης στον αέρα. Λειτουργεί με την αρχή της σκέδασης λέιζερ. Μέσα στη μονάδα αισθητήρα, μια δίοδος εκπομπής υπερύθρων και ένας φωτοαισθητήρας διατάσσονται διαγώνια κοντά στην οπή εισόδου αέρα όπως φαίνεται στην παρακάτω εικόνα:
Όταν ο αέρας που περιέχει σωματίδια σκόνης εισέρχεται στον θάλαμο του αισθητήρα, τα σωματίδια σκόνης διασκορπίζουν το φως LED IR προς τον φωτοανιχνευτή. Η ένταση του διάσπαρτου φωτός εξαρτάται από τα σωματίδια σκόνης. Όσο περισσότερα σωματίδια σκόνης στον αέρα, τόσο μεγαλύτερη είναι η ένταση του φωτός. Η τάση εξόδου στον πείρο V OUT του αισθητήρα αλλάζει ανάλογα με την ένταση του διάσπαρτου φωτός.
Pin2 αισθητήρα GP2Y1014AU0F:
Όπως αναφέρθηκε προηγουμένως, ο αισθητήρας GP2Y1014AU0F διαθέτει υποδοχή 6 ακίδων. Το παρακάτω σχήμα και ο πίνακας δείχνουν τις αντιστοιχίσεις καρφιτσών για το GP2Y1014AU0F:
Ν. ΟΧΙ |
Όνομα καρφιτσώματος |
Περιγραφή καρφίτσας |
1 |
V-LED |
Pin Vcc LED. Συνδεθείτε στο 5V έως 150Ω Αντίσταση |
2 |
LED-GND |
Πείρος γείωσης LED. Συνδεθείτε στο GND |
3 |
LED |
Χρησιμοποιείται για εναλλαγή ενεργοποίησης / απενεργοποίησης LED. Συνδεθείτε σε οποιονδήποτε ψηφιακό ακροδέκτη του Arduino |
4 |
S-GND |
Αισθητήρας γείωσης αισθητήρα. Συνδεθείτε στο GND του Arduino |
5 |
V OUT |
Αναλογικός πείρος εξόδου αισθητήρα. Συνδεθείτε σε οποιονδήποτε αναλογικό πείρο |
6 |
V CC |
Θετικός πείρος τροφοδοσίας. Συνδεθείτε με 5V του Arduino |
Προδιαγραφές αισθητήρα GP2Y1014AU0F:
- Χαμηλή κατανάλωση ρεύματος: 20mA μέγ
- Τυπική τάση λειτουργίας: 4,5V έως 5,5V
- Ελάχιστο ανιχνεύσιμο μέγεθος σκόνης: 0,5 μm
- Εύρος ανίχνευσης πυκνότητας σκόνης: Έως 580 ug / m 3
- Χρόνος ανίχνευσης: Λιγότερο από 1 δευτερόλεπτο
- Διαστάσεις: 1,81 x 1,18 x 0,69 "(46,0 x 30,0 x 17,6 mm)
Ενότητα οθόνης OLED
Το OLED (Organic Light-Emitting Diodes) είναι μια τεχνολογία αυτόματης εκπομπής φωτός, κατασκευασμένη τοποθετώντας μια σειρά από οργανικά λεπτά φιλμ μεταξύ δύο αγωγών. Ένα φωτεινό φως παράγεται όταν εφαρμόζεται ηλεκτρικό ρεύμα σε αυτές τις μεμβράνες. Τα OLED χρησιμοποιούν την ίδια τεχνολογία με τις τηλεοράσεις, αλλά έχουν λιγότερα pixel από ό, τι στις περισσότερες τηλεοράσεις μας.
Για αυτό το έργο, χρησιμοποιούμε μια οθόνη OLED Monochrome 7-pin SSD1306 0,96 ”. Μπορεί να λειτουργήσει σε τρία διαφορετικά πρωτόκολλα επικοινωνίας: SPI 3 Wire mode, SPI four-wire mode και I2C mode. Οι ακίδες και οι λειτουργίες της εξηγούνται στον παρακάτω πίνακα:
Έχουμε ήδη καλύψει το OLED και τους τύπους του με λεπτομέρειες στο προηγούμενο άρθρο.
Όνομα καρφιτσώματος |
Αλλα ονόματα |
Περιγραφή |
Gnd |
Εδαφος |
Καρφίτσα γείωσης της μονάδας |
Vdd |
Vcc, 5V |
Τροφοδοτικό (3-5V ανεκτό) |
SCK |
D0, SCL, CLK |
Λειτουργεί ως καρφίτσα ρολογιού. Χρησιμοποιείται τόσο για I2C όσο και για SPI |
SDA |
D1, MOSI |
Καρφίτσα δεδομένων της ενότητας. Χρησιμοποιείται τόσο για IIC όσο και για SPI |
ΑΠΕ |
RST, ΕΠΑΝΑΦΟΡΑ |
Επαναφέρει τη μονάδα (χρήσιμο κατά τη διάρκεια SPI) |
DC |
Α0 |
Καρφίτσα εντολών δεδομένων. Χρησιμοποιείται για πρωτόκολλο SPI |
CS |
Επιλογή τσιπ |
Χρήσιμο όταν περισσότερες από μία λειτουργικές μονάδες χρησιμοποιούνται στο πρωτόκολλο SPI |
Προδιαγραφές OLED:
- IC οδηγού OLED: SSD1306
- Ανάλυση: 128 x 64
- Οπτική γωνία:> 160 °
- Τάση εισόδου: 3.3V ~ 6V
- Χρώμα Pixel: Μπλε
- Θερμοκρασία λειτουργίας: -30 ° C ~ 70 ° C
Μάθετε περισσότερα για το OLED και τη διασύνδεσή του με διαφορετικούς μικροελεγκτές ακολουθώντας τον σύνδεσμο.
Διάγραμμα κυκλώματος
Το διάγραμμα κυκλώματος για τον αισθητήρα διασύνδεσης Sharp GP2Y1014AU0F με το Arduino δίνεται παρακάτω:
Το κύκλωμα είναι πολύ απλό καθώς συνδέουμε μόνο τον αισθητήρα GP2Y10 και την οθόνη OLED με το Arduino Nano. Η μονάδα αισθητήρα GP2Y10 και OLED Display και οι δύο τροφοδοτούνται με + 5V και GND. Ο πείρος V0 συνδέεται με τον πείρο A5 του Arduino Nano. Ο ακροδέκτης LED του αισθητήρα συνδέεται με τον ψηφιακό ακροδέκτη12 του Arduino. Δεδομένου ότι η ενότητα OLED Display χρησιμοποιεί επικοινωνία SPI, έχουμε δημιουργήσει μια επικοινωνία SPI μεταξύ της μονάδας OLED και του Arduino Nano. Οι συνδέσεις φαίνονται στον παρακάτω πίνακα:
ΝΟ |
Καρφίτσα μονάδας OLED |
Arduino Pin |
1 |
GND |
Εδαφος |
2 |
VCC |
5V |
3 |
Δ0 |
10 |
4 |
Δ1 |
9 |
5 |
ΑΠΕ |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
ΝΟ |
Καρφίτσα αισθητήρα |
Arduino Pin |
1 |
Vcc |
5V |
2 |
V Ο |
Α5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
Αντίσταση 5V έως 150Ω |
Χτίζοντας το κύκλωμα στο Perf Board
Μετά τη συγκόλληση όλων των εξαρτημάτων στον πίνακα αρωμάτων, θα μοιάζει με παρακάτω. Αλλά μπορεί επίσης να χτιστεί πάνω σε ένα breadboard. Έχω κολλήσει τον αισθητήρα GP2Y1014 στον ίδιο πίνακα που χρησιμοποίησα για τη διασύνδεση του αισθητήρα SDS011. Κατά τη συγκόλληση, βεβαιωθείτε ότι τα καλώδια συγκόλλησης πρέπει να βρίσκονται σε αρκετή απόσταση μεταξύ τους.
Επεξήγηση κώδικα για Αναλυτή ποιότητας αέρα
Ο πλήρης κωδικός για αυτό το έργο δίνεται στο τέλος του εγγράφου. Εδώ εξηγούμε ορισμένα σημαντικά μέρη του κώδικα.
Ο κώδικας χρησιμοποιεί το Adafruit_GFX , και Adafruit_SSD1306 βιβλιοθήκες. Μπορείτε να κατεβάσετε αυτές τις βιβλιοθήκες από τη Διαχείριση βιβλιοθηκών στο Arduino IDE και να την εγκαταστήσετε από εκεί. Για αυτό, ανοίξτε το Arduino IDE και μεταβείτε στο Σκίτσο <Συμπερίληψη βιβλιοθήκης <Διαχείριση βιβλιοθηκών . Τώρα αναζητήστε το Adafruit GFX και εγκαταστήστε τη βιβλιοθήκη Adafruit GFX από το Adafruit.
Ομοίως, εγκαταστήστε τις βιβλιοθήκες Adafruit SSD1306 από το Adafruit.
Αφού εγκαταστήσετε τις βιβλιοθήκες στο Arduino IDE, ξεκινήστε τον κώδικα συμπεριλαμβάνοντας τα απαραίτητα αρχεία βιβλιοθηκών. Ο αισθητήρας σκόνης δεν απαιτεί βιβλιοθήκη καθώς διαβάζουμε τις τιμές τάσης απευθείας από τον αναλογικό πείρο του Arduino.
#περιλαμβάνω
Στη συνέχεια, ορίστε το πλάτος και το ύψος OLED. Σε αυτό το έργο, χρησιμοποιούμε οθόνη OLED 128 × 64 SPI. Μπορείτε να αλλάξετε την SCREEN_WIDTH , και SCREEN_HEIGHT μεταβλητές σύμφωνα με την οθόνη σας.
# καθορισμός SCREEN_WIDTH 128 # καθορισμός SCREEN_HEIGHT 64
Στη συνέχεια, ορίστε τους πείρους επικοινωνίας SPI όπου είναι συνδεδεμένη η οθόνη OLED.
# καθορισμός OLED_MOSI 9 # καθορισμός OLED_CLK 10 # ορισμός OLED_DC 11 # καθορισμός OLED_CS 12 # καθορισμός OLED_RESET 13
Στη συνέχεια, δημιουργήστε μια παρουσία εμφάνισης Adafruit με το πλάτος και το ύψος που ορίστηκε νωρίτερα με το πρωτόκολλο επικοινωνίας SPI.
Οθόνη Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS).
Μετά από αυτό, ορίστε την αίσθηση των αισθητήρων σκόνης και τους ακροδέκτες led. Το Sense pin είναι ο ακροδέκτης εξόδου του αισθητήρα σκόνης που χρησιμοποιείται για την ανάγνωση των τιμών τάσης ενώ ο ακροδέκτης LED χρησιμοποιείται για την ενεργοποίηση / απενεργοποίηση του IR Led.
int sensePin = A5; int ledPin = 7;
Τώρα μέσα στη λειτουργία setup () , αρχικοποιήστε το Serial Monitor με ρυθμό baud 9600 για σκοπούς εντοπισμού σφαλμάτων. Επίσης, αρχικοποιήστε την οθόνη OLED με τη λειτουργία έναρξης () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Μέσα στη συνάρτηση loop () , διαβάστε τις τιμές τάσης από τον αναλογικό πείρο 5 του Arduino Nano. Κατ 'αρχάς, ανάψτε τη λυχνία IR και στη συνέχεια περιμένετε 0,28 ms πριν πάρετε μια ένδειξη της τάσης εξόδου. Μετά από αυτό, διαβάστε τις τιμές τάσης από τον αναλογικό πείρο. Αυτή η λειτουργία διαρκεί περίπου 40 έως 50 μικροδευτερόλεπτα, οπότε εισαγάγετε μια καθυστέρηση 40 μικροδευτερολέπτων πριν απενεργοποιήσετε τον αισθητήρα σκόνης. Σύμφωνα με τις προδιαγραφές, το LED πρέπει να ανάβει μία φορά κάθε 10ms, οπότε περιμένετε για το υπόλοιπο του κύκλου 10ms = 10000 - 280 - 40 = 9680 μικροδευτερόλεπτα .
digitalWrite (ledPin, LOW); καθυστέρηση Μικροδευτερόλεπτα (280); outVo = analogRead (sensePin); καθυστέρηση Μικροδευτερόλεπτα (40); digitalWrite (ledPin, HIGH); καθυστέρηση μικροδευτερόλεπτα (9680);
Στη συνέχεια, στις επόμενες γραμμές, υπολογίστε την πυκνότητα σκόνης χρησιμοποιώντας την τάση εξόδου και την τιμή σήματος.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Μετά από αυτό, ορίστε το μέγεθος κειμένου και το χρώμα κειμένου χρησιμοποιώντας το setTextSize () και το setTextColor () .
display.setTextSize (1); display.setTextColor (ΛΕΥΚΟ);
Στη συνέχεια, στην επόμενη γραμμή, ορίστε τη θέση από την οποία ξεκινά το κείμενο χρησιμοποιώντας τη μέθοδο setCursor (x, y) . Και εκτυπώστε τις τιμές πυκνότητας σκόνης στην οθόνη OLED χρησιμοποιώντας τη λειτουργία display.println () .
display.println ("Σκόνη"); display.println ("Πυκνότητα"); display.setTextSize (3); display.println (dustLevel);
Και στο τελευταίο, καλέστε τη μέθοδο display () για να εμφανίσετε το κείμενο στην οθόνη OLED
display.display (); display.clearDisplay ();
Δοκιμή της διασύνδεσης του αισθητήρα Sharp GP2Y1014AU0F με το Arduino
Μόλις το υλικό και ο κωδικός είναι έτοιμοι, είναι καιρός να δοκιμάσετε τον αισθητήρα. Για αυτό, συνδέστε το Arduino στον φορητό υπολογιστή, επιλέξτε την πλακέτα και τη θύρα και πατήστε το κουμπί μεταφόρτωσης. Όπως μπορείτε να δείτε στην παρακάτω εικόνα, θα εμφανίσει την πυκνότητα σκόνης στην οθόνη OLED.
Το πλήρες βίντεο και ο κωδικός εργασίας δίνονται παρακάτω. Ελπίζω να απολαύσατε το σεμινάριο και να μάθετε κάτι χρήσιμο. Εάν έχετε οποιεσδήποτε ερωτήσεις, αφήστε τις στην ενότητα σχολίων ή χρησιμοποιήστε τα φόρουμ μας για άλλες τεχνικές ερωτήσεις.