- Komponen yang diperlukan:
- Rajah dan Penjelasan Litar:
- Penjelasan Kerja:
- Penjelasan Kod:
- "; laman web + =" Kualiti Udara adalah "; laman web + = kualiti_ udara; laman web + =" PPM "; laman web + ="
";
Kod berikut akan memanggil fungsi bernama sendData dan akan menghantar rentetan data & mesej ke laman web untuk ditunjukkan.
sendData (cipSend, 1000, DEBUG); sendData (laman web, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = sambunganId; cipSend + = ","; cipSend + = laman web.length (); cipSend + = "\ r \ n";
Kod berikut akan mencetak data pada LCD. Kami telah menerapkan pelbagai syarat untuk memeriksa kualiti udara, dan LCD akan mencetak pesan mengikut keadaan dan buzzer juga akan berbunyi jika pencemaran melebihi 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Kualiti Udara adalah"); lcd.print (kualiti_ udara); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Udara Segar"); digitalWrite (8, RENDAH);
Akhirnya fungsi di bawah ini akan menghantar dan menunjukkan data di laman web. Data yang kami simpan dalam rentetan bernama 'laman web' akan disimpan dalam rentetan bernama 'perintah' . ESP kemudian akan membaca watak satu persatu dari 'arahan' dan akan mencetaknya di laman web.
String sendData (String command, const int timeout, boolean debug) {String respons = ""; esp8266.print (arahan); // hantar watak baca ke esp8266 jangka masa panjang = milis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// esp mempunyai data sehingga memaparkan outputnya ke tetingkap siri char c = esp8266.read (); // baca watak seterusnya. tindak balas + = c; }} jika (debug) {Serial.print (tindak balas); } balasan balas; }
- Ujian dan Hasil Projek:
Dalam projek ini kita akan membuat Sistem Pemantauan Pencemaran Udara Berasaskan IoT di mana kita akan memantau Kualiti Udara melalui pelayan web menggunakan internet dan akan mencetuskan penggera apabila kualiti udara turun melebihi tahap tertentu, artinya jika ada jumlah yang mencukupi gas berbahaya terdapat di udara seperti CO2, asap, alkohol, benzena dan NH3. Ia akan menunjukkan kualiti udara di PPM di LCD dan juga di laman web sehingga kita dapat memantau dengan mudah.
Sebelumnya kami telah membangun detektor LPG menggunakan sensor MQ6 dan detektor Asap menggunakan sensor MQ2 tetapi kali ini kami telah menggunakan sensor MQ135 sebagai sensor kualiti udara yang merupakan pilihan terbaik untuk memantau Kualiti Udara kerana dapat mengesan gas yang paling berbahaya dan dapat mengukur jumlahnya tepat. Dalam projek IOT ini, anda dapat memantau tahap pencemaran dari mana sahaja menggunakan komputer atau telefon bimbit anda. Kita boleh memasang sistem ini di mana sahaja dan juga boleh mencetuskan beberapa peranti apabila pencemaran melampaui tahap tertentu, seperti kita boleh menghidupkan kipas Ekzos atau dapat menghantar SMS / surat amaran kepada pengguna.
Komponen yang diperlukan:
- Sensor gas MQ135
- Arduino Uno
- Modul Wi-Fi ESP8266
- LCD 16X2
- Papan roti
- Potensiometer 10K
- Perintang 1K ohm
- Perintang 220 ohm
- Buzzer
Anda boleh membeli semua komponen di atas dari sini.
Rajah dan Penjelasan Litar:
Pertama sekali kita akan menghubungkan ESP8266 dengan Arduino. ESP8266 berjalan pada 3.3V dan jika anda memberikannya 5V dari Arduino maka ia tidak akan berfungsi dengan baik dan ia mungkin mengalami kerosakan. Sambungkan VCC dan CH_PD ke pin Arduino 3.3V. Pin RX ESP8266 berfungsi pada 3.3V dan ia tidak akan berkomunikasi dengan Arduino apabila kami akan menghubungkannya terus ke Arduino. Oleh itu, kita harus membuat pembahagi voltan untuk itu yang akan menukar 5V menjadi 3.3V. Ini dapat dilakukan dengan menghubungkan tiga perintang secara siri seperti yang kita lakukan di litar. Sambungkan pin TX ESP8266 ke pin 10 Arduino dan pin RX esp8266 ke pin 9 Arduino melalui perintang.
Modul Wi-Fi ESP8266 memberikan projek anda akses ke Wi-Fi atau internet. Ini adalah peranti yang sangat murah dan menjadikan projek anda sangat hebat. Ia dapat berkomunikasi dengan mana-mana mikrokontroler dan ia adalah peranti paling terkemuka dalam platform IOT. Ketahui lebih lanjut mengenai penggunaan ESP8266 dengan Arduino di sini.
Kemudian kita akan menghubungkan sensor MQ135 dengan Arduino. Sambungkan VCC dan pin ground sensor ke 5V dan ground Arduino dan pin Analog sensor ke A0 Arduino.
Sambungkan buzzer ke pin 8 Arduino yang akan mula berbunyi apabila keadaan menjadi benar.
Terakhir, kami akan menghubungkan LCD dengan Arduino. Sambungan LCD adalah seperti berikut
- Sambungkan pin 1 (VEE) ke tanah.
- Sambungkan pin 2 (VDD atau VCC) ke 5V.
- Sambungkan pin 3 (V0) ke pin tengah potensiometer 10K dan sambungkan dua hujung potensiometer yang lain ke VCC dan GND. Potensiometer digunakan untuk mengawal kontras skrin LCD. Potensiometer nilai selain 10K akan berfungsi juga.
- Sambungkan pin 4 (RS) ke pin 12 Arduino.
- Sambungkan pin 5 (Baca / Tulis) ke arduino. Pin ini tidak sering digunakan sehingga kita akan menyambungkannya ke tanah.
- Sambungkan pin 6 (E) ke pin 11 Arduino. Pin RS dan E adalah pin kawalan yang digunakan untuk menghantar data dan watak.
- Empat pin berikut adalah pin data yang digunakan untuk berkomunikasi dengan Arduino.
Sambungkan pin 11 (D4) ke pin 5 dari Arduino.
Sambungkan pin 12 (D5) ke pin 4 dari Arduino.
Sambungkan pin 13 (D6) ke pin 3 dari Arduino.
Sambungkan pin 14 (D7) ke pin 2 dari Arduino.
- Sambungkan pin 15 ke VCC melalui perintang 220 ohm. Perintang akan digunakan untuk mengatur kecerahan cahaya belakang. Nilai yang lebih besar akan menjadikan cahaya belakang menjadi lebih gelap.
- Sambungkan pin 16 ke Tanah.
Penjelasan Kerja:
Sensor MQ135 dapat merasakan NH3, NOx, alkohol, Benzena, asap, CO2 dan beberapa gas lain, jadi ini adalah sensor gas yang sempurna untuk Projek Pemantauan Kualiti Udara kami. Apabila kita menghubungkannya ke Arduino maka ia akan merasakan gasnya, dan kita akan mendapat tahap Pencemaran di PPM (bahagian per juta). Sensor gas MQ135 memberikan output dalam bentuk tahap voltan dan kita perlu mengubahnya menjadi PPM. Jadi untuk menukar output dalam PPM, di sini kami telah menggunakan perpustakaan untuk sensor MQ135, dijelaskan secara terperinci di bahagian "Penjelasan Kod" di bawah.
Sensor memberi kami nilai 90 ketika tidak ada gas di dekatnya dan tahap kualiti udara yang selamat adalah 350 PPM dan tidak boleh melebihi 1000 PPM. Apabila melebihi had 1000 PPM, maka ia mulai menyebabkan Sakit kepala, mengantuk dan stagnan, basi, udara tersumbat dan jika melebihi 2000 PPM maka ia boleh menyebabkan peningkatan degupan jantung dan banyak penyakit lain.
Apabila nilainya kurang dari 1000 PPM, maka LCD dan halaman web akan memaparkan "Udara Segar". Setiap kali nilainya akan meningkat 1000 PPM, maka buzzer akan mulai berbunyi dan LCD dan laman web akan memaparkan "Air Buruk, Buka Windows". Sekiranya ia meningkat 2000, bel akan terus berbunyi dan LCD dan laman web akan memaparkan “Bahaya! Pindah ke Udara segar ”.
Penjelasan Kod:
Sebelum memulakan pengkodan untuk projek ini, kita perlu Mengkalibrasi sensor Gas MQ135 terlebih dahulu. Terdapat banyak pengiraan yang terlibat dalam menukar output sensor menjadi nilai PPM, kami telah melakukan pengiraan ini sebelumnya dalam projek Detektor Asap kami sebelum ini. Tetapi di sini kami menggunakan Perpustakaan untuk MQ135, anda boleh memuat turun dan memasang perpustakaan MQ135 ini dari sini:
Dengan menggunakan perpustakaan ini, anda dapat memperoleh nilai PPM secara langsung, dengan hanya menggunakan dua baris berikut:
Sensor gas MQ135 = MQ135 (A0); float air_quality = gasSensor.getPPM ();
Tetapi sebelum itu kita perlu mengkalibrasi sensor MQ135, untuk mengkalibrasi sensor muat naik kod yang diberikan di bawah ini dan biarkan berjalan selama 12 hingga 24 jam dan kemudian dapatkan nilai RZERO .
#masuk penyediaan tidak sah "MQ135.h" () {Serial.begin (9600); } gelung kosong () {MQ135 gasSensor = MQ135 (A0); // Pasang sensor ke pin A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); kelewatan (1000); }
Setelah mendapat nilai RZERO . Masukkan nilai RZERO dalam fail perpustakaan yang anda muat turun "MQ135.h": # tentukan RZERO 494.63
Sekarang kita boleh memulakan kod sebenar untuk projek pemantauan kualiti Udara kita.
Dalam kod, pertama-tama kita telah menentukan perpustakaan dan pemboleh ubah untuk sensor Gas dan LCD. Dengan menggunakan Perisian Serial Perpustakaan, kita dapat menjadikan sebarang pin digital sebagai pin TX dan RX. Dalam kod ini, kami telah menjadikan Pin 9 sebagai pin RX dan pin 10 sebagai pin TX untuk ESP8266. Kemudian kami telah memasukkan perpustakaan untuk LCD dan telah menentukan pin untuk yang sama. Kami juga telah ditakrifkan dua pembolehubah: satu untuk pin sensor analog dan lain-lain untuk menyimpan Air_Quality nilai.
#sertakan
Kemudian kita akan menyatakan pin 8 sebagai pin output di mana kita telah menyambungkan buzzer. Perintah l cd.begin (16,2) akan memulakan LCD untuk menerima data dan kemudian kita akan menetapkan kursor ke baris pertama dan akan mencetak 'circuitdigest' . Kemudian kita akan menetapkan kursor pada baris kedua dan akan mencetak 'Sensor Warming' .
pinMode (8, OUTPUT); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("Pemanasan Sensor"); kelewatan (1000);
Kemudian kami akan menetapkan kadar baud untuk komunikasi bersiri. ESP yang berbeza mempunyai kadar baud yang berbeza jadi tuliskan mengikut kadar baud ESP anda. Kemudian kami akan menghantar arahan untuk mengatur ESP untuk berkomunikasi dengan Arduino dan menunjukkan alamat IP pada monitor bersiri.
Serial.begin (115200); esp8266.begin (115200); sendData ("AT + RST \ r \ n", 2000, DEBUG); sendData ("AT + CWMODE = 2 \ r \ n", 1000, DEBUG); sendData ("AT + CIFSR \ r \ n", 1000, DEBUG); sendData ("AT + CIPMUair_quality = 1 \ r \ n", 1000, DEBUG); sendData ("AT + CIPSERVER = 1,80 \ r \ n", 1000, DEBUG); pinMode (sensorPin, INPUT); lcd.clear ();
Untuk mencetak output di laman web dalam penyemak imbas web, kita harus menggunakan pengaturcaraan HTML. Oleh itu, kami telah membuat rentetan bernama laman web dan menyimpan output di dalamnya. Kami mengurangkan 48 dari output kerana fungsi read () mengembalikan nilai perpuluhan ASCII dan nombor perpuluhan pertama yang 0 bermula pada 48.
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {kelewatan (1000); int connectionId = esp8266.read () - 48; Halaman web rentetan = "
Sistem Pemantauan Pencemaran Udara IOT
"; laman web + =""; laman web + =" Kualiti Udara adalah "; laman web + = kualiti_ udara; laman web + =" PPM "; laman web + ="
";
Kod berikut akan memanggil fungsi bernama sendData dan akan menghantar rentetan data & mesej ke laman web untuk ditunjukkan.
sendData (cipSend, 1000, DEBUG); sendData (laman web, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = sambunganId; cipSend + = ","; cipSend + = laman web.length (); cipSend + = "\ r \ n";
Kod berikut akan mencetak data pada LCD. Kami telah menerapkan pelbagai syarat untuk memeriksa kualiti udara, dan LCD akan mencetak pesan mengikut keadaan dan buzzer juga akan berbunyi jika pencemaran melebihi 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Kualiti Udara adalah"); lcd.print (kualiti_ udara); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Udara Segar"); digitalWrite (8, RENDAH);
Akhirnya fungsi di bawah ini akan menghantar dan menunjukkan data di laman web. Data yang kami simpan dalam rentetan bernama 'laman web' akan disimpan dalam rentetan bernama 'perintah' . ESP kemudian akan membaca watak satu persatu dari 'arahan' dan akan mencetaknya di laman web.
String sendData (String command, const int timeout, boolean debug) {String respons = ""; esp8266.print (arahan); // hantar watak baca ke esp8266 jangka masa panjang = milis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// esp mempunyai data sehingga memaparkan outputnya ke tetingkap siri char c = esp8266.read (); // baca watak seterusnya. tindak balas + = c; }} jika (debug) {Serial.print (tindak balas); } balasan balas; }
Ujian dan Hasil Projek:
Sebelum memuat naik kod, pastikan anda tersambung ke Wi-Fi peranti ESP8266 anda. Setelah memuat naik, buka monitor bersiri dan ia akan menunjukkan alamat IP seperti yang ditunjukkan di bawah.
Ketik alamat IP ini di penyemak imbas anda, ia akan menunjukkan output seperti yang ditunjukkan di bawah. Anda mesti memuat semula halaman jika anda ingin melihat Nilai Kualiti Udara semasa di PPM.
Kami telah menyediakan pelayan tempatan untuk menunjukkan kerjanya, anda boleh menyemak Video di bawah. Tetapi untuk memantau kualiti udara dari mana saja di dunia, anda perlu meneruskan port 80 (digunakan untuk HTTP atau internet) ke alamat IP tempatan atau peribadi (192.168 *) peranti anda. Selepas penghantaran port, semua sambungan masuk akan diteruskan ke alamat tempatan ini dan anda boleh membuka laman web yang ditunjukkan di atas dengan memasukkan alamat IP awam internet anda dari mana sahaja. Anda boleh meneruskan port dengan masuk ke penghala anda (192.168.1.1) dan mencari pilihan untuk mengatur pemajuan port.