- ส่วนประกอบที่จำเป็น
- เซ็นเซอร์ CO2 อินฟราเรดแรงโน้มถ่วง
- 0.96 'โมดูลแสดงผล OLED
- แผนภูมิวงจรรวม
- รหัส Arduino เพื่อวัดความเข้มข้นของ CO2
- การทดสอบการเชื่อมต่อของเซ็นเซอร์ CO2 แรงโน้มถ่วงอินฟราเรด
ความเข้มข้นของก๊าซคาร์บอนไดออกไซด์ที่เพิ่มขึ้นในอากาศกลายเป็นปัญหาร้ายแรงในขณะนี้ ตามรายงานของ NOAA ความเข้มข้นของโอโซน CO2 สูงถึง 0.0385 เปอร์เซ็นต์ (385 ppm) และเป็นปริมาณสูงสุดในรอบ 2.1 ล้านปี ซึ่งหมายความว่าในอากาศหนึ่งล้านอนุภาคมีคาร์บอนไดออกไซด์ 385 อนุภาค ระดับ CO2 ที่เพิ่มขึ้นนี้ส่งผลกระทบต่อสิ่งแวดล้อมอย่างเลวร้ายและทำให้เราต้องเผชิญกับสถานการณ์เช่นการเปลี่ยนแปลงสภาพภูมิอากาศและภาวะโลกร้อน มีอุปกรณ์ตรวจวัดคุณภาพอากาศจำนวนมากที่ติดตั้งบนถนนเพื่อบอกระดับ CO2 แต่เรายังสามารถสร้างอุปกรณ์ตรวจวัด CO2 แบบ DIYและสามารถติดตั้งในพื้นที่ของเราได้
ในบทช่วยสอนนี้เราจะเชื่อมต่อ Gravity Infrared CO2 Sensor กับ Arduino เพื่อวัดความเข้มข้นของ CO2 ใน PPM Gravity Infrared CO2 Sensorเป็นเซนเซอร์ CO2 แบบอะนาล็อกที่มีความแม่นยำสูง วัดปริมาณ CO2 ในช่วง 0 ถึง 5,000 ppm คุณยังสามารถตรวจสอบโครงการก่อนหน้าของเราที่เราใช้เซ็นเซอร์ MQ135 Gas, เซ็นเซอร์ Sharp GP2Y1014AU0F และเซ็นเซอร์ Nova PM SDS011 เพื่อสร้างเครื่องตรวจสอบคุณภาพอากาศ
ส่วนประกอบที่จำเป็น
- Arduino นาโน
- เซ็นเซอร์ CO2 แรงโน้มถ่วงอินฟราเรด V1.1
- สายจัมเปอร์
- 0.96 'SPI โมดูลแสดงผล OLED
- เขียงหั่นขนม
เซ็นเซอร์ CO2 อินฟราเรดแรงโน้มถ่วง
Gravity Infrared CO2 Sensor V1.1 เป็นเซ็นเซอร์ CO2 อินฟราเรดอะนาล็อกที่มีความแม่นยำสูงรุ่นล่าสุดที่ DFRobot ออก เซ็นเซอร์นี้ใช้เทคโนโลยีอินฟราเรดแบบไม่กระจายตัว (NDIR) และมีการคัดเลือกที่ดีและการพึ่งพาโดยไม่ใช้ออกซิเจน รวมการชดเชยอุณหภูมิและรองรับเอาต์พุต DAC ช่วงการวัดที่มีประสิทธิภาพของเซ็นเซอร์นี้อยู่ระหว่าง 0 ถึง 5,000ppm โดยมีความแม่นยำ± 50ppm + 3% เซ็นเซอร์อินฟราเรด CO2 นี้สามารถใช้ใน HVAC การตรวจสอบคุณภาพอากาศภายในอาคารกระบวนการอุตสาหกรรมและการตรวจสอบการป้องกันความปลอดภัยการตรวจสอบการเกษตรและการเลี้ยงสัตว์
Pinout เซ็นเซอร์ CO2 อินฟราเรด:
ดังที่ได้กล่าวไว้ก่อนหน้านี้อินฟราเรด CO2 เซนเซอร์มาพร้อมกับการเชื่อมต่อ 3 ขา รูปและตารางด้านล่างแสดงการกำหนดพินสำหรับเซนเซอร์อินฟราเรด CO2:
หมายเลขพิน |
ชื่อพิน |
คำอธิบาย |
---|---|---|
1 |
สัญญาณ |
เอาต์พุตอนาล็อก (0.4 ~ 2V) |
2 |
VCC |
VCC (4.5 ~ 5.5 โวลต์) |
3 |
GND |
GND |
ข้อมูลจำเพาะและคุณสมบัติของเซ็นเซอร์ CO2 อินฟราเรด:
- การตรวจจับก๊าซ: คาร์บอนไดออกไซด์ (CO2)
- แรงดันไฟฟ้า: 4.5 ~ 5.5V DC
- เวลาอุ่นเครื่อง: 3 นาที
- เวลาตอบสนอง: 120 วินาที
- อุณหภูมิในการทำงาน: 0 ~ 50 ℃
- ความชื้นในการทำงาน: 0 ~ 95% RH (ไม่มีการควบแน่น)
- กันน้ำและป้องกันการกัดกร่อน
- วงจรชีวิตสูง
- ป้องกันการรบกวนของไอน้ำ
0.96 'โมดูลแสดงผล OLED
OLED (Organic Light-Emitting Diodes) เป็นเทคโนโลยีการเปล่งแสงในตัวสร้างขึ้นโดยการวางฟิล์มบางอินทรีย์ไว้ระหว่างตัวนำสองตัว แสงจ้าเกิดขึ้นเมื่อกระแสไฟฟ้าถูกนำไปใช้กับฟิล์มเหล่านี้ OLED ใช้เทคโนโลยีเดียวกับโทรทัศน์ แต่มีพิกเซลน้อยกว่าทีวีส่วนใหญ่ของเรา
สำหรับโปรเจ็กต์นี้เราใช้จอแสดงผล OLED แบบ Monochrome 7-pin SSD1306 0.96 นิ้ว สามารถทำงานบนโปรโตคอลการสื่อสารที่แตกต่างกันสามแบบ: โหมด SPI 3 Wire, โหมดสี่สาย SPI และโหมด I2C พินและฟังก์ชันต่างๆอธิบายไว้ในตารางด้านล่าง:
เราได้กล่าวถึง OLED และประเภทโดยละเอียดแล้วในบทความก่อนหน้านี้
ชื่อพิน |
ชื่ออื่น |
คำอธิบาย |
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:
- IC ไดร์เวอร์ OLED: SSD1306
- ความละเอียด: 128 x 64
- มุมมองภาพ:> 160 °
- แรงดันไฟฟ้าอินพุต: 3.3V ~ 6V
- พิกเซลสี: น้ำเงิน
- อุณหภูมิในการทำงาน: -30 ° C ~ 70 ° C
เรียนรู้เพิ่มเติมเกี่ยวกับ OLED และการเชื่อมต่อกับไมโครคอนโทรลเลอร์ต่างๆโดยไปที่ลิงค์
แผนภูมิวงจรรวม
แผนภาพวงจรสำหรับเชื่อมต่อเซ็นเซอร์ CO2 อินฟราเรดแบบอนาล็อกแรงโน้มถ่วงสำหรับ Arduinoมีดังต่อไปนี้:
วงจรนั้นง่ายมากเพราะเราเชื่อมต่อเซ็นเซอร์ Gravity Infrared CO2 และโมดูลจอแสดงผล OLED กับ Arduino Nano เท่านั้น เซ็นเซอร์อินฟราเรด CO2 และโมดูลจอแสดงผล OLED ใช้พลังงาน + 5V และ GND พินสัญญาณ (Analog Out) ของเซ็นเซอร์ CO2 เชื่อมต่อกับขา A0 ของ 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 |
หลังจากเชื่อมต่อฮาร์ดแวร์ตามแผนภาพวงจรแล้วควรมีลักษณะดังนี้:
รหัส Arduino เพื่อวัดความเข้มข้นของ CO2
รหัสที่สมบูรณ์สำหรับโครงการGravity Analog Infrared CO2 Sensor สำหรับโครงการArduinoมีให้ที่ส่วนท้ายของเอกสาร เรากำลังอธิบายส่วนสำคัญบางส่วนของโค้ด
รหัสที่ใช้ Adafruit_GFX ,และ Adafruit_SSD1306 ห้องสมุด สามารถดาวน์โหลดไลบรารีเหล่านี้ได้จาก Library Manager ใน Arduino IDE และติดตั้งจากที่นั่น สำหรับที่เปิด Arduino IDE และไปที่ ร่าง> รวมห้องสมุด> จัดการห้องสมุด ตอนนี้ค้นหา Adafruit GFX และติดตั้งห้องสมุด Adafruit GFX โดย Adafruit
ในทำนองเดียวกันการติดตั้งห้องสมุด Adafruit SSD1306 โดย Adafruit เซ็นเซอร์อินฟราเรด CO2 ไม่ต้องการไลบรารีใด ๆ เนื่องจากเรากำลังอ่านค่าแรงดันไฟฟ้าโดยตรงจากขาอะนาล็อกของ Arduino
หลังจากติดตั้งไลบรารีไปยัง 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);
หลังจากนั้นกำหนดขา Arduino ที่เชื่อมต่อเซ็นเซอร์ CO2
เซ็นเซอร์ intIn = A0;
ตอนนี้อยู่ในฟังก์ชันการ ตั้งค่า () เริ่มต้น Serial Monitor ที่อัตราการส่งข้อมูล 9600 เพื่อวัตถุประสงค์ในการดีบัก นอกจากนี้เริ่มต้นจอแสดงผล OLED ด้วยฟังก์ชัน start ()
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); analogReference (ค่าเริ่มต้น);
ภายในฟังก์ชัน loop () ให้อ่านค่าสัญญาณที่ขา Analog ของ Arduino ก่อนโดยเรียกใช้ฟังก์ชัน analogRead () หลังจากนั้นให้แปลงค่าสัญญาณแอนะล็อกเหล่านี้เป็นค่าแรงดันไฟฟ้า
โมฆะ loop () {int sensorValue = analogRead (sensorIn); แรงดันลอย = sensorValue * (5000 / 1024.0);
หลังจากนั้นให้เปรียบเทียบค่าแรงดันไฟฟ้า หากแรงดันไฟฟ้าเท่ากับ 0 V แสดงว่ามีปัญหาบางอย่างเกิดขึ้นกับเซ็นเซอร์ หากแรงดันไฟฟ้ามากกว่า 0 V แต่น้อยกว่า 400 V แสดงว่าเซ็นเซอร์ยังอยู่ในกระบวนการทำความร้อนล่วงหน้า
ถ้า (แรงดันไฟฟ้า == 0) {Serial.println ("Fault"); } else if (แรงดันไฟฟ้า <400) {Serial.println ("preheating"); }
ถ้าแรงดันไฟฟ้าเท่ากับหรือมากกว่า 400 V ให้แปลงเป็นค่าความเข้มข้นของ CO2
อื่น ๆ {int voltage_diference = voltage-400; ความเข้มข้นของการลอย = voltage_diference * 50.0 / 16.0;
หลังจากนั้นกำหนดขนาดตัวอักษรและข้อความสีโดยใช้ setTextSize () และ SetTextColor ()
display.setTextSize (1); display.setTextColor (สีขาว);
จากนั้นในบรรทัดถัดไปกำหนดตำแหน่งที่ข้อความที่เริ่มใช้ SetCursor (x, y) วิธีการ และพิมพ์ค่า CO2 บนจอแสดงผล OLED โดยใช้ ฟังก์ชัน display.println ()
display.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (ความเข้มข้น);
และสุดท้ายเรียกใช้ display () method เพื่อแสดงข้อความบนจอแสดงผล OLED
display.display (); display.clearDisplay ();
การทดสอบการเชื่อมต่อของเซ็นเซอร์ CO2 แรงโน้มถ่วงอินฟราเรด
เมื่อฮาร์ดแวร์และรหัสพร้อมแล้วก็ถึงเวลาทดสอบเซ็นเซอร์ สำหรับสิ่งนั้นให้เชื่อมต่อ Arduino กับแล็ปท็อปเลือกบอร์ดและพอร์ตแล้วกดปุ่มอัปโหลด จากนั้นเปิดจอภาพอนุกรมของคุณและรอสักครู่ (กระบวนการอุ่นเครื่อง) จากนั้นคุณจะเห็นข้อมูลสุดท้าย
ค่าจะแสดงบนจอแสดงผล OLED ดังที่แสดงด้านล่าง:
หมายเหตุ:ก่อนใช้เซ็นเซอร์ปล่อยให้เซ็นเซอร์ร้อนขึ้นประมาณ 24 ชั่วโมงเพื่อให้ได้ค่า PPM ที่ถูกต้อง เมื่อฉันขับเคลื่อนเซ็นเซอร์เป็นครั้งแรกความเข้มข้นของ CO2 ที่ส่งออกคือ 1500 PPM ถึง 1700PPM และหลังจากกระบวนการให้ความร้อน 24 ชั่วโมงความเข้มข้นของ CO2 ที่ส่งออกจะลดลงเหลือ 450 PPM เป็น 500 PPM ซึ่งเป็นค่า PPM ที่ถูกต้อง ดังนั้นจึงจำเป็นต้องปรับเทียบเซ็นเซอร์ก่อนใช้เพื่อวัดความเข้มข้นของ CO2
นี่คือวิธีที่สามารถใช้เซ็นเซอร์อินฟราเรด CO2 เพื่อวัดความเข้มข้นของ CO2 ในอากาศได้อย่างแม่นยำ รหัสที่สมบูรณ์และวิดีโอการทำงานมีให้ด้านล่าง หากคุณมีข้อสงสัยโปรดทิ้งไว้ในส่วนความคิดเห็นหรือใช้ฟอรัมของเราเพื่อขอความช่วยเหลือด้านเทคนิค