Найти в Дзене

SSD1306 – удобный I2C OLED дисплей для применения в проектах

SSD1306 OLED - это микро дисплеи на органических светодиодах. Выпускают дисплеи с разрешением 128 х 64 и 128 х 32. Кроме того есть дисплеи подобного типа и других разрешений, но у них уже другой драйвер.

Эти дисплеи называются "микро", так как их размер всего 20 х 40 мм и 40 х 40 мм вместе с платой отладки. Сам размер дисплея чуть поменьше.

Данные дисплеи изначально, судя по всему были разработаны для носимой электроники, для смарт-браслетов, часов и тому подобного. Но оказались достаточно удачны для всевозможных поделок из-за достаточно простого подключения.

Эти дисплеи из-за небольшого разрешения (вероятнее всего) можно подключить по шине I2C, для подключения устройства по этой шине необходимы всего лишь два интерфейсных вывода (SCL и SDA), провод питания (3,3V) и земля.

Дисплеи выглядят вот так:

Большой I2C OLED 1,1", 128х64, на черной макетке. НЕ рекомендую, так как они глючные. (Сорри за волосину)
Большой I2C OLED 1,1", 128х64, на черной макетке. НЕ рекомендую, так как они глючные. (Сорри за волосину)
Задняя сторона платы I2C OLED 1,1", 128х64, тут у них единственное достоинство -- можно сменить адрес, перемахнув резюк. Но дисплеи именно на черной плате глючные.
Задняя сторона платы I2C OLED 1,1", 128х64, тут у них единственное достоинство -- можно сменить адрес, перемахнув резюк. Но дисплеи именно на черной плате глючные.
Это у нас уже поменьше, I2C OLED 0,91", 128х32. Синяя плата, работают без проблем (все те, что купил), такие есть и большие.
Это у нас уже поменьше, I2C OLED 0,91", 128х32. Синяя плата, работают без проблем (все те, что купил), такие есть и большие.
Задняя сторона платы I2C OLED 0,91", 128х32.
Задняя сторона платы I2C OLED 0,91", 128х32.

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

Основных достоинства:

  1. Высокая яркость, при невысоком энергопотреблении (принцип OLED светится только тот пиксель, который должен)
  2. Простое подключение четырьмя проводами, два из которых являются питанием, а два шиной I2C.
  3. Хорошая поддержка, много примеров, простые библиотеки.
  4. Как показала практика - дисплей выдерживает достаточно высокую температуру, прекрасно себя чувствовал на термометре в бане, долговременно в процессе работы находился при температуре 90-95 °С.
Выдерживает высокую температуру: долговременно в процессе работы находился при температуре 90-95 °С.

Недостатки:

  1. Маленький, он действительно маленький, 1.1" и 0.91" - это реально мало, да и на картинке лукавят, так как собственно дисплеем является лишь часть стеклянной пластины.
  2. При статической картинке выгорает (для минимизации этого эффекта рекомендуется или понизить яркость, или использовать перемещение картинки по дисплею).
  3. Одноцветный, хотя цвета светодиодов бывают синие, желтые, белые. Выпускают дисплеи с разными цветами в разных зонах.
  4. В Поднебесной встречаются "кривые" платы с дисплеями, работающими не совсем так как ожидается (те которые мне попались, были на чёрном текстолите).
  5. Дисплей очень хрупкий, если кто-то захочет его отклеить от платы, то обязательно стоит его прогреть феном и соблюдать осторожность.

Маленькое видео как на дисплее выглядит текст и парочка комментариев:

Вот так выглядит картинка на самом дисплее. T - время, строка получена с GPS модуля, Lat, Lon - координаты. Справа внизу V и C - напряжение акб и ток потребления.
Вот так выглядит картинка на самом дисплее. T - время, строка получена с GPS модуля, Lat, Lon - координаты. Справа внизу V и C - напряжение акб и ток потребления.

В данном примере дисплей подключен для отладки в реальном времени показаний стенда. Кроме того станет понятно, что стенд при работе завис.

Логика, которая собирает данные с GPS, датчика тока и напряжения и управляет дисплеем написана на python3.

Библиотеку и пример кода взял тут. В отличии от примеров от компании Adafruit, у этого человека код не требует установки дополнительных модулей для работы с GPIO.

Для работы с дисплеем у всех примеров требуется тяжелая библиотека Pillow, так как она отвечает за работу с графикой.

На raspberry pi или orangepi zero устанавливать Pillow необходимо через:

apt install python3-pillow

Скорее всего apt исправит название библиотеки, но пакет поставится именно тот, что необходим.

Через pip3 пакет ставиться не хочет.

Для ардуино при работе с этим дисплеем использовал датчики SHT31 и AHT10, применял библиотеки Adafruit, с датчиком SHT31 всё заработало без проблем, с AHT10 возникает конфликт и МК зависает при попытке отправить картинку на дисплей.

На этом заметку закончу, если кто-то хочет, что бы я что-то ещё рассказал про дисплей или показал его применения - пишите в комментариях.

#oled #дисплей #python #arduino #diy #raspberry #orangepi