ESP-32 Tutorial:External Sensor
Bagaimana cara memanfaatkan sensor external untuk melihat suhu,ketinggian,tekanan dan kelembapan?Simak pembahasan berikut ini!
Halo teman-teman semua! Selamat datang kembali di serial blog “ESP-32 Tutorial” saya. Pada kesempatan kali ini, saya akan membahas terkait penggunaan sensor eksternal untuk mendeteksi suhu,kelembapan,tekanan dan juga ketinggian. Untuk modul sensor yang akan saya gunakan adalah BME 280 dengan 4 kaki.
Secara singkat, apa sih yang saya lakukan pada kesempatan kali ini?Sesuai dengan judul dari medium kali ini, saya belajar untuk menggunakan sensor tambahan yang dipasangkan pada ESP-32 lalu mencoba memakainya. Dalam perjalanan kedepannya, teman-teman akan melihat saya menggunakan sensor ini untuk sebuah keperluan, yaitu menyalakan lampu.
Tanpa basa-basi lagi, mari kita bahas lebih dalam terkait ESP32 dan BME 280 ini.
Daftar Komponen dan Perangkat
Pada percobaan ini, saya akan menggunakan beberapa komponen/perangkat seperti berikut ini
a. ESP-32 DOIT DEVKIT V1 Board
b. BME 280 dengan 4 Kaki
c. Breadboard
d. Jumper wires
Mendengar nama-nama dari komponen tersebut, tentunya teman-teman sudah mengetahui serta familiar dengan fungsi mereka masing-masing. Tapi bila teman-teman perhatikan, ada sebuah barang baru yang belum pernah dibahas fungsinnya, apakah itu?
Ya, tentunya adalah bintang tamu serta aktor utama kita, yaitu BME 280! BME 280 merupakan salah satu jenis sensor eksternal yang dapat dihubungkan dengan ESP-32. Dengan menghubungkan BME 280 dan ESP-32, maka ESP-32 kita mendapat kemampuan untuk membaca empat hal utama, yaitu suhu,tekanan,kelembapan,dan ketinggian.
Untuk BME 280 ini sendiri, terdapat 2 jenis yang beredar di masyarakat luas, yaitu BME 280 dengan 4 kaki dan BME 280 dengan 6 kaki. Nah untuk modul kali ini, saya akan menggunakan BME 280 dengan 4 kaki(karena yang 6 kaki stok di tokonya lagi abis :( huhu)
Skema Perangkat
Kita sudah membahas komponen serta perangkat apa saja yang dibutuhkan untuk modul kali ini. Nah untuk tahapan berikutnya, mari kita belajar merangkai komponen tersebut agar dapat digunakan!
Secara singkat dan sistematis, berikut ini adalah rangkaian dari percobaan kali ini
“Wah kok simple banget kak?” Memang simple teman-teman! Karena disini tujuan utama kita hanya menggunakan sensor eksternal alias BME 280 ini, maka tujuan utama kita adalah menghubungkan kedua hal tersebut dan voila! Rangkaian sudah jadi dan siap digunakan :)
List Program
Rangkaian kita udah jadi nih! Nah tapi seperti biasanya, kita harus memasukan program kita terlebih dahulu ke ESP-32 agar dia bisa membaca hasil pembacaan BME 280. Tanpa basa-basi lagi, berikut ini adalah program yang digunakan untuk melakukan pembacaan dengan BME 280
Nah tapi selain program “default” tersebut, saya juga mencoba menggabungkannya dengan modul pertama kita, yaitu lampu berkedip! Lampu yang digunakan tentunya adalah lampu LED bawaan dari ESP-32 itu sendiri(Alasan utama?Breadboardnya udah gamuat kalo mau dicolokin lampu LED lagi :( huhu). Berikut ini kode programnya(Dengan baris yang diblock kuning adalah perbedaannya)
Pasti teman-teman akan bertanya, “Kak sebenernya cara kerja programnya gimana sih?”. Untuk karena itu, mari kita bahas satu per satu bagian dari program ini, mulai dari inisiasi/konstanta,void setup,void loop dan void printvalue.
1.Inisiasi/Konstanta
Seperti biasanya, bagian ini merupakan bagian untuk program mempersiapkan berbagai keperluan agar void setup,void loop, serta fungsi-fungsi lainnya dapat berjalan dengan baik. Nah pada modul ini, inisiasi/konstanta itu sendiri dibagi menjadi beberapa bagian, yaitu
a. Import modul yang dibutuhkan(ada di program “Include…”)
b. Mendefinisikan sebuah konstanta(ada di program “Define…”)
c. Menginisasi sebuah variable dengan tipe unsigned long(ada di program “Unsigned long delayTime”)
2.Void Setup
Kalau inisiasi/konstanta digunakan untuk mempersiapkan semua program, void setup digunakan untuk mempersiapkan ESP-32 buat menjalankan void loop ataupun fungsi lainnya teman-teman!Disini kita bisa melihat bahwa berbagai keperluan dipersiapkan seperti biasanya, mulai dari serial.begin,serial.println,hingga pinMode.
Nah tapi ada hal baru nih teman-teman. Kalau diperhatikan dengan seksama, terdapat variabel status dengan bme.begin-nya. Sebenernya, apa sih fungsinya? Fungsi dari program ini adalah untuk mempersiapkan serta membaca kondisi dari BME 280. Di program ini, ESP-32 akan dihubungkan dengan BME 280 dan dibaca status hubungannya(dia aja punya hubungan masa kamu gaada :( )
Apabila pembacaan tersebut gagal atau BME 280 tidak ditemukan, maka akan ditampilkan pesan error sehingga kita perlu mencoba memasangnya kembali. Tapi apabila tidak muncul pesan error, brarti ESP-32 dan BME 280 sudah saling terhubung dan dapat digunakan.
3. void loop
Sesuai dengan namanya, fungsi dari void loop ini adalah untuk melakukan program yang kita inginkan secara berulang-ulang. Nah, program apa sih yang kita inginkan untuk diulangi terus menerus tanpa berhenti?Jawabannya sudah pasti program utama kita. Tapi, siapa/apasih program utama kita?
Pada modul kali ini, program utama kita adalah void printvalue itu sendiri. Secara singkat, void printvalue akan membaca berbagai hal yang kita inginkan lalu mengeprintnya ke serial monitor(khusus program modifikasi, maka program dapat menyalakan lampu LED bawaan ESP-32) dan darisinilah void loop bekerja.
Dengan meletakan void printavalue pada void loop, maka kita dapat melakukan pembacaan dengan BME 280 secara terus menerus tanpa berhenti. Selama kita tidak merusak/mencabut kabelnya, maka BME 280 akan terus membaca keadaan sesuai dengan apa yang kita tuliskan pada void printvalue. Oleh karena itu, void loop sangat penting dalam program kita.
4. void printavalue
void printvalue merupakan program utama kita kali ini. Disini, BME 280 akan kita gunakan untuk membaca 4 buah hal yaitu (sekali lagi) suhu,kelembapan,tekanan dan ketinggian. Bagaimana sih cara BME 280 dapat membaca keempat hal tersebut?
Bila teman-teman perhatikan, maka teman-teman akan mendapatkan/melihat hal berikut
a. bme.readTemperature()
b. bme.readPreassure()
c. bme.readAltitude()
d. bme.readHumidity()
Nah sesuai dengan namanya, berarti keempat program tersebut akan membaca bagiannya masing-masing, dimana
a. bme.readTemperature()->Membaca suhu sekitar
b. bme.readPreassure()->Membaca tekanan
c. bme.readAltitude()->Membaca ketinggian
d. bme.readHumidity()->Membaca kelembapan
Setelah membaca keempat hal tersebut, maka program akan menampilkannya pada serial monitor. Di dalam serial monitor tersebut, akan diprint juga kata-kata/kalimat untuk menjelaskan pembacaan agar lebih mudah kita pahami. Contohnya untuk pembacaan suhu, pada serial monitor juga akan diprint “Temperature = “,dll.
Nah, khusus untuk program modifikasi, bila teman-teman lihat kembali, saya memasang sebuah if statement disitu. Dimana apabila suhu yang dibaca melebihi 34 derajat celcius, maka lampu LED akan berkedip-kedip. Cara lampu berkedip-kedip ini sama dengan modul pertama blog kita, dimana apabila kondisi if nya terpenuhi, maka ESP-32 akan secara bergantian mengirimkan tegangan 3.3V dan 0V ke lampu LED bawaan, sehingga lampu LED kita akan “nyala mati nyala mati” alias berkedip-kedip
Demo Modul
Rangkaian check, program check, terus apalagi nih?Tentunya tidak lain dan tidak bukan adalah PERCOBAAN MODUL INI SENDIRI GENGS :D. Secara percobaan, saya membuat 2 video, yang pertama video pembacaan menggunakan program default dan yang kedua ada video pembacaan dengan program modifikasi.
Analisis
Yuhu sekarang kita sudah ada di tahap analisis teman-teman. Kira-kira apasih yang perlu kita analisis? Tentunya yang pertama adalah cara kerja atau urutan kerja dari program ini sendiri.
Seperti biasanya, pertama-tama program akan melakukan berbagai setup dan setting terkait kebutuhan-kebutuhan dasarnya seperti mengimport modul yang dibutuhkan, menyiapkan variabel global, serta menghubungkan BME 280 dengan ESP-32. Bagian-bagian tersebut ada pada inisiasi/konstanta dan void setup.
Setelah berhasil terhubung, maka ESP-32 akan melakukan pembacaan seperti yang tertera pada void loop dan void printvalue. Sebagai peran utama dari program ini, void printvalue memiliki tugas untuk melakukan pembacaan serta menampilkan data-data yang dibaca oleh BME 280. Hasil pembacaan tersebut nantinya akan ditampilkan dalam serial monitor dalam bentuk tulisan terkait angka-angka suhu,kelembapan,tekanan serta ketinggian BME 280.
Meskipun void printvalue tersebut merupakan program utama, fungsi tersebut hanya bisa dijalankan sekali apabila tidak dibantu oleh fungsi lainnya. Disini, void loop mengambil peran yang sangat penting terkait keberjalanan void printvalue. Dimana seperti yang kita ketahui bersama, bahwa program yang kita letakkan pada void loop akan selalu berulang-ulang tanpa batas, oleh karena itu dengan meletakkan void printvalue kedalam void loop maka kita dapat melakukan pembacaan secara terus menerus tanpa berhenti.
Setelah memahami langkah kerja/alur program, apalagi sih yang perlu kita ketahui? sebenarnya tidak ada lagi, tinggal teman-teman praktekan dan coba pelajari kesalahan teman-teman pribadi :)
Nah berhubung sedang membicarakan kesalahan, saya sendiri ingin menyatakan beberapa kendala serta solusi yang saya dapatkan dalam modul kali ini.
Pertama ada koneksi ESP-32 dan komputer yang terputus. Menurut saya pribadi, hal ini merupakan hal yang sangat aneh karena selama ini ESP-32 saya selalu bisa terhubung dengan komputer dan bisa menjalankan program yang ada, tapi tiba-tiba kemarin ESP-32 saya error dan tidak dapat terhubung dengan komputer :(.
Setelah mencoba berbagai hal, ternyata penyebabnya sangat simple, yaitu dongle USB-A to USB-C saya bermasalah. Setelah mencoba mengganti dongle saya tersebut, akhirnya koneksi ESP-32 saya dengan komputer kembali berjalan dan program dapat dijalankan dengan baik.
Kedua adalah check wiring. Masalah tersebut merupakan masalah yang cukup sering ditemukan diantara teman-teman praktikan lainnya karena berbagai alasan, ada yang kabelnya tidak terhubung,salah alamat dll. Dalam kasus yang saya miliki, saya tidak bisa menggunakan program bawaan dari aplikasi Arduinonya sendiri, melainkan harus mengcopas program yang ada dari random nerd tutorial. Setelah melakukan copas tersebut, akhirnya masalah check wiring saya hilang dan program bisa dijalankan seperti biasanya.
Penutup
Tiba saatnya bagi saya untuk mengucapkan terima kasih kepada teman-teman yang telah menyempatkan waktunya untuk membaca blog saya kali ini. Menurut saya pribadi, percobaan pada modul ini merupakan percobaan “paling simple tapi riweuh” yang pernah saya hadapi, karena kesalahan-kesalahan minor saya tadi sempat membuat saya gregetan dan memakan waktu yang cukup lama. Harapannya dengan adanya blog ini, teman-teman bisa memahami cara menggunakan sensor eksternal terutama BME 280 serta lebih berhati-hati dalam menggunakannya :)