EXPERIMENT WITH SENSOR SYSTEM

Zachrandika Alif Syahreza
8 min readFeb 20, 2021

--

ESP32 with sensor system

Hai para pencari ilmu, balik lagi nih dengan ku Zachrandika Alif Syahreza mahasiswa Institut Teknologi Bandung jurusan Sistem dan Teknologi Informasi 2019. Pada artikel sebelumnya aku sudah menjelaskan tentang Internal Sensor pada ESP32 dan bagaimana cara kita menggunakannya. Sekarang aku akan menjelaskan mengenai External Sensor pada ESP32. Seperti biasa pada artikel ini aku juga akan melakukan project menggunakan External Sensor agar teman-teman semua bisa dapat dengan mudah mengerti apa yang aku jelaskan dalam artikel ini. External Sensor yang akan aku gunakan nanti adalah BMP180 dan BMP180. So mari kita mulai penjelasannya

Introducing BMP180 Barometric Sensor

Board BMP180

BMP180 adalah sensor tekanan barometik dan suhu yang memiliki fungsi untuk mengukur tekanan udara. BMP180 dapat mengukur tekanan mulai dari rentang 300 sampai 110hPa. Karena tekanan dan suhu memiliki keterkaitan, sensor BMP180 ini juga dilengkapi dengan sensor pengukur tekanan suhu.

Wiring for BMP180 Sensor to the ESP32 Lolin32 Lite

Sensor BMP180 dapat berkomunikasi dengan ESP32 menggunakan protokol komunikasi I2C. Oleh sebab itu kita perlu menggunakan pin SDA dan pin SCL pada ESP32 kita. Umumnya pin SDA dan pin SCL pada ESP32 terletak pada GPIO 21 dan GPIO 22, namun dikarenakan aku menggunakan board ESP32 Lolin32 Lite maka pin SDA dan pin SCL yang aku gunakan berada pada GPIO 23 dan GPIO 19

Berikut adalah tabel bagaimana cara menghubungkan sensor dengan ESP32 Lolin32 Lite

Wiring table

Introducing BME280 Sensor Module

Board BME280 SPI

BME280 adalah sensor yang dapat mengukur tekanan barometik, suhu, dan kelembaban. Sensor BME280 juga dapat memperkirakan ketinggian karena tekanan berubah seiring bertambahnya ketinggian. Sensor BME280 terdiri dari beberapa tipe, yaitu tipe kaki 4 dan tipe kaki 6. Perbedaan dari kedua tipe tersebut terdapat pada tegangan listrik yang dikonsumsi dan protokol komunikasi yang digunakan. Untuk tipe 4 pin, tegangan yang dikonsumsi adalah 5V dan protokol komunikasi yang digunakan adalah I2C. Sedangkan untuk tipe 6 pin, tegangan yang dikonsumsi adalah 3V dan protokol komunikasi yang digunakan dapat berupa I2C dan SPI

Board BME280 I2C

Wiring for BME280 Sensor to the ESP32 Lolin32 Lite

Sensor BMP280 dapat berkomunikasi dengan ESP32 menggunakan protokol komunikasi I2C dan SPI tergantung jenis komponen sensor yang digunakan. Apabila kita menggunakan sensor BME280 4 pin maka protokol komunikasi yang digunakan adalah I2C. Sedangkan apabila kita menggunakan sensor BME280 6 pin kita dapat menggunakan protokol komunikasi I2C maupun SPI. Oleh sebab itu umumnya kita perlu menggunakan pin SDA dan pin SCL pada ESP32 kita. Seperti penjelasan pada bagian wiring BMP180, pin SDA dan pin SCL pada ESP32 yang umum terletalak pada GPIO 21 dan GPIO 22, namun dikarenakan aku menggunakan board ESP32 Lolin32 Lite maka pin SDA dan pin SCL berada pada GPIO 23 dan GPIO 19

Berikut adalah tabel bagaimana cara menghubungkan sensor BME280 dengan ESP32 Lolin32 Lite

Apabila kamu menggunakan protokol komunikasi I2C maka lakukan seperti berikut

Wiring BME280 I2C

Namun jika kamu menggunakan protokol komunikasi SPI maka lakukan seperti berikut

Wiring BME280 SPI

Project to Read Temperature, Pressure, and Altitude with BMP180 Sensor

Pada project kali ini aku akan mengamplikasikan penggunaan sensor eksternal BMP180 untuk mengukur temperatur dan tekanan lingkungan sekitar kita. Aku juga akan menjelaskan bagaimana cara memperkirakan ketinggian menggunakan sensor BMP180

Komponen yang dibutuhkan untuk project ini adalah

  • ESP32 Lolin32 Lite
  • Kabel jumper
  • Sensor BMP180
  • breadboard

Build the Circuit

Susun semua komponen pada breadboard sesuai skema berikut

Schematic project 4.1
  1. Sensor BMP180 ditancapkan pada breadboard
  2. GPIO GND dihubungkan dengan ground pada breadboard (kabel hitam)
  3. GPIO 3.3V dihubungkan dengan Vin pada breadboard (kabel merah)
  4. GPIO 23 dihubungkan dengan SDA pada sensor BMP180 (kabel biru)
  5. GPIO 19 dihubungkan dengan SCL pada sensor BMP180 (kabel ungu)

NB : Pastikan semua komponen dan kabel jumper sudah terpasang dengan baik dan benar. Pastikan juga urutan wiring pada sensor BMP180 sudah benar. Untuk melihat urutan dapat dilihat dibagian belakang sensor

Preparing the ESP32 in Arduino IDE

Untuk mengunggah kode program ke dalam board ESP32 diperlukan aplikasi Arduino IDE. Pada artikel sebelumnya aku sudah menjelaskan bagaimana cara melakukan pengaturan pada Arduino IDE agar dapat terhubung dengan board ESP32. Untuk lebih jelasnya dapat dicek disini

Installing the BMP_085 Library

Untuk menjalankan program yang dapat mengukur suhu, tekanan, dan ketinggian dengan sensor BMP180, kita harus mengunduh terlebih dahulu library BMP_085 yang disusun oleh Adafruit. Untuk mengunduh library tersebut lakukan langkah berikut ini

  1. Jalankan Aplikasi Arduino IDE
  2. Pilih Sketch > Include Library > Manage Libraries. Maka Library Manager akan terbuka
  3. Lakukan pencarian dengan mengetikkan BMP_085 pada kolom pencarian
  4. Lakukan instalasi library BMP_085 yang disusun oleh Adafruit
Install library BMP_085 by Adafruit

NB : Setelah library sudah terinstalasi akan lebih baik jika me-restart aplikasi Arduino IDE

ESP32 I2C Communication

Seperti yang sudah aku jelaskan tadi, untuk melakukan komunikasi antara sensor BMP180 maupun sensor BME280 dengan ESP32 menggunakan protokol I2C. Protokol komunikasi I2C menggunakan dua kabel untuk berbagi informasi. Satu digunakan untuk sinyal clock (SCL) dan satu lagi untuk mengirim dan menerima data (SDA)

NB : Ada beberapa kasus dimana SDA dituliskan menjadi SDI dan SCL dituliskan menjadi SCK

BME280 SDI & SCK

Dengan protokol komunikasi I2C setiap komponen yang memerlukan protokol komunikasi I2C memiliki address masing-masing yang berupa nomor hexadeximal. Sehingga ESP32 dapat berkomunikasi dengan setiap perangkat tersebut

Untuk mengetahui address I2C suatu komponen, dapat dilakukan scanning menggunakan program yang dijalankan pada Arduino IDE. Berikut kode program untuk melakukan scanning address I2C

Secara default kode Wire.begin( ) akan menggunakan GPIO 21 sebagai SDA dan GPIO 22 sebagai SCL. Karena pada project ini aku menggunkan GPIO 23 sebagai SDA dan GPIO 19 sebagai SCL maka kode Wire.begin( ) aku ubah menjadi Wire.begin (23,19)

Setelah menjalankan program untuk melakukan scanning I2C kemudian jalankan serial monitor maka akan muncul address I2C dari komponen yang digunakan sebagai berikut

Scanning I2C address

Program to Measuring Temperature, Pressure, and Altitude

Untuk menjalankan program yang dapat mengukur suhu, tekanan , dan ketinggian pada sensor BMP180, kalian tinggal menggunakan kode program yang tersedia pada library BMP_085 yang disusun oleh Adafruit. Lakukan langkah berikut ini

Pilih File > Examples > Adafruit BMP085 Library > BMP085test

Secara otomatis kode program akan langsung muncul pada halaman Arduino IDE

Setelah kode program sudah tampil pada halaman Arduino IDE masukkan address I2C komponen pada kode !bmp.begin( ). Pada kasus ini aku memasukkan address 0x77

Secara umum kita tidak perlu lagi memanggil fungsi Wire.begin ( ) apabila kita menggunakan GPIO 21 sebagai SDA dan GPIO 22 sebagai SCL. karena secara default kode program menggunakan GPIO 21 dan GPIO 22. Namun karena pada kasus ini aku menggunakan board yang cukup unik, maka aku harus memanggil fungsi Wire.begin (23,19) agar program dapat medeteksi SDA dan SCL yang aku gunakan.

Setelah mengunggah program ke dalam board ESP32 buka serial monitor dengan baut rate 9600. Maka kamu akan melihat hasil pengukuran suhu, tekanan, dan ketinggian lingkungan sekitar kamu

Hasil pengukuran

Project to Read Temperature, Pressure, and Altitude with BMP180 Sensor

Setelah berhasil menggunakan sensor BMP180 kali ini aku akan mengamplikasikan penggunaan sensor eksternal BME280 untuk mengukur temperatur, tekanan, dan kelembaban lingkungan sekitar kita. Aku juga akan menjelaskan bagaimana cara memperkirakan ketinggian menggunakan sensor BME280

Komponen yang dibutuhkan untuk project ini adalah

  • ESP32 Lolin32 Lite
  • Kabel jumper
  • Breadboard
  • Sensor BME280Build the Circuit

Susun semua komponen pada breadboard sesuai skema berikut

Schematic project 4.2
  1. Sensor BME280 ditancapkan pada breadboard
  2. GPIO GND dihubungkan dengan ground pada breadboard (kabel hitam)
  3. GPIO 3.3V dihubungkan dengan Vin pada breadboard (kabel merah)
  4. GPIO 23 dihubungkan dengan SDA pada sensor BMP180 (kabel biru)
  5. GPIO 19 dihubungkan dengan SCL pada sensor BMP180 (kabel ungu)

NB : Pastikan semua komponen dan kabel jumper sudah terpasang dengan baik dan benar. Pastikan juga urutan wiring pada sensor BME280 sudah benar. Untuk melihat urutan dapat dilihat dibagian belakang sensor

Installing the BME280 & Adafruit_Sensor Library

Sama seperti cara melakukan instalasi pada library sensor BMP_085. Untuk menjalankan program yang dapat mengukur suhu, tekanan, ketinggian, dan kelembaban dengan sensor BME280, kita harus mengunduh terlebih dahulu library BME280 dan library Adafruit_Sensor yang juga disusun oleh Adafruit. Untuk mengunduh library tersebut lakukan langkah berikut ini

  1. Jalankan Aplikasi Arduino IDE
  2. Pilih Sketch > Include Library > Manage Libraries. Maka Library Manager akan terbuka
  3. Lakukan pencarian dengan mengetikkan adafruit bme280 pada kolom pencarian
  4. Lakukan instalasi library BME280 yang disusun oleh Adafruit
Install library BME280 by Adafruit

Setelah selesai melakukan instalasi library BME280, langkah selanjutnya adalah melakukan instalasi library Adafruit_Sensor yang juga disusun oleh Adafruit

  1. Pilih Sketch > Include Library > Manage Libraries. Maka Library Manager akan terbuka
  2. Lakukan pencarian dengan mengetikkan Adafruit Unified Sensor pada kolom pencarian
  3. Lakukan instalasi library Adafruit_Sensor yang disusun oleh Adafruit
Install Adafruit Unified Sensor by Adafruit

NB : Setelah library sudah terinstalasi akan lebih baik jika me-restart aplikasi Arduino IDE

Scanning I2C Address

Sama seperti project sebelumnya, untuk berkomunikasi dengan sensor BME280 menggunkan protokol komunikasi I2C. Untuk itu kita harus melakukan scanning terlebih dahulu address I2C dari komponen sensor yang kita gunakan. Untuk melakukan scanning kamu tinggal menjalankan kode program berikut ini

Program to Measuring Temperature, Pressure, Altitude, and Humidity

Setelah mendapatkan address I2C yang digunakan oleh komponen sensor, sekarang waktunya menjalankan program untuk mengukur suhu, tekanan, ketinggian, dan kelembaban. Untuk menjalankan program yang dapat mengukur suhu, tekanan, ketinggian, dan Kelembaban pada sensor BME280, kalian tinggal menggunakan kode program yang tersedia pada library Adafruit BME280 yang disusun oleh Adafruit. Lakukan langkah berikut ini

Pilih File > Examples > Adafruit BME280 library > bme280 test

Secara otomatis kode program akan langsung muncul pada halaman Arduino IDE

Sama seperti project sebelumnya, masukkan address I2C komponen sensor pada kode bme.begin( ). Pada kasus ini aku memasukkan address 0x76. Aku juga memanggil kembali fungsi Wire.begin(23,19) karena aku menggunakan GPIO 23 sebagai SDA dan GPIO 19 sebagai SCL

Setelah mengunggah program ke dalam board ESP32 buka serial monitor dengan baut rate 9600. Maka kamu akan melihat hasil pengukuran suhu, tekanan, ketinggian, dan kelembaban lingkungan sekitar kamu

Hasil pengukuran dengan sensor BME280

Conclussion

Dari kedua eksperimen yang aku lakukan menggunakan sensor eksternal BMP180 dan BME280 aku dapat menyimpulkan beberapa hal

  1. Untuk setiap komponen yang menggunakan protokol komunikasi I2C pasti memiliki address masing-masing. Oleh karena itu sebaiknya apabila ingin menggunakan komponen tersebut dianjurkan untuk melakukan scanning address I2C terlebih dahulu agar tidak terjadi error karena ESP32 tidak dapat mendeteksi komponen yang kita gunakan
  2. Alangkah lebih baik untuk setiap project yang menggunakan protokol komunikasi I2C menjalankan fungsi Wire.begin( ) pada programnya. Karena beberapa kali aku mendapatkan error ketika tidak menjalankan fungsi Wire.begin( ) karena SDA dan SCL yang aku gunakan sedikit berbeda
  3. Harus dipastikan bahwa wiring komponen yang kita gunakan sudah terpasang dengan baik agar tidak terjadi error yang sangat menyakitkan hati

Check My Youtube Video

--

--

No responses yet