Mengukur Suhu dengan BMP280
Ada beberapa sensor yang dapat kita gunakan untuk melakukan pengukuran suhu pada ESP32, seperti :
- BMP280
- DHT11/DHT22
- BME280
- BME680
- DS18B20
- Multiple DS18B20
- BMP180
- BMP388
Tapi dalam project kali ini saya akan menggunakan BMP280 sebagai sensor mengukur suhu.
Mengenal BMP280
Sensor ini menggunakan prokol I2C sebagai jalur komunikasinya.
pin yang digunakan adalah seperti pada tabel :
Yang akan digunakan
- ESP32 DevKit V1
- Breadboard MB-102
- Sensor BMP280
- Jumper
- Kabel Data USB
Sebelum melanjutkan tutorial ini Anda harus menginstal add-on ESP32 di Arduino IDE Anda. anda bisa mengikuti cara install Arduino IDE pada project-01
Skema – ESP32 dengan BMP280 menggunakan I2C
Kita akan menggunakan komunikasi I2C dengan modul sensor BMP280. Untuk itu, sambungkan sensor ke ESP32 melalui pin SDA Dan SCL, seperti yang ditunjukkan pada diagram skematik berikut.
Instalasi Library yang dibutuhkan
Agar sensor BMP280 bisa terbaca pada Arduino IDE, kita harus menambahkan librarynya pada Arduino IDE.
Library adafruit BMP280
Jalankan Program Arduino IDE, selanjutnya pada Menu klik Tools --> Manage Libraries
Cari “ adafruit bmp280 ” di kotak Pencarian dan instal librarinya
Install Adafruit_Sensor Library
Anda juga instal Library Adafruit Unified Sensor
pada pencarian library ketikan "Adafruit Unified Sensor", bila ketemu silahkan diinstal.
Bila sudah terinstall silahkan direstart Arduino IDE
Lets Party, Membaca Tekanan Suhu
Pertama kita buat dulu Kode Programnya: kita gunakan kode program bawaan Aruduino dengan cara mengakses menu File --> Examples --> Adafruit BMP280 Library --> bmp280test
#include <Wire.h>
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp; // I2C
void setup() {
Serial.begin(9600);
while ( !Serial ) delay(100); // wait for native usb
Serial.println(F("BMP280 test"));
unsigned status;
status = bmp.begin(0x76);
if (!status) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring or "
"try a different address!"));
Serial.print("SensorID was: 0x"); Serial.println(bmp.sensorID(),16);
Serial.print(" ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
Serial.print(" ID of 0x56-0x58 represents a BMP 280,\n");
Serial.print(" ID of 0x60 represents a BME 280.\n");
Serial.print(" ID of 0x61 represents a BME 680.\n");
while (1) delay(10);
}
}
void loop() {
Serial.print(F("Temperature = "));
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print(F("Pressure = "));
Serial.print(bmp.readPressure());
Serial.println(" Pa");
Serial.print(F("Approx altitude = "));
Serial.print(bmp.readAltitude(1013.25)); /* Adjusted to local forecast! */
Serial.println(" m");
Serial.println();
delay(2000);
}
Cara kerja kode
Komunikasi yang dipakai pada modul ini adalah protokol I2C Adafruit_BMP280 bmp; // I2C
Melakukan persiapakan komunikasi serial :
Serial.begin(9600);
Selanjutnya program melakukan inisialisasi sensor
status = bmp.begin();
if (!status) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring or "
"try a different address!"));
Inisiasi sensor berada pada alamat 0x76, bila anda ingin mencari addres dari suatu sensor anda bisa membaca artikel I2C Scanner
Mencetak hasil
void loop() {
Serial.print(F("Temperature = "));
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Finalisasi
Hubungkan ESP32 ke Laptop/Komputer, Unggah kode ke ESP32 Anda, dan buka Serial Monitor dengan baud rate 9600. Tekan tombol RST/EN on-board untuk menjalankan kode. Anda akan melihat pembacaan ditampilkan pada Serial Monitor.
Troubleshooting
- Sensor BMP280 sangat sentif, jadi hati hati kena listrik statis, akan mengakibatkan sensor rusak
- Dalam instalasi Librari, pastikan librari yang di gunakan adalah Librari BMP280, Karna disaat pertama saya melakukan percobaan ini, sempat panik sensornya tidak terbaca, ternyata saya menggunakan library BME280.
- Pastikan baud rate pada serial monitor di set 9600, akan menyebabkan error pembacaan sensor bila baud ratenya tidak sesuai.