Общие сведения:
RGB матрица 64x32 и RGB матрица 128x64 — цифровая полноцветная светодиодная матрица.
Можно использовать в любых проектах, где требуется вывод данных на цветной дисплей. В качестве данных для вывода могут использоваться изображения, символы или бегущая строка.
Представлена в 4 вариантах:
- RGB матрица 64х32 с размером светодиода 2.5мм;
- RGB матрица 64х32 с размером светодиода 3мм;
- RGB матрица 64х32 с размером светодиода 4мм;
- RGB матрица 64x64 с размером светодиода 2.5мм
- RGB матрица 128x64 с размером светодиода 2.5мм
Видео:
Редактируется...
Спецификация:
- Шаг пикселя:
- P2.5: 2.5мм;
- P3: 3мм;
- P4: 4мм;
- Питание:
- 64x32: 5В/до 4А;
- 128x64, 64x64: 5В/до 8А;
- Интерфейс модуля: HUB75;
- Структура пикселя: 1R1G1B;
- Режим сканирования: 1/16;
- Яркость: 1100~1300кд/кв.м;
- Оттенки серого: 14бит;
- Глубина цвета: >16бит;
- Кадровая частота: 60Гц;
- Частота обновления: 100Гц;
- Расстояние комфортной видимости: >4м;
- Углы обзора: 160°/160°;
- Степень защиты: IP50 (лицевая панель)/ IP4X (задняя панель);
- Количество пикселей: 2048;
- Рабочая температура: -10°~40°С;
- Размеры модуля:
- P3: 192мм x 96мм х 15мм;
- P2.5 64x32: 160мм х 80мм х 15мм;
- P4: 256мм x 128мм х 15мм;
- P2.5 64x64: 160мм х 160мм х 15мм;
- P2.5 128x64: 320мм х 160мм х 15мм;
Подключение:
Способ 1: Шлейф и RGB Matrix Hat
Для удобства подключения можно воспользоваться RGB Matrix Hat
Модуль устанавливается на 40-пиновый разъём Rasperry
Для подключения матрицы используется 16-проводной шлейф, идущий в комплекте с матрицами
Для использования модуля с матрицами размером 128x64 и 64x64 необходимо использовать дополнительную линию адресации. На колодке таких матриц она может находиться либо на четвёртом пине, либо на восьмом. При использовании таких матриц необходимо опытным путём выяснить где находится эта линия, попробовав одно из ниже перечисленных положений джамперов:
Линиия Е на четвёртом выводе разъёма:
Линиия Е на восьмом выводе разъёма:
Стандартное положение джамперов:
Способ 2: Шлейф и провода папа-мама
Для подключения матрицы используется 16-проводной шлейф и провода папа-мама.
Распиновка разъёма матрицы и шлейфа:
Разъём матрицы 64x32 |
|
Разъём матрицы 128x64 |
|
Шлейф |
|
Подключение шлейфа |
|
Распиновка шлейфа 128x64 и 64x64 | |
Распиновка шлейфа 64x32 |
Выводы Raspberry Pi:
Для подключения шлейфа к Raspberry Вам понадобится 16 проводов папа-мама.
Вывод матрицы | Вывод матрицы |
---|---|
Вывод R1 | GPIO 11 |
Вывод G1 | GPIO 27 |
Вывод B1 | GPIO 7 |
Вывод R2 | GPIO 8 |
Вывод G2 | GPIO 9 |
Вывод B2 | GPIO 10 |
Вывод A | GPIO 22 |
Вывод B | GPIO 23 |
Вывод C | GPIO 24 |
Вывод D | GPIO 25 |
Вывод E только для матриц 64x64 и 128x64 | GPIO 15 |
Вывод CLK | GPIO 17 |
Вывод OE | GPIO 18 |
Вывод LAT | GPIO 4 |
Выводы GND | Выводы GND |
Питание:
К RGB матрице 64х32 подключается питание напряжением 5В и током до 4А.
К RGB матрицам 128x64 и 64x64 подключается питание напряжением 5В и током до 8А.
Подробнее о матрице:
Вывод текста и фигур
Если Вы ещё ни разу не настраивали Raspberry, то можете сделать это руководствуясь этой статьёй
Весь дальнейший материал предполагает установленную систему Raspbian Buster и отсутствие драйверов и надстроек, которые могут использовать выводы GPIO.
При помощи библиотеки rpi-rgb-led-matrix
возможен вывод фигур, изображений, текста и бегущей строки на светодиодную матрицу используя C++, C# или Python. Мы рассмотрим вывод на матрицу используя Python.
Откроем эмулятор терминала в верхней панели графической среды Raspberry.
Создадим директорию для хранения будущих Github проектов командой mkdir
(make directory - создать директорию):
mkdir Github
Перейдём в директорию командой cd
(change directory - сменить директорию):
cd Github
Склонируем репозиторий (необходимо подключение к интернету):
git clone https://github.com/tremaru/rpi-fb-matrix
Далее перейдём в директорию python внутри директории rpi-rgb-led-matrix/bindings
cd rpi-fb-matrix/rpi-rgb-led-matrix/bindings/python
Теперь наберём три строки, нажимая <enter> в конце каждой строки и дожидаясь выполнения сборки и/или установки после каждой строки
sudo apt-get update && sudo apt-get install python3-dev python3-pillow -y make build-python PYTHON=$(command -v python3) sudo make install-python PYTHON=$(command -v python3)
После успешной установки можно попробовать вывести текст на матрицу
Перейдём в директорию примеров
cd samples/
Здесь важно сказать, что для работы с матрицей необходимо либо отключить драйвер встроенного в процессор Raspberry аудио генератора, либо передать сценарию python аргумент --led-no-hardware-pulse=1. В первом случае матрица будет работать с аппаратным тактированием и, если нужен звук, можно использовать внешнюю USB карту (так же при этих условиях сценарии необходимо запускать от имени привилегированного пользователя командой sudo
). Для отключения встроенного генератора аудио необходимо закомментировать строку dtparam=audio=on
в файле /boot/config.txt
. Во втором случае можно использовать встроенный звук Raspberry, но программа вывода на матрицу будет использовать программное тактирование, что скажется на качестве изображения.
Для проверки работы матрицы запустим программу с использованием программного тактирования:
python3 runtext.py --led-cols=128 --led-rows=64 --led-no-hardware-pulse=1 -t "Привет мир!"
Разберёмся что к чему:
- --led-cols=128 - количество пикселей в матрице по одной из сторон. В случае примера выше 128, т.к. панель в примере 128x64
- --led-rows=64 - количество пикселей в матрице по другой стороне. В случае примера выше 64.
- --led-no-hardware-pulse=1 - использовать или нет аппаратное тактирование. Если не передавать этот аргумент, то будет использоваться аппаратное тактирование.
- -t - текст для отображения на матрице.
Так же можно передать аргумент -с если подключено больше одной панели. Например -c 3
, если подключено 3 панели в линию.
Подробнее про аргументы, передаваемые библиотеке можно узнать из файла README.md
Теперь разберём вывод фигур на примере файла graphics.py в этой же директории.
Сценарий вывода графики
from samplebase import SampleBase from rgbmatrix import graphics import time class GraphicsTest(SampleBase): def __init__(self, *args, **kwargs): super(GraphicsTest, self).__init__(*args, **kwargs) # Этот метод будет вызван автоматически при запуске сценария def run(self): # Создаём "холст" матрицы canvas = self.matrix # Создаём объект шрифта font = graphics.Font() # Загружаем шрифт в объект. В этой директории так же есть шрифты других размеров # все шрифты кодировки UTF-8 font.LoadFont("../../../fonts/7x13.bdf") # Создаём объект красного цвета red = graphics.Color(255, 0, 0) # Выводим линию красного цвета graphics.DrawLine(canvas, 5, 5, 22, 13, red) # Создаём объект зелёного цвета green = graphics.Color(0, 255, 0) # Выводим круг зелёного цвета graphics.DrawCircle(canvas, 15, 15, 10, green) # Создаём объект синего цвета blue = graphics.Color(0, 0, 255) # Выводим текст синего цвета graphics.DrawText(canvas, font, 2, 10, blue, "Привет!") # Выводим данные на матрицу в течении 10 секунд time.sleep(10) # Main function if __name__ == "__main__": graphics_test = GraphicsTest() if (not graphics_test.process()): graphics_test.print_help()
Если синий и зелёный цвета перепутаны, передайте сценарию аргумент --led-rgb-sequence=RBG
Сценарий вывода в цикле с обновлением
from samplebase import SampleBase from rgbmatrix import graphics import time # Координаты начала вывода x = 2 y = 16 class GraphicsTest(SampleBase): def __init__(self, *args, **kwargs): super(GraphicsTest, self).__init__(*args, **kwargs) def run(self): canvas = self.matrix.CreateFrameCanvas() font = graphics.Font() font.LoadFont("../../../fonts/6x10.bdf") blue = graphics.Color(0, 0, 255) red = graphics.Color(255, 0, 0) t = "Текст" i = 0 # Выводим циклически на матрицу while True: # Отчищаем буфер матрицы canvas.Clear() # Выводим текст graphics.DrawText(canvas, font, x, y, blue, t) # Выводим число graphics.DrawText(canvas, font, x+6*len(t)-1, y, red, str(i)) # Приращиваем число на единицу i += 1 if i > 9: i = 0 time.sleep(.1) # Переключаем буфер после вывода последнего пикселя текущего кадра canvas = self.matrix.SwapOnVSync(canvas) # Main function if __name__ == "__main__": graphics_test = GraphicsTest() if (not graphics_test.process()): graphics_test.print_help()
Вывод кадрового буфера
Для вывода кадрового буфера необходимо отключить GL-драйвер в raspi-config
.
В эмуляторе терминала:
sudo raspi-config
Далее выберете Advanced Options
:
GL Driver
:
Legacy
:
<OK>
:
Finish
:
Перезагрузите Raspberry Pi.
При помощи библиотеки rpi-fb-matrix возможен вывод кадрового буфера. То, что выводится в hdmi порт, будет выведено на матрицы. Возможно выводить как часть экрана (crop), так и весь экран в масштабе (scale).
Если Вы ещё не клонировали библиотеку, то перейдите в папку /home/pi/Github и склонируйте библиотеку из нашего репозитория:
git clone https://github.com/tremaru/rpi-fb-matrix
Далее необходимо установить библиотеку libconfig++
sudo apt install libconfig++-dev
После этого можно приступать к сборке. Для этого перейдём в директорию rgb-fb-matrix
cd rgb-fb-matrix
И запустим программу make
make -j
Ещё раз повторимся, для работы с матрицей необходимо либо отключить драйвер встроенного в процессор Raspberry аудио генератора, либо передать сценарию python аргумент --led-no-hardware-pulse=1. В первом случае матрица будет работать с аппаратным тактированием и, если нужен звук, можно использовать внешнюю USB карту (так же при этих условиях сценарии необходимо запускать от имени привилегированного пользователя командой sudo
). Для отключения встроенного генератора аудио необходимо закомментировать строку dtparam=audio=on
в файле /boot/config.txt
. Во втором случае можно использовать встроенный звук Raspberry, но программа вывода на матрицу будет использовать программное тактирование. config.txt -> dtparam=audio=on
После завершения программы make
в директории появятся две утилиты, первая называется display-test
, вторая rpi-fb-matrix
. Обеим утилитам для работы необходимо передать файл конфигурации. В нём необходимо указать размеры панели, количество панелей и ориентацию панелей. Подробнее об этом можно узнать в примере файла конфигурации matrix.cfg
, который находится этой же директории.
Рассмотрим пример файла конфигурации.
Рассмотрим на примере подключения двух панелей 128x64:
display_width = 256; // общее количество пикселей в ширину display_height = 64; // общее количество пикселей в длинну panel_width = 128; // количество пикселей одной матрицы в ширину panel_height = 64; // количество пикселей одной матрицы в длинну chain_length = 2; // количество панелей parallel_count = 1; // количество паралельных линий. Подробнее о подключении паралельных линий читайте в файле README.md // Геометрия подключения панелей panels = ( // order - порядковый номер панели, 0 - первая панель экрана, // правый верхний угол которой соответствует 0 X и Y экрана. // rotate - угол ориетнации панели 0 или 180 ( {order = 0; rotate = 0;}, {order = 1; rotate = 0; } ) ) // Если раскомментировать строку ниже, то вывод на матрицы будет не масштабирован (scale) // а обрезан (crop) начиная с указанной в скобках координаты (0, 0 - правый верхний угол экарна) // crop_origin = (5, 95)
Для тестирования файла конфигурации воспользуемся утилитой display-test
, передав ей файл конфигурации:
sudo ./display-test matrix.cfg
Если Вы используете панели с драйвером FM6126A, передайте утилите дополнительный аргумент --led-panel-type=FM6126A
sudo ./display-test matrix.cfg --led-panel-type=FM6126A
В правом верхнем углу каждой матрицы загорится белым её порядковый номер в массиве матриц.
Выведем кадровый буфер на сборку матриц
Для вывода на матрицы запустим утилиту rgb-fb-matrix и передадим ей файл конфигурации:
sudo ./rgb-fb-matrix matrix.cfg
Если Вы хотите что бы экранный буфер системы выводился на матрицы при каждой загрузке, добавьте соответствующие строки в /etc/rc.local
или создайте юнит для systemd
. Подробнее об этом можно прочитать в статье Цветной графический дисплей 2.8 TFT 320x240, подключаем к Raspberry Pi или Делаем таймлапс для 3D принтера.
Корпус
Для матриц 64x32 P2.5 и P3 нами так же были разработаны корпуса, используя которые Вы сможете создать законченное устройство.
Для матрицы с шагом 2.5мм:
- 2х Основа для RGB матрицы 64х32 P2.5;
- 6х Рейка 7х4;
- 2х Рейка 1х3;
- 1х Набор винтов М3х10мм;
Для матрицы с шагом 3мм:
- 2х Основа для RGB матрицы 64х32 P3
- 6х Рейка 8х4;
- 2х Рейка 2х3;
- 1х Набор винтов М3х10мм;
Применеие
- Бегущая строка;
- Табло информации;
- Вывод графических изображений;
Обсуждение