Mengakses BME680 Environmental Sensor

Indobot Update

Halo Sahabat Indobot!

Kali ini kita akan mencoba belajar mengakses Sensor Lingkungan BME680 dengan menggunakan NodeMCU ESP8266. Bagaimana cara mengaksesnya? yuk kita simak.

 

NodeMCU ESP8266 adalah salah satu mikrokontroler yang memiliki fasilitas wifi dan bluetooth. NodeMCU ESP8266 cukup terkenal dalam bidang IoT. Mulai dari ukurannya yang kecil, hingga fasilitasnya yang sesuai dengan kebutuhan IoT. Dikarenakan NodeMCU ini seperti mikrokontroler, jadi dapat juga digunakan tanpa harus project IoT, namun dapat juga digunakan untuk project otomatisasi biasa.

BME680 Enviromental Sensor merupakan sensor yang dapat membaca 4 hal yaitu suhuu, kelembaban, tekanan udara, dan Gas Volatile Organic Compounds (VOC) (seperti Ethanol) dan karbon monoksida. Sensor sudah seperti 4 in 1, sangat multifungsi. Ini sering digunakan untuk monitoring kualitas udara. Sensor ini menggunakan teknologi MEMS, berukuran kecil dan membutuhkan konsumsi daya yang rendah. Penggunaan sensor ini dapat dikembangkan menjadi pemantauan lingkungan, otomatisasi dan kontrol rumah, dan dapat juga dijadikan sebagai perangkat IoT.

Berikut ini spesifikasi dari BME680 Enviromental Sensor.

Tegangan Masukan: 3.3V – 5.5V

Arus Operasi: 5mA (25mA dalam Pengukuran VOC)

Communication IInterface: I2C (dapat digunakan di 3.3V/5V) atau SPI (port non-I2C lainnya hanya mendukung 3.3V)

Alamat I2C Default: 0x76

Rentang Pengukuran Suhu: -40 – + 85

Presisi Pengukuran Suhu: ± 1,0 (0 – 65 )

Rentang Pengukuran Kelembaban: 0 – 100%r.H.

Presisi Pengukuran Kelembaban: ±3%r.H. (20-80% r.H.,25℃)

Rentang Pengukuran Tekanan Atmosfer: 300 – 1100 hPa

Presisi Pengukuran Tekanan Atmosfer: ± 0.6 hPa (300-1100 hPa, 0 ~ 65 )

Kisaran IAQ (Kualitas Udara Dalam Ruangan): 0~500 (semakin besar, semakin buruk)

Dimensi: 18×15.6(mm) /0.71×0.61(inci)

Berikut cara mengaksesnya. Perhatikan baik-baik ya gaes.

Alat dan Bahan

Alat dan bahan untuk project ini adalah sebagai berikut.

  1. Software Arduino IDE
  2. NodeMCU ESP8266 1
  3. BME680 Enviromental Sensor 1
  4. Projectboard 1
  5. Kabel jumper Secukupnya

 

Belajar Elektronika, Arduino, dan IoT step by step dengan bantuan tangga belajar? Daftar sekarang dan dapatkan PROMO

 

Rangkaian

Susun device di atas menjadi rangkaian seperti berikut. Pastikan semua terhubung dengan baik.

Keterangan:

SCL BME680 dengan GPIO 5 (D1)) NodeMCU ESP8266

SDA BME680 dengan GPIO 4 (D2)) NodeMCU ESP8266

baca juga: Cara Akses Sensor Tanah (Soil Moisture Sensor)

Program

Tahap selanjutnya adalah penulisan program pada Arduino IDE. Buatlah program seperti berikut. Perhatikan keterangan (comment) untuk memahami program dengan baik.

Jangan lupa untuk memasukkan terlebih dahulu library Adafruit Sensor dan Adafruit BME680.

 

 
//Pembacaan sensor Enviromental BME680#include
#include
#include
#include "Adafruit_BME680.h"#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10#define SEALEVELPRESSURE_HPA (1013.25)Adafruit_BME680 bme; // menggunakan I2C
//Adafruit_BME680 bme(BME_CS); // hardware SPI
//Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK);void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println(F("BME680 async test"));

if (!bme.begin()) {
Serial.println(F("Could not find a valid BME680 sensor, check wiring!"));
while (1);
}

// Set up oversampling and filter initialization
bme.setTemperatureOversampling(BME680_OS_8X);
bme.setHumidityOversampling(BME680_OS_2X);
bme.setPressureOversampling(BME680_OS_4X);
bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
bme.setGasHeater(320, 150); // 320*C for 150 ms
}

void loop() {
// melakukan pembacaan pada BME
unsigned long endTime = bme.beginReading();
if (endTime == 0) { //Memastikan pembacaan
Serial.println(F("Pembacaan BME Gagal :("));
return;
}
Serial.print(F("Mulai pembacaan pada "));
Serial.print(millis());
Serial.print(F(" dan akan berakhir pada "));
Serial.println(endTime);

delay(50);
if (!bme.endReading()) {
Serial.println(F("Pembacaan masih belum Berhasil :("));
return;
}
Serial.print(F("Pembacaan Selesai pada "));
Serial.println(millis());

Serial.print(F("Temperatur = "));
Serial.print(bme.temperature);
Serial.println(F(" *C"));

Serial.print(F("Tekanan = "));
Serial.print(bme.pressure / 100.0);
Serial.println(F(" hPa"));

Serial.print(F("Kelembaban = "));
Serial.print(bme.humidity);
Serial.println(F(" %"));

Serial.print(F("Gas = "));
Serial.print(bme.gas_resistance / 1000.0);
Serial.println(F(" KOhms"));

Serial.print(F("Approx. Altitude = "));
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(F(" m"));

Serial.println();
delay(2000);
}

baca juga: Menampilkan Suhu, Kelembaban, Tekanan Udara,dan Gas dengan Menggunakan LCD dan Sensor BME680

Upload program di atas. Jika Sudah, maka kita dapat melihat di bagian Serial Monitor 9600. Jika sudah muncul keterangan Suhu, tekanan, kelembaban, gas, dan ketinggian dari permukaan laut, maka program sudah benar.

Program di atas menggunakan I2C sesuai dengan gambar rangkaian. Namun jika teman-teman sudah menggunakan port I2C untuk LCD (misalnya). Kita dapat menggunakan sistem SPI dengan menggunakan port berikut.

#define BME_SCK 13

#BME_MISO 12

#define BME_MOSI 11

#BME_CS 10

dan tentunya, dengan menggunakan program tersebut. ditambah dengan program ini Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK);

Bagaimana? mudah bukan? Silakan bisa dicoba ya gaes.

Bikin project tanpa ribet beli komponen sana-sini? Starter Kit Arduino/IoT bisa jadi solusi mu!

 

Ingin Tahu Program Kami Lebih Lanjut?

Silahkan isi Formulir Dibawah Ini untuk Diskusi dengan Tim Indobot Academy.

Baca Juga

Bagikan:

Tinggalkan komentar

whatsapp