[6th Project of Embedded System] ESP32 Communication Protocol — Integrating Multiple Devices

Kemal Lutfian Cicero
4 min readMar 7, 2021

--

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.

Rangkaian ESP32 dengan Sensor-Sensor

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 BMP280
  • Sensor MPU6050
Sensor MPU6050
  • Sensor DHT11
Sensor DHT11
  • Display OLED
Display OLED
  • ESP32
ESP32 pada Breadboard
  • Resistor 10k Ohm
Resistor 10k Ohm
  • 14 Kabel Jumper Male to Male
Kabel Jumper Male to Male

Schematic

Skema Rangkaian dengan 3 Sensor dan Display OLED

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!

Reference

--

--