ESP32 feat BMP280 — Temperature, Pressure, Altitude

ESP32 Project #4

Nadya Laurentia
5 min readFeb 20, 2021

Hello fellows!

Sama kaya project sebelumnya, di project kali ini aku masih main-main sama sensor. Tapi, kali ini sensornya adalah sensor eksternal. Sensor yang aku pake buat project kali ini adalah sensor BMP280 yang bisa mendeteksi suhu, tekanan, dan ketinggian dari permukaan laut. Sebenernya masih banyak banget sensor lain yang bisa dipake bareng ESP32 tapi aku baru punya sensor ini. Mungkin aku bakal coba beli sensor lain, tapi bakal aku bahas di story lain yaa! Yuk langsung aja kita bahas yang sekarang, ESP32 feat BMP280 go go gooo~

Buat eksperimen kali ini, pertama aku coba dulu sensornya pake panduan dari Random Nerd Tutorials (https://randomnerdtutorials.com/esp32-bme280-arduino-ide-pressure-temperature-humidity/). Tapi karena di situ BME280, perlu ada yang kita modifikasi sedikit buat BMP280. Untuk coba-coba sensor ini, kita cuma butuh :

  • 1 buah ESP32 Development Board
  • 2 buah Breadboard
  • 1 helai kabel micro-USB
  • 5 helai jumper wire male-to-male
  • 1 buah sensor BMP280

Btw itu aku beli breadboard 1 lagi gais supaya lebih luas dan enak ngerangkainya~ Pertama aku buat rangkaiannya kaya yang di Random Nerd Tutorials tapi disesuaikan GPIO-nya dengan pin di BMP280, jadi kaya gini :

Skema Rangkaian untuk Sensor BMP280

Jadi pin paling atas di BMP280 itu pin VCC yang bakal kita sambungin ke 3V3 dari ESP32. Pin selanjutnya GND yang kita sambungin juga ke GND ESP32. Pin ketiga itu pin SCL dan harus kita sambungin ke GPIO 22. Next, pin SCA harus kita sambungin ke GPIO 21. Di eksperimen ini, kita pake protokol komunikasi I2C jadi 2 pin terbawah ga dipake. Pin-pin itu dipake kalau kita mau protokol komunikasinya SPI.

Untuk kode programnya sendiri, pertama kita harus install dulu library Adafruit BMP280 dan Adafruit Unified Sensor di Arduino IDE. Kalau udah, restart dulu Arduino IDE-nya. Next, karena ini masih coba-coba, kita bisa pake kode contoh dari library Adafruit BMP280. Caranya tinggal ke File > Examples > Adafruit BMP280 library > bmp280test.

Kode Program Example bmp280test

Tapi, kita ga bisa pake kodenya mentah-mentah. Karena kita pake protokol komunikasi I2C, kita buat line yang berhubungan dengan SPI itu jadi comment, kaya include header SPI, define SCK, MISO, MOSI, CS, dan variabel-variabel yang berhubungan dengan SPI. Terus di fungsi setup, ada kondisi (!bmp.begin()) di if-nya. Seperti gambar kode di atas, kita perlu inisialisasi sensor dengan nulis addressnya ke dalam bracket. Cara ngecek alamatnya bisa langsung copy-paste kode I2C Scanner dari link ini ke Arduino IDE : https://raw.githubusercontent.com/RuiSantosdotme/Random-Nerd-Tutorials/master/Projects/LCD_I2C/I2C_Scanner.ino

Setelah ngecek address sensor BMP280-nya, masukin ke bracket bmp.begin. Karena di aku addressnya 0x76, jadinya bmp.begin(0x76). Aku sempet ngalamin beberapa error gitu waktu scanning I2C-nya karena masalah wiring, jadi jangan panik ya gais kalo error. Coba aja ganti kabelnya atau ganti letaknya di breadboard karena kadang ada error di breadboardnya juga.

Kalo udah, langsung aja upload programnya ke ESP32. Buat ngecek hasilnya, buka Serial Monitor. Jangan lupa set baud rate-nya ke 9600 supaya sama dengan yang sudah diset di fungsi setup. Kalau tulisannya “Could not find a valid BMP280 sensor, check wiring!” coba cek lagi wiring-nya yaa! Kalau udah bener semua, harusnya bakal keluar hasil pembacaan sensornya kaya gini :

Serial Monitor Menampilkan Hasil Pembacaan Sensor

Karena udah berhasil cek sensornya, aku mau modifikasi dikit rangkaiannya. Aku pengen coba pasang 2 buah LED, warna biru dan kuning. Pengennya waktu suhu di bawah 30 derajat Celcius, LED biru yang nyala, sedangkan kalau suhu 30 derajat Celcius atau lebih, LED kuning yang nyala. Untuk itu, aku perlu beberapa komponen tambahan :

  • 2 buah LED (biru dan kuning)
  • 2 buah resistor 330 Ohm
  • 4 helai jumper wire male-to-male

Skema rangkaiannya juga pake rangkaian yang kaya tadi, cuma tambahin buat LED-nya aja. LED kuning aku hubungin ke GPIO 3 dan LED biru aku hubungin ke GPIO 23 jadi kaya gini:

Skema Rangkaian Project External Sensor

Kode programnya juga pastinya berubah dong. Perubahannya itu pertama di fungsi setup kita masukin pinMode(3, OUTPUT) dan pinMode(23, OUTPUT). Terus masukin juga if logic-nya di fungsi loop. Selain itu biar ga pusing, aku hapus aja command yang berhubungan dengan SPI. Kodenya jadi kaya gini :

Kode Program External Sensor

Kalau udah, tinggal kita upload dan pantau aja di Serial Monitor. Sekali lagi, jangan lupa samain baud ratenya jadi 9600 ya! Buat ngeceknya, apakah rangkaian LED ini udah jalan sesuai yang diharapkan, bisa coba dipegang aja sensor BMP280-ya. Nanti suhunya bakal pelan-pelan naik.

Buat liat proses eksperimen aku untuk project External Sensor ini dari awal ngerangkai sampe percobaan dan hasilnya, langsung cek video aja ya!

https://www.youtube.com/watch?v=e908wm0UXv4

Tadaaaa! Project 4 berhasil gaess~ Agak rumit tapi kalo berhasil super satisfying! Kabelnya banyak dan emang agak ribet sih harus bener-bener perhatiin pin-nya itu jangan sampai salah titik. Anyway, kesimpulannya External Project kali iniii…

Project 4 : Successful!

Asik banget ternyata ngulik sensor ini. Buat kalian yang penasaran bisa banget coba beli sensor BMP280 ini. Harganya super terjangkau loh, aku beli di olshop cuma Rp14.000,00 tapi belum ongkir sih. Mungkin set up awalnya memang agak tricky tapi itu yang bikin seru sih, jadi tertantang gitu deh! Project ESP32 ini makin lama makin kerasa deh level up-nya, dari Blink tau-tau udah pake External Sensor aja. Makin lama makin tricky tapi makin interesting juga. Tunggu ya sharing aku tentang eksperimen project selanjutnya❤ See you in the next project!

Adiós amigos!

--

--

No responses yet