Обзор интерфейсного модуля IIC, I2C, TWI для LCD

В этой статье расскажу, как использовать интерфейсный модуль I2C для управления LCD дисплеем (2×16 / 20х4) с помощью Arduino. Данный модуль позволяет уменьшить количество используемых выводов контроллера, вместо 8 или 4-битного соединения, требуется только 2 вывода (SDA и SCL).

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Технические параметры 

► Поддержка дисплеев: LCD 16×02 / 20×04
► Дополнительно: регулировка контрастности
► Напряжение питания. 5В
► Интерфейс: I2C
► Габариты: 54мм x 19мм x 15мм

Общие сведения интерфейсного модуля I2C

Поскольку количество контактов на контроллерах Arduino ограничено и часто при использовании различных датчиков и модулей они заканчиваются, появляется необходимость в их экономии, для этих случай разработан этот модуль, с его помощью можно реализовать передачу по двум контактам (SDA и SCL).

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Теперь немного о самом модуле, построен он на микросхеме PCF8574T. Резисторы R8 (4.7кОм) и R9 (4.7кОм) необходимы для подтяжки линий SDA и SCL, в идеале при подключении двух и более устройств по шине I2C необходимо использовать подтяжку только на одном устройств, позже напишу почему. На плате предусмотрены три перемычки (по схеме видно что линии A0, A1, A2 подтянуты к питанию через резисторы R4, R5, R6), необходимы они для смены адресации устройства, всего их 8 вариантов. Изменение адресации дает нам возможность подключения до восьми устройств по шине IC2 c микросхемой PCF8574T, варианты адресов показаны на рисунке (по умолчанию адрес устройства 0x27). Так же модуль оснащен потенциометром R11 с его помощью можно изменить контрастность LCD дисплея.

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Для соединения на модуле расположено три группы контактов:

Первая группа:
SCL:    линия тактирования (Serial CLock)
► SDA:   линия данных (Serial Dфta)
► VCC:   «+» питание
► GND:  «-» питание

Вторая группа:
► VSS:   «-» питание
► VDD:  «+» питание
► VO:    Вывод управления контрастом
► RS:     Выбор регистра
► RW:   Чтение/запись ( режим записи при соединении с землей)
► E:       Еnable (строб по спаду)
► DB0-DB3: Младшие биты интерфейса
► DB4-DB7: Старшие биты интерфейса
► A:      «+» питания подсветки
► K:      «-»  питания подсветки

Третья группа: (по умолчанию установлена перемычка)
► VCC:
► A от LCD:

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Подключение к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► LCD-дисплей 1602A (2×16, 5V, Синий) x 1 шт.
► Интерфейсный модуль I2C, IIC, TWI для LCD x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Подключение:
Первым делом, припаиваем модуль I2C к LCD дисплею, затем необходимо подключить дисплей к Arduino UNO. Для этого воспользуемся проводками DuPont, подключение осуществляем по таблице ниже.

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Для наглядности, приведу еще одну схему.

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Для этого эксперимента необходимо скачать и установить библиотеку «LiquidCrystal_I2C». Затем скопируйте и вставьте этот пример кода в окно программы IDE Arduino и загрузите в контроллер.

  Скачать программу

Если Вы правильно все сделали, но никаких символов на дисплее нет, попробуйте увеличить контрастность потенциометром.

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Ссылки
  Скачать библиотеку LiquidCrystal_I2C
  Документация на микросхему PCF8574T
  Документация к LCD1602A

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  LCD-дисплей 1602A
  Интерфейсный модуль IIC, I2C, TWI для LCD

Купить в Самаре и области
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  LCD-дисплей 1602A
 Интерфейсный модуль IIC, I2C, TWI для LCD

19 комментариев для “Обзор интерфейсного модуля IIC, I2C, TWI для LCD”
    1. Добрый день, не как, только выводы А4 и А5 работают по I2C

      1. Сергей Мирошниченко, Вы не правы.
        С уществует програмная IIC библиотека для Ардуино,
        где можно назначить любые пины, а не только А4.А5 .

        1. Ну есть библиотека SoftI2CMaster, пробовал её, например она может определять датчик BMP085 на любых пинах, показывает что датчик есть и выдает его адрес. Но ведь нужно прикрутить это библиотеку к самой библиотеке BMP085, чтобы считывать показания с датчика в нормальном виде? Или я что-то не понимаю? А для других датчиков тоже нужно будет как то «мудрить» с библиотекой SoftI2CMaster чтобы она работала вместе с библиотеками для тех датчиков? Помогите пожалуйста, если вы в курсе данной темы. Очень нужно заставить работать несколько разных датчиков на разных пинах шины I2C

    1. Добрый день, данный скетч работает с версий IDE 1.8.5 возможно у вас другой адрес устройства.
      В моей практике встречались с адресами 0x27 и 0x3F.
      Можете просканировать шину I2C и точно узнать какой адрес модуля, статья: https://robotchip.ru/i2c-skaner-na-arduino/

  1. Прошу помощи. подключился , скачал библиотеки а ничего не работает только подсветка а текста в окне нет. В чем вероятные причины?

    1. Добрый день, Владимир. Возможно необходимо отрегулировать контрастность с помощью потенциометра.

      1. вечер добрый. проблема была в неверном определении адреса. прописал lcd(0x3F,16,2) выводит только буквы H и Y из прописаных lcd.setCursor(0,0);
        lcd.print(«Hello, world!»);
        lcd.setCursor(0,1);
        lcd.print(«Ywrobot Arduino!»);
        появилась мысль может пропаяно плохо?

  2. разобрался) запрятал было для чистоты эксперимента стандартную библиотеку ликвидКристал а она я так понимаю помогает ликвидКристал _АЙ2С разбиратся индикацией на ЛСД. те вторая просто аддон типа.

  3. Было бы замечательно если бы кто-нибудь выложил это на асм, и не на Ардуино, а для мк (хотя бы для PIC)

    1. как раз сейчас разбираюсь (адаптирую,оптимизирую..)со своими старыми библиотеками для PIC на ASM и для среднего семейства и для расширенного (PIC16F1XXX) для индикаторов матричных 8*8, Винстаровских и бошевскмх метеодатчиков BMP180,BMP/BME280, далласовских DS18B20….. ,пишите в личку. Писал все для себя и под себя….

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *