- ส่วนประกอบที่จำเป็น
- เซ็นเซอร์ Nova PM SDS011
- 0.96 'โมดูลแสดงผล OLED
- แผนภาพวงจรสำหรับเครื่องวิเคราะห์คุณภาพอากาศ
- การสร้างวงจรบน Perf Board
- คำอธิบายรหัสสำหรับเครื่องตรวจวัดคุณภาพอากาศ
- การทดสอบการตรวจสอบคุณภาพอากาศ Arduino
มลพิษทางอากาศเป็นปัญหาหลักในหลาย ๆ เมืองและดัชนีคุณภาพอากาศก็แย่ลงทุกวัน ตามรายงานขององค์การอนามัยโลกพบว่ามีผู้เสียชีวิตก่อนเวลาอันควรจากผลกระทบของอนุภาคอันตรายในอากาศมากกว่าอุบัติเหตุทางรถยนต์ ตามที่สำนักงานคุ้มครองสิ่งแวดล้อม (EPA) ระบุว่าอากาศภายในอาคารอาจเป็นพิษมากกว่าอากาศภายนอก 2 ถึง 5 เท่า ดังนั้นที่นี่เราจึงสร้างอุปกรณ์เพื่อตรวจสอบคุณภาพอากาศโดยการวัดอนุภาค PM2.5 และ PM10 ในอากาศ
ก่อนหน้านี้เราใช้เซ็นเซอร์ก๊าซ MQ135 สำหรับการตรวจสอบคุณภาพอากาศและเซ็นเซอร์ Sharp GP2Y1014AU0F สำหรับการวัดความหนาแน่นของฝุ่นในอากาศ คราวนี้เราใช้ เซ็นเซอร์ SDS011 กับ Arduino Nano เพื่อสร้างเครื่องวิเคราะห์คุณภาพอากาศ เซ็นเซอร์ SDS011 สามารถคำนวณความเข้มข้นของอนุภาค PM2.5 และ PM10 ในอากาศได้ ที่นี่ค่า PM2.5 และ PM 10 แบบเรียลไทม์จะแสดงบนจอแสดงผล OLED
ส่วนประกอบที่จำเป็น
- Arduino นาโน
- เซ็นเซอร์ Nova PM SDS011
- 0.96 'SPI โมดูลแสดงผล OLED
- สายจัมเปอร์
เซ็นเซอร์ Nova PM SDS011
เซ็นเซอร์ SDS011 เป็นเซ็นเซอร์คุณภาพอากาศรุ่นล่าสุดที่พัฒนาโดย Nova Fitness ทำงานบนหลักการของการกระเจิงด้วยเลเซอร์และสามารถรับความเข้มข้นของอนุภาคระหว่าง 0.3 ถึง10μmในอากาศ เซ็นเซอร์นี้ประกอบด้วยพัดลมขนาดเล็กวาล์วอากาศเข้าเลเซอร์ไดโอดและโฟโตไดโอด อากาศเข้าทางช่องอากาศซึ่งแหล่งกำเนิดแสง (เลเซอร์) ส่องสว่างอนุภาคและแสงที่กระจัดกระจายจะถูกเปลี่ยนเป็นสัญญาณโดยเครื่องตรวจจับแสง จากนั้นสัญญาณเหล่านี้จะถูกขยายและประมวลผลเพื่อให้ได้ความเข้มข้นของอนุภาค PM2.5 และ PM10
SDS011 เซนเซอร์ข้อมูลจำเพาะ:
- เอาท์พุท: PM2.5, PM10
- ช่วงการวัด: 0.0-999.9μg / m3
- แรงดันไฟฟ้าอินพุต: 4.7V ถึง 5.3V
- กระแสสูงสุด: 100mA
- ปัจจุบันการนอนหลับ: 2mA
- เวลาตอบสนอง: 1 วินาที
- ความถี่เอาต์พุตข้อมูลอนุกรม: 1 ครั้ง / วินาที
- ความละเอียดเส้นผ่านศูนย์กลางของอนุภาค: ≤0.3μm
- ข้อผิดพลาดสัมพัทธ์: 10%
- ช่วงอุณหภูมิ: -20 ~ 50 ° C
0.96 'โมดูลแสดงผล OLED
OLED (Organic Light-Emitting Diodes) เป็นเทคโนโลยีการเปล่งแสงในตัวสร้างขึ้นโดยการวางฟิล์มบางอินทรีย์ไว้ระหว่างตัวนำสองตัว แสงจ้าเกิดขึ้นเมื่อกระแสไฟฟ้าถูกนำไปใช้กับฟิล์มเหล่านี้ OLED ใช้เทคโนโลยีเดียวกับโทรทัศน์ แต่มีพิกเซลน้อยกว่าทีวีส่วนใหญ่ของเรา
สำหรับโปรเจ็กต์นี้เราใช้จอแสดงผล OLED แบบ Monochrome 7-pin SSD1306 0.96 นิ้ว สามารถทำงานบนโปรโตคอลการสื่อสารที่แตกต่างกันสามแบบ: โหมด SPI 3 Wire, โหมดสี่สาย SPI และโหมด I2C พินและฟังก์ชันต่างๆอธิบายไว้ในตารางด้านล่าง:
ชื่อพิน |
ชื่ออื่น |
คำอธิบาย |
Gnd |
พื้น |
ขากราวด์ของโมดูล |
Vdd |
Vcc, 5V |
พินเพาเวอร์ (ทนได้ 3-5V) |
SCK |
D0, SCL, CLK |
ทำหน้าที่เป็นเข็มนาฬิกา ใช้สำหรับทั้ง I2C และ SPI |
SDA |
D1, MOSI |
พินข้อมูลของโมดูล ใช้สำหรับทั้ง IIC และ SPI |
RES |
RST, รีเซ็ต |
รีเซ็ตโมดูล (มีประโยชน์ระหว่าง SPI) |
กระแสตรง |
A0 |
พินคำสั่งข้อมูล ใช้สำหรับโปรโตคอล SPI |
CS |
ชิปเลือก |
มีประโยชน์เมื่อใช้มากกว่าหนึ่งโมดูลภายใต้โปรโตคอล SPI |
เราได้กล่าวถึงบทความฉบับเต็มเกี่ยวกับจอแสดงผล OLED และประเภทต่างๆที่นี่
ข้อมูลจำเพาะของ OLED:
- IC ไดร์เวอร์ OLED: SSD1306
- ความละเอียด: 128 x 64
- มุมมองภาพ:> 160 °
- แรงดันไฟฟ้าอินพุต: 3.3V ~ 6V
- พิกเซลสี: น้ำเงิน
- อุณหภูมิในการทำงาน: -30 ° C ~ 70 ° C
เรียนรู้เพิ่มเติมเกี่ยวกับ OLED และการเชื่อมต่อกับไมโครคอนโทรลเลอร์ต่างๆโดยไปที่ลิงค์
แผนภาพวงจรสำหรับเครื่องวิเคราะห์คุณภาพอากาศ
แผนภาพวงจรสำหรับการวัดอนุภาค PM2.5 และ PM10 โดยใช้ Arduinoนั้นง่ายมากและระบุไว้ด้านล่าง
เซ็นเซอร์ SDS011 และโมดูลจอแสดงผล OLED ใช้พลังงาน + 5V และ GND หมุดส่งและตัวรับของ SDS011 เชื่อมต่อกับหมุด D3 และ D4 ของ Arduino Nano เนื่องจากโมดูลจอแสดงผล OLED ใช้การสื่อสาร SPI เราจึงได้สร้างการสื่อสาร SPI ระหว่างโมดูล OLED และ Arduino Nano การเชื่อมต่อดังแสดงในตารางด้านล่าง:
ส. เลขที่ |
ขาโมดูล OLED |
Arduino Pin |
1 |
GND |
พื้น |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
กระแสตรง |
11 |
7 |
CS |
12 |
การสร้างวงจรบน Perf Board
ฉันยังบัดกรีส่วนประกอบทั้งหมดบนบอร์ด perf เพื่อให้ดูเรียบร้อย แต่คุณสามารถทำบนเขียงหั่นขนมได้ด้วย บอร์ดที่ผมทำอยู่ด้านล่าง ในขณะที่บัดกรีตรวจสอบให้แน่ใจว่าคุณไม่ได้เรียงสายไฟ บอร์ด perf ที่ฉันบัดกรีแสดงไว้ด้านล่าง:
คำอธิบายรหัสสำหรับเครื่องตรวจวัดคุณภาพอากาศ
รหัสที่สมบูรณ์สำหรับโครงการนี้จะได้รับในตอนท้ายของเอกสาร เรากำลังอธิบายส่วนสำคัญบางส่วนของโค้ด
รหัสที่ใช้SDS011, Adafruit_GFX ,และ Adafruit_SSD1306 ห้องสมุด ไลบรารีเหล่านี้สามารถดาวน์โหลดได้จาก Library Manager ใน Arduino IDE และสามารถติดตั้งได้จากที่นั่น สำหรับที่เปิด Arduino IDE และไปที่ ร่าง> รวมห้องสมุด> จัดการห้องสมุด ตอนนี้ค้นหา SDS011 และติดตั้งไลบรารีเซ็นเซอร์ SDS โดย R. Zschiegner
ในทำนองเดียวกันการติดตั้ง Adafruit GFX และ Adafruit SSD1306 ห้องสมุดโดย Adafruit
หลังจากติดตั้งไลบรารีไปยัง Arduino IDE แล้วให้เริ่มโค้ดโดยรวมไฟล์ไลบรารีที่จำเป็น
# รวม
ในบรรทัดถัดไปกำหนดตัวแปรสองตัวเพื่อเก็บค่า PM10 และ PM2.5
ลอย p10, p25;
จากนั้นกำหนดความกว้างและความสูงของ 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);
ตอนนี้อยู่ในฟังก์ชันการ ตั้งค่า () เริ่มต้น Serial Monitor ที่อัตราการส่งข้อมูล 9600 เพื่อวัตถุประสงค์ในการดีบัก นอกจากนี้เตรียมใช้จอแสดงผล OLED และเซ็นเซอร์ SDS011 กับ เริ่มต้น () ฟังก์ชั่น
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
ภายใน void loop () อ่านค่า PM10 และ PM2.5 จากเซ็นเซอร์ SDS011 และพิมพ์ค่าที่อ่านบนจอภาพแบบอนุกรม
ห่วงเป็นโมฆะ () {error = my_sds.read (& p25, & p10); ถ้า (! error) {Serial.println ("P2.5:" + String (p25)); Serial.println ("P10:" + สตริง (p10));
หลังจากนั้นกำหนดขนาดตัวอักษรและข้อความสีโดยใช้ setTextSize () และ SetTextColor ()
display.setTextSize (2); display.setTextColor (สีขาว);
จากนั้นในบรรทัดถัดไปกำหนดตำแหน่งที่จะเริ่มต้นข้อความโดยใช้ SetCursor (x, y) วิธีการ ในที่นี้เราจะแสดงค่า PM2.5 และ PM10 บนจอแสดงผล OLED ดังนั้นบรรทัดแรกเริ่มต้นที่ (0,15) ในขณะที่บรรทัดที่สองเริ่มต้นที่พิกัด (0, 40)
display.setCursor (0,15); display.println ("PM2.5"); display.setCursor (67,15); display.println (หน้า 25); display.setCursor (0,40); display.println ("PM10"); display.setCursor (67,40); display.println (p10);
และสุดท้ายเรียกวิธี display () เพื่อแสดงข้อความบนจอแสดงผล OLED
display.display (); display.clearDisplay ();
การทดสอบการตรวจสอบคุณภาพอากาศ Arduino
เมื่อฮาร์ดแวร์และรหัสพร้อมแล้วก็ถึงเวลาทดสอบอุปกรณ์ สำหรับสิ่งนั้นให้เชื่อมต่อ Arduino กับแล็ปท็อปเลือกบอร์ดและพอร์ตแล้วกดปุ่มอัปโหลด ดังที่คุณเห็นในภาพด้านล่างจะแสดงค่า PM2.5 และ PM10 บนจอแสดงผล OLED
วิดีโอและรหัสการทำงานที่สมบูรณ์จะได้รับด้านล่าง หวังว่าคุณจะสนุกกับบทช่วยสอนและเรียนรู้สิ่งที่เป็นประโยชน์ หากคุณมีคำถามใด ๆ โปรดทิ้งไว้ในส่วนความคิดเห็นหรือใช้ฟอรัมของเราสำหรับคำถามทางเทคนิคอื่น ๆ