Как подключить OLED-дисплей к Raspberry Pi по I2C. Какие библиотеки нужно установить для работы с OLED. Как написать простую программу на Python для вывода текста на OLED-экран. Какие возможности открывает использование OLED-дисплея с Raspberry Pi.
Необходимое оборудование для подключения OLED к Raspberry Pi
Для подключения OLED-дисплея к Raspberry Pi понадобится следующее оборудование:
- Микрокомпьютер Raspberry Pi (любая модель)
- OLED-дисплей с контроллером SSD1306 (например, размером 0.96 дюйма и разрешением 128×64 пикселя)
- Соединительные провода
- Источник питания для Raspberry Pi
- SD-карта с установленной операционной системой Raspberry Pi OS
Дисплей на основе OLED-матрицы обладает рядом преимуществ по сравнению с обычными ЖК-дисплеями:
- Высокая контрастность и яркость изображения
- Широкий угол обзора
- Низкое энергопотребление
- Компактные размеры
- Высокое быстродействие
Это делает OLED-дисплей отличным выбором для различных проектов на основе Raspberry Pi, где требуется компактная графическая индикация.

Схема подключения OLED-дисплея к Raspberry Pi
Подключение OLED-дисплея к Raspberry Pi осуществляется по интерфейсу I2C. Для этого необходимо соединить следующие контакты:
- VCC дисплея — пин 3.3V Raspberry Pi
- GND дисплея — пин GND Raspberry Pi
- SDA дисплея — пин GPIO2 (SDA) Raspberry Pi
- SCL дисплея — пин GPIO3 (SCL) Raspberry Pi
Важно соблюдать правильную полярность подключения питания, иначе можно повредить дисплей. Остальные контакты дисплея (например, RESET) можно оставить неподключенными.
Настройка интерфейса I2C на Raspberry Pi
Перед использованием OLED-дисплея необходимо активировать интерфейс I2C на Raspberry Pi. Для этого выполните следующие действия:
- Откройте терминал Raspberry Pi
- Введите команду:
sudo raspi-config
- Перейдите в раздел «Interfacing Options»
- Выберите пункт «I2C» и включите его
- Перезагрузите Raspberry Pi
Теперь интерфейс I2C активирован и готов к работе. Можно проверить его наличие командой:
ls /dev/i2c*
Вы должны увидеть устройство /dev/i2c-1.
Установка необходимых библиотек Python
Для работы с OLED-дисплеем на Python потребуется установить следующие библиотеки:

sudo pip3 install adafruit-circuitpython-ssd1306
sudo apt-get install python3-pil
Библиотека adafruit-circuitpython-ssd1306 предоставляет драйвер для работы с контроллером SSD1306. Библиотека PIL (Python Imaging Library) используется для создания изображений и текста.
После установки библиотек можно приступать к написанию программы для управления дисплеем.
Базовая программа для вывода текста на OLED-дисплей
Вот простой пример программы на Python для вывода текста на OLED-дисплей:
import board
import busio
import adafruit_ssd1306
from PIL import Image, ImageDraw, ImageFont
# Создаем I2C интерфейс
i2c = busio.I2C(board.SCL, board.SDA)
# Создаем объект дисплея
display = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c)
# Создаем пустое изображение
image = Image.new("1", (display.width, display.height))
draw = ImageDraw.Draw(image)
# Загружаем шрифт
font = ImageFont.load_default()
# Рисуем текст
draw.text((0, 0), "Hello World!", font=font, fill=255)
# Отображаем на дисплее
display.image(image)
display.show()
Эта программа создает объект дисплея, рисует на нем текст «Hello World!» и выводит его на экран. Вы можете изменять текст, его положение и шрифт по своему усмотрению.

Расширенные возможности работы с OLED-дисплеем
OLED-дисплей предоставляет широкие возможности для отображения различной информации. Вот некоторые идеи применения:
- Вывод показаний датчиков (температура, влажность и т.д.)
- Отображение статуса системы (загрузка процессора, свободная память)
- Создание простых анимаций и эффектов
- Вывод меню для навигации в программе
- Отображение графиков и диаграмм
Для более сложной графики можно использовать библиотеку Pillow (PIL) для создания изображений и их вывода на дисплей.
Оптимизация производительности при работе с OLED
При работе с OLED-дисплеем важно учитывать некоторые моменты для оптимизации производительности:
- Обновляйте только измененные участки экрана, а не весь дисплей целиком
- Используйте буферизацию для подготовки изображения перед выводом
- Ограничьте частоту обновления дисплея (например, не чаще 10 раз в секунду)
- Избегайте сложных шрифтов и большого количества мелких деталей
Соблюдение этих рекомендаций позволит снизить нагрузку на процессор Raspberry Pi и увеличить время автономной работы при питании от батареи.

Применение OLED-дисплея в проектах на Raspberry Pi
OLED-дисплей открывает широкие возможности для создания различных проектов на базе Raspberry Pi. Вот несколько идей применения:
- Метеостанция с отображением данных о погоде
- Система мониторинга серверной комнаты
- Информационное табло для «умного дома»
- Портативный медиаплеер с экраном
- Игровая консоль на базе Raspberry Pi
Компактные размеры и низкое энергопотребление OLED-дисплея позволяют создавать портативные устройства с автономным питанием.
Заключение и дальнейшие шаги
Подключение OLED-дисплея значительно расширяет возможности Raspberry Pi по выводу графической информации. Это открывает простор для творчества и создания интересных проектов.
Для дальнейшего изучения возможностей OLED-дисплея рекомендуется:
- Поэкспериментировать с выводом различных шрифтов и изображений
- Изучить создание анимаций на дисплее
- Попробовать вывести на экран показания различных датчиков
- Создать многоэкранный интерфейс с навигацией
Удачи в ваших проектах с Raspberry Pi и OLED-дисплеем!

Raspberry Pi: работа с OLED дисплеем
OLED дисплей — отличный графический индикатор, который подойдет для многих DIY-проектов, где необходимо следить за какими-нибудь параметрами системы, наблюдать течение процессов или даже играть. Ранее мы уже подключали OLED дисплей к Arduino, и даже делали игровую консоль для игры в подобие Space Invaders.
Вот так выглядит OLED дисплей с матрицей размером 0,96 дюйма и контроллером SSD1306.
Сегодня мы будем разбираться, как работать с OLED на Raspberry Pi 4, хотя подойдет и любая другая версия, даже Zero. Для урока нам понадобится сам микрокомпьютер, блок питания с током не менее 3А и SD-карта памяти объёмом не менее 16 Гб. Разумеется, модуль OLED дисплея и немного проводов, чтобы соединить их вместе.
В корзину
В корзину
В корзину
В корзину
В корзину
Подключение OLED к Raspberry Pi
У платы Raspberry Pi 4 есть все самые популярные интерфейсы, так что для подключения OLED можно использовать как SPI, так и I2C. В этом примере мы остановимся на подключении по I2C шине. Соединяем два устройства по следующей схеме.
Raspberry Pi 4 | GND | 3.3V | SDA(GPIO02) | SCL(GPIO03) |
OLED 0,96 ROC | GND | 3.3 | SDA | SCL |
Однако, если потребуется подключить дисплей по SPI, вот схема:
Raspberry Pi 4 | GND | 3.3V | MOSI(GPIO10) | MISO(GPIO09) | CLK(GPIO11) | GPIO4 | GPIO5 |
OLED 0,96 ROC | GND | 3.3 | SDA | DC | SCL | RST | CS |
Установка библиотеки Python для работы с SSD1306
Для написания программы будем использовать язык Python, следовательно, нам нужно установить библиотеку Python для работы с OLED. Причём, OLED бывают разные, с разными контроллерами. Поскольку мы работаем с SSD1306, то и библиотеку подбираем подходящую.
Все последующие действия осуществляем с помощью командной строки. Для этого можно использовать программу-терминал с рабочего стола Raspberry Pi OS, либо SSH соединение.
Устанавливаем библиотеку для работы с дисплеями на контроллере SSD1306.
pip3 install adafruit-circuitpython-ssd1306
Также установим библиотеку PIL, которая пригодится для углублённой работы с изображениями. Предварительно обновим репозиторий пактов операционной системы.
sudo apt-get update
sudo apt-get install python3-pil
И еще одна настройка. Поскольку мы подключаем OLED дисплей по I2C шине, нам нужно её включить в настройках Raspberry, а ещё увеличить скорость обмена по этой шине.
Итак, первое действие. Заходим в настройки Raspberry командой:
sudo raspi-config
Переходим а раздел 5 Interfacing options затем в подраздел P5 I2C и жмём кнопку Yes. Выходим из настроек нажатием кнопки Finish.
Второй действие. Открываем в редакторе файл с настройками:
sudo nano /boot/config.txt
И дописываем в конце строку:
dtparam=i2c_baudrate=1000000
Теперь скорость обмена по I2C у нас будет 1МГц. Сохраняем файл комбинацией клавиш Ctrl+O и выходим из редактора Ctrl+X.
Готово! Теперь перезагружаем систему и переходим к написанию программы.
sudo reboot
Программа для OLED дисплея
Итак, после перезагрузки системы снова заходим в консоль и создаем Python-скрипт:
cd /home/pi
touch oled.py
Открываем его в редакторе:
nano oled.py
И пишем такой код:
import board
from PIL import Image, ImageDraw, ImageFont
import adafruit_ssd1306
# разрешение дисплея
WIDTH = 128
HEIGHT = 64
# ширина рамки
BORDER = 2
# инициализация шины I2C и дисплея с адресом 0x3D
i2c = board.I2C()
oled = adafruit_ssd1306.SSD1306_I2C(WIDTH, HEIGHT, i2c, addr=0x3D)
# заливаем экран черным цветом
oled.
fill(0)
oled.show()
# будем работать с буфером экрана из библиотеки PIL
# первый параметр - цветность дисплея, для монохромного - 1
image = Image.new("1", (oled.width, oled.height))
# draw будет нашим карандашем, которым мы будем рисовать на экране
draw = ImageDraw.Draw(image)
# рисуем прямоугольник белого цвета во весь экран
draw.rectangle((0, 0, oled.width, oled.height), outline=255, fill=255)
# рисуем прямоугольник поменьше черным цветом, так мы создаем контурную рамку
draw.rectangle(
(BORDER, BORDER, oled.width - BORDER - 1, oled.height - BORDER - 1),
outline=0,
fill=0,
)
# загружаем стандартный шрифт
font = ImageFont.load_default()
# пишем текст в центре экрана
text = "RobotClass"
(font_width, font_height) = font.getsize(text)
draw.text(
(oled.width // 2 - font_width // 2, oled.height // 2 - font_height // 2),
text,
font=font,
fill=255,
)
# выводим буфер изображения на дисплей
oled.image(image)
oled.show()
Запускаем программу с помощью интерпретатора python:
python3 oled.py
Если всё было сделано правильно, получаем ожидаемый результат.
«Начинающим» | conture.by
Опубликовано 02.09.2022 автором
Устройство собрано из минимального количества деталей — ESP-01S, ключа на транзисторе, инфракрасного светодиода и стабилизатора напряжения +3,3v и нескольких резисторов. Позволяет управлять вашим телевизором или приставкой (STB) через интернет по принципу интернета вещей. Идея создать такое устройство появилось после получения … Читать далее →
Рубрика: «Начинающим», C++, Автоматика, Программирование, Телевидение | Метки: esp8266, IR control | Добавить комментарий
Опубликовано 01.09.2022 автором
Дабы не шерстить каждый раз интернет публикую сие.. Очень хороший информативный дисплей GM009605 стоимостью около 1.5$ подключается по шине i2c. Библиотека здесь. Скетч далее в статье.
Рубрика: «Начинающим», C++, Программирование, Радиолюбитель, Технологии | Метки: ESP-01, esp8266, gm009605, LCD0802, LCD1604, LCD2004 | Добавить комментарий
Опубликовано 25. 08.2022 автором
Устройство дистанционной связи представляет собой два одинаково выполненных по конструкции приёмопередатчика на базе трансивера RF1100SE и управлением Arduino Pro Mini. Имеет три кнопки управления [A0, A1, A2] и выводы от трёх оптопар для подачи на дальнейшие исполнительные цепи [7, 8, … Читать далее →
Рубрика: «Начинающим», C++, Автоматика, Программирование, Радиолюбитель | Метки: 433 MHz ham band, Arduino, RF1100SE | Добавить комментарий
Опубликовано 03.08.2022 автором
Мне понадобилось запустить модуль MP3-TF-16P в режиме проигрывания случайных треков. К сожалению, плеер сам не стартует воспроизведение при подаче питания. Необходима какая-либо команда — либо закоротить соответствующую ножку, либо подавать сигналы. На ножках функционал ограничен — только трек «плюс»/»минус». А вот … Читать далее →
Рубрика: «Начинающим», C++, Автоматика, Программирование, Радиолюбитель, Технологии | Метки: mp3-tf-16p, stc15w201 | Добавить комментарий
Опубликовано 14. 07.2022 автором
Данное устройство задумывалось как часы точного времени со спутников GPS, но потом было расширено показывать координаты LAT/LNG, высоту, скорость и направление движения. Схема подключения модулей, листинг скетча для Arduino IDE внутри статьи далее.
Рубрика: «Начинающим», C++, Программирование, Радиолюбитель | Метки: Arduino, GPS, OLED | Добавить комментарий
Опубликовано 23.03.2014 автором
Почти в каждом блоге натыкаюсь на описание ЛУТ. Ну вот и я подготовил серию фото, — шоб былО.
Рубрика: «Начинающим», Радиолюбитель, Технологии | 1 комментарий
Опубликовано 04.01.2012 автором
Около недели я трудился над постройкой синтезатора для своего будущего трансивера. Сначала я планировал осуществить возможность как автономной работы, так и работы в составе ПК, но потом отказался от этой мысли. Синтезатор генерирует синусоидальный сигнал от 3100000 Гц до 3250000 … Читать далее →
Рубрика: «Начинающим», C++, Программирование, Радиолюбитель, Технологии | Метки: DDS, pic18f2550, синтезатор, трансивер | Добавить комментарий
Опубликовано 23. 12.2011 автором
Для тех кто не в курсе… http://energodar.net/energy/radiantnaya/tesla_switch.html Но прикол! Обратите внимание на схему, которая там опубликована…
Рубрика: «Начинающим», Разное, Теория | Метки: интернет, фуфло | 1 комментарий
Опубликовано 18.12.2011 автором
Общие сведения о модуляции Модуляция — это процесс преобразования одного или нескольких информационных параметров несущего сигнала в соответствии с мгновенными значениями информационного сигнала. В результате модуляции сигналы переносятся в область более высоких частот. Использование модуляции позволяет:
Рубрика: «Начинающим», Радиолюбитель, Теория | Метки: ssb, модуляция | Добавить комментарий
Опубликовано 12.05.2011 автором
На днях получил подобный вопрос от одного из посетителей одного из популярных радиолюбительских проектов. Человек ранее имел отношение к радио, но потом отошёл. А вот сейчас пенсия — и захотелось возродить своё хобби. Выложу некоторые мысли. Для начала определимся, кого … Читать далее →
Рубрика: «Начинающим» | 1 комментарий
Как прокручивать текст на Oled-дисплее I2c 0,91 дюйма, 128×32
Элементы, используемые в этом проекте
Аппаратные компоненты
SparkFun Oled 0,91-дюймовый дисплаз | х 1 |
Приложения и онлайн-сервисы
Визуино | ||
Веб-редактор Arduino | ||
Ардуино IDE |
Story
В этом уроке мы научимся прокручивать ТЕКСТ на OLED-ДИСПЛЕЕ I2C 0,91″ 128X32 с помощью программного обеспечения Arduino и Visuino.
Смотреть видео!
Шаг 1: Что вам понадобится
1 / 4
Arduino UNO (или любая другая плата)
- OLED-дисплей
- Макет
- Проволочные перемычки
- Программа Visuino: Скачать Visuino
Шаг 2: Запустите Visuino и выберите тип платы Arduino UNO. Запустите Visuino, как показано на первом рисунке. Нажмите кнопку «Инструменты» на компоненте Arduino (рисунок 1) в Visuino. Когда появится диалоговое окно, выберите «Arduino UNO», как показано на рисунке 2.
Шаг 3: В Visuino добавьте компоненты

Шаг 4: В Visuino Connect Components
- Подключите вывод «SineIntegerGenerator1» к выводу «DisplayOLED1>DrawText1» X
- Подключите вывод «SineIntegerGenerator1» к выводу «DisplayOLED1>DrawText1» Clock
- Подключите вывод «SineIntegerGenerator1» к выводу «DisplayOLED1>Fill Screen1» Clock
Шаг 5: Сгенерируйте, скомпилируйте и загрузите Arduino Code
В Visuino внизу щелкните вкладку «Сборка», убедитесь, что выбран правильный порт, затем нажмите кнопку «Скомпилировать/Создать и загрузить».
Шаг 6: Воспроизведение
Если вы включите модуль Arduino UNO, OLED-дисплей начнет прокручивать текст «VISUINO», посмотрите видео для подробной демонстрации.
Поздравляем! Вы завершили свой проект с Visuino. Также прилагается проект Visuino, который я создал для этого урока, вы можете скачать его и открыть в Visuino: https://www. visuino.eu
Схемы, диаграммы и документы
Файл Visuino
Код
Файл Visuino
Загрузите файл Visuino ниже
Кредиты
Рон
Разработчик Arduino
Подписаться We will also email you (max twice a week) to notify you of any new content that is available in your feed. This can be disabled within your account settings.»/>
Отображение текста на дисплее SSD1306 с ESP32
Отображение текста на OLED-дисплее SSD1306 с помощью ESP32 , вам нужно будет подключить дисплей к ESP32 и использовать библиотеку, специально разработанную для дисплея ESP32 и SSD1306 .
Библиотека предоставляет функции для инициализации дисплея, очистки экрана, установки положения курсора и вывода текста или графики на экран.
В этом уроке мы увидим, как отобразить текст на дисплее SSD1306 с картой ESP32.
Необходимые компоненты
ESP32
ESP32 — недорогой микроконтроллер с низким энергопотреблением со встроенными функциями Wi-Fi и Bluetooth. Это популярный выбор для проектов IoT, который обычно используется для различных приложений, таких как домашняя автоматизация, беспроводное управление и регистрация данных датчиков. ESP32 оснащен двухъядерным процессором, богатым набором периферийных устройств и поддержкой широкого спектра протоколов. Его можно запрограммировать с помощью Arduino IDE и других языков программирования, таких как C, C++ и MicroPython.
Кроме того, ESP32 имеет широкий спектр функций, включая:
- Высокопроизводительный процессор с тактовой частотой до 240 МГц
- Поддержка различных типов беспроводного подключения, таких как Wi-Fi, Bluetooth и Bluetooth с низким энергопотреблением (BLE)
- Несколько интерфейсов связи, таких как I2C, SPI, UART и I2S
- Большое количество контактов GPIO для подключения к внешним устройствам и датчикам
- Встроенный модуль безопасности для безопасной связи
ESP32 часто используется в проектах, где требуется недорогое устройство с низким энергопотреблением с возможностями Wi-Fi и Bluetooth, и обычно используется с другими датчиками и устройствами для создания проектов IoT, систем домашней автоматизации, беспроводные системы управления и системы регистрации данных.
Дисплей SSD1306
SSD1306 — это монохромный OLED-дисплей (органический светоизлучающий диод), который можно использовать для отображения текста и графики. Это небольшой дисплей с низким энергопотреблением, который можно легко интегрировать в самые разные проекты.
Дисплей SSD1306 управляется с помощью интерфейса I2C или SPI, что позволяет ему взаимодействовать с микроконтроллером или микропроцессором. Обычно для этого требуется всего несколько подключений к микроконтроллеру, таких как Vcc, GND, SDA и SCL для I2C или SCK, MOSI, CS, DC и RST для SPI.
Дисплей SSD1306 имеет разрешение 128×64 пикселей и может отображать текст и графику в монохромном формате пикселей. Дисплей имеет встроенный зарядный насос, который позволяет ему работать при напряжении до 2,7 В. Это обеспечивает низкое энергопотребление и делает его пригодным для проектов с батарейным питанием.
Дисплеем SSD1306 можно управлять с помощью различных библиотек, доступных для различных платформ, таких как Arduino, Raspberry Pi, ESP32 и т. д. Эти библиотеки предоставляют набор функций для управления дисплеем и упрощают использование SSD1306 отображает в ваших проектах.
Библиотеки обычно предоставляют функции для инициализации дисплея, очистки дисплея, установки положения курсора и записи текста или графики на дисплей. Они также предоставляют функции для управления контрастностью и яркостью дисплея.
В целом, дисплей SSD1306 представляет собой универсальный дисплей с низким энергопотреблением, который можно легко интегрировать в самые разные проекты. Это популярный выбор для создания небольших портативных устройств с батарейным питанием, таких как цифровые часы, индикаторы температуры и другие небольшие графические дисплеи.
Соединительные провода
Соединительные провода относится к процессу физического соединения проводов или кабелей с устройством или цепью для установления электрического соединения. Это можно сделать с помощью различных разъемов, таких как вилки, розетки или клеммные колодки. Провода обычно имеют цветовую маркировку для обозначения их функции, например, красный для питания, черный для заземления и желтый для сигналов.
Тестовая пластина
Тестовая пластина — это тип печатной платы, которая используется для тестирования электронных компонентов. Обычно он состоит из плоской платы, изготовленной из непроводящего материала, такого как пластик или стекловолокно, с рядом отверстий или контактных площадок, которые используются для соединения электронных компонентов. Тестовая пластина позволяет легко подключать электронные компоненты и тестировать их.
Крепление
Для выполнения сборки необходимо подключить:
контакт SDA дисплея SSD1306 к контакту D21 карты ESP32
контакт SCL дисплея SSD1306 к контакту D22 карты ESP32
контакт GND дисплея SSD1306 к контакту GND карты ESP32
контакт VCC дисплея SSD1306 к контакту 3,3 В карты ESP32
Программа Micropython
Вот программа, которая выводит текст на дисплей SSD1306:
из машинного импорта Pin, I2C
импорт ssd1306
из времени импортировать сон # Назначение контактов ESP32
i2c = I2C(-1, scl=Pin(22), sda=Pin(21)) oled_width = 128
oled_height = 64
oled = ssd1306.