[II2260 — Embedded System, 4th Project] ESP32 Sensor : External Sensor

— Pengantar

Hafidz Shidqi
4 min readMar 4, 2023

Setelah membuat project ketiga (ESP32 internal sensor), selanjutnya kita akan membahas tentang sensor eksternal menggunakan bmp180 (di sini saya juga menggunakan bmp280). Langsung saja kita mulai!

— Komponen

Komponen yang akan digunakan yaitu :

  1. ESP32 + Breadboard
Gambar ESP32 + Breadboard

2. Kabel micro USB

Gambar kabel micro USB

3. Sensor BMP180 / Sensor BMP280

Gambar BMP280 dan BMP180

4. Kabel jumper male to male

Gambar kabel jumper male-to-male

5. Lampu LED

Gambar lampu LED

6. Resistor dengan magnitudo yang disesuaikan

Gambar resistor 330 ohm

— Hands-On

  1. Sambungkan pin GPIO22 di esp32 ke pin SCL di BMP180
  2. Sambungkan pin GPIO21 di esp32 ke pin SDA di BMP180
  3. Sambungkan pin 3v3 di esp32 ke pin VCC di BMP180
  4. Sambungkan pin GND di esp32 ke pin GND di BMP180
Gambar rangkaian menggunakan BMP280 (Sebenarnya pada kali ini menggunakan BMP180, tapi untuk foto pakai BMP280)

5. Buka Arduino IDE kalian, dan silahkan install library Adafruit BMP085 Adafruit Unified Sensor, dan Adafruit BMP280 Library (untuk BMP280)

Gambar library untuk sensor BMP

6. Setelah melakukan instalasi, salin dan upload code berikut pada Arduino IDE kalian

#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);
}

7. Setelah berhasil diupload, lalu buka serial monitor kalian dan pilih 9600 baud dan hasilnya akan seperti video berikut.

Tampilan pembacaan sensor BMP180 pada serial monitor.

— Extra Project

Setelah berhasil melakukan pembacaan pada sensor BMP180, kita akan memvariasikan hasil project kita dengan mengganti BMP180 menjadi BMP280 ditambah dengan komponen LED dan resistor. Adapun konsep project yang akan kita buat ialah ketika pembacaan suhu di atas 30 derajat celcius dan pembacaan tekanan di atas 92595 pascal, maka lampu kedua LED akan menyala. Kalian bisa menyesuaikan kondisinya sesuka kalian.

Adapun langkah-langkahnya seperti berikut :

  1. Sambungkan pin GPIO22 di esp32 ke pin SCL di BMP280
  2. Sambungkan pin GPIO21 di esp32 ke pin SDA di BMP280
  3. Sambungkan pin GND di esp32 ke pin GND di BMP280
  4. Sambungkan pin 3v3 di esp32 ke pin VIN di BMP280
  5. Sambungkan pin GPIO5 dan GPIO4 di esp32 ke pin positif di LED
  6. Sambungkan pin GND di BMP280 ke pin negatif di LED
Gambar rangkaian extra project

7. Lalu salin dan upload code berikut

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>

#define BMP_SCK (13)
#define BMP_MISO (12)
#define BMP_MOSI (11)
#define BMP_CS (10)

Adafruit_BMP280 bmp; // I2C
//Adafruit_BMP280 bmp(BMP_CS); // hardware SPI
//Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);

void setup() {
Serial.begin(9600);
Serial.println(F("BMP280 test"));

if (!bmp.begin(0x76)) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);

/* Default settings from datasheet. */
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
}

void loop() {
if (bmp.readTemperature()>30){ /* Ganti 30 dengan suhu sesuka kalian */
digitalWrite(4,HIGH);
}
else{
digitalWrite(4,LOW);
}
if (bmp.readPressure()>92595){ /* Ganti 92595 dengan tekanan sesuka kalian */
digitalWrite(5,HIGH);
}
else{
digitalWrite(5,LOW);
}
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);
}

8. Setelah berhasil diupload, lalu buka serial monitor kalian dan pilih 9600 baud dan hasilnya akan seperti video berikut.

Dengan berhasilnya extra project merupakan akhir dari project keempat ini. Jika ada pertanyaan atau masalah, silahkan tulis di kolom komentar. Sekian dan terima kasih!

--

--