Tutorial IoT - Cara Memasang Sensor BMP180 Pada Arduino dan ESP32 + Script Code

www.tutorialiot.com

Apa itu Sensor BMP180?


BMP180 merupakan sensor Barometric yang memiliki ukuran cukup kecil, bisa dilihat pada 2 gambar dibawah ini, modul ini memiliki ukuran 1mm x 1,1mm (0,039in x 0,043in).


Modul ini mampu melakukan pengukuran terhadap tekanan udara yang ada disekitar kita, jarak pengkuran yakni antara 300hpa sampai 1100hpa, ketelitian pengukuran menggunakan modul ini bisa sampai 0,02hpa. Selain untuk mengukur tegangan udara, modul ini juga mengukur ketinggian dan suhu lingkungan sekitar.

Modul sensor ini berkomunikasi dengan Arduino menggunakan 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 seperti yang ada pada gambar dibawah ini
Untuk lebih jelasnya bisa kalian lihat tabel dibawah ini

Code

Untuk melakukan pengukuran terhadap sensor Barometric ini, kakak harus memasang library pada Arduino IDE. Seperti biasa, download Library melalui Github atau dengan klik disini, kemudian :

1. Setelah selesai 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 contoh program tersebut akan dijelaskan secara gamblang bagaimana fungsi dari setiap script yang ada, bisa menjadi pembelajaran buat kakak yang masih atau baru saja mengenal Ardino.

Langkah selanjutnya adalah :
1. Colokkan kabel USB dari Laptop/Komputer ke Arduno
2. Tunggu sampai Arduino terdeteksi
3. Jangan lupa pilih tipe board dan port yang kakak gunakan pada Tools>Board dan Tools>Port Sesuaikan dengan Device yang kakak pasang.


Sebelum kakak klik tombol upload program, kakak harus melakukan setting ketinggian tempat kalian (Altitude), lihat dan cari kode seperti gambar dibawah ini 
coba buka elevationmap.net, masukkan alamat kakak sekarang dan cek ketinggiannya, ganti angka 1655.0 sesuai dengan ketinggian lokasi kakak saat ini.

Berikut adalah koding lengkapnya :

//Perhatikan untuk selalu menyiapkan Library secara lengkap
//Pada Project ini menggunakan Library SFE BMP180 dan Wire.h
#include <SFE_BMP180.h>
#include <Wire.h>
// Kakak harus membuat objek pengukuran SFE_BMP180 , contoh saja tekanan "pressure":
SFE_BMP180 pressure;
//Setting ketinggian seperti 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 adalah eksekusi 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 kakak akan melihat hasil pengukuran yang dilakukan oleh BMP180. Coba kakak lihat gambar dibawah ini.

Memasang BMP180 dengan ESP32


Untuk lebih jelasnya kakak bisa menggunakan 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 kakak gunakan, pastikan Board dan port sudah sesuai, khusus untuk ESP32 Devkit 1, Jangan lupa tekan tombol Boot saat upload program agar tidak megalami kegagalan

Demikian tutorial cara memasang sensor BMP180 pada Arduino dan ESP32 beserta Scriptnya, semoga bisa menambah pengetahuan kakak selama ini.

Post a Comment

0 Comments