Подключение ЖК-дисплея (LCD1602) к Raspberry Pi Pico
Мы подключим символьный ЖК-дисплей LCD1602 с адаптером I2C к Raspberry Pi Pico. С точки зрения проводки схема выглядит простой, потому что нужны всего четыре соединения: питание, земля, SDA и SCL. Однако, несмотря на небольшое количество проводов, есть важная деталь по напряжению, которую нужно правильно учесть до подключения.
Проблема совместимости по напряжению
Выводы GPIO Raspberry Pi Pico рассчитаны на 3,3 В. Всё, что существенно выше 3,3 В на SDA или SCL, может повредить Pico — сразу или постепенно, со временем.
Большинство модулей LCD1602 с адаптером I2C рассчитаны на работу от 5 В. Адаптер I2C обычно имеет подтягивающие резисторы, подключённые к его напряжению питания. При питании от 5 В это означает, что в состоянии покоя SDA и SCL находятся на уровне 5 В.
Если подключить SDA и SCL такого модуля напрямую к Pico, выводы GPIO Pico окажутся под напряжением 5 В. Именно эту основную проблему нам и нужно решить.
Распространённый обходной путь, который вы увидите в интернете
Многие онлайн-руководства предлагают питать LCD1602 и его адаптер I2C от 5 В и подключать SDA и SCL напрямую к Pico. Я сам проверял эту схему, и она работает. Однако с точки зрения электрики это небезопасно, и долговременное использование может повредить выводы GPIO Pico.
По этой причине, хотя такая схема работает, её нельзя считать безопасной или рекомендованной.
Простой, но достаточно безопасный способ: питание всего от 3,3 В
Для демонстраций, экспериментов и учебных проектов самый простой и безопасный подход — питать модуль LCD1602 с I2C от шины 3,3 В Pico, а не от 5 В.
Когда адаптер питается от 3,3 В, его подтягивающие резисторы I2C подтягивают SDA и SCL к 3,3 В вместо 5 В. Это сразу убирает проблему совместимости по напряжению, и SDA и SCL можно подключить напрямую к Pico.
Компромисс в том, что контраст и яркость подсветки ЖК-дисплея будут ниже. В большинстве помещений дисплей остаётся читаемым и обычно вполне подходит для демонстраций и тестирования.
Такой подход не требует дополнительных компонентов и не нагружает выводы GPIO Pico.
| Вывод LCD | Провод | Вывод Pico | Примечания |
|---|---|---|---|
| GND |
|
GND | Общая земля |
| VCC |
|
3.3 V | Питание ЖК-дисплея 3,3 В |
| SCL |
|
GPIO 17 | Линия тактирования I2C (SCL I2C0) |
| SDA |
|
GPIO 16 | Линия данных I2C (SDA I2C0) |
Лучший вариант: использование преобразователя уровней
Если нужна полная яркость подсветки или если ваш ЖК-модуль не работает надёжно при 3,3 В, его придётся питать от 5 В. Но тогда нужно защитить Pico от сигналов 5 В.
Решение — двунаправленный преобразователь логических уровней (также называемый level shifter). Этот небольшой модуль преобразует сигналы между 3,3 В и 5 В в обоих направлениях. Такие модули продаются как «2-Channel» или «4-Channel I2C/SPI Logic Level Converter».
Pico подключается к стороне 3,3 В преобразователя, а ЖК-дисплей — к стороне 5 В. Преобразователь гарантирует, что Pico видит только сигналы 3,3 В, а ЖК-дисплей получает сигналы 5 В, которые ему нужны.
Это электрически правильный и безопасный способ, но он добавляет несколько проводов и требует дополнительного модуля.
На первый взгляд схема может показаться немного запутанной, но идея проста, если разобрать её по частям.
Подключение питания (сначала подключите эти провода)
Сначала подключите выход 3,3 В Pico к выводу, помеченному LV (Low Voltage), на преобразователе. Подключите VBUS Pico (5 В) к выводу, помеченному HV (High Voltage), на преобразователе. Вывод VCC ЖК-дисплея также питается напрямую от VBUS Pico. Земля должна быть общей, поэтому соедините вместе GND Pico, GND преобразователя и GND ЖК-дисплея.
| От | Вывод | Провод | К | Вывод | Назначение |
|---|---|---|---|---|---|
| Raspberry Pi Pico | GND |
|
Преобразователь уровней | GND | Общая земля |
| Преобразователь уровней | GND |
|
ЖК-дисплей | GND | Общая земля |
| Raspberry Pi Pico | 3.3 V |
|
Преобразователь уровней | LV | Питание низкого уровня (сторона 3,3 В) |
| Raspberry Pi Pico | VBUS (5 V) |
|
Преобразователь уровней | HV | Питание высокого уровня (сторона 5 В) |
| Raspberry Pi Pico | VBUS (5 V) |
|
ЖК-дисплей | VCC | Питание ЖК-дисплея 5 В |
Линии данных (обмен по I2C)
Теперь о линиях I2C. Выводы Pico всегда должны подключаться к выводам преобразователя с маркировкой LVx, а выводы ЖК-дисплея — к соответствующим выводам с маркировкой HVx. Вывод GPIO 16 Pico (SDA) подключается к LV1, а вывод SDA ЖК-дисплея — к HV1. Вывод GPIO 17 Pico (SCL) подключается к LV2, а вывод SCL ЖК-дисплея — к HV2.
| От | Вывод | Провод | К | Вывод | Назначение |
|---|---|---|---|---|---|
| Raspberry Pi Pico | GPIO 16 |
|
Преобразователь уровней | LV1 | SDA (данные) — сторона Pico |
| Преобразователь уровней | HV1 |
|
ЖК-дисплей | SDA | SDA (данные) — сторона ЖК-дисплея |
| Raspberry Pi Pico | GPIO 17 |
|
Преобразователь уровней | LV2 | SCL (тактирование) — сторона Pico |
| Преобразователь уровней | HV2 |
|
ЖК-дисплей | SCL | SCL (тактирование) — сторона ЖК-дисплея |
Как это работает?
Если говорить просто: когда Pico обменивается данными по линии I2C, сторона LVx работает на 3,3 В, а преобразователь выдаёт сигнал 5 В на соответствующей стороне HVx для ЖК-дисплея. Когда ЖК-дисплей обменивается данными на 5 В, преобразователь переводит этот сигнал обратно, так что Pico видит на стороне LVx только 3,3 В. Таким образом, оба устройства работают на нужном им напряжении, и выводы GPIO Pico не перегружаются.