- ส่วนประกอบที่จำเป็น
- เซ็นเซอร์ Sharp GP2Y1014AU0F
- โมดูลแสดงผล OLED
- แผนภูมิวงจรรวม
- การสร้างวงจรบน Perf Board
- คำอธิบายรหัสสำหรับเครื่องวิเคราะห์คุณภาพอากาศ
- การทดสอบการเชื่อมต่อของ Sharp GP2Y1014AU0F Sensor กับ Arduino
มลพิษทางอากาศเป็นปัญหาหลักในหลาย ๆ เมืองและดัชนีคุณภาพอากาศก็แย่ลงทุกวัน ตามรายงานขององค์การอนามัยโลกพบว่ามีผู้เสียชีวิตก่อนเวลาอันควรจากผลกระทบของอนุภาคอันตรายในอากาศมากกว่าอุบัติเหตุทางรถยนต์ ตามที่สำนักงานคุ้มครองสิ่งแวดล้อม (EPA) อากาศภายในอาคารสามารถเป็นพิษได้มากกว่าอากาศภายนอกอาคาร 2 ถึง 5 เท่า ดังนั้นที่นี่เราจึงสร้างโครงการเพื่อตรวจสอบคุณภาพอากาศโดยการวัดความหนาแน่นของอนุภาคฝุ่นในอากาศ
ดังนั้นในความต่อเนื่องของโครงการก่อนหน้านี้ของเราอย่างเช่นเครื่องตรวจจับก๊าซ LPG, ตรวจจับควันและเครื่องตรวจสอบคุณภาพที่นี่เราจะไปติดต่อชาร์ป GP2Y1014AU0F เซนเซอร์กับ Arduino Nano ในการวัดความหนาแน่นของฝุ่นละอองในอากาศ นอกเหนือจากเซ็นเซอร์ฝุ่นและ Arduino Nano แล้วจอแสดงผล OLED ยังใช้เพื่อแสดงค่าที่วัดได้อีกด้วย GP2Y1014AU0F Dust Sensor ของ Sharp มีประสิทธิภาพมากในการตรวจจับอนุภาคขนาดเล็กเช่นควันบุหรี่ ออกแบบมาเพื่อใช้ในเครื่องฟอกอากาศและเครื่องปรับอากาศ
ส่วนประกอบที่จำเป็น
- Arduino นาโน
- เซ็นเซอร์ Sharp GP2Y1014AU0F
- 0.96 'SPI โมดูลแสดงผล OLED
- สายจัมเปอร์
- 220 µf Capacitor
- ตัวต้านทาน 150 Ω
เซ็นเซอร์ Sharp GP2Y1014AU0F
GP2Y1014AU0F ของ Sharp เป็นเซนเซอร์ตรวจจับคุณภาพอากาศ / ฝุ่นออปติคอลเอาต์พุตแบบอะนาล็อก 6 พินขนาดเล็กที่ออกแบบมาเพื่อตรวจจับฝุ่นละอองในอากาศ มันทำงานบนหลักการของการกระเจิงของแสงเลเซอร์ภายในโมดูลเซ็นเซอร์ไดโอดเปล่งแสงอินฟราเรดและตัวรับแสงจะถูกจัดเรียงในแนวทแยงมุมใกล้กับช่องอากาศดังที่แสดงในภาพด้านล่าง
เมื่ออากาศที่มีอนุภาคฝุ่นเข้าไปในห้องเซ็นเซอร์อนุภาคฝุ่นจะกระจายแสง IR LED ไปทางเครื่องตรวจจับภาพถ่าย ความเข้มของแสงที่กระจัดกระจายขึ้นอยู่กับอนุภาคฝุ่น ฝุ่นละอองในอากาศยิ่งมากความเข้มของแสงก็จะยิ่งมากขึ้น แรงดันขาออกที่ขาV OUTของเซ็นเซอร์จะเปลี่ยนไปตามความเข้มของแสงที่กระจัดกระจาย
GP2Y1014AU0F เซนเซอร์ Pinout:
ดังกล่าวก่อนหน้าเซ็นเซอร์ GP2Y1014AU0F มาพร้อมกับ การเชื่อมต่อแบบ 6 ขา รูปและตารางด้านล่างแสดงการกำหนดพินสำหรับ GP2Y1014AU0F:
S. NO. |
ชื่อพิน |
คำอธิบายพิน |
1 |
V-LED |
ขา Vcc LED เชื่อมต่อกับ 5V ผ่านตัวต้านทาน150Ω |
2 |
LED-GND |
ขากราวด์ LED เชื่อมต่อกับ GND |
3 |
LED |
ใช้เพื่อสลับเปิด / ปิด LED เชื่อมต่อกับพินดิจิทัลของ Arduino |
4 |
S-GND |
ขากราวด์เซนเซอร์ เชื่อมต่อกับ GND ของ Arduino |
5 |
V ออก |
พินเอาต์พุตอนาล็อกของเซนเซอร์ เชื่อมต่อกับ Analog Pin ใด ๆ |
6 |
วีซีซี |
พินอุปทานที่เป็นบวก เชื่อมต่อกับ 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 มม.)
โมดูลแสดงผล 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 และการเชื่อมต่อกับไมโครคอนโทรลเลอร์ต่างๆโดยไปที่ลิงค์
แผนภูมิวงจรรวม
แผนภาพวงจรสำหรับการเชื่อมต่อเซ็นเซอร์ Sharp GP2Y1014AU0F กับ Arduinoมีดังต่อไปนี้:
วงจรนั้นง่ายมากเพราะเราเชื่อมต่อเซ็นเซอร์ GP2Y10 และโมดูลจอแสดงผล OLED กับ Arduino Nano เท่านั้น GP2Y10 เซนเซอร์และโมดูลจอแสดงผล OLED ใช้พลังงาน + 5V และ GND ขา V0 เชื่อมต่อกับขา A5 ของ Arduino Nano ขา LED ของเซ็นเซอร์เชื่อมต่อกับพินดิจิตอลของ Arduino 12 เนื่องจากโมดูลจอแสดงผล 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 Pin |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V ผ่านตัวต้านทาน150Ω |
การสร้างวงจรบน Perf Board
หลังจากบัดกรีส่วนประกอบทั้งหมดบนบอร์ด perf แล้วจะมีลักษณะดังนี้ แต่ยังสามารถสร้างบนเขียงหั่นขนม ฉันบัดกรีเซ็นเซอร์ GP2Y1014 บนบอร์ดเดียวกับที่ฉันใช้เชื่อมต่อกับเซ็นเซอร์ SDS011 ขณะทำการบัดกรีตรวจสอบให้แน่ใจว่าสายบัดกรีของคุณควรอยู่ห่างจากกันเพียงพอ
คำอธิบายรหัสสำหรับเครื่องวิเคราะห์คุณภาพอากาศ
รหัสที่สมบูรณ์สำหรับโครงการนี้จะได้รับในตอนท้ายของเอกสาร เรากำลังอธิบายส่วนสำคัญบางส่วนของโค้ด
รหัสที่ใช้ Adafruit_GFX ,และ Adafruit_SSD1306 ห้องสมุด สามารถดาวน์โหลดไลบรารีเหล่านี้ได้จาก Library Manager ใน 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);
หลังจากนั้นกำหนดความรู้สึกของเซ็นเซอร์ฝุ่นและหมุดนำ Sense pin คือขาเอาท์พุตของเซ็นเซอร์ฝุ่นที่ใช้ในการอ่านค่าแรงดันไฟฟ้าในขณะที่ใช้พิน LED เพื่อเปิด / ปิด IR Led
int sensePin = A5; int ledPin = 7;
ตอนนี้อยู่ในฟังก์ชันการ ตั้งค่า () เริ่มต้น Serial Monitor ที่อัตราการส่งข้อมูล 9600 เพื่อวัตถุประสงค์ในการดีบัก นอกจากนี้เริ่มต้นจอแสดงผล OLED ด้วยฟังก์ชัน start ()
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
ภายในฟังก์ชัน loop () ให้อ่านค่าแรงดันไฟฟ้าจากอะนาล็อกพิน 5 ของ Arduino Nano ขั้นแรกให้เปิด IR LED จากนั้นรอ 0.28ms ก่อนที่จะอ่านค่าแรงดันขาออก หลังจากนั้นให้อ่านค่าแรงดันไฟฟ้าจากขาอนาล็อก การดำเนินการนี้ใช้เวลาประมาณ 40 ถึง 50 ไมโครวินาทีดังนั้นแนะนำให้ใช้การหน่วงเวลา 40 ไมโครวินาทีก่อนที่จะปิดเซ็นเซอร์ฝุ่น ตามข้อกำหนด, LED ควรจะชีพจรในครั้งทุก 10ms เพื่อรอเวลาที่เหลือของ รอบ 10ms = 10000 - 280-40 = 9680 microseconds
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); ล่าช้าไมโครวินาที (40); digitalWrite (ledPin สูง); ล่าช้าไมโครวินาที (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 () method เพื่อแสดงข้อความบนจอแสดงผล OLED
display.display (); display.clearDisplay ();
การทดสอบการเชื่อมต่อของ Sharp GP2Y1014AU0F Sensor กับ Arduino
เมื่อฮาร์ดแวร์และรหัสพร้อมแล้วก็ถึงเวลาทดสอบเซ็นเซอร์ สำหรับสิ่งนั้นให้เชื่อมต่อ Arduino กับแล็ปท็อปเลือกบอร์ดและพอร์ตแล้วกดปุ่มอัปโหลด ดังที่คุณเห็นในภาพด้านล่างจะแสดง Dust Density บนจอแสดงผล OLED
วิดีโอและรหัสการทำงานที่สมบูรณ์จะได้รับด้านล่าง หวังว่าคุณจะสนุกกับบทช่วยสอนและเรียนรู้สิ่งที่เป็นประโยชน์ หากคุณมีคำถามใด ๆ โปรดทิ้งไว้ในส่วนความคิดเห็นหรือใช้ฟอรัมของเราสำหรับคำถามทางเทคนิคอื่น ๆ