Sensor BME280 Bosch adalah sensor presisi yang digunakan dalam berbagai aplikasi mulai dari pemantauan cuaca hingga kontrol game hingga pengukuran ketinggian di mana diperlukan akurasi hanya beberapa kaki.
Sensor ini mudah digunakan, sudah dikalibrasi sebelumnya, dan tidak memerlukan komponen tambahan, sehingga Anda dapat mulai mengukur kelembaban relatif, suhu, tekanan barometrik, dan ketinggian dalam waktu singkat.
Jadi, mari kita mengenal BME280, yang sudah banyak kita dengar.
Mengukur Suhu
BME280 dapat mengukur suhu mulai dari -40°C hingga 85°C. Pada rentang suhu 0 hingga 65°C, akurasinya adalah ±1,0°C; di luar rentang tersebut, akurasinya turun menjadi ±1,5°C.Perlu dicatat bahwa pengukuran suhu ini digunakan secara internal untuk mengkalibrasi sensor tekanan dan kelembaban. Karena sensor menghasilkan panas sendiri, suhu yang diukur biasanya sedikit lebih tinggi dari suhu sebenarnya. Jika hal ini penting untuk proyek Anda, bandingkan suhu yang diukur dengan suhu sebenarnya dan terapkan offset jika perlu.
Mengukur Kelembaban
BME280 dapat mengukur kelembaban relatif dari 0 hingga 100% dengan akurasi ±3%.Menurut datasheet, sensor dapat mengukur hingga 100% kelembaban pada rentang suhu 0 hingga 60°C. Namun, kelembaban maksimum yang dapat diukur menurun pada suhu yang sangat tinggi dan rendah.
Mengukur Tekanan
BME280 dapat mengukur tekanan antara 300Pa hingga 1100 hPa dengan akurasi absolut ±1 hPa.Pada rentang suhu 0 hingga 65°C, akurasi penuh diperoleh, menghasilkan akurasi pengukuran ketinggian sekitar ±1 meter. Di luar rentang itu, akurasi turun menjadi 1,7 hPa.
Menghitung Ketinggian / Elevansi
BME280 dapat mengukur tekanan dengan presisi tinggi (kebisingan ketinggian rendah 0,25m) sehingga dapat juga digunakan sebagai altimeter dengan akurasi ±1 meter.Sebelum melanjutkan, penting untuk memahami perbedaan antara Ketinggian Absolut dan Ketinggian Relatif. Istilah "ketinggian absolut" mengacu pada ketinggian di atas permukaan laut (MSL), sedangkan "ketinggian relatif" mengacu pada ketinggian di atas permukaan tanah (AGL).Perlu dicatat bahwa BME280 tidak dapat langsung mengukur ketinggian tetapi dapat memperkirakannya menggunakan pembacaan tekanan. Karena BME280 sangat baik dalam mengukur tekanan, ia dapat menghitung ketinggian relatif secara akurat. Misalnya, jika Anda mengetahui ketinggian benda yang diletakkan di atas meja dan Anda memindahkannya ke lantai, BME280 akan menunjukkan penurunan ketinggian 2 kaki.Namun, jika Anda mencoba mengukur ketinggian absolut, hal-hal menjadi sedikit lebih rumit karena BME280 perlu mengetahui tekanan permukaan laut saat ini.Jadi, untuk mendapatkan pengukuran ketinggian absolut yang akurat, konstanta SEA_LEVEL_PRESSURE disediakan dalam contoh kode di bawah ini, yang harus Anda perbarui dengan tekanan permukaan laut saat ini di lokasi Anda.
Riview Perangkat Keras
IC BME280
Pada inti modul ini terdapat sensor suhu, kelembaban, dan tekanan digital generasi berikutnya dari Bosch - BME280. Ini merupakan penerus dari sensor-sensor seperti BMP180, BMP085, dan BMP183.
Daya
Modul ini dilengkapi dengan regulator tegangan LM6206 3.3V dan Penerjemah Tegangan I2C, sehingga Anda dapat menggunakannya dengan mikrokontroler logika 3.3V atau 5V seperti Arduino tanpa khawatir.
Pemakaian Daya dan Regulator Tegangan I2C Modul BME280
BME280 mengonsumsi kurang dari 1mA selama pengukuran dan hanya 5μA saat tidak digunakan. Karena konsumsi daya yang rendah, sensor ini dapat digunakan dalam perangkat bertenaga baterai seperti ponsel, modul GPS, dan jam tangan.
Antarmuka I2C
Modul BME280 berkomunikasi melalui I2C dan mendukung dua alamat I2C, yaitu 0x76 dan 0x77, memungkinkan penggunaan dua sensor pada bus yang sama.
Alamat I2C default modul ini adalah 0x76HEX, yang dapat dengan mudah diubah menjadi 0x77HEX menggunakan jumper solder yang disediakan.
Untuk mengubah alamat i2c menjadi 0x77, potong jejak antara pad tembaga tengah dan kiri dengan pisau tajam. Kemudian, tambahkan gumpalan solder antara pad tembaga tengah dan kanan untuk menyambungkannya.
Spesifikasi Teknis
Bersukut Spesifikasinya :
Input voltage | 3.3V – 5V |
---|---|
Current consumption | 1mA (typ.) and 5μA (idle) |
Temperature | -40°C to 85°C (±1.0°C accuracy) |
Humidity | 0 to 100% RH (±3% accuracy) |
Pressure | 300Pa to 1100 hPa (±1 hPa accuracy) |
Altitude | 0 to 30,000 ft. (±1 m accuracy) |
Diagram Pin Sensor BME280
Modul BME280 hanya memiliki 4 pin yang berinteraksi dengan dunia luar. Koneksi-koneksi tersebut adalah sebagai berikut
VIN memberikan pasokan daya ke modul. Hubungkan tegangan antara 3.3V dan 5V ke pin ini.
GND adalah pin tanah.
SCL adalah pin clock serial untuk antarmuka I2C.
SDA adalah pin data serial untuk antarmuka I2C.
Menghubungkan Modul BME280 ke Arduino
Mari menghubungkan modul BME280 ke Arduino.
Koneksi-koneksi ini cukup sederhana. Mulailah dengan menghubungkan pin VCC ke output 5V Arduino dan pin GND ke ground.
Sekarang, kita tinggal dengan pin-pin yang digunakan untuk komunikasi I2C. Perhatikan bahwa setiap papan Arduino memiliki pin I2C yang berbeda-beda yang harus dihubungkan dengan benar. Pada papan Arduino dengan tata letak R3, pin SDA (garis data) dan SCL (garis clock) berada di header pin yang dekat dengan pin AREF. Mereka juga disebut sebagai A5 (SCL) dan A4 (SDA).
Tabel berikut mencantumkan koneksi pin.
Diagram di bawah ini menunjukkan bagaimana menghubungkan semua komponen
Instalasi Library yang Diperlukan
Untuk mulai membaca data sensor, Anda harus terlebih dahulu menginstal Library BME280 dari Adafruit. Library ini tersedia dari manajer library Arduino.
Untuk menginstal Library, buka Sketch > Include Library > Manage Libraries... Tunggu hingga Library Manager mengunduh indeks library dan memperbarui daftar library yang diinstal.
Kode Contoh Arduino
Berikut adalah program sederhana yang membaca suhu, kelembaban relatif, tekanan, dan perkiraan ketinggian dari modul BME280 dan mencetaknya di monitor serial.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
void setup() {
Serial.begin(9600);
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println("*C");
Serial.print("Pressure = ");
Serial.print(bme.readPressure() / 100.0F);
Serial.println("hPa");
Serial.print("Approx. Altitude = ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println("m");
Serial.print("Humidity = ");
Serial.print(bme.readHumidity());
Serial.println("%");
Serial.println();
delay(1000);
}
Anda seharusnya melihat keluaran yang serupa di monitor serial
Penjelasan Kode:
Sketsa ini dimulai dengan menyertakan tiga libraries, yaitu Wire.h, Adafruit Sensor.h, dan Adafruit BME280.h.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
Variabel SEALEVELPRESSURE_HPA kemudian didefinisikan. Variabel ini menyimpan tekanan permukaan laut dalam milibar dan digunakan untuk menghitung ketinggian absolut untuk tekanan tertentu dengan membandingkannya dengan tekanan permukaan laut. Nilai default (1013.25) digunakan dalam sketsa ini, tetapi untuk hasil yang akurat, gantilah dengan tekanan permukaan laut saat ini di lokasi Anda.
Objek dari library Adafruit BME280 juga dibuat sehingga kita dapat mengakses fungsinya.
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
Pada bagian setup kode, kita menginisialisasi komunikasi serial dengan PC dan memanggil fungsi begin().
Fungsi begin(I2C_ADDR) mengambil alamat I2C modul sebagai parameter. Jika Anda mengubah alamat I2C modul Anda, Anda harus menentukannya dengan benar. Fungsi ini menginisialisasi antarmuka I2C dengan alamat I2C yang diberikan dan memvalidasi ID chip. Kemudian, chip diatur ulang secara lunak (soft-reset) dan menunggu sensor melakukan kalibrasi setelah bangun dari tidur.
Serial.begin(9600);
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
Pada bagian loop kode, kami menggunakan fungsi-fungsi berikut untuk membaca suhu, kelembaban relatif, dan tekanan barometrik dari modul BME280.Fungsi readTemperature() mengembalikan nilai suhu.
Fungsi readPressure() mengembalikan nilai tekanan barometrik.
Fungsi readAltitude(SEALEVELPRESSURE_HPA) menghitung ketinggian (dalam meter) dengan membandingkan tekanan atmosfer yang ditentukan (dalam hPa) dengan tekanan permukaan laut (dalam hPa).
Fungsi readHumidity() mengembalikan nilai kelembaban relatif.
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println("*C");
Serial.print("Pressure = ");
Serial.print(bme.readPressure() / 100.0F);
Serial.println("hPa");
Serial.print("Approx. Altitude = ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println("m");
Serial.print("Humidity = ");
Serial.print(bme.readHumidity());
Serial.println("%");
Referensi "Interface BME280 Temperature, Humidity & Pressure Sensor with Arduino", Last Minute Engineer , https://lastminuteengineers.com/bme280-arduino-tutorial/
Tidak ada komentar:
Posting Komentar