- ส่วนประกอบที่จำเป็น
- Nova PM Sensor SDS011 สำหรับการวัด PM2.5 และ PM10
- พื้นฐานของโมดูลการแสดงผล OLED 0.96 '
- การเตรียมเซ็นเซอร์ MQ-7 เพื่อวัดก๊าซคาร์บอนมอนอกไซด์ (CO)
- การคำนวณดัชนีคุณภาพอากาศ
- แผนภูมิวงจรรวม
- การสร้างวงจรระบบตรวจสอบคุณภาพอากาศบน Perf Board
- การตั้งค่า Adafruit IO
- คำอธิบายรหัสสำหรับ
- ปลอกพิมพ์ 3 มิติสำหรับระบบตรวจสอบ AQI
- การทดสอบระบบตรวจสอบ AQI
เมื่อฤดูหนาวเข้ามาอากาศที่แขวนอยู่เหนือเราจะหนาขึ้นด้วยควันและการปล่อยก๊าซจากทุ่งเผาโรงงานอุตสาหกรรมและการจราจรของยานพาหนะปิดกั้นแสงแดดและทำให้หายใจลำบาก ผู้เชี่ยวชาญกล่าวว่ามลพิษทางอากาศในระดับสูงและการแพร่ระบาดของโควิด -19 อาจเป็นส่วนผสมที่อันตรายและส่งผลร้ายแรงได้ ความจำเป็นในการตรวจสอบคุณภาพอากาศแบบเรียลไทม์นั้นน่าจับตามองมาก
ดังนั้นในโครงการนี้เราจะสร้างระบบตรวจสอบคุณภาพอากาศ ESP32โดยใช้เซ็นเซอร์ Nova PM SDS011, เซ็นเซอร์ MQ-7 และเซ็นเซอร์ DHT11 นอกจากนี้เราจะใช้โมดูลจอแสดงผล OLED เพื่อแสดงค่าคุณภาพอากาศ คุณภาพอากาศดัชนี (AQI) ในอินเดียจะขึ้นอยู่กับแปดมลพิษ PM10, PM2.5, SO2 และ NO2, CO, โอโซน, NH3 และตะกั่ว อย่างไรก็ตามไม่จำเป็นต้องตรวจวัดมลพิษทั้งหมด ดังนั้นเราจะวัดความเข้มข้นของ PM2.5, PM10 และคาร์บอนมอนอกไซด์เพื่อคำนวณดัชนีคุณภาพอากาศ ค่า AQI จะเผยแพร่บน Adafruit IO เพื่อให้เราตรวจสอบได้จากทุกที่ ก่อนหน้านี้เราได้วัดความเข้มข้นของก๊าซ LPG ควันและแอมโมเนียโดยใช้ Arduino
ส่วนประกอบที่จำเป็น
- ESP32
- เซ็นเซอร์ Nova PM SDS011
- 0.96 'SPI โมดูลแสดงผล OLED
- DHT11 เซนเซอร์
- เซ็นเซอร์ MQ-7
- สายจัมเปอร์
Nova PM Sensor SDS011 สำหรับการวัด PM2.5 และ PM10
เซ็นเซอร์ SDS011 เป็นเซ็นเซอร์คุณภาพอากาศรุ่นล่าสุดที่พัฒนาโดย Nova Fitness ทำงานบนหลักการของการกระเจิงด้วยเลเซอร์และสามารถรับความเข้มข้นของอนุภาคระหว่าง 0.3 ถึง10μmในอากาศ เซ็นเซอร์นี้ประกอบด้วยพัดลมขนาดเล็กวาล์วอากาศเข้าเลเซอร์ไดโอดและโฟโตไดโอด อากาศเข้าทางช่องอากาศซึ่งแหล่งกำเนิดแสง (เลเซอร์) ส่องสว่างอนุภาคและแสงที่กระจัดกระจายจะถูกเปลี่ยนเป็นสัญญาณโดยเครื่องตรวจจับแสง จากนั้นสัญญาณเหล่านี้จะถูกขยายและประมวลผลเพื่อให้ได้ความเข้มข้นของอนุภาค PM2.5 และ PM10 ก่อนหน้านี้เราใช้ Nova PM Sensor กับ Arduino เพื่อคำนวณความเข้มข้นของ PM10 & PM2.5
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
พื้นฐานของโมดูลการแสดงผล OLED 0.96 '
OLED (Organic Light Emitting Diode) เป็นไดโอดเปล่งแสงชนิดหนึ่งที่สร้างขึ้นโดยใช้สารประกอบอินทรีย์ที่กระตุ้นเมื่อกระแสไฟฟ้าได้รับอนุญาตให้ไหลผ่านได้ สารประกอบอินทรีย์เหล่านี้มีแสงในตัวเองจึงไม่ต้องใช้วงจรแบ็คไลท์เหมือน LCD ทั่วไป ด้วยเหตุนี้เทคโนโลยีจอแสดงผล OLED จึงประหยัดพลังงานและใช้กันอย่างแพร่หลายในโทรทัศน์และผลิตภัณฑ์จอแสดงผลอื่น ๆ
OLED ประเภทต่างๆมีวางจำหน่ายในท้องตลาดโดยพิจารณาจากสีของจอแสดงผลจำนวนพินขนาดและ IC คอนโทรลเลอร์ ในบทช่วยสอนนี้เราจะใช้โมดูล Monochrome Blue 7-pin SSD1306 0.96” OLED ซึ่งกว้าง 128 พิกเซลและยาว 64 พิกเซล OLED 7 พินนี้รองรับโปรโตคอล SPI และคอนโทรลเลอร์ IC SSD1306 ช่วยให้ OLED แสดงอักขระที่ได้รับ เรียนรู้เพิ่มเติมเกี่ยวกับ OLED และการเชื่อมต่อกับไมโครคอนโทรลเลอร์ต่างๆโดยไปที่ลิงค์
การเตรียมเซ็นเซอร์ MQ-7 เพื่อวัดก๊าซคาร์บอนมอนอกไซด์ (CO)
MQ-7 CO โมดูลเซ็นเซอร์ก๊าซคาร์บอนมอนอกไซด์ตรวจจับความเข้มข้นของ CO ในอากาศ เซ็นเซอร์สามารถวัดความเข้มข้น 10 ถึง 10,000 ppm เซ็นเซอร์ MQ-7 สามารถซื้อเป็นโมดูลหรือเป็นเซ็นเซอร์เพียงอย่างเดียว ก่อนหน้านี้เราได้ใช้เซ็นเซอร์ก๊าซหลายประเภทเพื่อตรวจจับและวัดก๊าซต่างๆคุณสามารถตรวจสอบได้หากคุณสนใจ ในโครงการนี้เรากำลังใช้โมดูลเซ็นเซอร์ MQ-7เพื่อวัดความเข้มข้นของคาร์บอนมอนอกไซด์ใน PPM แผนภาพวงจรสำหรับบอร์ด MQ-7 แสดงไว้ด้านล่าง:
ตัวต้านทานโหลด RL มีบทบาทสำคัญมากในการทำให้เซ็นเซอร์ทำงาน ตัวต้านทานนี้เปลี่ยนค่าความต้านทานตามความเข้มข้นของก๊าซ บอร์ดเซ็นเซอร์ MQ-7 มาพร้อมกับความต้านทานโหลด1KΩซึ่งไม่มีประโยชน์และส่งผลต่อการอ่านเซ็นเซอร์ ดังนั้นในการวัดค่าความเข้มข้นของ CO ที่เหมาะสมคุณต้องแทนที่ตัวต้านทาน1KΩด้วยตัวต้านทาน10KΩ
การคำนวณดัชนีคุณภาพอากาศ
AQI ในอินเดียคำนวณจากความเข้มข้นเฉลี่ยของสารมลพิษที่วัดได้ในช่วงเวลามาตรฐาน (24 ชั่วโมงสำหรับสารมลพิษส่วนใหญ่ 8 ชั่วโมงสำหรับคาร์บอนมอนอกไซด์และโอโซน) ตัวอย่างเช่น AQI สำหรับ PM2.5 และ PM10 จะขึ้นอยู่กับความเข้มข้นเฉลี่ย 24 ชั่วโมงและ AQI สำหรับคาร์บอนมอนอกไซด์จะขึ้นอยู่กับความเข้มข้นเฉลี่ย 8 ชั่วโมง) การคำนวณ AQI ประกอบด้วยสารมลพิษแปดชนิด ได้แก่ PM10, PM2.5, ไนโตรเจนไดออกไซด์ (NO 2), ซัลเฟอร์ไดออกไซด์ (SO 2), คาร์บอนมอนอกไซด์ (CO), โอโซนระดับพื้นดิน (O 3), แอมโมเนีย (NH 3), และตะกั่ว (Pb) อย่างไรก็ตามไม่มีการตรวจวัดมลพิษทั้งหมดในทุกสถานที่
จากความเข้มข้นของสารมลพิษที่วัดได้ตลอด 24 ชั่วโมงดัชนีย่อยจะถูกคำนวณซึ่งเป็นฟังก์ชันเชิงเส้นของความเข้มข้น (เช่นดัชนีย่อยสำหรับ PM2.5 จะเท่ากับ 51 ที่ความเข้มข้น 31 µg / m3, 100 ที่ความเข้มข้น 60 µg / m3 และ 75 ที่ความเข้มข้น 45 µg / m3) ดัชนีย่อยที่แย่ที่สุด (หรือค่าสูงสุดของพารามิเตอร์ทั้งหมด) กำหนด AQI โดยรวม
แผนภูมิวงจรรวม
แผนภาพวงจรสำหรับระบบตรวจสอบคุณภาพอากาศโดยใช้ IoTนั้นง่ายมากและระบุไว้ด้านล่าง:
เซ็นเซอร์ SDS011, DHT11 และเซ็นเซอร์ MQ-7 ใช้พลังงาน + 5V ในขณะที่โมดูลจอแสดงผล OLED ใช้พลังงาน 3.3V หมุดตัวส่งและตัวรับของ SDS011 เชื่อมต่อกับ GPIO16 และ 17 ของ ESP32 พิน Analog Out ของเซ็นเซอร์ MQ-7 เชื่อมต่อกับ GPIO 25 และพินข้อมูลของเซ็นเซอร์ DHT11 เชื่อมต่อกับเซ็นเซอร์ GPIO27 เนื่องจากโมดูลจอแสดงผล OLED ใช้การสื่อสาร SPI เราจึงได้สร้างการสื่อสาร SPI ระหว่างโมดูล OLED และ ESP32 การเชื่อมต่อดังแสดงในตารางด้านล่าง:
ส. เลขที่ |
ขาโมดูล OLED |
ESP32 พิน |
1 |
GND |
พื้น |
2 |
VCC |
5V |
3 |
D0 |
18 |
4 |
D1 |
23 |
5 |
RES |
2 |
6 |
กระแสตรง |
4 |
7 |
CS |
5 |
ส. เลขที่ |
SDS011 พิน |
ESP32 พิน |
1 |
5V |
5V |
2 |
GND |
GND |
3 |
RX |
17 |
4 |
TX |
16 |
ส. เลขที่ |
DHT พิน |
ESP32 พิน |
1 |
Vcc |
5V |
2 |
GND |
GND |
3 |
ข้อมูล |
27 |
ส. เลขที่ |
MQ-7 พิน |
ESP32 พิน |
1 |
Vcc |
5V |
2 |
GND |
GND |
3 |
A0 |
25 |
การสร้างวงจรระบบตรวจสอบคุณภาพอากาศบน Perf Board
ดังที่คุณเห็นจากภาพหลักแนวคิดคือการใช้วงจรนี้ภายในปลอกพิมพ์ 3 มิติ ดังนั้นวงจรทั้งหมดที่แสดงด้านบนจึงถูกบัดกรีเข้ากับบอร์ด perf ตรวจสอบให้แน่ใจว่าใช้สายไฟโดยเว้นระยะห่างเพียงพอที่จะติดตั้ง OLED และเซนเซอร์ บอร์ด perf ของฉันบัดกรีเข้ากับ OLED และโมดูลเซ็นเซอร์ดังแสดงด้านล่าง
การตั้งค่า Adafruit IO
Adafruit IO เป็นแพลตฟอร์มข้อมูลแบบเปิดที่ให้คุณรวบรวมแสดงภาพและวิเคราะห์ข้อมูลสดบนคลาวด์ การใช้ Adafruit IO คุณสามารถอัปโหลดแสดงและตรวจสอบข้อมูลของคุณผ่านทางอินเทอร์เน็ตและทำให้โครงการของคุณเปิดใช้งาน IoT คุณสามารถควบคุมมอเตอร์อ่านข้อมูลเซ็นเซอร์และสร้างแอปพลิเคชัน IoT ที่ยอดเยี่ยมผ่านอินเทอร์เน็ตโดยใช้ Adafruit IO
ในการใช้ Adafruit IO ขั้นแรกให้สร้างบัญชีบน Adafruit IO โดยไปที่เว็บไซต์ Adafruit IO และคลิกที่ 'เริ่มต้นใช้งานฟรี' ที่ด้านบนขวาของหน้าจอ
หลังจากเสร็จสิ้นขั้นตอนการสร้างบัญชีเข้าสู่ระบบบัญชีและคลิกที่ 'ดูคีย์ AIO' ที่มุมขวาบนเพื่อรับชื่อผู้ใช้บัญชีและรหัส AIO
เมื่อคุณคลิกที่ 'คีย์ AIO' จะมีหน้าต่างปรากฏขึ้นพร้อมกับคีย์ Adafruit IO AIO และชื่อผู้ใช้ คัดลอกคีย์และชื่อผู้ใช้นี้จะใช้ในรหัส
หลังจากได้รับคีย์ AIO แล้วให้สร้างฟีดเพื่อเก็บข้อมูลเซ็นเซอร์ DHT ในการสร้างฟีดให้คลิกที่ 'ฟีด' จากนั้นคลิกที่ "การดำเนินการ" จากนั้นเลือก "สร้างฟีดใหม่" จากตัวเลือกที่มีให้
หลังจากนี้หน้าต่างใหม่จะเปิดขึ้นซึ่งคุณต้องป้อนชื่อและคำอธิบายของฟีด การเขียนคำอธิบายเป็นทางเลือก
คลิกที่ 'สร้าง' หลังจากนี้ คุณจะถูกเปลี่ยนเส้นทางไปยังฟีดที่สร้างขึ้นใหม่
สำหรับโครงการนี้เราได้สร้างฟีดทั้งหมดหกฟีดสำหรับค่า PM10, PM2.5, CO, อุณหภูมิ, ความชื้นและ AQI ทำตามขั้นตอนเดียวกันกับด้านบนเพื่อสร้างส่วนที่เหลือของฟีด
หลังจากสร้างฟีดแล้วตอนนี้เราจะสร้างคุณลักษณะแดชบอร์ด Adafruit IO เพื่อแสดงภาพข้อมูลเซ็นเซอร์ในหน้าเดียว ก่อนอื่นให้สร้างแดชบอร์ดจากนั้นเพิ่มฟีดทั้งหมดเหล่านี้ในแดชบอร์ดนั้น
ในการสร้างแดชบอร์ดคลิกที่ตัวเลือกแดชบอร์ดจากนั้นคลิกที่ 'การดำเนินการ' จากนั้นคลิกที่ 'สร้างแดชบอร์ดใหม่'
ในหน้าต่างถัดไปให้ป้อนชื่อของแผงควบคุมและคลิกที่ 'สร้าง'
เมื่อสร้างแดชบอร์ดแล้วตอนนี้เราจะใช้บล็อก Adafruit IO เช่น Gauge และ Slider เพื่อแสดงภาพข้อมูล หากต้องการเพิ่มบล็อกให้คลิกที่ "+" ที่มุมขวาบน
จากนั้นเลือกบล็อก 'เกจ'
ในหน้าต่างถัดไปเลือกข้อมูลฟีดที่คุณต้องการแสดงภาพ
ในขั้นตอนสุดท้ายเปลี่ยนการตั้งค่าบล็อกเพื่อปรับแต่ง
ตอนนี้ทำตามขั้นตอนเดียวกับด้านบนเพื่อเพิ่มบล็อกการแสดงภาพสำหรับส่วนที่เหลือของฟีด Adafruit IO Dashboard ของฉันมีลักษณะดังนี้:
คำอธิบายรหัสสำหรับ
รหัสที่สมบูรณ์สำหรับโครงการนี้จะได้รับในตอนท้ายของเอกสาร เรากำลังอธิบายส่วนสำคัญบางส่วนของโค้ด
รหัสที่ใช้SDS011, Adafruit_GFX, Adafruit_SSD1306, Adafruit_MQTT,และDHT.hห้องสมุด คุณสามารถดาวน์โหลดไลบรารี SDS011, Adafruit_GFX และ Adafruit_SSD1306 ได้จาก Library Manager ใน Arduino IDE และติดตั้งจากที่นั่น สำหรับที่เปิด Arduino IDE และไปที่ ร่าง < ได้แก่ ห้องสมุด <จัดการห้องสมุด ตอนนี้ค้นหา SDS011 และติดตั้งไลบรารีเซ็นเซอร์ SDS โดย R. Zschiegner
ในทำนองเดียวกันการติดตั้งAdafruit GFX และ Adafruit SSD1306 ห้องสมุดโดย Adafruit Adafruit_MQTT.h และ DHT11.h สามารถดาวน์โหลดได้จากลิงค์ที่ให้มา
หลังจากติดตั้งไลบรารีไปยัง Arduino IDE แล้วให้เริ่มโค้ดโดยรวมไฟล์ไลบรารีที่จำเป็น
# รวม
ในบรรทัดถัดไปกำหนดความกว้างและความสูงของจอแสดงผล OLED ในโครงการนี้ฉันใช้จอแสดงผล OLED ขนาด 128 × 64 SPI คุณสามารถเปลี่ยน SCREEN_WIDTH และ SCREEN_HEIGHT ตัวแปรตามที่แสดงของคุณ
# กำหนด SCREEN_WIDTH 128 # กำหนด SCREEN_HEIGHT 64
จากนั้นกำหนดพินการสื่อสาร SPI ที่เชื่อมต่อจอแสดงผล OLED
# กำหนด OLED_MOSI 23 # กำหนด OLED_CLK 18 # กำหนด OLED_DC 4 # กำหนด OLED_CS 5 # กำหนด OLED_RESET 2
จากนั้นสร้างอินสแตนซ์สำหรับการแสดงผล Adafruit ด้วยความกว้างและความสูงและโปรโตคอลการสื่อสาร SPI ที่กำหนดไว้ก่อนหน้านี้
จอแสดงผล Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
จากนั้นรวมข้อมูลรับรอง WiFi และ Adafruit IO ที่คุณคัดลอกจากเซิร์ฟเวอร์ Adafruit IO สิ่งเหล่านี้จะรวมถึงเซิร์ฟเวอร์ MQTT, หมายเลขพอร์ต, ชื่อผู้ใช้และคีย์ AIO
const ถ่าน * ssid = "Galaxy-M20"; const ถ่าน * ผ่าน = "ac312124"; #define MQTT_SERV "io.adafruit.com" #define MQTT_PORT 1883 #define MQTT_NAME "choudharyas" #define MQTT_PASS "988c4e045ef64c1b9bc8b5bb7ef5f2d9"
จากนั้นตั้งค่าฟีด Adafruit IO สำหรับจัดเก็บข้อมูลเซ็นเซอร์ ในกรณีของฉันฉันได้กำหนดฟีดหกฟีดเพื่อจัดเก็บข้อมูลเซ็นเซอร์ที่แตกต่างกัน ได้แก่: AirQuality, Temperature, Humidity, PM10, PM25 และ CO
Adafruit_MQTT_Client mqtt (& ไคลเอนต์, MQTT_SERV, MQTT_PORT, MQTT_NAME, MQTT_PASS); Adafruit_MQTT_Publish AirQuality = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / AirQuality"); Adafruit_MQTT_Publish Temperature = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / Temperature"); Adafruit_MQTT_Publish Humidity = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / Humidity"); Adafruit_MQTT_Publish PM10 = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / PM10"); Adafruit_MQTT_Publish PM25 = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / PM25"); Adafruit_MQTT_Publish CO = Adafruit_MQTT_Publish (& mqtt, MQTT_NAME "/ f / CO");
ตอนนี้อยู่ในฟังก์ชันการ ตั้งค่า () เริ่มต้น Serial Monitor ที่อัตราการส่งข้อมูล 9600 เพื่อวัตถุประสงค์ในการดีบัก เริ่มต้นจอแสดงผล OLED เซ็นเซอร์ DHT และเซ็นเซอร์ SDS011 ด้วยฟังก์ชัน เริ่มต้น ()
การตั้งค่าเป็นโมฆะ () {my_sds.begin (16,17); Serial.begin (9600); dht.begin (); display.begin (SSD1306_SWITCHCAPVCC);
สำหรับวง ภายใน การตั้งค่า ฟังก์ชั่นที่ใช้ในการเก็บค่าได้ถึงจำนวนที่กำหนดไว้และตั้งเคาน์เตอร์ให้เป็นศูนย์แล้ว
สำหรับ (int thisReading1 = 0; thisReading1 <numReadingsPM10; thisReading1 ++) {readingsPM10 = 0; }
การอ่านค่าเซนเซอร์:
ตอนนี้อยู่ในฟังก์ชันลูปให้ใช้วิธี มิลลิวินาที () เพื่ออ่านค่าเซ็นเซอร์ทุก ๆ หนึ่งชั่วโมง เซ็นเซอร์ก๊าซแต่ละตัวส่งออกค่าอนาล็อกตั้งแต่ 0 ถึง 4095 ในการแปลงค่านี้เป็นแรงดันไฟฟ้าให้ใช้สมการต่อไปนี้: RvRo = MQ7Raw * (3.3 / 4095) โดยที่ MQ7Raw คือค่าอนาล็อกจากขาอนาล็อกของเซ็นเซอร์ นอกจากนี้อ่านค่า PM2.5 และ PM10 จากเซ็นเซอร์ SDS011
ถ้า ((ไม่ได้ลงนามแบบยาว) (currentMillis - previousMillis)> = ช่วงเวลา) {MQ7Raw = analogRead (iMQ7); RvRo = MQ7Raw * (3.3 / 4095); MQ7ppm = 3.027 * ประสบการณ์ (1.0698 * (RvRo)); Serial.println (MQ7ppm); ข้อผิดพลาด = my_sds.read (& p25, & p10); ถ้า (! error) {Serial.println ("P2.5:" + String (p25)); Serial.println ("P10:" + สตริง (p10)); }}
การแปลงค่า:
ค่า PM10 และ PM2.5 มีอยู่แล้วในไมโครกรัม / m 3แต่เราต้องแปลงค่าก๊าซคาร์บอนมอนออกไซด์จาก PPM ถึง mg / m 3 สูตรการแปลงได้รับด้านล่าง:
ความเข้มข้น (mg / m 3) = ความเข้มข้น (PPM) × (มวลโมเลกุล (g / mol) / ปริมาตรโมลาร์ (L))
โดยที่: มวลโมเลกุลของ CO เท่ากับ 28.06 g / mol และ Molar Volume คือ 24.45L ที่ 25 0 C
ConcentrationINmgm3 = MQ7ppm * (28.06 / 24.45); Serial.println (ConcentrationINmgm3);
การคำนวณค่าเฉลี่ย 24 ชั่วโมง:
จากนั้นในบรรทัดถัดไปให้คำนวณค่าเฉลี่ย 24 ชั่วโมงสำหรับค่า PM10 การอ่านค่า PM2.5 และค่าเฉลี่ย 8 ชั่วโมงสำหรับการอ่านค่าคาร์บอนมอนอกไซด์ ในบรรทัดแรกของโค้ดให้นำผลรวมปัจจุบันและลบองค์ประกอบแรกในอาร์เรย์แล้วบันทึกเป็นผลรวมใหม่ เริ่มแรกจะเป็น Zero จากนั้นรับค่าเซ็นเซอร์และเพิ่มการอ่านปัจจุบันเป็นผลรวมและเพิ่มดัชนีตัวเลข หากค่าของดัชนีเท่ากับหรือมากกว่า numReadings ให้ตั้งค่าดัชนีกลับเป็นศูนย์
totalPM10 = totalPM10 - readingsPM10; readingsPM10 = p10; totalPM10 = totalPM10 + readingsPM10; readIndexPM10 = readIndexPM10 + 1; ถ้า (readIndexPM10> = numReadingsPM10) {readIndexPM10 = 0; }
จากนั้นเผยแพร่ค่าเหล่านี้ใน Adafruit IO ในที่สุด
ถ้า (! temperature.publish (อุณหภูมิ)) {ล่าช้า (30000); } if (! Humidity.publish (ความชื้น)) {ล่าช้า (30000); ………………………………………………………. ……………………………………………………….
ปลอกพิมพ์ 3 มิติสำหรับระบบตรวจสอบ AQI
ต่อไปฉันวัดขนาดของการตั้งค่าโดยใช้เวอร์เนียของฉันและยังวัดขนาดของเซ็นเซอร์และ OLED เพื่อออกแบบปลอก การออกแบบของฉันมีลักษณะดังนี้ด้านล่างเมื่อเสร็จสิ้น
หลังจากที่ฉันพอใจกับการออกแบบแล้วฉันก็ส่งออกเป็นไฟล์ STL หั่นบาง ๆ ตามการตั้งค่าเครื่องพิมพ์และพิมพ์ออกมาในที่สุด อีกครั้งไฟล์ STL สามารถดาวน์โหลดได้จาก Thingiverse และคุณสามารถพิมพ์ปลอกโดยใช้มันได้
หลังจากพิมพ์เสร็จแล้วฉันก็ดำเนินการประกอบโปรเจ็กต์ที่ติดตั้งในตู้ถาวรเพื่อติดตั้งในโรงงาน ด้วยการเชื่อมต่อที่สมบูรณ์ฉันประกอบวงจรเข้ากับปลอกและทุกอย่างก็เข้ากันได้ดีอย่างที่เห็นที่นี่
การทดสอบระบบตรวจสอบ AQI
เมื่อฮาร์ดแวร์และรหัสพร้อมแล้วก็ถึงเวลาทดสอบอุปกรณ์ เราใช้อะแดปเตอร์ภายนอก 12V 1A เพื่อจ่ายไฟให้กับอุปกรณ์ อย่างที่คุณเห็นอุปกรณ์จะแสดงความเข้มข้นของ PM10, PM2.5 และคาร์บอนมอนอกไซด์บนจอแสดงผล OLED ความเข้มข้นของ PM2.5 PM10 และอยู่ในไมโครกรัม / m 3ในขณะที่ความเข้มข้นของก๊าซคาร์บอนมอนออกไซด์ที่อยู่ในมก. / ม. 3
การอ่านเหล่านี้จะเผยแพร่บนแดชบอร์ด Adafruit IO ค่าสูงสุดของพารามิเตอร์ทั้งหมด (PM10, PM2.5 & CO) จะเป็น AQI
ค่า AQI ของ 30 วันที่ผ่านมาจะแสดงเป็นกราฟ
นี่คือวิธีที่คุณสามารถใช้เซ็นเซอร์ SDS011 และ MQ-7 เพื่อคำนวณดัชนีคุณภาพอากาศ คุณสามารถดูการทำงานทั้งหมดของโครงการได้ในวิดีโอที่ลิงก์ด้านล่าง หวังว่าคุณจะสนุกกับโครงการและพบว่ามันน่าสนใจที่จะสร้างของคุณเอง หากคุณมีคำถามใด ๆ โปรดทิ้งไว้ในส่วนความคิดเห็นด้านล่าง