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

RGB матрица 64x32, 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: 5В/до 6,5А;
  • Интерфейс модуля: 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 128x64: 320мм х 160мм х 15мм;

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

Шлейф:

Для подключения матрицы используется 16-проводной шлейф:

Разъём матрицы 64x32
Разъём матрицы 128x64
Шлейф
Подключение шлейфа

Распиновка шлейфа 128x64
Распиновка шлейфа 64x32

Выводы:

Для подключения шлейфа к Raspberry Вам понадобится 16 проводов папа-папа.

Вывод матрицы Вывод матрицы
Вывод R1 GPIO 11
Вывод G1 GPIO 8
Вывод 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 только для матрицы 128x64 GPIO 15
Вывод CLK GPIO 17
Вывод OE GPIO 18
Вывод LAT GPIO 4
Выводы GND Выводы GND

Питание:

К RGB матрице 64х32 подключается питание напряжением 5В и током до 4А.

К RGB матрице 128x64 подключается питание напряжением 5В и током до 6,5А.

Подробнее о матрице:

Вывод текста и фигур

Если Вы ещё ни разу не настраивали 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 python2.7-dev python-pillow -y
make build-python
sudo make install-python

После успешной установки можно попробовать вывести текст на матрицу

Перейдём в директорию примеров

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()

Вывод кадрового буфера

При помощи библиотеки 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мм:

Применеие

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

Ссылки:




Обсуждение

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