#4 ESP32 Sensor: External Sensor [Sistem Embedded]

Erensi Ratu Chelsia
5 min readMar 2, 2023

--

oke,, kembali lagi ke project selanjutnya yaitu project ke-empat dari mata kuliah sistem embedded ini 😊

Karena sebelumnya kita udah coba sensor tapi pakai sensor internal dari ESP32 nya, sekarang kita coba pake external sensor 🤩

Sensor yang aku pakai kali ini yaitu sensor BMP280 yang fungsi utamanya adalah sensor tekanan. Karena tekanan berbanding terbalik dengan ketinggian (semakin tinggi suatu tempat dari permukaan laut maka semakin rendah tekanan udaranya). Selain itu, tekanan juga dipengaruhi oleh suhu, semakin tinggi suhu maka molekul udara akan mengembang dan volume udara akan semakin besar. Jadi nanti saat memperkirakan tekanan, sensor ini juga dapat mengembalikan suhu dan perkiraan ketinggian suatu tempat.

Sebelum mulai ke percobaan, ini komponen-komponen yang dibutuhkan untuk project 4 kali ini.

~Komponen

komponen yang diperlukan
  1. Sensor BMP280
  2. ESP32
  3. Breadboard
  4. Kable jumper
  5. Kabel USB

oke,, sekarang lanjut ke step percobaannya.

~Langkah Pengerjaan

Buatlah rangkaian seperti gambar di bawah ini.

sumber : randomnerd tutorial

Kode program

Sebelumnya, perlu install terlebih dahulu library Adafruit BMP280 library yang bisa di download di tools > Manage libraries. Lalu, search saja librarynya. Klik install kemudian install all. Udah deh tinggal tunggu aja abistu selesaii~

Kode program yang digunakan di percobaan kali ini yaitu sebagai berikut.

/* Interfacing Arduino with BMP280 temperature and pressure sensor.
* Temperature and pressure values are displayed on 16x2 LCD.
* This is a free software with NO WARRANTY.
* https://simple-circuit.com/
*/

// ESP32 SDA to D21 SCL to D22
// ESP8266 SDA to D2 SCL to D1

#include <Wire.h> // include Wire library, required for I2C devices
#include <Adafruit_Sensor.h> // include Adafruit sensor library
#include <Adafruit_BMP280.h> // include adafruit library for BMP280 sensor

// define device I2C address: 0x76 or 0x77 (0x77 is library default address)
#define BMP280_I2C_ADDRESS 0x76

Adafruit_BMP280 bmp280;


void setup() {
Serial.begin(115200);

Serial.println(F("Arduino + BMP280"));

if (!bmp280.begin(BMP280_I2C_ADDRESS))
{
Serial.println("Could not find a valid BMP280 sensor, check wiring!");
while (1);
}
Serial.println("Found BMP280 sensor!");
}

void loop() {
// get temperature, pressure and altitude from library
float temperature = bmp280.readTemperature(); // get temperature
float pressure = bmp280.readPressure(); // get pressure
float altitude_ = bmp280.readAltitude(1013.25); // get altitude (this should be adjusted to your local forecast)
// print data on the serial monitor software
// 1: print temperature
Serial.print("Temperature = ");
Serial.print(temperature);
Serial.println(" °C");
// 2: print pressure
Serial.print("Pressure = ");
Serial.print(pressure/100);
Serial.println(" hPa");
// 3: print altitude
Serial.print("Approx Altitude = ");
Serial.print(altitude_);
Serial.println(" m");

Serial.println(); // start a new line
delay(2000); // wait 2 seconds

}

Setelah melakukan upload, bisa buka serial monitor yang ada pada pojok kanan aplikasi. Pastikan kecepatan uploadnya 115200 baud.

~Hasil dan Analisis

Bila sensor dipegang maka nilai suhu yang muncul pada serial monitor akan meningkat

Dari percobaan ini, dapat dilihat bahwa sensor BMP280 ini mendeteksi temperature dan juga tekanan. Saat digenggam, terjadi kenaikan temperature (perhatikan output yang muncul pada serial monitor).

temperature meningkat jika sensor dipegang

~Inovasi Tambahan

Inovasi tambahan yang aku gunakan di sini yaitu dengan menambahkan 1 lampu LED. Yang dimana di programnya aku buat jika temperature ≥ 29 C maka lampu akan menyala, sedangkan jika selainnya maka lampu akan mati.

rangkaian yang digunakan untuk inovasi tambahan dengan menambahkan 1 lampu LED

Berikut kode program yang aku gunakan untuk inovasi tambahan ini.

/* Interfacing Arduino with BMP280 temperature and pressure sensor.
* Temperature and pressure values are displayed on 16x2 LCD.
* This is a free software with NO WARRANTY.
* https://simple-circuit.com/
*/

// ESP32 SDA to D21 SCL to D22
// ESP8266 SDA to D2 SCL to D1

#include <Wire.h> // include Wire library, required for I2C devices
#include <Adafruit_Sensor.h> // include Adafruit sensor library
#include <Adafruit_BMP280.h> // include adafruit library for BMP280 sensor

// define device I2C address: 0x76 or 0x77 (0x77 is library default address)
#define BMP280_I2C_ADDRESS 0x76

Adafruit_BMP280 bmp280;
const int ledred = 5;

void setup() {
Serial.begin(115200);

Serial.println(F("Arduino + BMP280"));

if (!bmp280.begin(BMP280_I2C_ADDRESS))
{
Serial.println("Could not find a valid BMP280 sensor, check wiring!");
while (1);
}
Serial.println("Found BMP280 sensor!");
}

void loop() {
// get temperature, pressure and altitude from library
float temperature = bmp280.readTemperature(); // get temperature
float pressure = bmp280.readPressure(); // get pressure
float altitude_ = bmp280.readAltitude(1013.25); // get altitude (this should be adjusted to your local forecast)
pinMode(temperature, INPUT);
pinMode(ledred, OUTPUT);
if (temperature >= 29){
digitalWrite(ledred, HIGH);
}else{
digitalWrite(ledred, LOW);
}
// print data on the serial monitor software
// 1: print temperature
Serial.print("Temperature = ");
Serial.print(temperature);
Serial.println(" °C");
// 2: print pressure
Serial.print("Pressure = ");
Serial.print(pressure/100);
Serial.println(" hPa");
// 3: print altitude
Serial.print("Approx Altitude = ");
Serial.print(altitude_);
Serial.println(" m");

Serial.println(); // start a new line
delay(2000); // wait 2 seconds

}

~Hasil dari Inovasi Tambahan

lampu LED menyala jika temperature ≥ 29
lampu LED mati jika suhu tidak ≥ 29
Dokumentasi dari inovasi tambahan

Jika sensor diberi sentuhan maka temperature akan meningkat. Ketika temperature meningkat dan nilainya ≥ 29 maka akan membuat lampu LED menjadi hidup.

~Terimakasih dan sampai jumpa!

--

--