Project 4 ESP32 Eksternal Sensor

Cahayanaza
6 min readFeb 21, 2021

--

Assalamualaikum wr. wb.. Halo Teman-teman! Saya Naja!

Pada percobaan kali ini, kita akan membuat percobaan sensor pada ESP32 yaitu dengan menggunakan sensor BMP280 dan BMP180. Namun, sayangnya untuk percobaan kali saya tidak berhasil dikarenakan address dari sensornya tidak terbaca dan setelah saya teliti lagi ternyata sensor saya mengalami kerusakan sehingga sensornya tidak dapat digunakan untuk membaca suhu, tekanan, dan kelembapan udara. Saya sebelumnya, sudah berjaga-jaga untuk membeli lebih dikarenakan tempat tinggal saya yang cukup jauh. Namun, tetap saja kedua sensor tersebut rusak dan tidak dapat digunakan. Eitsss ! jangan khawatir walaupun sensor saya tidak bisa digunakan, saya disini akan membantu teman-teman agar dapat memahami percobaan kali ini dengan mudah. Bagi teman-teman yang ingin melihat project-project saya sebelumnya bisa lihat di link berikut ini.

Pada percobaan sebelumnya, saya sudah menjelaskan tentang apa itu sensor. Nahh, disini saya memakai 2 sensor yaitu BMP280 dan BMP180. Namun, dipercobaan kali ini saya akan menjelaskan tentang sensor BMP280 saja karena kedua sensor tersebut memiliki fungsi yang sama.

Oke, sebenarnya BMP280 tuh apa sihh ?

BMP280 adalah salah satu sensor eksternal seperti BME280, BMP085, BMP180, dll. BMP280 ini dapat digunakan untuk mendeteksi temperatur, tekanan, dan ketinggian. BMP280 ini dapat dimanfaatkan dalam berbagai fungsi seperti meramal cuaca, navigasi outdoor, spirometri (mengukur volume udara yang masuk dan keluar), dll.

Nah, sensor eksternal ternyata ada banyak macamnya. Berikut komponen sensor yang dapat digunakan bersama ESP32:

Sensor Eksternal
  • BME-280 → tekanan, temperatur, kelembaban
  • BMP-180/BMP-280 → tekanan, temperatur
  • DHT11/DHT22 → temperatur, kelembaban
  • LM35 → temperatur
  • DS18B20 → temperatur

Oke, dengan adanya penjelasan singkat tentang sensor tadi saya harap teman-teman jadi kebayang nihh tentang percobaan kali ini. Jadi, tunggu apalagi langsung aja kita masuk ke percobaannya. Check This Out!

Agar percobaan kali ini berjalan dengan lancar, pastikan teman-teman harus punya daftar komponen yang dibutuhkan yaitu :

  1. ESP32 DEVKIT V1
  2. Breadboard
  3. Laptop
  4. Kabel micro USB
  5. 4 buah kabel jumper male to male

Supaya teman-teman lebih mudah merakitnya saya akan menampilkan diagram skema rangkaian di bawah ini.

Diagram Skema Rangkaian
Hasil Rangkaian

Hubungkan sensor BMP280 ke ESP32 seperti yang ditunjukkan pada gambar diatas. Sebelum mengupload kode yang digunakan, kita diharuskan untuk menginstall 2 library yang sesuai dengan external sensor (BMP280).

  1. Adafruit BMP280, pilih Sketch → Include Library → Manage Library. Lalu, lakukan pencarian “ Adafruit BMP280 “ kemudian install.
Adafruit BMP280

2. Adafruit Unified Sensor, pilih Sketch → Include Library → Manage Library. Lalu, lakukan pencarian “ Adafruit Unified Sensor ” kemudian install.

Adafruit Unified Sensor

Setelah selesai menginstal library terebut, kita akan mengecek I2C addressnya terlebih dahulu agar dapat berinteraksi dengan sensor. Gunakan kode program dibawah ini untuk mengecek addressnya.

/*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/#include <Wire.h>

void setup() {
Wire.begin();
Serial.begin(115200);
Serial.println("\nI2C Scanner");
}

void loop() {
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address<16) {
Serial.print("0");
}
Serial.println(address,HEX);
nDevices++;
}
else if (error==4) {
Serial.print("Unknow error at address 0x");
if (address<16) {
Serial.print("0");
}
Serial.println(address,HEX);
}
}
if (nDevices == 0) {
Serial.println("No I2C devices found\n");
}
else {
Serial.println("done\n");
}
delay(5000);
}

Dari program diatas, diperoleh bahwa I2C address dari sensor saya adalah 0x76. Teman-teman bisa mengetahui hal tersebut dengan cara Tools → Monitor Serial. Agar Addressnya muncul di Monitor Serial, teman-teman bisa menekan tombol “ EN “ pada ESP32.

I2C Address
Tombol “EN” ESP32

Setelah berhasil mendapatkan I2C addressnya kita akan mengompile serta mengupload program. Caranya, buka File → Examples → Adafruit BMP280 Library → bmp280test. Program yang digunakan adalah sebagai berikut.

/***************************************************************************
This is a library for the BMP280 humidity, temperature & pressure sensor
Designed specifically to work with the Adafruit BMP280 Breakout
----> http://www.adafruit.com/products/2651
These sensors use I2C or SPI to communicate, 2 or 4 pins are required
to interface.
Adafruit invests time and resources providing this open source code,
please support Adafruit andopen-source hardware by purchasing products
from Adafruit!
Written by Limor Fried & Kevin Townsend for Adafruit Industries.
BSD license, all text above must be included in any redistribution
***************************************************************************/
#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()) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}
/* 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() {
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);
}

Setelah berhasil mengompile serta mengupload kode program diatas, teman-teman dapat melihat hasilnya dengan cara pilih Tools → Monitor Serial, lalu tekan tombol “ EN “ pada ESP32. Jika terdapat pesan yang muncul adalah “Could not find a valid BMP280 sensor, check wiring!” berarti pada bagian if (!bmp.begin()) dapat kita ubah menjadi if (!bmp.begin(“0x76”)). I2C address dimasukkan (0x76) agar programnya dapat menjadi parameter di bagian fungsi.

Bagian yang harus diubah

Jika dirasa sudah benar maka hasilnya akan terlihat seperti gambar berikut.

Hasil Pengukuran

Disini saya akan menjelaskan bagaimana program ini bekerja. Pada fungsi bmp.readTemperature( ) untuk membaca temperatur dalam satuan Celsius. Pada fungsi bmp.readAltitude(1013.25) untuk memperkirakan ketinggian dalam satuan meter. Nilai 1013.25 adalah nilai dari tekanan pada permukaan air laut yang akan dibandingkan dengan tekanan yang terbaca di tempat sensor untuk memperkirakan ketinggan. Kemudian, pada fungsi bmp.readPressure( ) untuk membaca tekanan dalam satuan Pascal (Pa).

Hasil dari percobaan 1 kali ini, sensor saya tidak dapat dideteksi I2C addresnya. Padahal saya dapat memastikan sudah menginstal semua library yang dibutuhkan, mengecek wiring sudah sesuai, mengubah kode “bmp.begin(). Jadi, dapat saya pastikan bahwa sensor saya mengalami kerusakan. Mungkin dikarenakan ketika saya melakukan penyolderan pada sensor tidak sesuai sehingga sensor saya rusak. Berikut gambar dari sensor saya.

Sensor BMP280
Sensor BMP180

Pada percobaan ini, saya dapat mempelajari bahwa pada sensor BMP280 dapat mendeteksi temperatur, tekanan, dan ketinggian. Baiklah, sekian dari saya dan sampai jumpa di project-project selanjutnya! Stay toon!

Selamat Mencoba Teman-teman :)

--

--

Cahayanaza
Cahayanaza

No responses yet