- Apa itu Protokol Komunikasi I2C?
- Bahan yang Dibutuhkan
- Modul I2C
- Diagram sirkuit
- Kode untuk menemukan Alamat Pengontrol I2C
- Kode untuk ESP32
Pada tutorial sebelumnya, OLED dihubungkan dengan ESP32 menggunakan komunikasi SPI yang menggunakan 5 pin. Dalam tutorial ini, kami menghubungkan LCD 16x2 dengan ESP32, hanya menggunakan 2 pin, dengan bantuan komunikasi I2C. Ini mengurangi jumlah pin yang digunakan oleh ESP32 sehingga lebih banyak jumlah pin ESP32 tetap bebas untuk menghubungkan sensor yang berbeda.
Apa itu Protokol Komunikasi I2C?
Istilah I2C adalah singkatan dari " Inter Integrated Circuits". Ini biasanya dilambangkan sebagai IIC atau I kuadrat C atau bahkan sebagai protokol antarmuka 2-kabel (TWI) di beberapa tempat tetapi semuanya berarti sama. I2C adalah protokol komunikasi sinkron, artinya kedua perangkat yang berbagi informasi harus berbagi sinyal jam yang sama. Ini hanya memiliki dua kabel, SDA dan SCL untuk berbagi informasi, di mana SCL digunakan untuk sinyal clock dan SDA digunakan untuk mengirim dan menerima data.
Anda dapat membeli modul LCD I2C di mana Pengontrol LCD I2C1602 terpasang atau Anda dapat membeli pengontrol I2C untuk menghubungkan LCD 16x2 dengan ESP32.
Bahan yang Dibutuhkan
- ESP32
- Layar LCD 16 * 2
- Pengontrol LCD I2C
- Kabel
- Papan tempat memotong roti
Modul I2C
Pengontrol I2C memiliki IC PCF8574 yang menyediakan ekspansi I / O jarak jauh tujuan umum melalui dua-kabel dua arah I2C-bus serial clock (SCL) dan data serial (SDA). IC ini sangat berguna dan dapat digunakan pada papan tanda LED, display, bantalan kunci, kontrol Industri, dll. Ada 8 pin I / O, 3 pin (A0, A1, A2) untuk alamat bus I2C dan SDA, pin SCL.
Papan pengontrol LCD memiliki potensiometer inbuilt untuk mengontrol kontras LCD.
Diagram pin IC dan pengontrol LCD diberikan di bawah ini.
Diagram sirkuit
Koneksi untuk menghubungkan LCD dengan ESP32 diberikan di bawah ini
- sambungkan pin 1-16 modul I2C ke pin 1-16 layar LCD.
- Pin SDA modul I2C -> Pin SDA ESP32 yaitu D21
- Pin SCL modul I2C -> Pin SCL ESP32 yaitu D22
Saya telah menghubungkan 3v ESP32 ke 5v I2C hanya untuk demonstrasi tetapi kami membutuhkan pasokan 5V untuk modul I2C untuk menampilkan data dengan benar, karena ESP32 hanya dapat memberikan 3,3 volt yang rendah untuk modul I2C dan data tidak akan terlihat dengan jelas. Jadi, lebih baik menggunakan suplai 5V eksternal.
Kami membutuhkan file papan untuk ESP32, jadi jika Anda baru mengenal ESP32 maka pertama-tama ikuti Memulai dengan Tutorial ESP32 dan kemudian kembali ke sini. Anda juga dapat menghubungkan LCD dengan ESP32 tanpa I2C tetapi akan membutuhkan lebih banyak pin ESP32.
Kode untuk menemukan Alamat Pengontrol I2C
Sebelum masuk ke kode utama kita harus mencari dulu alamat modul I2C.
Pengontrol I2C memiliki bit ADDRESS bawaan yang digunakan untuk mengontrol bus I2C. ALAMAT default adalah 0x27 tetapi dalam beberapa kasus bisa 0x3f. Jadi, untuk memeriksa alamat pengontrol I2C, hubungkan rangkaian seperti yang ditunjukkan di atas, unggah kode yang diberikan di bawah ini dan buka monitor serial, Anda akan melihat alamat dalam heksadesimal.
#include
Perhatikan kami menggunakan Alamat ini dalam kode antarmuka LCD kami.
Di pengontrol I2C, seperti yang Anda lihat ada tiga jumper / bantalan solder berlabel A0, A1 dan A2. Ini digunakan untuk mengubah alamat modul. Berikut cara alamat berubah dari nilai default 0x27 atau 0x3F, jika Anda menghubungkan bantalan alamat bersama-sama. (1 = Tidak Terhubung. 0 = Terhubung):
A0 |
A1 |
A2 |
Alamat HEX |
1 |
1 |
1 |
0x27 |
0 |
1 |
1 |
0x26 |
1 |
0 |
1 |
0x25 |
0 |
0 |
1 |
0x24 |
1 |
1 |
0 |
0x23 |
0 |
1 |
0 |
0x22 |
1 |
0 |
0 |
0x21 |
0 |
0 |
0 |
0x20 |
Kode untuk ESP32
Pertama kita membutuhkan perpustakaan LiquidCrystal_I2C untuk modul LCD I2C. Library Liquidcrsytal biasa tidak akan berfungsi karena kami menggunakan I2C di sini.
Unduh perpustakaan dari https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library ini
Kode tersebut ditulis sedemikian rupa sehingga apapun yang diketikkan pada monitor serial akan ditampilkan pada LCD. Arduino IDE telah digunakan untuk menulis dan mengunggah kode kami.
Pertama, kita harus menyertakan pustaka kawat untuk komunikasi I2C yang dilengkapi dengan Arduino IDE.
#include
Kemudian untuk LCD I2C, sertakan LiquidCrystal_I2C.h yang sudah di download tadi.
#include
Kemudian atur alamat LCD I2C ke 0x27 atau alamat yang Anda dapatkan dengan menjalankan kode pemindai yang diberikan di atas untuk tampilan 16 karakter 2 baris
LCD LiquidCrystal_I2C (0x27, 16,2);
Dalam fungsi pengaturan , inisialisasi komunikasi serial dan LCD untuk 16 karakter 2 baris dan nyalakan lampu latar. Jika Anda ingin mematikan lampu latar gunakan lcd .noBacklight () dan ubah fungsi setCursor () sesuai keinginan Anda.
void setup () { Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0,0); lcd.print ("Halo, dunia!"); penundaan (1000); lcd.setCursor (0,1); lcd.print ("circuitdigest.com"); penundaan (3000);
LCD pertama-tama akan menampilkan instruksi untuk menggunakan Serial Monitor dan mengetik karakter yang akan ditampilkan.
Setel opsi Serial Monitor ke "No Line Ending"
lcd.clear (); lcd.setCursor (0,0); lcd.print ("Gunakan Ser. Monitor"); lcd.setCursor (0,1); lcd.print ("Ketik untuk ditampilkan"); }
fungsi loop akan terus memeriksa data serial yang masuk dari port serial menggunakan fungsi Serial.available (). Jika ada pesan, tunggu sebentar dan print pesan tersebut pada LCD menggunakan fungsi lcd .write () dan Serial.read ().
void loop () {{// ketika karakter tiba melalui port serial… if (Serial.available ()) {delay (100); // tunggu sebentar sampai seluruh pesan tiba lcd.clear (); // bersihkan layar sementara (Serial.available ()> 0) {// baca semua karakter yang tersedia lcd.write (Serial.read ()); // tampilkan setiap karakter ke LCD}}}}
Kode Bersaing diberikan di bawah ini, jadi unggah kode dan buka monitor serial. Kemudian ketik pesan dan tekan enter. Pesan Anda akan ditampilkan pada LCD.
Jika Anda tidak mendapatkan respons yang tepat atau tidak ada respons pada LCD, periksa alamat pengontrol I2C Anda atau pindai lagi dengan kode yang diberikan di atas untuk mendapatkan alamat yang benar.