Membaca sensor eksternal (BMP 280 & BMP 180)
Section 1
Selamat berjumpa kembali teman-teman, kali ini kita akan mencoba membaca sensor eksternal dengan menggunakan mikrokontroller ESP-32. Sensor yang akan kita baca adalah sensor BMP 280 dan 180, kedua sensor tersebut sama-sama mengukur tekanan tekanan dan suhu udara, dipasaran bisa kita dapat membeli dengan harga delapan ribu sampai dua puluh ribu.
Beberapakali pengalaman saya saat membaca sensor dengan mikrokontroler tidak selalu menyenangkan, bahkan lebih sering kita harus belajar dan belajar lagi. Namun tidak mengapa teman-teman, yah demi mencapai kuota pengalaman 10.000 jam terbang seperti kata Pak Sony. Bahkan sampai saat ini, ketika kita bersama-sama membuat beberapa platform IoT, tetap saja mendebarkan menunggu pembacaan sensor. Karena bagaimanapun sensing adalah terkait keterbacaan sensor, ketika sensor sudah terbaca metode yang lain-lainnya dapat kita sesuaikan.
Berkaca dari hal tersebut, saya mencoba berbagi, apa sih yang harusnya pertama kali dilakukan untuk membaca sensor eksternal dengan ESP 32?. Sepertinya pepatah "Tak kenal maka tak sayang" tetap relevan untuk masalah ini, dimana kita harus mengenal sensor yang akan kita gunakan. Setelah kita kenal, dimana address-nya, protokol komunikasinya seperti apa, maksimal tegangannya berapa, baru kita mencoba untuk menjalin hubungan. Nah, agar kenal kami sertakan dalam tabel berikut, datasheet untuk mengenal lebih dekat dengan dua sensor yang akan kita gunakan dalam percobaan ini.
Nama | Datasheet | Nama Arduino IDE Library |
BMP - 280 | BST-BMP280-DS001-11.pdf | Adafruit_BMP280 |
BMP-180 |
BST-BMP180-DS000-09.pdf | Adafruit_BMP085 |
Pengalaman saya membaca BMP 280, cukup menguras logika teman-teman, pertama saya sudah tahu alamatnya di 0x76 cuman ketika sudah dipasang, skemanya sudah benar tetap saja di serial monitor disebutkan bahwa sensor saya tidak ditemukan. Sampai beberapa kali mencoba saran dari berbagai forum tetap saja belum bisa terbaca. Setelah sekian lama mencari, ternyata masalahnya adalah library yang saya gunakan adalah tipe BME-280, sementara yang saya miliki adalah BMP-280 dengan 6 pin.
I2C Scanner
Seringkali sensor yang kita beli BMP-280 dan 180 tidak disertai dengan datasheet yang menunjukan di alamat berapa kita dapat mengakses informasi hasil pengukuran. Sehingga ada baiknya kita mengecek alamat sensor kita dengan kode I2C Scanner, yaitu sebuah kode program untuk mencari alamat peripheral yang terhubung dengan I2C ESP32.
ESP32 | Senso BMP | Keterangan |
GPIO 22 | SCL | Serial Clock |
GPIO 21 | SDA | Serial Data |
3V3 | VIN | Voltage In |
GND | GND | Ground |
Rangkai komponen elektronika seperti gambar di atas, jika kita ingin mengecek address sensor BMP-280. Namun jika kita menginginkan untuk mengecek peripherals lain, kita dapat mengkoneksikannya seperti diatas dengan catatan GPIO 22 dihubungkan dengan SCL, dan GPIO 21 dihubungkan dengan SDA alat. Langkah selanjutnya copy-paste kode berikut dalam sketch baru di Arduino IDE, kemudian compile dan upload.
#include <Wire.h>
void setup()
{
Wire.begin();
// Wire.begin(0, 2); // ESP8266
Serial.begin(115200);
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// Scanning alamat dari 1 sampai 126
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown 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(2000);
}
Secara rinci penggunaan kode program di atas dapat dilihat di video berikut.
Membaca Sensor BMP 180
Pada percobaan kali ini kita akan coba membaca sensor BMP 180 dan menampilkan hasil pengukurannya melalui serial monitor. kebutuhan komponen yang akan kita gunakan seperti pada tabel berikut.