Balik lagi sama Zarfa! Projek apa lagi ya kira-kira yang menarik untuk kita coba?? Karena yang lalu-lalu kita sudah bermain sama LED dan push button, sekarang kita tambah komponen baru yuk! Kita akan membuat projek dengan BMP 180 Barometric Sensor! :)
Barometer adalah alat yang digunakan untuk mengukur tekanan udara di sekeliling suatu benda. Jadi sensor barometrik ini akan menunjukkan ke kita jika tekanan udara di sekitar ESP32 berubah. Eits, tapi bukan cuma itu aja, kita juga bisa mengetahui jika terdapat perubahan ketinggian karena tekanan udara pada saat posisi benda di tempat yang tinggi dan rendah akan berpengaruh pada tekanan udara. Sensor ini juga dilengkapi sensor suhu karena suhu juga memengaruhi tekanan.
Siapkan ini dulu!
- Laptop
- Breadboard 830 MB102 Points Solderless
- ESP32 Dual-Mode Development Board
- Kabel Micro USB
- BMP180 Barometric Sensor
Sensor ini banyak dijual di e-commerce manapun, hal yang paling penting dalam membeli ini adalah pastikan kamu meminta pihak toko untuk menyolderkan dahulu sensor ini, karena jika kamu tidak memintanya, kamu terpaksa harus menyolder sendiri agar kaki sensor ini dapat menempel pada sensornya! Harga sensor ini murah kok, sekitar 9k pada tahun 2020
Yuk langsung mulai!
Langsung ikutin step-stepnya aja ya teman-teman!
- Buat rangkaian seperti skema di bawah dengan pasangan sebagai berikut:
ESP32 GPIO 3V3 — VIN BMP180
ESP32 GPIO GND — GND BMP180
ESP32 GPIO 22— SCL BMP180
ESP32 GPIO 21— SDA BMP180
2. Buka aplikasi arduino dan sambungkan dengan ESP32
3. sekarang, download terlebih dahulu BMP085 pada arduino anda dengan klik tools -> manage libraries -> search “bmp085” -> install all
4. Check apakah sensor dan rangkaian berjalan dengan baik atau tidak dengan buka file -> new lalu tulisakan kode seperti berikut
#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);
}
Kode ini akan mengeluarkan apakah sensor berjalan dengan baik dan mengembalikan nilai address untuk kode kita selanjutnya.
5. Upload kode tersebut lalu check di tools -> serial monitor sehingga akan tampil di layar laptop anda seperti ini
Berikut adalah tampilan yang dapat terlihat jika rangkaian benar. Terlihat seperti gambar bahwa I2C device found dengan address 0x77 yang akan kita gunakan untuk kode selanjutnya. Jika tampilan anda tidak seperti ini, coba cek bagian kanan bawah yang terdapat angka 115200 baud, ubah seperti yang terlihat di gambar atau ubah dengan angka di kode kalian pada baris ke5. Apabila tetap tidak bisa, cek kembali rangkaian anda karena bisa saja tertukar kabelnya dan mungkin saja terdapat komponen anda yang tidak berfungsi dengan baik
6. file -> example -> Adafruit BMP085 Library ->BMP085test untuk mendapatkan kode utama untuk projek kita kali ini
7. edit kode program
#include <Adafruit_BMP085.h>Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin(0x77)) {
Serial.println(“Could not find a valid BMP085 sensor, check wiring!”);
while (1) {}
}
}
void loop() {
// mengembalikan tinggi temperatur yang terdeteksi di sensor
Serial.print(“Temperature = “);
Serial.print(bmp.readTemperature());
Serial.println(“ *C”); //mengembalikan tinggi tekanan yang terdeteksi
Serial.print(“Pressure = “);
Serial.print(bmp.readPressure());
Serial.println(“ Pa”);
//mengembalikan ketinggian yang terdeteksi pada sensor
Serial.print(“Altitude = “);
Serial.print(bmp.readAltitude());
Serial.println(“ meters”); //mengembalikan besar tekanan di permukaan laut
Serial.print(“Pressure at sealevel (calculated) = “);
Serial.print(bmp.readSealevelPressure());
Serial.println(“ Pa”); // menampilkan besar tekanan yang lebih spesifik karena
// menggunakan tekanan di permukaan laut
// mengembalikan hasil perhitungan tekanan yg benar
Serial.print(“Real altitude = “);
Serial.print(bmp.readAltitude(101500));
Serial.println(“ meters”);
Serial.println();
delay(500);
}
Diatas adalah program untuk menampilkan berbagai aspek yang dapat diukur oleh sensor BMP180 yaitu temperatur, tekanan, ketinggian, tekanan di atas permukaan laut, dan tekanan real yang dirasakan oleh sensor. Perhatikan, pada baris 5 yaitu pada bmp.begin , bagian dalam kurung diisi dengan hasil address yang telah kita dapat pada program sebelumnya. Pada kasus ini ditulis 0x77 karena itu yang aku dapat pada kode yang pertama.
8. Upload kode tersebut lalu check di tools -> serial monitor sehingga akan tampil di layar laptop anda seperti ini
Ingat kembali bagian kanan bawah tidak boleh berbeda dengan kode program pada baris ke 4, yaitu 9600 baud. Terdapat output yaitu 5 buah tulisan seperti yang sudah kita tuliskan pada kode program sebelumnya.
Selesai deh projeknya! ini potret dari rangkaiannya
Saatnya analisis!
Pada hasil projek terjadi kenaikan temperatur dan tekanan, serta penurunan besar ketinggian saat aku menekan sensor. Temperatur dan tekanan bergerak naik karena jariku lebih hangat daripada udara sekitar dan jariku menekan sensor. Sehingga tekanan dan temperatur yang ditangkap sensor bergerak naik. Sementara besar ketinggian malah turun karena makin tinggi tekanan udara (yaitu tekanan udara yang meninggi karena aku menekan sensor) maka akan makin rendah posisi benda.
Catatan penting, jangan kebalik ya pasang kabelnya, nanti gaakan jalan! Jangan lupa juga cek angka yg di kanan bawah harus sama dengan angka di dalam kode kalian agar kalian dapat melihat hasil input dari sensor. Terima kasih semuanya sudah membaca! Selamat mencoba! :)