Pengantar Modul Adaptor LCD I2C

Coba Instrumen Kami Untuk Menghilangkan Masalah





Dalam posting ini kita akan melihat modul adaptor LCD berbasis 'I2C' atau 'IIC' atau 'I square C', yang akan mengurangi koneksi kabel antara Arduino dan layar LCD menjadi hanya 2 kabel, juga menghemat banyak pin GPIO untuk sensor / drive lain, dll.

Sebelum kita membahas tentang modul adaptor LCD I2C, penting untuk memahami apa itu bus I2C dan cara kerjanya.



Tapi bagaimanapun Anda tidak perlu menjadi ahli dengan protokol I2C untuk bekerja dengan adaptor LCD yang disebutkan ini.

Ilustrasi koneksi I2C:

Ilustrasi koneksi I2C:

I2C atau IIC singkatan dari 'Inter-Integrated Circuit' adalah bus komputer serial yang ditemukan oleh semikonduktor Philips, yang sekarang dikenal sebagai semikonduktor NXP. Sistem bus ini ditemukan pada tahun 1982.



Apa itu Bus?

Bus adalah sekumpulan kabel / wires yang membawa data dari satu chip ke chip lain / satu papan sirkuit ke papan sirkuit lain.

Keuntungan utama dari protokol bus I2C adalah, mikrokontroler atau sensor atau chip yang didukung dapat dihubungkan hanya dengan dua kabel. Keuntungan yang luar biasa dari protokol ini adalah, kita dapat menghubungkan 127 chip atau sensor / driver yang berbeda ke satu perangkat master yang biasanya merupakan mikrokontroler hanya dengan 2 kabel.

Apakah dua kabel I2C itu?

Kedua kabel tersebut adalah SDA dan SCL yang masing-masing merupakan Data Serial dan Jam Serial.

Jam Serial atau SCL digunakan untuk menyinkronkan komunikasi data melalui bus I2C. SDA atau Serial Data adalah jalur data di mana data aktual dikirimkan dari master ke slave dan sebaliknya. Perangkat master mengontrol jam Serial dan memutuskan perangkat slave mana yang perlu dikomunikasikan. Tidak ada perangkat slave yang dapat memulai komunikasi terlebih dahulu, hanya perangkat master yang dapat melakukannya.

Garis data Serial adalah dua arah dan kuat, setelah setiap set data 8 bit dikirim, perangkat penerima mengirimkan kembali bit pengakuan.

Seberapa cepat protokol I2C?

Versi asli dari protokol I2C yang dikembangkan pada tahun 1982 mendukung 100 Kbps. Versi berikutnya distandarisasi pada tahun 1992 yang mendukung 400Kbps (mode Cepat) dan mendukung hingga 1008 perangkat. Versi berikutnya dikembangkan pada tahun 1998 dengan 3,4 Mbps (mode kecepatan tinggi).

Beberapa versi I2C lainnya dikembangkan pada tahun 2000, 2007, 2012 (dengan mode Ultra-Fast 5Mbps) dan versi I2C terbaru dikembangkan pada tahun 2014.

Mengapa resistor pull-up di bus I2C?

SDA dan SCL adalah 'open-drain' yang berarti kedua saluran dapat menjadi RENDAH tetapi tidak dapat mendorong saluran TINGGI, sehingga resistor pull-up dihubungkan pada setiap saluran.

Tetapi dengan sebagian besar modul I2C seperti LCD atau RTC telah built in resistor pull up, jadi kita tidak perlu menghubungkannya kecuali ditentukan.

Resistor Pull-up / Pull-down: Resistor pull-up adalah resistor yang terhubung ke garis + Ve dari supply untuk menjaga level logika dari sebuah garis ke TINGGI jika garis tersebut tidak tinggi atau rendah.

Resistor pull-down adalah resistor yang terhubung ke garis –Ve dari suplai untuk menjaga level logika dari sebuah garis ke RENDAH jika garis tersebut tidak tinggi atau rendah.

Ini juga mencegah kebisingan memasuki garis.

Kami berharap kami menggores permukaan protokol I2C, jika Anda memerlukan informasi lebih lanjut tentang protokol I2C, silakan berselancar

YouTube dan Google.

Sekarang mari kita lihat modul LCD I2C:

Pinout modul LCD I2C

Ada 16 pin output untuk layar LCD yang dapat disolder langsung ke belakang modul LCD 16 X 2.

Pin input adalah + 5V, GND, SDA dan SCL. Pin SDA dan SCL pada Arduino Uno masing-masing adalah pin A4 dan A5. Untuk Arduino mega SDA adalah pin # 20 dan SCL adalah pin # 21.

Mari kita bandingkan tampilannya ketika kita memasang LCD ke Arduino tanpa adaptor I2C dan dengan adaptor.

Tanpa Adaptor I2C:

Arduino Tanpa Adaptor I2C

Dengan adaptor I2C:

Arduino menggunakan Adaptor I2C

Adaptor disolder di bagian belakang layar LCD dan seperti yang dapat kita lihat bahwa kita menyimpan banyak pin GPIO untuk tugas lain dan juga kita dapat terus menambahkan 126 perangkat I2C lagi ke pin A4 dan A5.

Harap diperhatikan bahwa pustaka Liquid Crystal standar tidak akan berfungsi dengan adaptor LCD I2C ini, ada pustaka khusus untuk ini, yang akan segera dibahas dan kami akan menunjukkan kepada Anda cara menggunakan modul ini dengan contoh pengkodean.

Bagaimana Menghubungkan Adaptor I2C ke Layar 16 x 2

Pada bagian artikel di atas kita mempelajari dasar-dasar protokol I2C dan mengambil gambaran umum tentang modul adaptor LCD I2C. Dalam posting ini kita akan belajar bagaimana menghubungkan modul adaptor LCD I2C ke layar LCD 16 x 2 dan kita akan melihat bagaimana programnya dengan sebuah contoh.

Keuntungan utama dari protokol I2C adalah kita dapat menghubungkan sensor / perangkat input / output yang didukung hanya dalam dua baris dan sangat membantu dengan Arduino karena memiliki pin GPIO yang terbatas.

Sekarang mari kita lihat bagaimana menghubungkan modul ke LCD.

Modul ini memiliki 16 pin keluaran dan 4 pin masukan. Kami cukup menyolder adaptor ke bagian belakang layar LCD 16 x 2. Dari 4 pin input tersebut, keduanya adalah + 5V dan GND, sisanya adalah SDA dan SCL.

Kita dapat melihat bahwa kita menyimpan banyak pin di Arduino untuk tugas input / output lainnya.

Kita dapat mengatur kontras tampilan dengan mengatur potensiometer dengan obeng kecil (disorot dalam kotak merah).

Cahaya latar sekarang dapat dikontrol dalam kode program itu sendiri:

lcd.backlight ()

Ini akan MENGAKTIFKAN lampu latar pada layar LCD.

lcd.noBacklight ()

Ini akan mematikan lampu latar pada layar LCD.

Kita dapat melihat ada jumper terhubung, yang disorot dalam kotak merah, jika jumper dilepas, lampu latar tetap OFF terlepas dari perintah program.

Sekarang penyiapan perangkat keras selesai, sekarang mari kita lihat cara membuat kode. Harap diingat bahwa modul LCD I2C perlu khusus

perpustakaan dan perpustakaan 'liquidcrystal' pra-instal tidak akan berfungsi.

Anda dapat mengunduh pustaka LCD I2C dari sini dan menambahkan ke Arduino IDE:

github.com/marcoschwartz/LiquidCrystal_I2C

Dari posting sebelumnya kita mengetahui bahwa perangkat I2C memiliki alamat dimana master atau mikrokontroler dapat mengidentifikasi perangkat dan berkomunikasi.

Dalam kebanyakan kasus, untuk modul LCD I2C alamatnya adalah “0x27”. Tetapi pembuatan yang berbeda mungkin memiliki alamat yang berbeda. Kita harus memasukkan alamat yang benar di program baru kemudian layar LCD Anda akan berfungsi.

Untuk menemukan alamatnya, cukup hubungkan 5V ke Vcc dan GND ke GND dari Arduino dan pin SCL modul I2C ke A5 dan SDA ke A4 dan unggah kode di bawah ini.

Ini akan memindai perangkat I2C yang terhubung dan menunjukkan alamatnya.

// -------------------------------- //
#include
void setup()
{
Wire.begin()
Serial.begin(9600)
while (!Serial)
Serial.println('-----------------------')
Serial.println('I2C Device Scanner')
Serial.println('-----------------------')
}
void loop()
{
byte error
byte address
int Devices
Serial.println('Scanning...')
Devices = 0
for (address = 1 address <127 address++ )
{
Wire.beginTransmission(address)
error = Wire.endTransmission()
if (error == 0)
{
Serial.print('I2C device found at address 0x')
if (address <16)
{
Serial.print('0')
}
Serial.print(address, HEX)
Serial.println(' !')
Devices++
}
else if (error == 4)
{
Serial.print('Unknown error at address 0x')
if (address <16)
Serial.print('0')
Serial.println(address, HEX)
}
}
if (Devices == 0)
{
Serial.println('No I2C devices found ')
}
else
{
Serial.println('-------------- done -------------')
Serial.println('')
}
delay(5000)
}
// -------------------------------- //

Unggah kode dan buka monitor serial.

Seperti yang dapat kita lihat, dua perangkat terdeteksi dan alamatnya ditampilkan, tetapi jika Anda hanya ingin menemukan alamat modul LCD I2C, Anda sebaiknya tidak menghubungkan perangkat I2C lain saat memindai.
Jadi kesimpulannya kami mendapat alamat '0x27'.

Sekarang kita akan membuat jam tangan digital sebagai contoh karena ada dua perangkat I2C yaitu modul LCD dan RTC atau modul jam real time. Kedua modul akan dihubungkan dengan dua kabel.

Unduh perpustakaan berikut:
Perpustakaan RTC: github.com/PaulStoffregen/DS1307RTC
TimeLib.h: github.com/PaulStoffregen/Time

Cara mengatur waktu ke RTC

• Buka Arduino IDE dan arahkan ke File> Example> DS1307RTC> atur waktu.
• Unggah kode dengan perangkat keras yang lengkap dan buka monitor serial dan Anda selesai.

Diagram sirkuit:

Program:

//------------Program Developed by R.Girish-------//
#include
#include
#include
#include
LiquidCrystal_I2C lcd(0x27, 16, 2)
void setup()
{
lcd.init()
lcd.backlight()
}
void loop()
{
tmElements_t tm
lcd.clear()
if (RTC.read(tm))
{
if (tm.Hour >= 12)
{
lcd.setCursor(14, 0)
lcd.print('PM')
}
if (tm.Hour <12)
{
lcd.setCursor(14, 0)
lcd.print('AM')
}
lcd.setCursor(0, 0)
lcd.print('TIME:')
if (tm.Hour > 12)
{
if (tm.Hour == 13) lcd.print('01')
if (tm.Hour == 14) lcd.print('02')
if (tm.Hour == 15) lcd.print('03')
if (tm.Hour == 16) lcd.print('04')
if (tm.Hour == 17) lcd.print('05')
if (tm.Hour == 18) lcd.print('06')
if (tm.Hour == 19) lcd.print('07')
if (tm.Hour == 20) lcd.print('08')
if (tm.Hour == 21) lcd.print('09')
if (tm.Hour == 22) lcd.print('10')
if (tm.Hour == 23) lcd.print('11')
}
else
{
lcd.print(tm.Hour)
}
lcd.print(':')
lcd.print(tm.Minute)
lcd.print(':')
lcd.print(tm.Second)
lcd.setCursor(0, 1)
lcd.print('DATE:')
lcd.print(tm.Day)
lcd.print('/')
lcd.print(tm.Month)
lcd.print('/')
lcd.print(tmYearToCalendar(tm.Year))
} else {
if (RTC.chipPresent())
{
lcd.setCursor(0, 0)
lcd.print('RTC stopped!!!')
lcd.setCursor(0, 1)
lcd.print('Run SetTime code')
} else {
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Read error!')
lcd.setCursor(0, 1)
lcd.print('Check circuitry!')
}
}
delay(1000)
}
//------------Program Developed by R.Girish-------//

catatan:

LCD LiquidCrystal_I2C (0x27, 16, 2)

'0x27' adalah alamat yang kami temukan dengan memindai dan 16 dan 2 adalah jumlah baris dan kolom pada layar LCD.

Untuk RTC kami tidak perlu mencari alamatnya tetapi kami menemukannya saat memindai '0x68', tetapi pustaka RTC akan menanganinya.

Sekarang mari kita lihat seberapa banyak kita mengurangi kemacetan kabel dan menyimpan pin GPIO di Arduino.

Hanya 4 kabel yang dihubungkan ke layar LCD, disorot dalam kotak merah.

Juga hanya 4 kabel yang terhubung dari Arduino dan modul RTC berbagi jalur yang sama.

Sekarang Anda telah memperoleh pengetahuan dasar tentang I2C dan bagaimana menggunakan modul adaptor LCD I2C.
Apakah Anda menyukai postingan ini? Apakah Anda punya pertanyaan? Silakan ungkapkan di bagian komentar, Anda mungkin mendapatkan balasan cepat.




Sepasang: Rangkaian Penguji Dioda Transistor Sederhana Berikutnya: Jadikan IR Remote Control Range Extender Circuit ini