- Komponen yang Diperlukan:
- Diagram Sirkuit dan Penjelasan:
- Penjelasan Kerja:
- Penjelasan Kode:
- "; halaman web + =" Kualitas Udara adalah "; halaman web + = air_quality; halaman web + =" PPM "; halaman web + ="
";
Kode berikut akan memanggil fungsi bernama sendData dan akan mengirim string data & pesan ke halaman web untuk ditampilkan.
sendData (cipSend, 1000, DEBUG); sendData (halaman web, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Kode berikut akan mencetak data pada LCD. Kami telah menerapkan berbagai kondisi untuk memeriksa kualitas udara, dan LCD akan mencetak pesan sesuai dengan kondisi tersebut dan bel juga akan berbunyi bip jika polusi melebihi 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Kualitas Udara adalah"); lcd.print (kualitas_air); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Udara Segar"); digitalWrite (8, LOW);
Akhirnya fungsi di bawah ini akan mengirim dan menampilkan data di halaman web. Data yang kami simpan dalam string bernama 'halaman web' akan disimpan dalam string bernama 'perintah' . ESP kemudian akan membaca karakter satu per satu dari 'perintah' dan akan mencetaknya di halaman web.
String sendData (Perintah string, batas waktu const int, debug boolean) {String response = ""; esp8266.print (perintah); // kirim karakter yang sudah dibaca ke esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// esp memiliki data jadi tampilkan keluarannya ke jendela serial char c = esp8266.read (); // baca karakter selanjutnya. respon + = c; }} jika (debug) {Serial.print (respon); } tanggapan balik; }
- Pengujian dan Keluaran Proyek:
Dalam proyek ini kami akan membuat Sistem Pemantauan Polusi Udara Berbasis IoT dimana kami akan memantau Kualitas Udara melalui webserver menggunakan internet dan akan memicu alarm ketika kualitas udara turun melebihi level tertentu, artinya ketika jumlahnya mencukupi. gas berbahaya hadir di udara seperti CO2, asap, alkohol, benzena dan NH3. Ini akan menunjukkan kualitas udara di PPM pada LCD dan juga di halaman web sehingga kami dapat memonitornya dengan sangat mudah.
Sebelumnya kami telah membangun pendeteksi LPG menggunakan sensor MQ6 dan Detektor asap menggunakan sensor MQ2 namun kali ini kami telah menggunakan sensor MQ135 sebagai sensor kualitas udara yang merupakan pilihan terbaik untuk memantau Kualitas Udara karena dapat mendeteksi gas yang paling berbahaya dan dapat mengukur jumlahnya. akurat. Dalam proyek IOT ini, Anda dapat memantau tingkat polusi dari mana saja menggunakan komputer atau ponsel Anda. Kita dapat menginstal sistem ini di mana saja dan juga dapat memicu beberapa perangkat ketika polusi melampaui tingkat tertentu, seperti kita dapat menyalakan kipas Exhaust atau dapat mengirim SMS / surat peringatan kepada pengguna.
Komponen yang Diperlukan:
- Sensor gas MQ135
- Arduino Uno
- Modul Wi-Fi ESP8266
- LCD 16X2
- Papan tempat memotong roti
- Potensiometer 10K
- Resistor 1K ohm
- Resistor 220 ohm
- Bel
Anda dapat membeli semua komponen di atas dari sini.
Diagram Sirkuit dan Penjelasan:
Pertama-tama kita akan menghubungkan ESP8266 dengan Arduino. ESP8266 berjalan pada 3.3V dan jika Anda akan memberikannya 5V dari Arduino maka itu tidak akan berfungsi dengan baik dan mungkin mendapat kerusakan. Hubungkan VCC dan CH_PD ke pin 3.3V Arduino. Pin RX ESP8266 bekerja pada 3.3V dan tidak akan berkomunikasi dengan Arduino ketika kami akan menghubungkannya langsung ke Arduino. Jadi, kita harus membuat pembagi tegangan untuk itu yang akan mengubah 5V menjadi 3,3V. Ini dapat dilakukan dengan menghubungkan tiga resistor secara seri seperti yang kami lakukan di sirkuit. Hubungkan pin TX ESP8266 ke pin 10 Arduino dan pin RX esp8266 ke pin 9 Arduino melalui resistor.
Modul Wi-Fi ESP8266 memberi proyek Anda akses ke Wi-Fi atau internet. Ini adalah perangkat yang sangat murah dan membuat proyek Anda sangat kuat. Itu dapat berkomunikasi dengan mikrokontroler apa pun dan itu adalah perangkat paling terkemuka di platform IOT. Pelajari lebih lanjut tentang menggunakan ESP8266 dengan Arduino di sini.
Kemudian kita akan menghubungkan sensor MQ135 dengan Arduino. Hubungkan VCC dan pin ground sensor ke 5V dan ground Arduino dan pin Analog sensor ke A0 dari Arduino.
Hubungkan bel ke pin 8 Arduino yang akan mulai berbunyi bip saat kondisi benar.
Terakhir, kami akan menghubungkan LCD dengan Arduino. Koneksi LCD adalah sebagai berikut
- Hubungkan pin 1 (VEE) ke ground.
- Hubungkan pin 2 (VDD atau VCC) ke 5V.
- Hubungkan pin 3 (V0) ke pin tengah dari potensiometer 10K dan hubungkan kedua ujung potensiometer lainnya ke VCC dan GND. Potensiometer digunakan untuk mengontrol kontras layar LCD. Potensiometer nilai selain 10K juga dapat digunakan.
- Hubungkan pin 4 (RS) ke pin 12 Arduino.
- Hubungkan pin 5 (Baca / Tulis) ke ground Arduino. Pin ini tidak sering digunakan jadi kita akan menghubungkannya dengan tanah.
- Hubungkan pin 6 (E) ke pin 11 Arduino. Pin RS dan E adalah pin kontrol yang digunakan untuk mengirim data dan karakter.
- Empat pin berikut adalah pin data yang digunakan untuk berkomunikasi dengan Arduino.
Hubungkan pin 11 (D4) ke pin 5 Arduino.
Hubungkan pin 12 (D5) ke pin 4 Arduino.
Hubungkan pin 13 (D6) ke pin 3 Arduino.
Hubungkan pin 14 (D7) ke pin 2 Arduino.
- Hubungkan pin 15 ke VCC melalui resistor 220 ohm. Resistor akan digunakan untuk mengatur kecerahan lampu belakang. Nilai yang lebih besar akan membuat cahaya belakang jauh lebih gelap.
- Hubungkan pin 16 ke Ground.
Penjelasan Kerja:
Sensor MQ135 dapat mendeteksi NH3, NOx, alkohol, Benzene, asap, CO2, dan beberapa gas lainnya, jadi ini adalah sensor gas yang sempurna untuk Proyek Pemantauan Kualitas Udara kami. Ketika kita akan menghubungkannya ke Arduino maka dia akan merasakan gasnya, dan kita akan mendapatkan level Polusi dalam PPM (parts per million). Sensor gas MQ135 memberikan keluaran berupa level tegangan dan perlu diubah menjadi PPM. Jadi untuk mengonversi output dalam PPM, di sini kita telah menggunakan library untuk sensor MQ135, yang dijelaskan secara detail di bagian “Penjelasan Kode” di bawah ini.
Sensor memberi kami nilai 90 ketika tidak ada gas di dekatnya dan tingkat kualitas udara yang aman adalah 350 PPM dan tidak boleh melebihi 1000 PPM. Bila melebihi batas 1000 PPM maka mulai menyebabkan Sakit Kepala, mengantuk dan stagnan, pengap, udara pengap dan jika melebihi 2000 PPM maka dapat menyebabkan peningkatan denyut jantung dan banyak penyakit lainnya.
Jika nilainya kurang dari 1000 PPM, maka LCD dan halaman web akan menampilkan “Fresh Air”. Setiap kali nilai akan meningkat 1000 PPM, maka bel akan mulai berbunyi bip dan LCD serta halaman web akan menampilkan "Udara Buruk, Buka Windows". Jika meningkat 2000 maka bel akan terus berbunyi bip dan LCD serta halaman web akan menampilkan “Bahaya! Pindah ke Udara segar ”.
Penjelasan Kode:
Sebelum memulai pengkodean untuk proyek ini, kita perlu mengkalibrasi sensor Gas MQ135 terlebih dahulu. Ada banyak perhitungan yang terlibat dalam mengubah keluaran sensor menjadi nilai PPM, perhitungan ini telah kami lakukan sebelumnya di proyek Detektor Asap kami sebelumnya. Tetapi di sini kami menggunakan Perpustakaan untuk MQ135, Anda dapat mengunduh dan menginstal perpustakaan MQ135 ini dari sini:
Dengan menggunakan pustaka ini, Anda bisa langsung mendapatkan nilai PPM, hanya dengan menggunakan dua baris di bawah ini:
MQ135 gasSensor = MQ135 (A0); float air_quality = gasSensor.getPPM ();
Tetapi sebelum itu kita perlu mengkalibrasi sensor MQ135, untuk mengkalibrasi sensor unggah kode yang diberikan di bawah ini dan biarkan berjalan selama 12 hingga 24 jam dan kemudian dapatkan nilai RZERO .
#include "MQ135.h" void setup () {Serial.begin (9600); } loop kosong () {MQ135 gasSensor = MQ135 (A0); // Pasang sensor ke pin A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); penundaan (1000); }
Setelah mendapatkan nilai RZERO . Letakkan nilai RZERO di file perpustakaan yang Anda unduh "MQ135.h": #define RZERO 494.63
Sekarang kita dapat memulai kode sebenarnya untuk proyek pemantauan kualitas udara kita.
Dalam kode, pertama-tama kita telah mendefinisikan perpustakaan dan variabel untuk sensor Gas dan LCD. Dengan menggunakan Software Serial Library, kita dapat membuat pin digital apapun sebagai pin TX dan RX. Pada kode ini, kami telah menjadikan Pin 9 sebagai pin RX dan pin 10 sebagai pin TX untuk ESP8266. Kemudian kami telah menyertakan perpustakaan untuk LCD dan telah menentukan pin yang sama. Kami juga telah menetapkan dua variabel lagi: satu untuk pin analog sensor dan lainnya untuk menyimpan nilai air_quality .
#include
Kemudian kita akan mendeklarasikan pin 8 sebagai pin keluaran dimana kita telah menghubungkan bel. Perintah l cd.begin (16,2) akan memulai LCD untuk menerima data dan kemudian kita akan mengatur kursor ke baris pertama dan akan mencetak 'circuitdigest' . Kemudian kita akan mengatur 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 ("Sensor Pemanasan"); penundaan (1000);
Kemudian kami akan mengatur baud rate untuk komunikasi serial. ESP yang berbeda memiliki baud rate yang berbeda jadi tulislah sesuai dengan baud rate ESP Anda. Kemudian kami akan mengirimkan perintah untuk mengatur ESP untuk berkomunikasi dengan Arduino dan menunjukkan alamat IP pada monitor serial.
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 pada halaman web di browser web, kita harus menggunakan pemrograman HTML. Jadi, kami telah membuat string bernama halaman web dan menyimpan hasilnya di dalamnya. Kami mengurangi 48 dari output karena fungsi read () mengembalikan nilai desimal ASCII dan angka desimal pertama yang 0 dimulai pada 48.
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {delay (1000); int connectionId = esp8266.read () - 48; String halaman web = "
Sistem Pemantauan Polusi Udara IOT
"; halaman web + =""; halaman web + =" Kualitas Udara adalah "; halaman web + = air_quality; halaman web + =" PPM "; halaman web + ="
";
Kode berikut akan memanggil fungsi bernama sendData dan akan mengirim string data & pesan ke halaman web untuk ditampilkan.
sendData (cipSend, 1000, DEBUG); sendData (halaman web, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Kode berikut akan mencetak data pada LCD. Kami telah menerapkan berbagai kondisi untuk memeriksa kualitas udara, dan LCD akan mencetak pesan sesuai dengan kondisi tersebut dan bel juga akan berbunyi bip jika polusi melebihi 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Kualitas Udara adalah"); lcd.print (kualitas_air); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Udara Segar"); digitalWrite (8, LOW);
Akhirnya fungsi di bawah ini akan mengirim dan menampilkan data di halaman web. Data yang kami simpan dalam string bernama 'halaman web' akan disimpan dalam string bernama 'perintah' . ESP kemudian akan membaca karakter satu per satu dari 'perintah' dan akan mencetaknya di halaman web.
String sendData (Perintah string, batas waktu const int, debug boolean) {String response = ""; esp8266.print (perintah); // kirim karakter yang sudah dibaca ke esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// esp memiliki data jadi tampilkan keluarannya ke jendela serial char c = esp8266.read (); // baca karakter selanjutnya. respon + = c; }} jika (debug) {Serial.print (respon); } tanggapan balik; }
Pengujian dan Keluaran Proyek:
Sebelum mengunggah kode, pastikan Anda terhubung ke Wi-Fi perangkat ESP8266 Anda. Setelah mengunggah, buka monitor serial dan itu akan menunjukkan alamat IP seperti yang ditunjukkan di bawah ini.
Ketik alamat IP ini di browser Anda, itu akan menunjukkan output seperti yang ditunjukkan di bawah ini. Anda harus menyegarkan halaman lagi jika ingin melihat Nilai Kualitas Udara saat ini di PPM.
Kami telah menyiapkan server lokal untuk menunjukkan kerjanya, Anda dapat memeriksa Video di bawah ini. Tetapi untuk memantau kualitas udara dari mana pun di dunia, Anda perlu meneruskan port 80 (digunakan untuk HTTP atau internet) ke alamat IP lokal atau pribadi (192.168 *) perangkat Anda. Setelah port forwarding semua koneksi yang masuk akan diteruskan ke alamat lokal ini dan Anda dapat membuka halaman web yang ditampilkan di atas dengan hanya memasukkan alamat IP publik internet Anda dari mana saja. Anda dapat meneruskan port dengan masuk ke router Anda (192.168.1.1) dan menemukan opsi untuk mengatur penerusan port.