Sensor BME280 (Humidity,Temperature, and Pressure)
Module Sensor BME280 merupakan modul sensor yang dapat mengukur data kelembaban, suhu, tekanan barometik yang diakses menggunakan interface i2c.
Sensor ini cukup mudah digunakan dikarenakan tidak memerlukan komponen tambahan lainnya dan mempunyai fitur pre-calibrated.
Sensor BME280 ini merupakan penerus dari sensor BMP180, BMP183 ATAU BMP183 yang diproduksi oleh Bosch.
Tingkat kepresisian dari module sensor ini
- Kelembaban dari range 0 – 100% dengan akurasi ± 3%
- tekanan barometrik dari range 300Pa hingga 1100 hPa dengan akurasi absolut ± 1 hPa
- suhu dari range -40 ° C hingga 85 ° C dengan akurasi ± 1,0 ° C
Kebutuhan Daya
Modul sensor ini sudah dilengkapi dengan regulator 3.3V tipe LM6206 on-board dan I2C Voltage Level Translator.
Sehingga Anda dapat menggunakannya mikrokontroler dengan output logika 3.3V atau 5V seperti Arduino tanpa khawatir.
BME280 mengkonsumsi kurang dari 1mA selama pengukuran dan hanya 5μA selama idle.
Konsumsi daya rendah ini memungkinkan dapat diterapkan pada perangkat dengan power supply baterai jam.
Antarmuka I2C
Modul ini memiliki antarmuka I2C dua jalur data yang dapat dengan mudah dihubungkan dengan mikrokontroler pilihan Anda.
Alamat I2C default modul BME280 adalah 0x76 HEX dan dapat diubah menjadi 0x77 HEX dengan mudah dengan jumper solder selain chip.
Prosedur untuk Mengubah Alamat I2C
- Temukan jumper solder dibawah chip. Secara default, kuningan tembaga tengah terhubung ke kuningan kiri.
- Putuskan koneksi antara tengah dan kuningan tembaga kiri menggunakan pisau tajam.
- Hubungkan menggunakan tenol dan solder antara tengah dan pad tembaga kiri. Ini memungkinkan Anda untuk mengatur alamat I2C 0x77 HEX .
Pengaturan Jumper Pemilihan Alamat I2C BME280
Pinout Sensor BME280
Modul BME280 hanya memiliki 4 pin yang menghubungkannya dengan microcontroller seperti Arduino, maupun ESP8266 dan lainnya.
BME280 Pinout – Sensor Tekanan Barometrik Kelembaban Suhu
- VIN adalah catu daya untuk modul yang dapat berada di mana saja antara 3.3V hingga 5V.
- GND harus terhubung ke tanah Arduino
- SCL adalah pin jam seri untuk antarmuka I2C.
- SDA adalah pin data serial untuk antarmuka I2C.
Tutorial pembacaan data Modul BME280 ke Arduino UNO
Untuk koneksi pengkabelannya cukup sederhana dan mudah. Dimulai dengan menghubungkan pin VIN ke output 5V di Arduino dan hubungkan GND ke ground, sedangkan datanya menggunakan koneksi i2c.
Perhatikan bahwa setiap Papan Arduino memiliki pin I2C yang berbeda yang harus dihubungkan sesuai.
Lihat tabel di bawah ini untuk pemahaman cepat :
Tipe Arduino | Serial Clock (SCL) | Serial Data (SDA) |
Arduino Uno | A5 | A4 |
Arduino Mega | 21 | 20 |
Arduino Nano | A5 | A4 |
Arduino Leonardo / Micro | 3 | 2 |
Diagram berikut menunjukkan kepada Anda bagaimana cara mengirim semuanya.
Instalasi library BME280
Berikut langkah – langkah instalasinya :
- Buka software Arduino IDE
- Pastikan komputer atau laptop terhubung dengan internet
- Kemudian klik Sketch > Include Library > Manage Libraries
- Ketikan bme280 dan temukan “Adafruit BME280 Library by Adafruit” dan klik install
- Dan install libraries support backend dari sensor BME280 yaitu “Adafruit Unified Sensor”
Kode program sederhana
#include <Wire.h> //libraries untuk pengaksesan i2c #include <Adafruit_BME280.h> //libraries yang baru saja diinstall seperti cara diatas #include <Adafruit_Sensor.h> #define SEALEVELPRESSURE_HPA (1013.25) //nilai awal untuk pressure Adafruit_BME280 bme; //penggunaan I2C void setup() { Serial.begin(9600); if (!bme.begin(0x76)) { Serial.println("tidak ada sensor BME280, Coba cek rangkaianmu!"); while (1); } } void loop() { //pembacaan data temperature atau suhu Serial.print("Suhu ="); Serial.print(bme.readTemperature()); Serial.println(" *C"); //pembacaan data Kelembaban Serial.print("Kelembaban = "); Serial.print(bme.readHumidity()); Serial.println(" %"); //pembacaan data tekanan atmosfer Serial.print("Pressure = "); Serial.print(bme.readPressure() / 100.0F); Serial.println(" hPa"); //pembacaan data ketinggian berdasarkan permukaan laut Serial.print("Approx. Altitude = "); Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); Serial.println(" m"); Serial.println(); delay(1000); }
Hasil Program diatas
Penjelasan Kode
Definisi variabel SEALEVELPRESSURE_HPA diperlukan untuk menghitung ketinggian dan membuat objek libraries Adafruit_BME280 sehingga dapat mengakses fungsi yang terkait dengannya.
#define SEALEVELPRESSURE_HPA (1013.25) Adafruit_BME280 bme;
Di bagian pengaturan kode, kami menginisialisasi komunikasi serial dengan PC dan memanggil fungsi begin() .
Fungsi bme.begin(0x76) mengambil alamat I2C modul sebagai parameter. Fungsi ini menginisialisasi antarmuka I2C dengan diberikan Alamat I2C dan memeriksa apakah chip ID sudah benar. Kemudian reset chip menggunakan soft-reset & menunggu sensor untuk kalibrasi setelah bangun.
Fungsi yang terdapat di libraries yang digunakan untuk pembacaan data sensor :
- readTemperature() : membaca data suhu dari sensor
- readPressure() : membaca data tekanan barometrik dari sensor
- readAltitude (SEALEVELPRESSURE_HPA) : menghitung ketinggian (dalam meter) dari tekanan atmosfer yang ditentukan (dalam hPa), dan tekanan permukaan laut (dalam hPa)
- readHumidity() : membaca data kelembaban relatif dari sensor
Tutorial lanjutan menggunakan display LCD 16×2
Komponen yang diperlukan :
- Arduino Nano
- Modul BME280
- LCD 16×2 dan driver LCD
- Kabel Jumper
Rangkaian sederhananya seperti gambar dibawah
Kode program rangkaian diatas
[sociallocker id=”1344″]
/* www.nyebarilmu.com */ #include <Wire.h> #include <LiquidCrystal_PCF8574.h> #include <Adafruit_BME280.h> //libraries yang baru saja diinstall seperti cara diatas #include <Adafruit_Sensor.h> LiquidCrystal_PCF8574 lcd(0x27); //dapat dicek menggunakan i2c finder #define SEALEVELPRESSURE_HPA (1013.25) //nilai awal untuk pressure Adafruit_BME280 bme; //penggunaan I2C void setup(){ Serial.begin(9600); lcd.begin(16,2); lcd.setBacklight(255); lcd.setCursor(00,00); lcd.print(" nyebarilmu.com "); lcd.setCursor(00,1); lcd.print(" Modul BME280"); delay(2000); lcd.clear(); if (!bme.begin(0x76)) { lcd.setCursor(00,00); lcd.print("no sensor BME280"); lcd.setCursor(00,1); lcd.print("Cek rangkaian"); while (1); } lcd.clear(); delay(1000); lcd.clear(); } void loop(){ lcd.setCursor(00,00); lcd.print("T:"); lcd.print(bme.readTemperature()); lcd.print((char)223); lcd.println("C"); //pembacaan data Kelembaban lcd.setCursor(9,00); lcd.print("H:"); lcd.print(bme.readHumidity()); lcd.print("%"); //pembacaan data tekanan atmosfer lcd.setCursor(00,1); lcd.print("P:"); lcd.print(bme.readPressure() / 100.0F); lcd.println("hPa"); //pembacaan data ketinggian berdasarkan permukaan laut lcd.setCursor(9,1); lcd.print("A:"); lcd.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); lcd.println("m"); delay(1000); }
[/sociallocker]
Selamat mencoba, dan salam nyebarilmu! ♥