Одометр и часы arduino oled. Подключение к Arduino

OLED — дисплей являются одним из самых привлекательным и современным дисплеем, при небольших размерах и незначительном энергопотребление OLED дисплей, обеспечивает насыщенную контрастность. Дисплеи в основном доступны на чипе SSD1306, работающим на интерфейсе I2C, для работы которого необходимо только 2 провода, что позволяет быстро подключить и начать использовать. В этом статье расскажу, как подключить OLED дисплей, диагональю 0.96 дюйма и расширением 128 х 64 пикселя.

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

Технология дисплея: OLED
Разрешение дисплея: 128 на 64 точек
Диагональ дисплея: 0,96 дюйма
Уол обзора: 160°
Напряжение питания: 2.8 В ~ 5.5 В
Мощность: 0,08 Вт
Габариты: 27.3 мм х 27.8 мм х 3.7 мм

Общие сведения OLED дисплея

А что же такое, технология OLED? Расшифровывается как Organic Light-Emitting Diode, состоит дисплей из большого числа органических светодиодов, главное отличие от LCD дисплея, в том, что каждый светодиод светится сам и не нуждается в отдельной подсветки. Благодаря этому, дисплей обладает значительными преимуществом по сравнению с обычными LCD, такими как контрастностью, углом обзора и малая потребляемая мощность, конечно есть и недостатки, небольшой срок службы и дороговизна.

OLED модуль с расширением 128×64 (0.96 дюйма) состоит из двух частей, из самого дисплея, который в свою очередь можно разделить на две части, графический дисплей и контроллер SSD1306 от которого идет гибкий шлейф на обратную сторону платы. Вторая часть, модуля, представляет собой печатную плату (которая по сути является переходником), на которой установлена минимальная электрическая обвязка, однорядный разъем шаг 2.54 мм и четырьмя крепежными отверстиями.
OLED модули, выпускаются с различным расширением 128×64, 128×32 и 96×16 (в статье и примере используется дисплей с расширением 128×32), сам контроллер SSD1306 может работать с OLED матрицами с максимальным расширение 128×64, так-же, модули бывают белые, синие и сине-желтые (сверху, желтая полоса, шириной 15 пикселя). Каждый производитель, выпускают свою печатные плату с различной компоновкой электронных компонентов и выведенным интерфейсом, так-как контроллер SSD1306 поддерживает сразу три протокола работы:

8-bit 6800/8080-series parallel interface
3 /4 wire Serial Peripheral Interface
I2C

Для изменения протокола работы, предусмотрены три линии BS0, BC1 и BS2 с помощью которых, контроллер дисплея определяет по какому протоколу ему работать. В моем случаи, OLED дисплей разработан для работы по одному протоколу I2C, в других вариантов, возможно смена протокола работы с помощью нулевых резисторах или DIP переключателей.

Ниже приведена принципиальная схема OLED дисплея на микросхеме SSD1306, работающая по интерфейсу I2C, из нее видно, что микросхема U2 выполняет функцию стабилизатора напряжение (3.3В), конденсатор C8 необходим для сглаживания выходного напряжения. Резисторы R6 и R7 выполняют функцию подтяжки линии SCL и SAD, если к шине I2C, подключено не одно устройство, необходимо использовать подтягивающие резисторы только на одном устройстве. С помощью резистора на 0 Ом (без обозначении), можно произвести смену адреса 0x78 или 0x7A.

Назначение контактов J2:
SCL: линия тактирования (Serial CLock)
SDA: линия данных (Serial Dфta)
VCC: «+» питание
GND: «-» питание

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

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

Подключение :
В примере буду использовать плату Arduino UNO R3 и OLED дисплей (расширением 128×64), как говорил ранее, используемый интерфейс I2c, для подключения необходимо всего два провода, подключаем SDA дисплея к выводу A4 (Arduino), а SCL к выводу A5 (Arduino). При использовании, других платформ Mega или Nano необходимо использовать другие порты, для удобства приведу таблицу, подключения для различных плат. Далее, необходимо подключить питание, GND к GND, а VCC к 5 В или 3.3В, схема собрана, теперь осталось загрузить скетч.


Таблица подключений

Для работы с OLED дисплеем необходима библиотека, так-как библиотек несколько, пример работы покажу через библиотеку OLED_I2C (скачать библиотеку можно в конце статьи)
Программа только отображает текст на дисплей и больше не какого функционала не несет, скачиваем скетч и загружаем ее в плату Arduino UNO R3.

/* Тестировалось на Arduino IDE 1.8.0 Дата тестирования 27.01.2017г. */ #include // Подключаем библиотеку OLED_I2C OLED myOLED(SDA, SCL, 8); // Выбор порта, UNO это SDA 8 pin, SCL - 9 pin. extern uint8_t SmallFont; // Подключаем шрифт void setup() { myOLED.begin(); // инициализация экрана myOLED.setFont(SmallFont); } void loop() { myOLED.clrScr(); // Очищаем экран myOLED.print("Hello!", CENTER, 24); // Выводим текст: в центре, строка 24 myOLED.print("www.robotchip.ru", CENTER, 40); // Выводим текст: в центре, строка 40 myOLED.update(); // delay (500); // пауза 0.5 с }

Тестировалось на Arduino IDE 1.8.0

Дата тестирования 27.01.2017г.

#include // Подключаем библиотеку OLED_I2C

OLED myOLED (SDA , SCL , 8 ) ; // Выбор порта, UNO это SDA 8 pin, SCL - 9 pin.

extern uint8_t SmallFont ; // Подключаем шрифт

void setup ()

myOLED . begin () ; // инициализация экрана

myOLED . setFont (SmallFont ) ;

void loop ()

myOLED . clrScr () ; // Очищаем экран

myOLED . print ("Hello!" , CENTER , 24 ) ; // Выводим текст: в центре, строка 24

myOLED . print ("www.robotchip.ru" , CENTER , 40 ) ; // Выводим текст: в центре, строка 40

myOLED . update () ; //

delay (500 ) ; // пауза 0.5 с

Скачать скетч

Trema-модуль OLED-дисплей (128x64) - это графический дисплей, каждый пиксель которого является отдельным OLED (organic light-emitting diode) светодиодом.

Дисплей не нуждается в подсветке, значит черный цвет - действительно чёрный (не светится в темноте), а использование органических светодиодов позволило достичь угла обзора более 160° и значительно снизить энергопотребление. Так же стоит отметить высокую контрастность и небольшие размеры дисплея - всего 0.96 дюйма. Всё это позволяет сказать, что OLED-дисплей является одним из лучших дисплеев.

Видео

Характеристики

  • Тип дисплея: графический, OLED (organic light-emitting diode) на основе органических светодиодов.
  • Тип драйвера матрицы: SSD1306.
  • Разрешение: 128 x 64 точек.
  • Цвет пикселей (светодиодов): белый.
  • Количество цветов: белый и черный (монохромный).
  • Угол обзора: > 160°.
  • Коэффициент контрастности: 10000:1.
  • Яркость: >120 кд/м 2 .
  • Напряжение питания: 3,3 ... 5 В.
  • Энергопотребление: до 80 мВт (при свечении всего экрана);
  • Интерфейс: I2C (поддерживается Arduino, WeMos, STM32, MSP430 и множеством других микроконтроллеров, и отладочных плат).
  • Адрес на шине I2C: 0x3C или 0x3D выбирается переключателем.
  • Время отклика < 10 мкс.
  • Рабочая температура: -40 ... 85 °С.
  • Габариты: 30x30 мм.

Все модули линейки "Trema" выполнены в одном формате

Подключение

Для удобства подключения к Arduino воспользуйтесь , или .

Для работы с Trema OLED дисплеями, нами разработано сразу две библиотеки.

Здравствуйте, MySku`вчане! Сегодня расскажу вам о графическом OLED дисплее на контроллере SSD1306. Похожий дисплей уже на муське, я постараюсь дополнить обзор, а также покажу, как его подключить к Digispark на базе ATtiny 85. Возможно, эта информация пригодится вам в ваших проектах.

Данный дисплей был куплен в магазине Gearbest за свои деньги.

Скрины заказа




Заказ был сделан 02.12.2015, посылка дошла на удивление быстро, перед самым новым годом я забрал её на почте. Сейчас данный лот стоит на 47 центов дороже.


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

Упаковка и внешний вид




На сам дисплей наклеена защитная пленка от царапин.


Тут видно, что отсутствует резистор с нулевым сопротивлением в качестве перемычки BS1. Когда перепаивал её в другое положение, спружинил пинцет, и потерялась такая красивая перемычка, запаял обычную проволочную.




Технические характеристики дисплея:
- Тип дисплея: OLED монохромный, в данном дисплее 2 цвета, желтый и голубой
- Драйвер дисплея: SSD1306
- Разрешение: 128 х 64 пикселей
- Размер дисплея: 0,96 дюйма
- Углы обзора: >160°
- Интерфейс подключения: 3-wire SPI, 4-wire SPI, I2C
- Напряжение питания: 3,3 В
- Потребляемый ток на пиксел: 100 мкА
- Размеры: 33 мм х 33.5 мм

Картинка с габаритами



Электрическая схема



на драйвер SSD1306.

Подключать данный дисплей будем к Digispark.

Что это такое и как его настроить на работу в Arduino IDE, можно прочитать в этом . От себя лишь сделаю ремарку. Настоятельно рекомендую использовать версию Arduino IDE 1.6.5 . Сейчас на официальном сайте доступна версия 1.6.7, но с ней у меня постоянно сыпались ошибки. Теперь все собираем на одной макетке.


Подключается Digispark к дисплею следующим образом:
- Т.к. подключать будем по шине I2C, необходимо перепаять перемычку BS1 в положение «1».
- Vcc это питание дисплея, подаем 3,3В
- GND тут понятно, это земля
- DIN (SDA) подключаем к контакту P0 на Digispark (и подтягиваем к +5В резистором 4,7 К)
- CLK (SCL) подключаем к контакту P2 на Digispark (и подтягиваем к +5В резистором 4,7 К)
- CS подключаем к земле
- D/C тут нюанс, если на этот вывод подать «низкий» уровень, т.е. землю, то адрес дисплея будет 0x3C , если подать «высокий» уровень, т.е. подключить к 3,3В, то адрес дисплея будет 0x3D . Я подключил к земле.
- RES подтягиваем к питанию т.е. 3,3В

Теперь загружаем стандартный скетч DigisparkOLED из папки примеров. Тут замечание, при необходимости нужно изменить адрес дисплея в файле DigisparkOLED.h на ваш. Вносите изменения в строку:
#define SSD1306 0x3C // Slave address.
По умолчанию там указан 0x3D.
При попытке загрузить данный пример в ATtiny 85 вываливалась ошибка о нехватке памяти мк. Закомментируйте или удалите «картинки» в скетче, т.е. строчки:
#include "img0_128x64c1.h" #include "digistump_128x64c1.h"
и подправьте скетч, у меня получилось так:


В итоге на дисплее увидим




Как видно, вывод 2 строчек текста на экран занимает 4062 байт, что составляет 67% памяти мк. Библиотека довольно прожорливая, если даже пожертвовать загрузчиком, памяти мк останется процентов 50, маловато однако.
Решено было найти или написать библиотеку «полегче». На просторах интернета была найдена библиотека TinySSD1306. Скачивал с этого . Распакуйте библиотеку в папку libraries (если вы ставили Arduino IDE по умолчанию, то данная папка будет находится по такому пути: «C:\Users\имя_пользователя\AppData\Roaming\Arduino15\packages\digistump\hardware\avr\1.6.5\libraries»). После перезапуска Arduino IDE, в папке примеров загружаете скетч ssd1306_demo.
Немного подправил данный скетч, чтобы просто вывести одну строку.

Как видно, вывод одной строки у нас занял 2 138 байт, что занимает 35% памяти мк. Это совсем другое дело:) Если убрать загрузчик и использовать «голый» мк, то остается уйма места.
Также я провел некоторые электрические тесты.
Потребляемый дисплеем ток составил 5,6 мА.


Совместно с Digispark потребляемый ток составил 28,2 мА.


Решил понизить частоту ATtiny до 1 Мгц. Потребляемый ток конструкции составил 16,5 мА.


Думаю, что уменьшить ток потребления можно еще раза в 2, если использовать «голый» мк, т.к. на плате Digispark есть еще и светодиод, потребляющий ток. А также можно понизить напряжение для ATtiny до 1,8В.
В итоге:
Дисплеем остался доволен. Высокие углы обзора, высокая контрастность, низкое энергопотребление. Для увеличения быстродействия есть возможность подключить по шине SPI.
Из минусов могу отметить отсутствие стабилизатора 3,3В на плате дисплея, хотя места там полно. В интернете читал, что данные дисплеи толерантны и к 5 Вольтам, но экспериментировать не стал, т.к. в даташит к контроллеру указано, что питание «логики» от 1,65 до 3,3В.
На этом все, постараюсь ответить на ваши вопросы, если будут таковые.


Top