Tutorial BME680 Menggunakan ESP32 dan Arduino IDE
BME680 adalah sensor yang digunakan untuk menukur gas, tekanan, kelembaban dan suhu. Dalam tutorial ini, anda akan mempelajari cara menggunkaan sensor BME680 dengan ESP32 dan Arduino IDE. Sensor ini berkomunikasi dengan mikrokontroler menggunakan protocol komunikasi I2C atau SPI.
Hal hal yang akan dipelajari pada tutorial ini adalah cara menghubungkan sensor ke board ESP32, instal library yang diperlukan, menggunakan program sederhana untuk menampilkan hasil pembacaan sensor di Serial Monitor, dan memonitor sensor anda dari jarak jauh menggunakan web.
Sensor BME689
BME680 adalah modul sensor yang menggabungkan sensor gas, tekanan, kelembaban dan suhu. Sesnor ini dapat mendeteksi berbagai macam gas seperti senyawa organic volatile (VOC). Oleh karena itu BME680 dapat digunakan dalam pengendalian kualitas udara dalam ruangan.
Apa saja yang dapat di ukur oleh sensor BME680?
- Suhu
- Kelembaban
- Tekanan Barometrik
- Gas : senyawa organic volatile (VOC) seperti etanol dan karbon monoksida
Sensor Gas dalam BME680
BME680 berisi sensor MOX (Metal-oxide) yang mendeteksi VOC di udara. Sensor ini memberikan gambaran kualitatif tentang jumlah VOC/kontaminan di udara sekitar, tidak secara spesifik untuk molekul gas tertentu.
Sensor MOX terdiri dari permukaan oksida logam, chip sensoring untuk mengukur perubahan konduktivitas, dan pemanas. Sensor inimendeteksi VOC dengan cara adsorpsi molekul oksigen pada lapisan sensitifnya. BME680 akan bereaksi terhadap sebagian besar VOC yang mencemari udara dalam ruangan kecil kecuali CO2.
Ketika sensor bersentuhan dengan gas pereduksi, molekul oksigen bereaksi dan meningkatkan konduktivitas di permukaan. Sebagai sinyal, BME680 akan menghasilkan nilai resistansi dan nilai nilai ini akan berubah berdasarkan variasi konesntrasi VOC.
- Konsentrasi VOC yang lebih tinggi akan menghasilkan resistansi yang lebih rendah
- Konsentrasi VOC yang lebih rendah akan menghasilkan resistansi yang lebih tinggi
Reaksi yang terjadi pada permukaan sensor dipengaruhi oleh parameter selain konsentrasi VOC, seperti suhu dan kelembapan.
Sensor gas memberikan gambaran kualitatif tentang gas VOC di udara sekitar. Sehingga anda dapat melihat apakah kualitas udara meningkat atau menurun. Untuk mendapatkan pengukuran yang tepat, sensor perlu di kalibrasi terlebih dahulu.
Cara untuk kalibrasi nya adalah pada saat pertama kali memakai sensor tersebut disarankan untuk menjalankan selama 48 jam setelah mulai mengumpulkan data realtime. Setelah itu, disarankan untuk menjalankan sensor selama 30 menit sebelum mendapatkan pembacaanb gas yang akurat.
Akurasi Sensor BME680
Rentang Operasi BME680
Susunan pin BME680
Antarmuka BME680
Modul sensor BME680 ini mendukung antarmuka I2C dan SPI
Untuk menggunakan protocol komunikasi I2C, gunakan pin-pin berikut ini :
GPIO 22 (SCL) dan GPIO 21 (SDA) adalah pin I2C default ESP32. Selain pin tersebut kamu juga bias menggunakan pin lain namun pastikan kamu mengaturnya sesuai dengan kode programnya.
Untuk menggunakan protocol komunikasi SPI, gunakan pin-pin berikut ini :
Selain pin tersebut kamu juga bias menggunakan pin lain namun pastikan kamu mengaturnya sesuai dengan kode programnya.
Komponen yang di perlukan
- Modul sensor BME680
- ESP32
- Breadboard
- Kabel jumper
(klik tautan tersebut untuk masuk ke webstore cnc store bandung)
Diagram Skematik ESP32 dengan BME680
- Komunikasi I2C
- Komunikasi SPI
Menginstal Library BME680
Untuk mendapatkan pembacaan dari modul sensor BME680, kita akan menggunakan library Adafruit_BME680 . Ikuti langkah-langkah selanjutnya untuk menginstal library di Arduino IDE Anda:
Buka Arduino IDE Anda dan masuk ke Sketch > Include Library > Manage Libraries . Pengelola Pustaka (Library Manager) akan terbuka.
Cari “ adafruit bme680 ” di kotak Pencarian dan instal library tersebut.
Menginstal Library Adafruit_Sensor
Untuk menggunakan library BME680, Anda juga perlu menginstal library Adafruit_Sensor . Ikuti langkah-langkah berikut untuk menginstal library di Arduino IDE Anda:
Buka Sketch > Include Library > Manage Libraries dan ketik “ Adafruit Unified Sensor ” di kotak pencarian. Gulir ke bawah hingga menemukan library tersebut dan instal.
Program Pembacaan BME680 : Gas, Tekanan, Kelembapan, dan Suhu
Untuk membaca nilai gas, tekanan, suhu, dan kelembapan, kita akan menggunakan contoh sketsa dari library.
Setelah menginstal library BME680 dan library Adafruit_Sensor, buka Arduino IDE dan masuk ke File > Examples > Adafruit BME680 Library > bme680async
Klik disini untuk full codingan
Cara Kerja Kode
Perpustakaan
Kode tersebut dimulai dengan menyertakan pustaka yang dibutuhkan:kabelpustaka untuk menggunakan I2C,SPIpustaka (jika Anda ingin menggunakan SPI alih-alih I2C),Adafruit_SensorDanAdafruit_BME680pustaka untuk berinteraksi dengan sensor BME680.
Komunikasi SPI
Kami lebih memilih menggunakan protokol komunikasi I2C dengan sensor. Namun, kode sudah disiapkan jika Anda ingin menggunakan SPI. Anda hanya perlu menghapus komentar pada baris kode berikut yang mendefinisikan pin SPI.
Tekanan permukaan laut
Sebuah variabel yang disebutSEALEVELPRESSURE_HPAdiciptakan.
Variabel ini menyimpan tekanan di permukaan laut dalam satuan hektopascal (setara dengan milibar). Variabel ini digunakan untuk memperkirakan ketinggian untuk tekanan tertentu dengan membandingkannya dengan tekanan permukaan laut. Contoh ini menggunakan nilai default, tetapi untuk hasil yang akurat, ganti nilainya dengan tekanan permukaan laut saat ini di lokasi Anda.
I2C
Contoh ini menggunakan protokol komunikasi I2C secara default. Baris berikut membuat sebuahAdafruit_BME680objek yang disebutbmepada pin I2C ESP32 default:GPIO 22(SCL),GPIO 21(SDA).
Untuk menggunakan SPI, Anda perlu mengomentari baris sebelumnya dan menghapus komentar pada baris berikutnya.
setup()
Di dalamsetup()Memulai komunikasi serial.

Inisialisasi Sensor BME680
Inisialisasi sensor BME680:
Atur parameter berikut (oversampling, filter, dan pemanas gas) untuk sensor.
Untuk meningkatkan resolusi data mentah sensor, fitur ini mendukung oversampling. Kita akan menggunakan parameter oversampling default, tetapi Anda dapat mengubahnya.
- setTemperatureOversampling(): mengatur pengambilan sampel suhu berlebih.
- setHumidityOversampling(): mengatur pengambilan sampel kelembapan berlebih.
- setPressureOversampling(): mengatur tekanan pengambilan sampel berlebih.
Metode-metode ini dapat menerima salah satu parameter berikut:
- BME680_OS_NONEmatikan fitur membaca;
- BME680_OS_1X
- BME680_OS_2X
- BME680_OS_4X
- BME680_OS_8X
- BME680_OS_16X
Sensor BME680 mengintegrasikan filter IIR internal untuk mengurangi perubahan jangka pendek pada nilai keluaran sensor yang disebabkan oleh gangguan eksternal.setIIRFilterSize()Metode ini mengatur filter IIR. Metode ini menerima ukuran filter sebagai parameter:
- BME680_UKURAN_FILTER_0(tanpa penyaringan)
- BME680_UKURAN_FILTER_1
- BME680_UKURAN_FILTER_3
- BME680_UKURAN_FILTER_7
- BME680_UKURAN_FILTER_15
- BME680_UKURAN_FILTER_31
- BME680_UKURAN_FILTER_63
- BME680_UKURAN_FILTER_127
Sensor gas terintegrasi dengan pemanas. Atur profil pemanas menggunakansetGasHeater()Metode yang menerima argumen sebagai berikut:
- suhu pemanas (dalam derajat Celcius)
- Waktu pemanas harus menyala (dalam milidetik)
Kita akan menggunakan pengaturan default: 320 ºC selama 150 ms.
lingkaran()
Di dalam
lingkaran(), kita akan mendapatkan pengukuran dari sensor BME680.
Pertama, perintahkan sensor untuk memulai pembacaan asinkron dengan
bme.beginReading()Ini akan menampilkan waktu kapan pembacaan akan siap.
Kemudian, hubungi
akhiri pembacaan()Metode untuk mengakhiri pembacaan asinkron. Jika pembacaan asinkron masih berlangsung, blokir hingga selesai.
Setelah itu, kita bisa mendapatkan hasil pengukuran sebagai berikut:
- suhu bme.: mengembalikan pembacaan suhu
- tekanan bme: mengembalikan pembacaan tekanan
- kelembapan bme: mengembalikan pembacaan kelembapan
- bme.gas_resistance: mengembalikan hambatan gas
Demonstrasi
Unggah kode ke papan ESP32 Anda. Buka Tools > Board dan pilih papan ESP32 yang Anda gunakan. Buka Tools > Port dan pilih port tempat papan Anda terhubung. Kemudian, klik tombol unggah.
Buka Serial Monitor dengan kecepatan baud 115200, tekan tombol RST pada papan. Pengukuran sensor akan ditampilkan.
Kode – Server Web ESP32 dengan BME680
Di bagian ini, kami memberikan contoh server web yang dapat Anda buat dengan ESP32 untuk menampilkan pembacaan BME680.
Menginstal Pustaka – Server Web Asinkron
Untuk membangun server web, Anda perlu menginstal pustaka-pustaka berikut. Klik tautan di bawah ini untuk mengunduh pustaka-pustaka tersebut.
Pustaka-pustaka ini tidak tersedia untuk diinstal melalui Arduino Library Manager, jadi Anda perlu menyalin file pustaka ke folder Arduino Installation Libraries. Alternatifnya, di Arduino IDE Anda, Anda dapat membuka Sketch > Include Library > Add .zip Library dan memilih pustaka yang baru saja Anda unduh
Kode
Kemudian, unggah kode berikut ke papan Anda (ketik SSID dan kata sandi Anda).
Demonstrasi
Setelah mengunggah, buka Serial Monitor dengan kecepatan baud 115200 untuk mendapatkan alamat IP ESP32.
Buka browser dan ketik alamat IP. Anda akan mendapatkan akses ke server web dengan pembacaan sensor terbaru. Anda dapat mengakses server web tersebut di komputer, tablet, atau ponsel cerdas Anda di jaringan lokal Anda.
Data pembacaan diperbarui secara otomatis di server web menggunakan Server-Sent Events (SET).
Kesimpulan
Modul sensor BME680 adalah sensor digital 4-in-1 yang menggabungkan sensor gas, tekanan, suhu, dan kelembaban. BME680 berisi sensor MOX yang mendeteksi keberadaan sebagian besar gas VOC. Sensor ini memberikan gambaran kualitatif tentang jumlah VOC/kontaminan di udara sekitar. Karena alasan ini, BME680 dapat digunakan untuk memantau kualitas udara dalam ruangan.






































