- ส่วนประกอบที่จำเป็น:
- แผนภาพวงจรและคำอธิบาย:
- คำอธิบายการทำงาน:
- คำอธิบายรหัส:
- "; หน้าเว็บ + =" คุณภาพอากาศคือ "; หน้าเว็บ + = air_quality; หน้าเว็บ + =" PPM "; หน้าเว็บ + ="
";
รหัสต่อไปนี้จะเรียกใช้ฟังก์ชันชื่อsendDataและจะส่งสตริงข้อมูลและข้อความไปยังเว็บเพจเพื่อแสดง
sendData (cipSend, 1000, DEBUG); sendData (หน้าเว็บ, 1000, DEBUG); cipSend = "ที่ + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
รหัสต่อไปนี้จะพิมพ์ข้อมูลบนจอ LCD เราได้ใช้เงื่อนไขต่างๆในการตรวจสอบคุณภาพอากาศและ LCD จะพิมพ์ข้อความตามเงื่อนไขและเสียงสัญญาณจะส่งเสียงบี๊บหากมลพิษเกิน 1,000 PPM
lcd.setCursor (0, 0); lcd.print ("คุณภาพอากาศคือ"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); ถ้า (air_quality <= 1000) {lcd.print ("อากาศบริสุทธิ์"); digitalWrite (8, ต่ำ);
ในที่สุดฟังก์ชันด้านล่างจะส่งและแสดงข้อมูลบนหน้าเว็บ ข้อมูลที่เราเก็บไว้ในสตริงชื่อ'หน้าเว็บ'จะถูกบันทึกไว้ในสตริงชื่อ'คำสั่ง' จากนั้น ESP จะอ่านอักขระทีละตัวจาก'คำสั่ง'และจะพิมพ์บนเว็บเพจ
String sendData (คำสั่ง String, const int timeout, boolean debug) {String response = ""; esp8266.print (คำสั่ง); // ส่งตัวอ่านไปที่ esp8266 long int time = millis (); ในขณะที่ ((เวลา + หมดเวลา)> มิลลิวินาที ()) {while (esp8266.available ()) {// esp มีข้อมูลจึงแสดงผลลัพธ์ไปยังหน้าต่างอนุกรม char c = esp8266.read (); // อ่านอักขระถัดไป การตอบสนอง + = c; }} if (debug) {Serial.print (ตอบกลับ); } การตอบกลับ; }
- การทดสอบและผลลัพธ์ของโครงการ:
ในโครงการนี้เรากำลังจะสร้างระบบตรวจสอบมลพิษทางอากาศโดยใช้ IoTซึ่งเราจะตรวจสอบคุณภาพอากาศผ่านเว็บเซิร์ฟเวอร์ที่ใช้อินเทอร์เน็ตและจะส่งสัญญาณเตือนเมื่อคุณภาพอากาศลดลงเกินระดับหนึ่งซึ่งหมายความว่าเมื่อมีปริมาณเพียงพอ ก๊าซอันตรายมีอยู่ในอากาศเช่น CO2 ควันแอลกอฮอล์เบนซินและ NH3 จะแสดงคุณภาพอากาศเป็น PPM บนจอ LCD และบนหน้าเว็บเพื่อให้เราตรวจสอบได้ง่ายมาก
ก่อนหน้านี้เราได้สร้างเครื่องตรวจจับก๊าซหุงต้มโดยใช้เซ็นเซอร์ MQ6 และเครื่องตรวจจับควันโดยใช้เซ็นเซอร์ MQ2 แต่คราวนี้เราได้ใช้เซ็นเซอร์ MQ135 เป็นเซ็นเซอร์ตรวจวัดคุณภาพอากาศซึ่งเป็นตัวเลือกที่ดีที่สุดสำหรับการตรวจสอบคุณภาพอากาศเนื่องจากสามารถตรวจจับก๊าซที่เป็นอันตรายส่วนใหญ่และสามารถวัดปริมาณได้ ถูกต้อง ในโครงการ IOT นี้คุณสามารถตรวจสอบระดับมลพิษได้จากทุกที่โดยใช้คอมพิวเตอร์หรือมือถือของคุณ เราสามารถติดตั้งระบบนี้ได้ทุกที่และยังสามารถทริกเกอร์อุปกรณ์บางอย่างเมื่อมลพิษเกินระดับหนึ่งเช่นเราสามารถเปิดพัดลมดูดอากาศหรือสามารถส่ง SMS / อีเมลแจ้งเตือนไปยังผู้ใช้
ส่วนประกอบที่จำเป็น:
- MQ135 เซ็นเซอร์แก๊ส
- Arduino Uno
- โมดูล Wi-Fi ESP8266
- 16X2 LCD
- เขียงหั่นขนม
- โพเทนชิออมิเตอร์ 10K
- ตัวต้านทาน 1K โอห์ม
- ตัวต้านทาน 220 โอห์ม
- Buzzer
คุณสามารถซื้อส่วนประกอบทั้งหมดข้างต้นได้จากที่นี่
แผนภาพวงจรและคำอธิบาย:
ก่อนอื่นเราจะเชื่อมต่อESP8266 กับ Arduino ESP8266 ทำงานบน 3.3V และถ้าคุณให้ 5V จาก Arduino มันจะทำงานไม่ถูกต้องและอาจได้รับความเสียหาย เชื่อมต่อ VCC และ CH_PD กับขา 3.3V ของ Arduino RX pin ของ ESP8266 ทำงานบน 3.3V และจะไม่สื่อสารกับ Arduino เมื่อเราจะเชื่อมต่อโดยตรงกับ Arduino ดังนั้นเราจะต้องสร้างตัวแบ่งแรงดันสำหรับมันซึ่งจะแปลง 5V เป็น 3.3V สามารถทำได้โดยการเชื่อมต่อตัวต้านทานสามตัวในอนุกรมเหมือนกับที่เราทำในวงจร เชื่อมต่อพิน TX ของ ESP8266 กับพิน 10 ของ Arduino และพิน RX ของ esp8266 กับพิน 9 ของ Arduino ผ่านตัวต้านทาน
โมดูล Wi-Fi ESP8266 ช่วยให้โครงการของคุณ สามารถเข้าถึง Wi-Fi หรืออินเทอร์เน็ตได้ เป็นอุปกรณ์ราคาถูกมากและทำให้โครงการของคุณมีประสิทธิภาพมาก สามารถสื่อสารกับไมโครคอนโทรลเลอร์ได้และเป็นอุปกรณ์ชั้นนำที่สุดในแพลตฟอร์ม IOT เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ ESP8266 กับ Arduino ที่นี่
จากนั้นเราจะเชื่อมต่อเซ็นเซอร์ MQ135 กับ Arduino เชื่อมต่อ VCC และขากราวด์ของเซ็นเซอร์เข้ากับ 5V และกราวด์ของ Arduino และขาอนาล็อกของเซ็นเซอร์เข้ากับ A0 ของ Arduino
เชื่อมต่อเสียงกริ่งเข้ากับขา 8 ของ Arduino ซึ่งจะเริ่มส่งเสียงบี๊บเมื่อเงื่อนไขเป็นจริง
ในที่สุดเราจะเชื่อมต่อ LCD กับ Arduino การเชื่อมต่อของ LCD มีดังต่อไปนี้
- เชื่อมต่อพิน 1 (VEE) กับกราวด์
- เชื่อมต่อพิน 2 (VDD หรือ VCC) เข้ากับ 5V
- เชื่อมต่อพิน 3 (V0) กับพินกลางของโพเทนชิออมิเตอร์ 10K และเชื่อมต่ออีกสองปลายของโพเทนชิออมิเตอร์เข้ากับ VCC และ GND โพเทนชิออมิเตอร์ใช้เพื่อควบคุมความคมชัดของหน้าจอ LCD โพเทนชิออมิเตอร์ของค่าอื่นที่ไม่ใช่ 10K ก็จะทำงานได้เช่นกัน
- เชื่อมต่อพิน 4 (RS) กับพิน 12 ของ Arduino
- เชื่อมต่อพิน 5 (อ่าน / เขียน) เข้ากับกราวด์ของ Arduino พินนี้ไม่ได้ใช้บ่อยดังนั้นเราจะเชื่อมต่อกับกราวด์
- เชื่อมต่อพิน 6 (E) กับพิน 11 ของ Arduino พิน RS และ E เป็นพินควบคุมที่ใช้ในการส่งข้อมูลและอักขระ
- สี่พินต่อไปนี้เป็นพินข้อมูลที่ใช้ในการสื่อสารกับ Arduino
เชื่อมต่อพิน 11 (D4) กับพิน 5 ของ Arduino
เชื่อมต่อพิน 12 (D5) กับพิน 4 ของ Arduino
เชื่อมต่อพิน 13 (D6) กับพิน 3 ของ Arduino
เชื่อมต่อพิน 14 (D7) กับพิน 2 ของ Arduino
- เชื่อมต่อพิน 15 กับ VCC ผ่านตัวต้านทาน 220 โอห์ม ตัวต้านทานจะถูกใช้เพื่อตั้งค่าความสว่างของแสงด้านหลัง ค่าที่มากขึ้นจะทำให้แสงด้านหลังมืดลงมาก
- เชื่อมต่อพิน 16 กับกราวด์
คำอธิบายการทำงาน:
เซ็นเซอร์ MQ135 สามารถรู้สึก NH3, NOx, เครื่องดื่มแอลกอฮอล์, เบนซิน, ควัน, CO2 และบางก๊าซอื่น ๆ ดังนั้นจึงเป็นแก๊สเซ็นเซอร์ที่สมบูรณ์แบบสำหรับเราตรวจวัดคุณภาพอากาศโครงการเมื่อเราเชื่อมต่อกับ Arduino มันจะรับรู้ถึงก๊าซและเราจะได้ระดับมลพิษเป็น PPM (ส่วนต่อล้าน) เซ็นเซอร์ก๊าซ MQ135 ให้เอาต์พุตในรูปแบบของระดับแรงดันไฟฟ้าและเราจำเป็นต้องแปลงเป็น PPM ดังนั้นสำหรับการแปลงเอาต์พุตใน PPM เราได้ใช้ไลบรารีสำหรับเซ็นเซอร์ MQ135 ที่นี่มีคำอธิบายโดยละเอียดในส่วน "คำอธิบายโค้ด" ด้านล่าง
เซ็นเซอร์ให้ค่าเรา 90 เมื่อไม่มีก๊าซอยู่ใกล้ ๆ และคุณภาพอากาศที่ปลอดภัยคือ 350 PPM และไม่ควรเกิน 1,000 PPM เมื่อเกินขีด จำกัด ที่ 1,000 PPM จะเริ่มทำให้เกิดอาการปวดหัวง่วงนอนและนิ่งค้างอากาศอบอ้าวและถ้าเกินกว่า 2,000 PPM อาจทำให้อัตราการเต้นของหัวใจเพิ่มขึ้นและโรคอื่น ๆ อีกมากมาย
เมื่อค่าน้อยกว่า 1,000 PPM จอ LCD และหน้าเว็บจะแสดง "อากาศบริสุทธิ์" เมื่อใดก็ตามที่ค่าจะเพิ่มขึ้น 1,000 PPM เสียงกริ่งจะเริ่มส่งเสียงบี๊บและหน้าจอ LCD และหน้าเว็บจะแสดงข้อความ“ Poor Air, Open Windows” ถ้ามันเพิ่มขึ้น 2000 เสียงกริ่งจะส่งเสียงบี๊บและหน้าจอ LCD และหน้าเว็บจะแสดงข้อความ“ อันตราย! ย้ายไปที่ที่มีอากาศบริสุทธิ์”
คำอธิบายรหัส:
ก่อนที่จะเริ่มการเข้ารหัสสำหรับโปรเจ็กต์นี้เราต้องปรับเทียบเซ็นเซอร์ก๊าซ MQ135 ก่อน มีการคำนวณมากมายที่เกี่ยวข้องในการแปลงเอาต์พุตของเซ็นเซอร์เป็นค่า PPM เราได้ทำการคำนวณนี้มาก่อนในโครงการเครื่องตรวจจับควันก่อนหน้านี้ แต่ที่นี่เราใช้ Library สำหรับ MQ135 คุณสามารถดาวน์โหลดและติดตั้งไลบรารี MQ135 นี้ได้จากที่นี่:
การใช้ไลบรารีนี้คุณสามารถรับค่า PPM ได้โดยตรงโดยใช้สองบรรทัดด้านล่าง:
MQ135 gasSensor = MQ135 (A0); ลอย air_quality = gasSensor.getPPM ();
แต่ก่อนหน้านั้นเราจำเป็นต้องปรับเทียบเซ็นเซอร์ MQ135สำหรับการปรับเทียบเซ็นเซอร์อัปโหลดรหัสที่ระบุด้านล่างและปล่อยให้ทำงานเป็นเวลา 12 ถึง 24 ชั่วโมงจากนั้นจึงรับค่า RZERO
#include "MQ135.h" การตั้งค่าเป็นโมฆะ () {Serial.begin (9600); } void loop () {MQ135 gasSensor = MQ135 (A0); // ติดเซนเซอร์เพื่อพิน A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); ล่าช้า (1,000); }
หลังจากได้ค่า RZERO ใส่ค่า RZERO ในไฟล์ไลบรารีที่คุณดาวน์โหลด "MQ135.h": #define RZERO 494.63
ตอนนี้เราสามารถเริ่มรหัสจริงสำหรับโครงการตรวจสอบคุณภาพอากาศของเราได้
ในโค้ดก่อนอื่นเราได้กำหนดไลบรารีและตัวแปรสำหรับเซ็นเซอร์แก๊สและ LCD ด้วยการใช้ Software Serial Library เราสามารถสร้างพินดิจิทัลเป็นพิน TX และ RX ได้ ในรหัสนี้เราได้สร้างพิน 9 เป็นพิน RX และพิน 10 เป็นพิน TX สำหรับ ESP8266 จากนั้นเราได้รวมไลบรารีสำหรับ LCD และกำหนดพินสำหรับสิ่งเดียวกัน นอกจากนี้เรายังได้กำหนดตัวแปรอีกสองตัวแปรหนึ่งสำหรับพินอะนาล็อกของเซ็นเซอร์และอื่น ๆ สำหรับการจัดเก็บค่า air_quality
# รวม
จากนั้นเราจะประกาศพิน 8 เป็นพินเอาต์พุตที่เราเชื่อมต่อออด L cd.begin (16,2) คำสั่งจะเริ่ม LCD เพื่อรับข้อมูลและจากนั้นเราจะตั้งเคอร์เซอร์ไปที่บรรทัดแรกและจะพิมพ์'circuitdigest' แล้วเราจะตั้งเคอร์เซอร์ในบรรทัดที่สองและจะพิมพ์'เซนเซอร์ร้อน'
PinMode (8, เอาท์พุท); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("เซนเซอร์ร้อน"); ล่าช้า (1,000);
จากนั้นเราจะกำหนดอัตราการส่งข้อมูลสำหรับการสื่อสารแบบอนุกรม ESP ที่แตกต่างกันมีอัตราการส่งข้อมูลที่แตกต่างกันดังนั้นให้เขียนตามอัตราการส่งข้อมูลของ ESP ของคุณ จากนั้นเราจะส่งคำสั่งเพื่อตั้งค่า ESP ให้สื่อสารกับ Arduino และแสดงที่อยู่ IP บนมอนิเตอร์แบบอนุกรม
Serial.begin (115200); esp8266.begin (115200); sendData ("ที่ + RST \ r \ n", 2000, ดีบัก); sendData ("ที่ + CWMODE = 2 \ r \ n", 1,000, ดีบัก); sendData ("ที่ + CIFSR \ r \ n", 1,000, ดีบัก); sendData ("AT + CIPMUair_quality = 1 \ r \ n", 1,000, ดีบัก); sendData ("AT + CIPSERVER = 1,80 \ r \ n", 1000, DEBUG); pinMode (sensorPin, อินพุต); lcd.clear ();
สำหรับการพิมพ์เอาท์พุทบนหน้าเว็บในเว็บเบราเซอร์ที่เราจะต้องใช้ การเขียนโปรแกรม HTML ดังนั้นเราจึงสร้างสตริงชื่อ เว็บเพจ และเก็บผลลัพธ์ไว้ในนั้น เรากำลังลบ 48 ออกจากผลลัพธ์เนื่องจากฟังก์ชัน read () ส่งกลับค่าทศนิยม ASCII และเลขทศนิยมตัวแรกซึ่งเป็น 0 เริ่มต้นที่ 48
ถ้า (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {ล่าช้า (1000); int connectionId = esp8266.read () - 48; หน้าเว็บสตริง = "
ระบบตรวจสอบมลพิษทางอากาศ IOT
"; หน้าเว็บ + =""; หน้าเว็บ + =" คุณภาพอากาศคือ "; หน้าเว็บ + = air_quality; หน้าเว็บ + =" PPM "; หน้าเว็บ + ="
";
รหัสต่อไปนี้จะเรียกใช้ฟังก์ชันชื่อ sendData และจะส่งสตริงข้อมูลและข้อความไปยังเว็บเพจเพื่อแสดง
sendData (cipSend, 1000, DEBUG); sendData (หน้าเว็บ, 1000, DEBUG); cipSend = "ที่ + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
รหัสต่อไปนี้จะพิมพ์ข้อมูลบนจอ LCD เราได้ใช้เงื่อนไขต่างๆในการตรวจสอบคุณภาพอากาศและ LCD จะพิมพ์ข้อความตามเงื่อนไขและเสียงสัญญาณจะส่งเสียงบี๊บหากมลพิษเกิน 1,000 PPM
lcd.setCursor (0, 0); lcd.print ("คุณภาพอากาศคือ"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); ถ้า (air_quality <= 1000) {lcd.print ("อากาศบริสุทธิ์"); digitalWrite (8, ต่ำ);
ในที่สุดฟังก์ชันด้านล่างจะส่งและแสดงข้อมูลบนหน้าเว็บ ข้อมูลที่เราเก็บไว้ในสตริงชื่อ 'หน้าเว็บ' จะถูกบันทึกไว้ในสตริงชื่อ'คำสั่ง' จากนั้น ESP จะอ่านอักขระทีละตัวจาก 'คำสั่ง' และจะพิมพ์บนเว็บเพจ
String sendData (คำสั่ง String, const int timeout, boolean debug) {String response = ""; esp8266.print (คำสั่ง); // ส่งตัวอ่านไปที่ esp8266 long int time = millis (); ในขณะที่ ((เวลา + หมดเวลา)> มิลลิวินาที ()) {while (esp8266.available ()) {// esp มีข้อมูลจึงแสดงผลลัพธ์ไปยังหน้าต่างอนุกรม char c = esp8266.read (); // อ่านอักขระถัดไป การตอบสนอง + = c; }} if (debug) {Serial.print (ตอบกลับ); } การตอบกลับ; }
การทดสอบและผลลัพธ์ของโครงการ:
ก่อนอัปโหลดรหัสตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อกับ Wi-Fi ของอุปกรณ์ ESP8266 ของคุณ หลังจากอัปโหลดแล้วให้เปิดมอนิเตอร์แบบอนุกรมและจะแสดงที่อยู่ IP ดังที่แสดงด้านล่าง
พิมพ์ที่อยู่ IP นี้ในเบราว์เซอร์ของคุณซึ่งจะแสดงผลลัพธ์ดังที่แสดงด้านล่าง คุณจะต้องรีเฟรชหน้านี้อีกครั้งหากต้องการดูค่าคุณภาพอากาศปัจจุบันใน PPM
เราได้ติดตั้งเซิร์ฟเวอร์ภายในเพื่อแสดงให้เห็นถึงการทำงานคุณสามารถตรวจสอบวิดีโอด้านล่าง แต่ในการตรวจสอบคุณภาพอากาศจากทุกที่ในโลกคุณต้องส่งต่อพอร์ต 80 (ใช้สำหรับ HTTP หรืออินเทอร์เน็ต) ไปยังที่อยู่ IP ในพื้นที่หรือส่วนตัว (192.168 *) ของอุปกรณ์ของคุณ หลังจากส่งต่อพอร์ตการเชื่อมต่อขาเข้าทั้งหมดจะถูกส่งต่อไปยังที่อยู่ในพื้นที่นี้และคุณสามารถเปิดหน้าเว็บที่แสดงด้านบนได้โดยเพียงแค่ป้อนที่อยู่ IP สาธารณะของอินเทอร์เน็ตของคุณจากที่ใดก็ได้ คุณสามารถส่งต่อพอร์ตได้โดยเข้าสู่เราเตอร์ของคุณ (192.168.1.1) และค้นหาตัวเลือกในการตั้งค่าการส่งต่อพอร์ต