Tutorial ESP32 : External Sensor — BME280

Dionne Aurelia
5 min readFeb 21, 2021

--

Halo gais! Welcome to Project #4

Setelah minggu lalu kita bahas sensor internal, kali ini kita akan bahas sensor eksternal. Sebenarnya sensor eksternal sendiri ada banyak macamnya, beberapa contoh yang umum digunakan adalah sensor BME280, sensor BMP180, dan sensor DHT11/DHT22. Kebetulan aku pake yang sensor BME280 seperti Gambar 1, tapi sebenarnya BME280 sendiri juga ada banyak macam. Sensor ini nantinya akan dihubungkan ke microcontroller ESP32 melalui I2C atau SPI communication protocol. BME280 bisa dipake buat ngukur temperatur, tekanan, dan kelembaban. Selain itu, kita juga bisa tau ketinggian posisi kita di atas permukaan laut dari tekanan yang diukur oleh sensor.

Gambar 1 Sensor BME280. Source : https://randomnerdtutorials.com/esp32-bme280-arduino-ide-pressure-temperature-humidity/

Komponen yang Dibutuhkan

Buat proyek kali ini, kita butuh beberapa komponen yaitu :

  • ESP32 Development Board
  • BME-280
  • Kabel jumper (male-to-male, female-to-female)
  • Breadboard
  • Kabel micro-USB
  • Laptop

Sensor BME-280

Sebelom kita pake sensornya, kita harus install library di Arduino IDE terlebih dahulu biar kita bisa dapat pembacaan dari sensornya. Jadi, kita harus download Adafruit_BME280 library di Sketch > Include Library > Manage Libraries.

Gambar 2 Set Up Arduino

Biar bisa pakai library BME280, kita juga harus install Adafruit_Sensor library di Sketch > Include Library > Manage Libraries (paling bawah).

Gambar 3 Set Up Arduino (2)

Nah, kalau udah install library-nya, kita bakal masuk ke percobaannya. Pertama, rangkai komponen seperti Gambar 4.

Gambar 4 Rangkaian Komponen. Sumber: https://randomnerdtutorials.com/esp32-bme280-arduino-ide-pressure-temperature-humidity/

Buat nyambungin ke sensornya kalian bisa langsung kabel jumper ke kaki sensor atau bisa juga kalian pasang sensornya di breadboard. Kalau di BME280 yang aku pakai, pin VCC tulisannya VIN, SDI tulisannya SDA, dan SCK tulisannya SCL. Perhatiin sambungannya ya gais, jangan sampai ketuker karena nanti sensornya bisa ga kedeteksi. Biar lebih mudah, kalian bisa lihat ke Tabel 1 buat tau pin yang dihubungkan antara ESP32 dan BME280.

Tabel 1 Rincian Koneksi Antara BME280 dengan ESP32

Setelah komponen selesai dirangkai, masukkan kode di bawah ini ke Arduino IDE atau kalian juga bisa menggunakan contoh kode dari Arduino di File > Examples > Adafruit BME280 library > bme280 test. Kalo kode di bawah ini, aku modifikasi sedikit dari contoh yang ada di Arduino. Dengan kode di bawah, kita bisa tau apakah sensor mendeteksi perubahan temperatur dengan LED built-in ESP32, saat temperatur di atas 26 derajat celcius LED akan nyala dan sebaliknya. Aku pilih 26 derajat celcius karena waktu aku cek pake serial monitor, minimal temperatur waktu sensornya aku sentuh segitu.

//Kode cekSensor//include semua library
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define SEALEVELPRESSURE_HPA (1013.25)//untuk menetukan ketinggian (altitude)Adafruit_BME280 bme; // I2Cunsigned long delayTime;void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
Serial.println(F("BME280 test"));
bool status;// default settings
status = bme.begin(0x76); //inisialisasi sensor
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
Serial.println("-- Default Test --");
delayTime = 1000;
Serial.println();
}
void loop() {
if (bme.readTemperature()>26){ //terjadi perubahan temperatur saat sensor disentuh
digitalWrite(LED_BUILTIN, HIGH);
}
else{
digitalWrite(LED_BUILTIN, LOW);
}
printValues();
delay(delayTime);
}
void printValues() {//menampilkan nilai yang dideteksi sensor ke serial monitorSerial.print("Temperature = ");
Serial.print(bme.readTemperature()); //mendeteksi temperatur
Serial.println(" *C");

Serial.print("Pressure = ");
Serial.print(bme.readPressure() / 100.0F);//mendeteksi tekanan
Serial.println(" hPa");
Serial.print("Approx. Altitude = ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));//mendeteksi ketinggian
Serial.println(" m");
Serial.print("Humidity = ");
Serial.print(bme.readHumidity()); //mendeteksi kelembaban
Serial.println(" %");
Serial.println();
}

Kalo kalian pake contoh dari Arduino jangan lupa isi alamat di bagian inisialisasi sensor. Nah untuk alamatnya sesuaikan dengan alamat I2C dari sensor kalian. Waktu awal aku coba-coba, aku ga sadar kalo di contohnya belom ada isinya dan akhirnya ga muncul apa-apa di serial monitor. Buat cek alamat, kalian bisa pake kode di bawah ini terus buka serial monitor dengan baud rate 115200 dan hasilnya akan seperti Gambar 5. Jadi karena dari hasil pengecekan alamat I2C sensor yang aku pake adalah 0x76, aku inisialisasi sensor dengan alamat 0x76. Setelah itu, upload kodenya dan buka Tools > Serial Monitor, kemudian ubah baud rate menjadi 9600. Jika berhasil, tampilan akan seperti Gambar 6 dan jika temperatur lebih dari 26 derajat celcius, LED built-in ESP32 akan menyala. Kalian bisa coba pegang sensornya, seharusnya temperatur akan mengalami kenaikan.

Gambar 5 Hasil Pengecekan Address
Gambar 6 Hasil Deteksi Sensor
//Kode cekAddress
#include <Wire.h>

void setup() {
Wire.begin();
Serial.begin(115200);
Serial.println("\nI2C Scanner");
}

void loop() {
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address<16) {
Serial.print("0");
}
Serial.println(address,HEX);
nDevices++;
}
else if (error==4) {
Serial.print("Unknow error at address 0x");
if (address<16) {
Serial.print("0");
}
Serial.println(address,HEX);
}
}
if (nDevices == 0) {
Serial.println("No I2C devices found\n");
}
else {
Serial.println("done\n");
}
delay(5000);
}

Buat lebih jelasnya, langsung tonton video ini yakk..

Analisis

Pada proyek kali ini, aku belajar tentang sensor eksternal BME280 yang dapat mendeteksi temperatur, tekanan, kelembaban, serta menghitung ketinggian. Pengalaman yang menarik adalah waktu awal aku coba upload kode cekSensor aku ga isi address di bagian inisialisasi sensor karena aku kira itu udah ada isinya. Waktu aku buka serial monitor, ga muncul apa-apa, tapi waktu aku upload ga muncul error message, jadi aku kira sensornya yang rusak dan sempet panik tuh wkwk… Akhirnya, setelah aku baca-baca tutorial aku baru sadar kalo bagian itu masih kosong haha, trus akhirnya aku benerin dan berhasil yeay. Setelah itu, aku coba modif kodenya biar kita bisa cek apakah sensor mendeteksi perubahan suhu tanpa perlu lihat serial monitor melainkan dengan LED built-in ESP32 dan berhasil juga hihi. Jadi, kalian harus pastiin kode yang digunakan sudah lengkap dan juga pin BME280 sudah tersambung dengan pin ESP32 yang tepat. Oh ya, sedikit tips gais, biasanya kalo kita beli sensor tu kakinya terpisah, buat kalian yang misal pesan sensor secara online bisa banget request biar kaki sensornya disolder sekalian. Nah, jadi gitu dulu yaa buat proyek kali ini. Stay tune buat proyek-proyek berikutnya yang pastinya lebih seru lagi! :)

--

--