КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

RGB матрица 64x32, 64x64, 128x64, подключаем к Raspberry

Исходники изображение:
SVG, PNG (1000px), PNG (5000px), — id:1057
SVG, PNG (1000px), PNG (5000px), — id:1058

Общие сведения:

RGB матрица 64x32 и RGB матрица 128x64 — цифровая полноцветная светодиодная матрица.

Можно использовать в любых проектах, где требуется вывод данных на цветной дисплей. В качестве данных для вывода могут использоваться изображения, символы или бегущая строка.

Представлена в 4 вариантах:

Видео:

Редактируется...

Спецификация:

  • Шаг пикселя: 
    • 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мм:

Для матрицы с шагом 3мм:

Применеие

  • Бегущая строка;
  • Табло информации;
  • Вывод графических изображений;

Ссылки:




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями