[4th Project of Embedded System] Experiment with External Sensor
Ciao, guys! Setelah kita membahas mengenai internal sensor yang dimiliki oleh ESP32, maka kita sekarang dapat melanjutkan pembahasan kita mengenai sensor lagi. Proyek kali ini adalah eksperimen dengan external sensor.
Terdapat berbagai jenis external sensor yang dapat digunakan pada ESP32, seperti sensor BME-280 yang berfungsi untuk mengukur tekanan, temperatur, dan kelembapan, kemudian sensor BMP-180 yang berfungsi untuk mengukur tekanan dan temperatur. Tidak hanya itu, terdapat juga sensor yang dapat mengukur percepatan gravitasi dan kecepatan gerak, yaitu sensor MPU-6050. Kemudian ada juga sensor BMP-280 yang tidak hanya mengukur temperatur dan tekanan, tetapi juga mengukur ketinggian.
Pada proyek kali ini, saya akan melakukan eksperimen menggunakan 3 sensor, yaitu sensor BMP-280, sensor DHT11 yang dapat mengukur temperatur dan tekanan, serta sensor MPU-6050. Kalau begitu, ayo kita mulai saja!
Sensor BMP-280
Eksperimen pertama yang akan kita lakukan adalah dengan menggunakan sensor BMP-280. Ayo disimak!
Parts Required
Terdapat beberapa komponen yang dibutuhkan untuk melakukan proyek ini, yaitu:
- ESP32
- 4 Male to Male Jumper Wire
- Sensor BMP-280
Schematic - ESP32 with BMP280 using I2C
Perlu diperhatikan bahwa pada skema di atas, sensor BMP-280 yang digunakan hanya memiliki 4 pin, yaitu pin VIN, GND, SCL, dan SDA, sedangkan sensor BMP-280 yang Aku gunakan pada eksperimen memiliki 6 pin dengan 2 pin tambahan CSB dan SDO. Tapi tidak perlu khawatir, karena 2 pin dari sensor BMP-280 yang Aku gunakan, yaitu CSB dan SDO, tidak terpakai pada eksperimen kali ini.
Installing Adafruit BMP280 Library
Sebelum masuk ke penulisan kode, terdapat library yang harus di-install agar proyek ini dapat berjalan.
- Pilih Sketch pada Arduino IDE
2. Pilih Include Library dan pilih Manage Libraries
3. Setelah Library Manager terbuka, install Adafruit BMP280 Library
4. Setelah proses instalansi selesai, jangan lupa untuk me-restart Arduino IDE-mu!
Installing Adafruit Unified Sensor
Jika proses instalansi Adafruit BMP280 Library sudah selesai, maka terdapat library lain yang perlu di-install, yaitu Adafruit Unified Sensor Library.
- Pilih Sketch pada Arduino IDE
2. Pilih Include Library dan pilih Manage Libraries
3. Setelah Library Manager terbuka, install Adafruit Unified Sensor
Program Details
Hands On
Analysis
Mari kita bahas kode-kode yang digunakan terlebih dahulu! Terdapat banyak kode-kode yang belum pernah Aku gunakan sebelumnya. Library Wire.h
digunakan agar kita dapat berkomunikasi dengan alat I2C. Library Adafruit_Sensor.h
dan Adafruit_BMP280.h
berfungsi agar kita dapat berfungsi dengan sensor BMP280.
Kemudian, masuk pada bagian void setup()
bmp.begin(0x76)
berfungsi untuk menginisialisasi sensor dengan 0x76 yang merupakan address I2C. Masuk ke void loop()
, readTemperature()
berfungsi untuk membaca temperatur yang terdeteksi oleh sensor dalam satuan Celsius. readPressure()
berfungsi untuk membaca tekanan yang terdeteksi oleh sensor, dan readAltitude()
berfungsi untuk mengestimasi ketinggian berdasarkan tekanan di permukaan laut.
Setelah itu, kita dapat melihat rangkaian yang sudah diatur. Pada rangkaian yang Aku gunakan, GPIO 21 dan GPIO 22 adalah pin yang aku gunakan selain GROUND dan 3V3. Pengunaan GPIO 21 dan GPIO 22 ini dikarenakan pin tersebut memiliki fungsi I2C. Karena GPIO 21 sudah diatur sehingga menerima I2C SDA, maka pin SDA yang ada di sensor BMP280 disambungkan ke GPIO 21 pada ESP32 dan pin SCL yang ada di sensor BMP280 disambungkan ke GPIO 22 pada ESP32. Jangan lupa juga untuk menyambungkan VCC pada 3v3 ESP32 dan GND pada GROUND ESP32.
Selain itu, Aku rasa bahwa sensor BMP280 ini memiliki kualitas yang cukup baik. Kecepatan pembacaan suhu yang dilakukan cukup cepat. Pembacaan suhu tertinggi yang pernah Aku dapatkan dari sensor ini adalah 36.11 derajat Celcius. Aku juga merasa bahwa pembacaan dari sensor ini cukup akurat.
Error Occured
Pada proyek kali ini, tentu saja terdapat beberapa kesalahan yang Aku lakukan agar kalian tidak perlu mengalami hal yang sama.
- Penggunaan address yang salah. Address yang Aku gunakan pada proyek ini adalah 0x76 karena itu adalah address I2C-ku. Terdapat kemungkinan bahwa setiap orang memiliki address yang berbeda-beda. Oleh karena itu, alangkah baiknya jika kalian mencoba untuk menjalankan program lain untuk mencari address berapa yang kalian gunakan!
- Pengunaan library yang salah. Pada percobaan kali ini, error karena pengunaan library ini yang menghabiskan waktuku berjam-jam untuk mencari kesalahannya. Pada awalnya Aku tidak tahu jenis sensor apa yang Aku gunakan, jadi Aku asal saja menggunakan library yang ada, seperti library BME280 dan library BMP180. Tentu saja ini tidak akan bekerja karena sensor yang Aku gunakan adalah sensor BMP280. Jadi, alangkah baiknya jika kalian mengecek sensor apa yang kalian gunakan terlebih dahulu sebelum masuk ke program.
Sensor DHT11
Eksperimen selanjutnya adalah penggunaan sensor eksternal DHT11. Ayo kita mulai saja!
Installing Adafruit DHT11 Library
Sebelum masuk ke penulisan kode, terdapat library yang harus di-install agar proyek ini dapat berjalan.
- Pilih Sketch pada Arduino IDE
2. Pilih Include Library dan pilih Manage Libraries
3. Setelah Library Manager terbuka, install Adafruit BMP280 Library
4. Setelah proses instalansi selesai, jangan lupa untuk me-restart Arduino IDE-mu!
Installing Adafruit Unified Sensor
Karena pada eksperimen sensor BMP280 library ini sudah diinstall, maka Aku di sini hanya memberi tahu bahwa di eksperimen ini kamu membutuhkan library ini!
Parts Required
- Sensor DHT11
- 3 Male to Male Jumper Wire
- 10k Ohm Resistor
- ESP32
Schematic — ESP32 with DHT11
Program Details
Hands On
Analysis
Dari percobaan ini, Aku berpikir bahwa sensor DHT11 ini memiliki kapabilitas yang cukup buruk. Hal ini Aku simpulkan dari kemampuannya dalam membaca suhu. Pada awal sensor ini membaca suhu sekitar 26 derajat Celsius dan pembacaannya cukup konstan.
Oleh karena itu, aku mencoba untuk meletakkan jariku pada sensor tersebut, dan voila! Pembacaan suhu naik dengan signifikan!
Pada setiap line baru, suhu yang dibaca oleh sensor DHT11 ini selalu naik pada saat aku meletakkan jariku di sensor tersebut. Namun, pada saat aku melepaskan jariku dari sensor, penurunan suhunya terjadi sangat lambat. Pada awalnya, Aku mengira bahwa sensor DHT11 ini cukup buruk performansinya karena suhu yang dibaca tidak kian menurun. Namun setelah aku menunggu beberapa detik, ternyata suhunya menurun, tapi dengan kecepatan sangat lambat!
Suhu yang dibaca oleh sensor DHT11 ini hanya turun 0.1 derajat Celcius setelah beberapa line. Hal ini tentu saja menunjukkan bahwa sensor DHT11 ini sangat tidak efisien untuk digunakan. Jadi sepertinya sensor ini memiliki delay yang cukup tinggi dengan keadaan aslinya.
Error Occured
Pada percobaan kali ini, Aku tidak mengalami permasalahan apapun! Mungkin hal ini terjadi karena Aku sudah mencoba dengan menggunakan eksperimen lain. Practice makes perfect itu bener guys! Jadi kalian jangan sungkan untuk mencoba eksperimen-eksperimen ini! Biarlah jika kalian gagal beberapa kali, tapi kalian pasti akan merasakan senang setelah berhasil sekali saja!
Perbandingan Sensor BMP280 dan Sensor DHT11
Setelah mencoba mengukur suhu menggunakan dua sensor tersebut, Aku mendapat kesimpulan bahwa sensor BMP280 ini memiliki kualitas yang lebih baik dibandingkan dengan sensor DHT11. Mari lihat perbedaannya!
Sebelum ada perlakuan terhadap sensor yang digunakan, suhu yang terbaca tetap konstan tanpa ada perubahan yang signifikan. Namun, setelah dilakukan perubahan terhadap lingkungan sensor, perubahan yang terlihat di antara kedua sensor sangat jelas!
Pada beberapa detik pertama, sensor DHT11 tidak dapat mendeteksi perubahan lingkungannya secara langsung, sedangkan sensor BMP280 dapat langsung mendeteksi perubahan yang terjadi. Tidak hanya itu, kenaikan dari sensor BMP280 juga dapat terlihat sangat signifikan. Kemudian, setelah perlakuan tersebut dilepaskan, sensor DHT11 juga masih terlambat dalam mencatat informasinya, sedangkan BMP280 langsung mencatat informasi terhadap lingkungannya.
Sensor MPU-6050
Eksperimen terakhir yang akan Aku lakukan pada blog ini adalah penggunaan sensor eksternal MPU-6050.
Parts Required
- ESP32
- 4 Male to Male Jumper Wire
- Sensor MPU-6050
Schematic — ESP32 with MPU-6050
Installing Adafruit MPU-6050 Library
Sebelum masuk ke penulisan kode, terdapat library yang harus di-install agar proyek ini dapat berjalan.
- Pilih Sketch pada Arduino IDE
2. Pilih Include Library dan pilih Manage Libraries
3. Setelah Library Manager terbuka, install Adafruit MPU6050
4. Setelah proses instalansi selesai, jangan lupa untuk me-restart Arduino IDE-mu!
Installing Adafruit BusIO Library
Sebelum masuk ke penulisan kode, terdapat library yang harus di-install agar proyek ini dapat berjalan.
- Pilih Sketch pada Arduino IDE
2. Pilih Include Library dan pilih Manage Libraries
3. Setelah Library Manager terbuka, install Adafruit BusIO
4. Setelah proses instalansi selesai, jangan lupa untuk me-restart Arduino IDE-mu!
Installing Adafruit Unified Sensor
Karena pada eksperimen sensor BMP280 library ini sudah diinstall, maka Aku di sini hanya memberi tahu bahwa di eksperimen ini kamu membutuhkan library ini!
Program Details
Hands On
Analysis
Terdapat beberapa hal yang perlu diperhatikan pada sensor ini. Saat tidak ada perlakuan apapun terhadap sensor, maka pembacaan sensor terhadap lingkungan cenderung konstan.
Seharusnya, jika sensor MPU-6050 tidak mendapatkan perlakuan apapun, Rotation X, Y, dan Z serta Acceleration X dan Y itu bernilai 0. Namun, pembacaan sensor yang tidak absolut 0 saat tidak diberi perlakuan apapun merupakan hal yang normal. Hal ini disebabkan oleh terdapat banyak sekali error yang terjadi pada satu kali pembacaan oleh sensor. Oleh karena itu, untuk mendapatkan kondisi yang sangat ideal itu cukup sulit.
Kemudian, saya mencoba untuk memutar-mutar sensor agar terjadi perubahan pada pembacaan Rotation-nya. Hasilnya sesuai dengan dugaan bahwa Rotation berubah dengan signifikan.
Dapat terlihat bahwa nilai pembacaan Rotation Y mencapai 7.58 dan -7.05. Pembacaan negatif ini dimungkinkan karena Aku melakukan putaran yang melawan arah. Hal ini tentu saja menyebabkan nilai negatif dapat terbaca. Kemudian untuk nilai Acceleration X dapat berubah karena pada saat Aku memutar sensornya, ada kemungkinan bahwa terjadi percepatan yang signifikan.
Setelah itu, Aku juga mencoba untuk menggerakkan sensor ke arah kanan dan kiri secara horizontal. Hal ini menyebabkan Acceleration Y berubah dengan signifikan. Sebenarnya Aku kira awalnya yang akan berubah adalah Acceleration X.
Dapat terlihat bahwa pembacaan hingga mencapai 20.81 m/s². Berarti Aku menggerakkan tanganku dengan sangat cepat, ya haha. Tidak hanya itu, Aku juga mencoba menggerakkan sensor vertikal ke atas dan ke bawah. Hal ini juga sangat memengaruhi pembacaan terhadap Acceleration Z.
Dapat terlihat bahwa kecepatan tanganku untuk menggerakkannya vertikal ke atas dan ke bawah cukup cepat! Aku hebat juga, ya hahaha. Nilai yang terbaca oleh sensor pada Acceleration Z mencapai 27.78 m/s² dan terendahnya adalah -17.29 m/s² yang berarti aku menggerakkan ke arah yang berlawanan.
Closing
Yah, cukup segitu untuk eksperimen kali ini. Aku sangat merekomendasikan agar kalian mencoba eksperimen ini! Eksperimen ini akan membuat kalian tertarik dan tentu saja Aku menjadi lebih tertarik mengenai sensor-sensor yang lebih berkualitas daripada sensor yang Aku gunakan. Jadi, tunggu apa lagi? Ayo coba setelah kalian membaca blog ini! Kalau begitu, sampai jumpa di blog selanjutnya!