[6th Project of Embedded System] ESP32 Communication Protocol — Integrating Multiple Devices
Hellooww, guys! Kembali lagi bersama Aku, Kemal Lutfian Cicero, di proyek Sistem Embedded menarik lainnya! Pada 2 proyek sebelumnya, kita sudah belajar mengenai sensor eksternal dan display. Nah, kalo gitu, kenapa engga kita gabungkan saja kedua proyek tersebut? Inilah yang akan kita lakukan pada proyek ke-6, menggabungkan proyek sensor eksternal dan proyek display. Jadi, kalo kalian masih bingung-bingung sedikit tentang proyek-proyek sebelumnya, jangan sungkan untuk mengunjunginya!
Jadi, untuk lebih spesifiknya, eksperimen yang akan Aku kerjakan adalah menggunakan sensor DHT11, BMP280, dan MPU6050 yang nantinya akan menampilkan suhu yang dikenalinya di display OLED. Bagaimana? Terdenga menarik, bukan? Kalau begitu, sebelum kita mulai ke proyeknya, alangkah baiknya jika kita mengenal lebih dulu mengenai communication protocol yang akan kita gunakan, yaitu I2C.
ESP32 I2C Communication Protocol
Kepanjangan I²C itu Inter Integrated Circuit (dibacanya I-squared-C bukan I-kuadrat-C, ya guys). I²C ini memiliki sifat synchronous, multi-master, multi-slave, serta half duplex. Apa sih sifat-sifat ini tuh? Yuk kita bahas satu per satu!
- Synchronous
Synchronous ini berarti hubungan point-to-point antara master dan slave menggunakan satu bus CPU untuk berbagi data dan clock. I2C dan SPI terkenal mengimplementasikan sifat ini.
- Multi-master
Multi-master ini berarti terdapat setidaknya dua ESP32 yang berhubungan dengan satu device saja, misalnya dua ESP32 menuliskan data kepada dua OLED display.
- Multi-slave
Kalo multi-master berarti terdapat setidaknya dua ESP32 yang berhubungan dengan satu device, maka multi-slave berarti setidaknya dua device yang berhubungan dengan satu ESP32. Contohnya adalah ESP32 membaca suhu dari sensor MPU6050, BMP280, dan DHT11 yang kemudian menuliskan datanya ke OLED display. Nah, multi-slave inilah yang akan kita kerjakan pada proyek ini.
- Half duplex
Metode half duplex berarti keadaan di mana pengirim dan penerima dapat aktif, tetapi pada waktu yang berbeda. Misalnya pengirim mengirimkan suatu data, maka penerima hanya dapat menerima data dan begitu pula sebaliknya.
Parts Required
- Sensor BMP280
- Sensor MPU6050
- Sensor DHT11
- Display OLED
- ESP32
- Resistor 10k Ohm
- 14 Kabel Jumper Male to Male
Schematic
Aku minta maaf untuk skema yang terlihat sangat acak-acakan ini. Percayalah, Aku sebenarnya sudah lumayan berusaha agar kalian bisa melihat dengan jelas ke mana kabelnya harus dihubungkan.
Program Details
Demo
Analysis
Terdapat satu hal yang perlu diperhatikan saat bereksperimen dengan proyek ini, yaitu address yang digunakan. Dari skema yang Aku buat, terlihat bahwa semua SCL dan SDA pada masing-masing slave dihubungkan ke I²C bus yang sama pada ESP32. Hal ini dapat terjadi karena masing-masing slave memiliki address yang berbeda. Maka dari itu, jika kalian menggunakan slave yang memiliki address yang sama, maka kalian tidak bisa menghubungkannya di I²C bus yang sama. Kalian harus menggunakan pin lain agar proyek kalian berjalan.
Selain dari itu, sebenarnya kode-kode yang digunakan ini sama persis dengan proyek 4 dan proyek 5. Oleh karena itu, jika kalian merasa kebingungan, kalian bisa melihat proyek 4 dan proyek 5 Aku.
Closing
Sekian untuk proyek kali ini. Bagaimana? proyek-proyek yang kita kerjakan makin menarik (dan tentu saja sedikit sulit), bukan? Kalian harus mencoba proyek-proyek ini dan Aku jamin kalian pasti akan lebih tertarik lagi saat mencobanya sendiri! Kalau begitu, sampai jumpa di proyek lainnya!