Рубрики
Схемы на Arduino

Потоковое видео 30 кадров/с с помощью Arduino на OLED дисплее SSD1106

Наверняка многие посетители нашего сайта считают, что OLED дисплей SSD1106 может использоваться только для отображения текста и простой графики. Но оказывается что после небольшого разгона на нем можно воспроизводить потоковое видео с частотой до 30 кадров в секунду (30 FPS).

Необходимые компоненты

Аппаратное обеспечение

  1. Плата Arduino Nano (купить на AliExpress).
  2. Модуль OLED дисплея 64х128 ElectroPeak 0,96″.

Программное обеспечение

  1. Arduino IDE.
  2. OpenCV.

Концепция проекта

Данная статья является переводом следующего проекта со сборника проектов на официальном сайте Arduino (arduino.cc). Проект не подойдет для начинающих пользователей платформы Arduino, он достаточно сложный в реализации. Я в комментариях тоже вряд ли смогу оказать вам серьезную помощь в понимании принципов работы проекта, но в конце статьи я приведу ссылки на материалы на нашем сайте, которые могут помочь вам в понимании данного проекта. Несмотря на очень скудное объяснение данного проекта его автором решил все таки опубликовать его на сайте — уж больно он интересный, на мой взгляд. Если у кого-нибудь все таки получится реализовать данный проект, то огромная просьба отписаться об этом в комментариях к данной статье, описать кратко возникшие проблемы при реализации проекта и как вам удалось их решить — этим вы окажете огромную помощь другим читателям нашего сайта.

Автор проекта решил превзойти (превысить) ограничения (лимита) обычного дешевого OLED дисплея. Обычно дисплей SSD1106 используется только для отображения текста и несложной анимации в сравнительно простых проектах. Автор проекта решил проверить можно ли на таком дисплее воспроизводить потоковое видео. Автор проекта столкнулся со значительным числом трудностей при реализации своей идеи, но их все ему удалось решить. Самым значительным ограничивающим фактором была полоса пропускания интерфейса OLED дисплей — микроконтроллер (плата Arduino). Он сумел разогнать интерфейс SPI, используемый для подключения дисплея к плате Arduino, до частоты 2 МГц с помощью быстрой и оптимизированной библиотеки — таким образом он получил достаточную полосу пропускания для передачи потокового видео. Последовательный интерфейс (UART) для связи с персональным компьютером работал на частоте 1 МГц.

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

Схема проекта

Схема подключения OLED дисплея к плате Arduino для воспроизведения потокового видео представлена на следующем рисунке.

Видео, демонстрирующее работу проекта

Исходный код программы (скетча)

Все необходимые файлы программ для данного проекта можно скачать по следующей ссылке. Код программы arduino загрузите в плату Arduino Nano, а код программы на Python запускается на компьютере для передачи потокового видео на OLED дисплей. Код программы библиотеки, необходимой для ускорения интерфейса SPI, также находится в архиве, который вы скачает по ссылке.

Поскольку в программе используется взаимодействие программы на Python и программы для Arduino, то для облегчения понимания данного проекта вы можете изучить следующие статьи на нашем сайте:

2 ответа к “Потоковое видео 30 кадров/с с помощью Arduino на OLED дисплее SSD1106”

Приветствую!

1. В схеме имеется ошибка, 3й пин дисплея никак не может быть заземлён;
2. Контроллер дисплея не SSD1106 и не SSD1306 как пишет автор проекта, а SH1106 на что указывают вложенная библиотека.

В остальном всё работает, если есть вопросы пишите!

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *