- רכיבים נדרשים
- חיישן GP2Y1014AU0F חד
- מודול תצוגת OLED
- תרשים מעגל
- בניית המעגל על לוח Perf
- הסבר קוד למנתח איכות האוויר
- בודקים את הממשק של חיישן GP2Y1014AU0F Sharp עם Arduino
זיהום אוויר הוא נושא מרכזי בערים רבות ומדד איכות האוויר הולך ומחמיר מדי יום. על פי דו"ח ארגון הבריאות העולמי, יותר אנשים נהרגים בטרם עת בגלל ההשפעות של חלקיקים מסוכנים המוצגים באוויר מאשר מתאונות דרכים. על פי הסוכנות להגנת הסביבה (EPA), האוויר הפנימי יכול להיות רעיל פי 2 עד פי 5 מאשר האוויר בחוץ. אז הנה אנו בונים פרויקט לפיקוח על איכות האוויר על ידי מדידת צפיפות חלקיקי האבק באוויר.
אז בהמשך לפרויקטים הקודמים שלנו כמו גלאי LPG, גלאי עשן ומוניטור איכות האוויר, כאן אנחנו הולכים לממשק את חיישן ה- GP2Y1014AU0F Sharp עם Arduino Nano כדי למדוד את צפיפות האבק באוויר. מלבד חיישן האבק וארדואינו ננו, תצוגת OLED משמשת גם להצגת הערכים הנמדדים. חיישן האבק GP2Y1014AU0F של שארפ יעיל מאוד בזיהוי חלקיקים עדינים מאוד כמו עשן סיגריות. הוא מיועד לשימוש במטהרי אוויר ומזגנים.
רכיבים נדרשים
- ארדואינו ננו
- חיישן GP2Y1014AU0F חד
- 0.96 'מודול תצוגת SPI OLED
- חוטי מגשר
- קבלים 220 µf
- נגד 150 Ω
חיישן GP2Y1014AU0F חד
GP2Y1014AU0F של שארפ הוא חיישן אוויר אופטי / חיישן אבק אופטי פלט אנלוגי בעל שישה פינים המיועד לחוש חלקיקי אבק באוויר. זה עובד על העיקרון של פיזור לייזר. בתוך מודול החיישן, דיודה פולטת אינפרא אדום וחיישן פוטו מסודרים באלכסון ליד חור כניסת האוויר, כפי שמוצג בתמונה למטה:
כאשר אוויר המכיל חלקיקי אבק נכנס לתא החיישן, חלקיקי האבק מפזרים את אור ה- IR LED לכיוון גלאי הצילום. עוצמת האור המפוזר תלויה בחלקיקי האבק. ככל שחלקיקי אבק רבים יותר באוויר, כך עוצמת האור גדולה יותר. מתח המוצא בסיכת V OUT של החיישן משתנה בהתאם לעוצמת האור המפוזר.
GP2Y1014AU0F חיישן Pinout:
כאמור, חיישן GP2Y1014AU0F מגיע עם מחבר בעל 6 פינים. האיור והטבלה שלהלן מציגים את מטלות הסיכה עבור GP2Y1014AU0F:
S. NO. |
שם סיכה |
תיאור סיכה |
1 |
V-LED |
פין Vcc לד. התחבר לנגד 5V עד 150Ω |
2 |
LED-GND |
פין קרקע לד. התחבר ל- GND |
3 |
לד |
משמש למצב הפעלה / כיבוי של נורית. התחבר לכל סיכה דיגיטלית של Arduino |
4 |
S-GND |
סיכת קרקע חיישן. התחבר ל- GND של Arduino |
5 |
V OUT |
סיכת פלט אנלוגית חיישן. התחבר לכל סיכה אנלוגית |
6 |
V CC |
סיכת אספקה חיובית. התחבר ל -5 וולט של ארדואינו |
מפרט חיישן GP2Y1014AU0F:
- צריכת זרם נמוכה: מקסימום 20mA
- מתח הפעלה אופייני: 4.5V עד 5.5V
- גודל אבק מינימלי לזיהוי: 0.5 מיקרומטר
- טווח חישה לצפיפות אבק: עד 580 ug / m 3
- זמן חישה: פחות משנייה אחת
- מידות: 1.81 x 1.18 x 0.69 "(46.0 x 30.0 x 17.6 מ"מ)
מודול תצוגת OLED
OLED (דיודות פולטות אור אורגניות) היא טכנולוגיה הפולטת אור עצמית, שנבנתה על ידי הצבת סדרה של סרטים דקים אורגניים בין שני מוליכים. אור בהיר מופק כאשר זרם חשמלי מוחל על סרטים אלה. OLEDs משתמשים באותה טכנולוגיה כמו טלוויזיות, אך יש להם פחות פיקסלים מאשר ברוב הטלוויזיות שלנו.
לפרויקט זה אנו משתמשים בתצוגת OLED מונוכרום 7 פינים SSD1306 0.96 אינץ '. זה יכול לעבוד על שלושה פרוטוקולי תקשורת שונים: מצב חוט SPI 3, מצב ארבעה חוטים SPI ומצב I2C. הסיכות ותפקידיה מוסברים בטבלה שלהלן:
במאמר הקודם כבר סקרנו את OLED וסוגיה בפרטים.
שם סיכה |
שמות אחרים |
תיאור |
Gnd |
קרקע, אדמה |
סיכת קרקע של המודול |
Vdd |
Vcc, 5V |
פינת חשמל (נסבלת 3-5 V) |
SCK |
D0, SCL, CLK |
פועל כסיכת השעון. משמש גם ל- I2C וגם ל- SPI |
SDA |
D1, MOSI |
סיכת נתונים של המודול. משמש גם ל- IIC וגם ל- SPI |
RES |
RST, RESET |
מאפס את המודול (שימושי במהלך SPI) |
זֶרֶם יָשָׁר |
A0 |
סיכת פקודת נתונים. משמש לפרוטוקול SPI |
CS |
בחר שבב |
שימושי כאשר משתמשים ביותר ממודול אחד תחת פרוטוקול SPI |
מפרט OLED:
- נהג OLED IC: SSD1306
- רזולוציה: 128 x 64
- זווית ראייה:> 160 °
- מתח כניסה: 3.3V ~ 6V
- צבע פיקסל: כחול
- טמפרטורת עבודה: -30 C ~ 70 C
למידע נוסף על OLED והתממשקותו עם מיקרו-בקרים שונים על ידי לחיצה על הקישור.
תרשים מעגל
תרשים מעגלים לממשק חיישן GP2Y1014AU0F Sharp עם Arduino מוצג להלן:
המעגל פשוט מאוד מכיוון שאנו מחברים רק חיישן GP2Y10 ומודול תצוגת OLED עם Arduino Nano. חיישן GP2Y10 ומודול תצוגת OLED שניהם מופעלים באמצעות + 5V ו- GND. סיכת V0 מחוברת לסיכה A5 של ארדואינו ננו. סיכת ה- LED של החיישן מחוברת לסיכה הדיגיטלית של ה- Arduino. מכיוון שמודול ה- OLED Display משתמש בתקשורת SPI, הקמנו תקשורת SPI בין מודול ה- OLED לבין Arduino Nano. החיבורים מוצגים בטבלה שלהלן:
S.No |
סיכת מודול OLED |
פין ארדואינו |
1 |
GND |
קרקע, אדמה |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
זֶרֶם יָשָׁר |
11 |
7 |
CS |
12 |
S.No |
פין חיישן |
פין ארדואינו |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
לד |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
נגד 5V דרך 150Ω |
בניית המעגל על לוח Perf
לאחר הלחמה של כל הרכיבים על לוח ה- perf, זה ייראה בערך למטה. אבל אפשר לבנות את זה גם על קרש לחם. הלחמתי את חיישן GP2Y1014 על אותו לוח בו השתמשתי כדי לממשק את חיישן ה- SDS011. בזמן ההלחמה, ודא שחוטי הלחמה שלך צריכים להיות במרחק מספיק זה מזה.
הסבר קוד למנתח איכות האוויר
הקוד השלם לפרויקט זה ניתן בסוף המסמך. כאן אנו מסבירים כמה חלקים חשובים בקוד.
קוד משתמש Adafruit_GFX , ו Adafruit_SSD1306 ספריות. ניתן להוריד ספריות אלה ממנהל הספרייה ב- IDU של ארדואינו ולהתקין אותו משם. לשם כך, פתח את ה- Arduino IDE ועבור אל סקיצה <כלול ספרייה <נהל ספריות . כעת חפש את Adafruit GFX והתקן את ספריית AdFruit GFX על ידי Adafruit.
באופן דומה, התקן את ספריות Adafruit SSD1306 על ידי Adafruit.
לאחר התקנת הספריות ל- Arduino IDE, התחל את הקוד על ידי הכללת קבצי הספריות הדרושים. חיישן אבק אינו דורש שום ספרייה שכן אנו קוראים את ערכי המתח ישירות מהסיכה האנלוגית של ארדואינו.
#לִכלוֹל
לאחר מכן, הגדירו את רוחב וגובה ה- OLED. בפרויקט זה אנו משתמשים בתצוגת SPI OLED 128 × 64. אתה יכול לשנות את המשתנים SCREEN_WIDTH ו- SCREEN_HEIGHT בהתאם לתצוגה שלך.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
ואז הגדירו את סיכות התקשורת של SPI בהן מחובר OLED Display.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
לאחר מכן, צור מופע תצוגה של Adafruit עם הרוחב והגובה שהוגדרו קודם לכן באמצעות פרוטוקול התקשורת SPI.
תצוגת Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
לאחר מכן, הגדר את חיישני האבק וסיכות led. סיכה חישה היא סיכת המוצא של חיישן האבק המשמש לקריאת ערכי המתח בזמן שהסיכה המובילה משמשת להפעלה / כיבוי של ה- IR Led.
int sensePin = A5; int ledPin = 7;
כעת בתוך פונקציית setup () , אתחל את צג הסידורי בקצב שידור של 9600 למטרות ניפוי באגים. בנוסף, אתחל את תצוגת ה- OLED באמצעות פונקציית התחל () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
בתוך פונקציית הלולאה () , קרא את ערכי המתח מהסיכה האנלוגית 5 של Arduino Nano. ראשית, הפעל את נורית ה- IR ואז המתן ל- 0.28ms לפני שתקרא את מתח המוצא. לאחר מכן, קרא את ערכי המתח מהסיכה האנלוגית. פעולה זו אורכת כ -40 עד 50 מיקרו שניות, לכן הציגו עיכוב של 40 מיקרו שניות לפני כיבוי חיישן האבק. על פי המפרט, יש לדפוק נורית LED אחת ל -10 ms, אז המתן לשאר מחזור 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 (WHITE);
ואז בשורה הבאה, הגדירו את המיקום בו הטקסט מתחיל בשיטת setCursor (x, y) . והדפיס את ערכי צפיפות האבק בתצוגת OLED באמצעות פונקציית display.println () .
display.println ("אבק"); display.println ("צפיפות"); display.setTextSize (3); display.println (dustLevel);
ובאחרון, התקשר לשיטת display () כדי להציג את הטקסט בתצוגת OLED.
display.display (); display.clearDisplay ();
בודקים את הממשק של חיישן GP2Y1014AU0F Sharp עם Arduino
לאחר שהחומרה והקוד מוכנים, הגיע הזמן לבדוק את החיישן. לשם כך, חבר את הארדואינו למחשב הנייד, בחר את הלוח והנמל ולחץ על כפתור ההעלאה. כפי שניתן לראות בתמונה למטה, הוא יציג צפיפות אבק בתצוגת OLED.
סרטון העבודה והקוד המלא מובאים להלן. מקווה שנהנית מההדרכה ולמדת משהו שימושי. אם יש לך שאלות, השאיר אותן בסעיף ההערות או השתמש בפורומים שלנו לשאילתות טכניות אחרות.