Apa itu Sensor BMP180?
BMP180 merupakan sensor Barometric yang mempunyai ukuran cukup kecil, bisa dilihat pada 2 gambar dibawah ini, modul ini mempunyai ukuran 1mm x 1,1mm (0,039in x 0,043in).
Modul ini bisa melaksanakan pengukuran terhadap tekanan udara yang ada disekitar kita, jarak pengkuran yakni antara 300hpa hingga 1100hpa, ketelitian pengukuran memakai modul ini bisa hingga 0,02hpa. Selain untuk mengukur tegangan udara, modul ini juga mengukur ketinggian dan suhu lingkungan sekitar.
Modul sensor ini berkomunikasi dengan Arduino memakai komunikasi via I2C, yang berarti hanya mengguanakan 2 pin pada Arduino, sangat simpel.. Kakak bisa membelinya di Tokopedia atau Bukalapak dengan harga yang murah.
Schematic
Hubungkan sensor yang kalian beli dengan Arduino menyerupai yang ada pada gambar dibawah ini
Untuk lebih jelasnya bisa kalian lihat tabel dibawah ini
Code
Untuk melaksanakan pengukuran terhadap sensor Barometric ini, abang harus memasang library pada Arduino IDE. Seperti biasa, download Library melalui Github atau dengan klik disini, kemudian :
1. Setelah simpulan di download, buka / unzip library tersebut,
2. Copy folder dan letakkan pada My Documents > Arduino > Libraries
3. Buka Arduino IDE
Upload Program ke Board Arduino
Coba klik File>Examples>SparkfunBMP180>SFE_BMP180_example, dalam pola kegiatan tersebut akan dijelaskan secara gamblang bagaimana fungsi dari setiap script yang ada, bisa menjadi pembelajaran buat abang yang masih atau gres saja mengenal Ardino.
Langkah selanjutnya yaitu :
1. Colokkan kabel USB dari Laptop/Komputer ke Arduno
2. Tunggu hingga Arduino terdeteksi
3. Jangan lupa pilih tipe board dan port yang abang gunakan pada Tools>Board dan Tools>Port Sesuaikan dengan Device yang abang pasang.
Sebelum abang klik tombol upload program, abang harus melaksanakan setting ketinggian daerah kalian (Altitude), lihat dan cari arahan menyerupai gambar dibawah ini
coba buka elevationmap.net, masukkan alamat abang kini dan cek ketinggiannya, ganti angka 1655.0 sesuai dengan ketinggian lokasi abang ketika ini.
Berikut yaitu koding lengkapnya :
//Perhatikan untuk selalu menyiapkan Library secara lengkap
//Pada Project ini memakai Library SFE BMP180 dan Wire.h
#include <SFE_BMP180.h>
#include <Wire.h>
// Kakak harus menciptakan objek pengukuran SFE_BMP180 , pola saja tekanan "pressure":
SFE_BMP180 pressure;
//Setting ketinggian menyerupai yang sudah ditunjukkan pada langkah sebelumnya
#define ALTITUDE 1655.0
void setup()
{
Serial.begin(9600);
Serial.println("REBOOT");
// Inisialiasi sensor BMP180
if (pressure.begin())
Serial.println("BMP180 init success");
else
{
// Disini yaitu sanksi dimana Arduino gagal mengidentifikasi sensor BMP180
Serial.println("BMP180 init fail\n\n");
while(1); // Pause forever.
}
}
void loop()
{
char status;
double T,P,p0,a;
// beri jeda 10 detik untuk membaca sensor
Serial.println();
Serial.print("provided altitude: ");
Serial.print(ALTITUDE,0);
Serial.print(" meters, ");
Serial.print(ALTITUDE*3.28084,0);
Serial.println(" feet");
status = pressure.startTemperature();
if (status != 0)
{
delay(status);
status = pressure.getTemperature(T);
if (status != 0)
{
// Print hasil pengukuran sensor:
Serial.print("temperature: ");
Serial.print(T,2);
Serial.print(" deg C, ");
Serial.print((9.0/5.0)*T+32.0,2);
Serial.println(" deg F");
status = pressure.startPressure(3);
if (status != 0)
{
delay(status);
status = pressure.getPressure(P,T);
if (status != 0)
{
// Print out the measurement:
Serial.print("absolute pressure: ");
Serial.print(P,2);
Serial.print(" mb, ");
Serial.print(P*0.0295333727,2);
Serial.println(" inHg");
p0 = pressure.sealevel(P,ALTITUDE); // we're at 1655 meters (Boulder, CO)
Serial.print("relative (sea-level) pressure: ");
Serial.print(p0,2);
Serial.print(" mb, ");
Serial.print(p0*0.0295333727,2);
Serial.println(" inHg");
a = pressure.altitude(P,p0);
Serial.print("computed altitude: ");
Serial.print(a,0);
Serial.print(" meters, ");
Serial.print(a*3.28084,0);
Serial.println(" feet");
}
else Serial.println("error retrieving pressure measurement\n");
}
else Serial.println("error starting pressure measurement\n");
}
else Serial.println("error retrieving temperature measurement\n");
}
else Serial.println("error starting temperature measurement\n");
delay(5000); // Pause for 5 seconds.
}
Demonstrasi dan Hasil Pengukuran
Setelah mengupload program, buka serial monitor dengan cara klik Tools > Serial Monitor , Jangan lupa setting Baud Rate menjadi 9600, seteah itu abang akan melihat hasil pengukuran yang dilakukan oleh BMP180. Coba abang lihat gambar dibawah ini.
Memasang BMP180 dengan ESP32
Untuk lebih jelasnya abang bisa memakai tabel dibawah ini :
Script Code
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085/BMP180 sensor, check wiring!");
while (1) {}
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
// Calculate altitude assuming 'standard' barometric
// pressure of 1013.25 millibar = 101325 Pascal
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");
Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(bmp.readSealevelPressure());
Serial.println(" Pa");
// you can get a more precise measurement of altitude
// if you know the current sea level pressure which will
// vary with weather and such. If it is 1015 millibars
// that is equal to 101500 Pascals.
Serial.print("Real altitude = ");
Serial.print(bmp.readAltitude(102000));
Serial.println(" meters");
Serial.println();
delay(500);
}
Saat mengupload program, pastikan semua settingan pada aplikasi Arduino IDE sesuai dengan modul yang abang gunakan, pastikan Board dan port sudah sesuai, khusus untuk ESP32 Devkit 1, Jangan lupa tekan tombol Boot ketika upload kegiatan biar tidak megalami kegagalan
Demikian tutorial cara memasang sensor BMP180 pada Arduino dan ESP32 beserta Scriptnya, semoga bisa menambah pengetahuan abang selama ini.