Pada artikel sebelumnya, kita telah mempelajari bagaimana ESP32 dapat memanfaatkan sensor internal, seperti sensor Hall yang telah tertanam di dalam chip mikrokontroler. Sensor internal tersebut memungkinkan ESP32 membaca fenomena fisik tertentu tanpa memerlukan perangkat tambahan. Untuk lebih lengkapnya bisa buka postingan Belajar ESP32: Internal Sensor.
Namun dalam banyak implementasi Internet of Things (IoT), kebutuhan pengukuran lingkungan tidak dapat dipenuhi hanya dengan sensor internal. Oleh karena itu, sistem embedded biasanya menggunakan sensor eksternal yang dihubungkan langsung ke mikrokontroler.
Sensor eksternal memungkinkan ESP32 untuk mengukur berbagai parameter lingkungan seperti:
- suhu
- tekanan udara
- kelembapan
- cahaya
- gas
- jarak
- dan berbagai besaran fisik lainnya
Pada artikel ini kita akan mempelajari konsep dasar sensor eksternal pada ESP32, serta implementasinya menggunakan sensor BMP280 untuk membaca suhu dan tekanan udara.
Konsep Sensor Eksternal
Sensor eksternal adalah perangkat elektronik yang berfungsi untuk mendeteksi perubahan kondisi fisik di lingkungan dan mengubahnya menjadi sinyal listrik yang dapat diproses oleh mikrokontroler.
Dalam sistem berbasis ESP32, sensor eksternal biasanya dihubungkan melalui beberapa protokol komunikasi, antara lain:
- Analog (ADC)
- UART
- SPI
- I2C
Pada proyek IoT, salah satu protokol yang paling sering digunakan adalah I2C (Inter-Integrated Circuit) karena memiliki beberapa keunggulan, seperti:
- hanya membutuhkan dua jalur komunikasi
- mendukung banyak perangkat dalam satu bus
- konfigurasi yang relatif sederhana
Dalam komunikasi I2C terdapat dua jalur utama, yaitu:
- SDA (Serial Data) → jalur pengiriman data
- SCL (Serial Clock) → jalur sinkronisasi data
Selain itu, sensor juga memerlukan jalur VCC dan GND sebagai sumber daya listrik.
Pin I2C pada ESP32

Berbeda dengan beberapa mikrokontroler lain, ESP32 tidak memiliki pin I2C yang bersifat tetap. ESP32 menggunakan sistem GPIO Matrix, yang memungkinkan hampir semua pin GPIO dikonfigurasi sebagai jalur komunikasi I2C.
Hal ini memberikan fleksibilitas tinggi bagi pengembang dalam menentukan pin yang digunakan.
Meskipun demikian, dalam banyak contoh program dan library Arduino IDE terdapat konfigurasi default yang umum digunakan, yaitu:
| Fungsi | Pin ESP32 |
|---|---|
| SDA | GPIO21 |
| SCL | GPIO22 |
Penggunaan pin tersebut sudah menjadi standar dalam berbagai dokumentasi dan tutorial sehingga memudahkan integrasi dengan berbagai sensor I2C.
Selain itu, bus I2C memiliki kemampuan untuk menghubungkan beberapa perangkat sekaligus pada jalur komunikasi yang sama, selama setiap perangkat memiliki alamat I2C yang berbeda.
Sensor BMP280

Salah satu sensor eksternal yang populer dalam proyek IoT adalah BMP280. Sensor ini dikembangkan oleh Bosch dan dirancang untuk mengukur tekanan udara (barometric pressure) serta suhu lingkungan.
Sensor BMP280 sering digunakan dalam berbagai aplikasi seperti:
- sistem monitoring cuaca
- pengukuran ketinggian
- drone navigation
- sistem monitoring lingkungan
Tekanan udara yang diukur oleh sensor ini juga dapat digunakan untuk mengestimasi ketinggian suatu lokasi, karena tekanan atmosfer akan menurun seiring meningkatnya ketinggian dari permukaan laut.
Secara umum, spesifikasi sensor BMP280 adalah sebagai berikut:
| Parameter | Spesifikasi |
|---|---|
| Tegangan kerja | 1.71 – 3.6 V |
| Interface | I2C / SPI |
| Rentang tekanan | 300 – 1100 hPa |
| Rentang suhu | -40°C hingga 85°C |
| Akurasi tekanan | ±1 hPa |
| Akurasi suhu | ±1°C |
Dengan ukuran yang kecil serta konsumsi daya yang rendah, sensor ini sangat cocok digunakan dalam berbagai proyek embedded system maupun perangkat IoT berbasis baterai.
Koneksi ESP32 dengan BMP280

Sensor BMP280 dapat dihubungkan ke ESP32 menggunakan protokol I2C. Berikut adalah konfigurasi koneksi yang umum digunakan.
| BMP280 | ESP32 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SDA | GPIO21 |
| SCL | GPIO22 |
Melalui jalur SDA dan SCL, ESP32 akan berkomunikasi dengan sensor untuk membaca data hasil pengukuran.
Sensor BMP280 biasanya memiliki alamat I2C:
- 0x76
- 0x77
Alamat ini tergantung pada konfigurasi modul yang digunakan.
Persiapan Library

Agar ESP32 dapat membaca data dari sensor BMP280 dengan mudah, kita dapat menggunakan library Adafruit BMP280.
Langkah instalasi library pada Arduino IDE:
- Buka Arduino IDE
- Pilih menu Sketch → Include Library → Manage Libraries
- Cari Adafruit BMP280
- Install library tersebut
Library ini menyediakan berbagai fungsi untuk membaca data suhu, tekanan udara, serta menghitung estimasi ketinggian.
Membaca Data Sensor BMP280
Berikut contoh program sederhana untuk membaca data suhu dan tekanan udara menggunakan ESP32 dan sensor BMP280.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BMP280 bmp;
void setup() {
Serial.begin(115200);
if (!bmp.begin(0x76)) {
Serial.println("Sensor BMP280 tidak ditemukan!");
while (1);
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" °C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure() / 100.0F);
Serial.println(" hPa");
Serial.print("Approx Altitude = ");
Serial.print(bmp.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");
Serial.println();
delay(2000);
}
Program tersebut akan membaca data dari sensor setiap 2 detik dan menampilkannya pada Serial Monitor.
Output yang dihasilkan meliputi:
- Temperature → suhu lingkungan dalam °C
- Pressure → tekanan udara dalam satuan hPa
- Approx Altitude → estimasi ketinggian dalam meter
Perhitungan ketinggian dilakukan dengan membandingkan tekanan udara yang terbaca dengan tekanan udara standar di permukaan laut yaitu 1013.25 hPa.
Analisis Output Program
Ketika program dijalankan, ESP32 akan melakukan komunikasi dengan sensor melalui protokol I2C untuk membaca data pengukuran.
Setiap dua detik, ESP32 akan:
- membaca suhu dari sensor
- membaca tekanan udara
- menghitung estimasi ketinggian
- menampilkan data tersebut pada serial monitor
Proses ini berlangsung secara terus-menerus selama perangkat aktif.

Kesimpulan
Sensor eksternal memungkinkan ESP32 untuk mengukur berbagai parameter lingkungan yang tidak tersedia pada sensor internal.
Dengan menggunakan sensor seperti BMP280, ESP32 dapat membaca suhu dan tekanan udara secara akurat melalui komunikasi I2C. Proses integrasi sensor juga menjadi relatif mudah dengan bantuan library yang tersedia pada Arduino IDE.
Pemanfaatan sensor eksternal membuka banyak peluang dalam pengembangan sistem Internet of Things, seperti:
- monitoring cuaca
- sistem smart home
- monitoring lingkungan
- sistem pemantauan ketinggian
Pada artikel selanjutnya, mungkin kita dapat mengembangkan sistem ini lebih lanjut dengan menampilkan data sensor pada web server ESP32 atau mengirimkan data ke platform IoT berbasis cloud.

