В этом статье мы рассмотрим, как использовать адаптер I2C для ЖК-дисплея с Arduino. По своей сути, I2C (Inter-Integrated Circuit) — это протокол связи, который позволяет устройствам взаимодействовать друг с другом, используя только два провода. Адаптер I2C (или контроллер I2C) — это микросхема, способная выступать в качестве ведущего устройства на шине I2C. Используя такой адаптер, мы можем уменьшить количество проводов, необходимых для подключения устройств к системе, что делает его оправданным выбором для различных приложений.
Одно из применений такой микросхемы нашлось в использовании его для взаимодействия жидкокристаллического дисплея с микроконтроллером Arduino. С помощью контроллера I2C мы можем использовать только два провода для связи с ЖК-дисплеем, что снижает сложность подключения и позволяет создавать более простые и компактные конструкции.
Что такое модуль адаптера I2C?
Адаптер I2C — это устройство, которое помогает в обмене данными между микроконтроллером и устройствами, совместимыми с I2C. Оно упрощает процесс подключения, предоставляя стандартный интерфейс для взаимодействия устройств друг с другом. Одним из самых популярных контроллеров I2C является PCF8574, который используется для управления жидкокристаллическими дисплеями.
I2C — популярный протокол связи, используемый для взаимодействия различных устройств с микроконтроллерами, такими как Arduino. Он позволяет подключать несколько устройств, используя только два провода: последовательную линию передачи данных (SDA) и последовательную линию синхронизации (SCL). Одним из наиболее распространенных применений является использование контроллера I2C для подключения ЖК-дисплея и управления им с помощью Arduino.
Заметка
I2C — популярный протокол связи, используемый для взаимодействия различных устройств с микроконтроллерами, такими как Arduino. Он позволяет подключать несколько устройств, используя только два провода: последовательную линию передачи данных (SDA) и последовательную линию синхронизации (SCL).
Особенности модуля
- Рабочее напряжение: от 2,5 В до 6,0 В
- Имеет потенциометр для настройки контрастности
- Перемычка для включения/отключения подсветки
- Упрощает подключение устройств к микроконтроллерам с I2C, тем самым экономя количество контактов
- Поддерживает подключение нескольких устройств к одной шине с использованием разных адресов
Описание и распиновка модуля
Плата оснащена микросхемой PCF8574, которая преобразует данные I2C из микроконтроллера в 4-разрядные параллельные данные и управляющие биты, требуемые ЖК-дисплею.
По умолчанию модуль готов к работе с ЖК-дисплеями на контроллерах HD44780 с разрешением 16×2 и 20×4, которые для прямого подключения требуют много контактов. Адаптер помогает сэкономить количество используемых контактов микроконтроллера.
Подсветку можно включать и выключать, но яркость не регулируется напрямую через интерфейс I2C. Модуль имеет на плате перемычку (подписана как LED), подающую питание на контакт подсветки (контакт А). Эту перемычку можно снять и подавать напряжение на контакт А (VCC) и K (GND) отдельно, если есть необходимость.
PCF8574 представляет собой универсальное 8-разрядное устройство ввода-вывода с шиной I2C, и модуль может быть использован и для других целей, помимо управления ЖК-модулями. Максимальная тактовая частота I2C составляет 100 кГц, что делает ее наиболее подходящей для низкоскоростных приложений.
Подключение микроконтроллера к адаптеру I2C осуществляется через 4-контактный разъем.
- GND — Земля. Должна быть общим с микроконтроллером.
- VCC — Питание +5В. Может быть запитан от микроконтроллера или от отдельного источника питания. Модуль может работать от +3.3В.
- SDA — Подключается к контакту I2C SDA на микроконтроллере.
- SCL — Подключается к контакту I2C SCL на микроконтроллере.
* При подаче питания на плате загорается красный светодиод.
Подключение к ЖК-дисплею осуществляется через 16-контактный разъем.
- VSS — Земля
- VDD — Питание +5В
- VEE — Контраст дисплея. Подключается к потенциометру на модуле.
- RS — P0 микросхемы PCF8574
- RW — P1 микросхемы PCF8574
- E — P2 микросхемы PCF8574
- D0 — D3 — подключение отсутствует
- D4 — P4 микросхемы PCF8574
- D5 — P5 микросхемы PCF8574
- D6 — P6 микросхемы PCF8574
- D7 — P7 микросхемы PCF8574
- A — Анод подсветки. Обычно подключается 5В.
- K — Катод подсветки. Подключен к транзистору, которым управляет вывод P3 микросхемы PCF8574
Интерфейс I2C
За выбор адреса отвечают три контакта микросхемы: A0, A1, A2. Таблицу истинности для установки конкретного адреса можете найти снизу. На модуле к этим трем контактам через резисторы подтянуто питание VCC. То есть они находятся в состоянии HIGH. Поэтому адрес I2C по умолчанию — 0x27
.
Если вам необходимо настроить адрес I2C, чтобы избежать конфликта с другим устройством, это можно сделать, припаяв перемычки к плате.
Если соединить эти площадки каплей припоя, это заземлит контакты. Например, если вы установите все три перемычки, то адрес будет 0x20
. Диапазон всех возможных адресов варьируется от 0x20
до 0x27
.
A2 | A1 | A0 | I2C адрес |
---|---|---|---|
LOW | LOW | LOW | 0x20 |
LOW | LOW | HIGH | 0x21 |
LOW | HIGH | LOW | 0x22 |
LOW | HIGH | HIGH | 0x23 |
HIGH | LOW | LOW | 0x24 |
HIGH | LOW | HIGH | 0x25 |
HIGH | HIGH | LOW | 0x26 |
HIGH | HIGH | HIGH | 0x27 |
Заметка
Если вы не уверены в адресе I2C того или иного устройства, его легко узнать. Воспользуйтесь I2C сканером в этой статье.
Подключение дисплея через модуль PCF8574 к Ардуино
На схеме показано подключение адаптера I2C к ЖК дисплею и к Arduino.
Ардуино | Модуль |
---|---|
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
Чтобы использовать адаптер с ЖК-дисплеем, вам необходимо вставить 16-контактный разъем в 16 отверстий для пайки на задней стороне дисплея и припаять их на передней стороне. На рисунках показаны адаптер, установленный на дисплей LCD2004 и адаптер, подключенный к дисплею на 14 контактов (дисплей без подсветки) через макетную плату.
Библиотеки для работы
Как мы упоминали ранее, для связи с адаптером дисплея и платы Arduino мы должны реализовать последовательный протокол, называемый I2C. В этом случае мы будем использовать библиотеки <Wire.h>
и <LiquidCrystal_I2C.h>
, чтобы осуществлять связь простым способом и с помощью очень небольшого количества строк кода.
Библиотека LiquidCrystal_I2C не установлена по умолчанию в Arduino IDE, поэтому ее необходимо установить. Если вам нужна помощь в установке библиотеки, ознакомьтесь с этой статьей. Скачать библиотеку LiquidCrystal_I2C можно ниже в разделе Загрузки.
Код для Ардуино
Скомпилируем и загрузим простой код в плату Arduino. На дисплее отобразиться строка «Hello, RxTx». Если вы откроете монитор порта и начнете посылать символы, то они будут отображаться на дисплее, стерев предыдущую запись.
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // Создание объекта с адресом 0х27, 16 символов и 2 строки void setup() { Serial.begin(9600); // Инициализация последовательного порта lcd.init(); // Инициализация дисплея lcd.setCursor(0,0); // Установка курсора lcd.print("Hello, RxTx"); // Вывод на дисплей } void loop() { // Если пришли данные в последовательный порт if (Serial.available()) { // Подождем немного delay(100); // Очистим дисплей lcd.clear(); // Считаем все пришедшие символы while (Serial.available() > 0) { // Отобразим каждый символ lcd.write(Serial.read()); } } }
Результат: