Menambahkan Sensor Cahaya BH1750 pada Proyek STM32

3 min read 22-08-2024
Menambahkan Sensor Cahaya BH1750 pada Proyek STM32

Dalam dunia elektronik dan pemrograman embedded, sensor cahaya merupakan komponen penting yang digunakan untuk berbagai aplikasi, mulai dari pengukuran intensitas cahaya hingga proyek-proyek otomatisasi rumah. Salah satu sensor yang populer adalah BH1750. Pada artikel ini, kita akan membahas cara menambahkan sensor cahaya BH1750 pada proyek STM32.

Apa itu Sensor BH1750?

BH1750 adalah sensor cahaya digital yang mampu mengukur intensitas cahaya dalam satuan lux. Sensor ini menggunakan antarmuka I2C, yang membuatnya mudah untuk dihubungkan dengan mikrokontroler seperti STM32. Dengan tingkat akurasi yang tinggi dan responsivitas yang cepat, sensor ini sangat cocok untuk aplikasi monitor lingkungan, perangkat IoT, dan proyek lainnya.

Spesifikasi Utama dari BH1750

  • Rentang Pengukuran: 1 lux hingga 65,535 lux
  • Tegangan Operasi: 3V hingga 5V
  • Antarmuka: I2C
  • Konsumsi Daya: Rendah, ideal untuk aplikasi berbasis baterai

Komponen yang Diperlukan

Sebelum kita mulai, berikut adalah daftar komponen yang perlu Anda siapkan:

  • Mikrokontroler STM32 (misalnya, STM32F103C8T6)
  • Sensor BH1750
  • Breadboard dan Jumper Wire
  • Resistor (jika diperlukan)
  • Komputer dengan software pemrograman STM32 (seperti STM32CubeIDE)
  • Library I2C (optional)

Langkah-langkah Menghubungkan BH1750 dengan STM32

1. Pemrograman pada STM32CubeIDE

Sebelum kita mulai menghubungkan, pastikan untuk melakukan pengaturan awal pada STM32CubeIDE.

a. Buat Proyek Baru

  1. Buka STM32CubeIDE.
  2. Pilih "File" > "New" > "STM32 Project".
  3. Pilih mikrokontroler yang sesuai dan tekan "Next".
  4. Beri nama proyek dan tentukan lokasi penyimpanan, lalu tekan "Finish".

b. Konfigurasi I2C

  1. Di jendela "Pinout & Configuration", pilih antarmuka I2C1.
  2. Setel pin I2C1 SDA dan SCL sesuai dengan pin yang ingin Anda gunakan.
  3. Aktifkan I2C di tab 'Configuration' dan atur parameter seperti berikut:
    • Mode: Fast Mode
    • Alamat Mode: 7-bit alamat
  4. Genereate Code.

2. Menghubungkan Sensor BH1750

Sambungkan sensor BH1750 ke STM32 Anda dengan langkah-langkah berikut:

  • VCC pada sensor BH1750 ke VCC pada STM32 (3.3V atau 5V).
  • GND pada sensor BH1750 ke GND pada STM32.
  • SDA pada sensor BH1750 ke pin SDA STM32.
  • SCL pada sensor BH1750 ke pin SCL STM32.

Berikut adalah diagram sambungan sederhana:

          STM32             BH1750
         ---------         --------
         |       |         |      |
         | VCC   | ------> | VCC  |
         | GND   | ------> | GND  |
         | SDA   | ------> | SDA  |
         | SCL   | ------> | SCL  |
         ---------         --------

3. Menggunakan Library I2C

Jika Anda belum memiliki library untuk I2C, Anda bisa mencarinya atau menggunakannya dari STM32Cube.

a. Inisialisasi I2C

Pastikan untuk memanggil fungsi inisialisasi I2C dalam kode Anda sebagaimana berikut:

HAL_I2C_Init(&hi2c1);

b. Menambahkan Fungsi untuk Membaca BH1750

Berikut adalah contoh fungsi untuk membaca data dari sensor BH1750:

#include "stm32f1xx_hal.h"

#define BH1750_ADDR 0x23

uint16_t read_bh1750(I2C_HandleTypeDef *hi2c) {
    uint8_t cmd = 0x01; // Perintah untuk mengukur cahaya
    uint8_t data[2];
    
    HAL_I2C_Master_Transmit(hi2c, BH1750_ADDR << 1, &cmd, 1, HAL_MAX_DELAY);
    HAL_Delay(180); // Tunggu hasil pengukuran
    HAL_I2C_Master_Receive(hi2c, BH1750_ADDR << 1, data, 2, HAL_MAX_DELAY);
    
    return (data[0] << 8) | data[1]; // Kembalikan nilai dalam lux
}

4. Menggunakan Sensor dan Menampilkan Hasil

Di bagian dalam fungsi main, kita akan memanggil fungsi read_bh1750 dan menampilkan hasilnya menggunakan Serial atau LED.

while (1) {
    uint16_t lux = read_bh1750(&hi2c1);
    printf("Light Intensity: %d lux\r\n", lux); // Aturan keluaran data
    HAL_Delay(1000); // Ambil data setiap detik
}

Uji Coba

Setelah semua langkah di atas selesai, upload firmware ke STM32 Anda dan periksa outputnya. Jika semua langkah dilakukan dengan benar, Anda seharusnya dapat melihat nilai intensitas cahaya yang diukur oleh sensor BH1750.

Kesimpulan

Menambahkan sensor cahaya BH1750 pada proyek STM32 dapat dilakukan dengan mudah dengan mengikuti langkah-langkah yang telah dijelaskan. Dengan sensor ini, Anda dapat mengukur intensitas cahaya untuk berbagai aplikasi, termasuk sistem otomasi dan pengukuran lingkungan. Pastikan untuk mengecek kompatibilitas dan pembaruan berkaitan dengan library yang digunakan agar fungsionalitas sensor bekerja dengan baik.

Dengan pemahaman dan pengalaman yang Anda dapatkan dari proyek ini, Anda dapat mengembangkan lebih banyak aplikasi yang memanfaatkan sensor cahaya dan teknologi berbasis STM32. Happy coding!