Skip to content

Настройка LED дисплея

Emil Muratov edited this page Nov 15, 2023 · 4 revisions

Типы поддерживаемых устройств вывода

В прошивке поддерживается два вида светодиодных панелей:

Матрицы на основе ws2812

очень хорошую документацию по организации матриц из адресных светодиодов можно найти на WiKi проекта LedPanelWiFi - Сборная матрица. Настоятельно рекоммендуется к ознакомлению.

Настройка размеров, ориентации и топологии матрицы или каскада матриц осуществляется просле прошивки через web-интерфейс в меню "настройки" - "Настройка LED-дисплея". Параметры применяются на лету к подключенному устройству, для изменения топологии реконфигурация и перепрошивка проекта не требуется.

Требования к каскадному подключению нескольких матриц:

  • все матрицы в каскаде должны иметь одинаковый размер
  • все матрицы в каскаде должны иметь одинаковую топлогию (направление следования ленты)
  • все матрицы в каскаде должны быть одинаково ориентированы (входной и выходной диод должны располагаться в совпадающих углах)
  • следование матриц в каскаде должно быть упорядоченно по столбцам/строкам зиг-загом или параллельно.

image

Параметры настройки адресных матриц ws2812

Вместо "угла подключения" и "направления" ленты используется другая схема настройки: вертикальная/горизонтальная последовательность и отражения

топология ленты

  • LED Matrix gpio - пин подключения матрицы. Значение "-1" отключает матрицу, смена gpio со значения отличного от "-1" требует перезагрузки контроллера
  • ширина, высота - размер в пикселях одной матрицы. Если используется составная матрица, то всё равно указывается размер одной матрицы, а не всего холста
  • змейка - диоды в строках/столбцах располагаются последовательно, меняя направление. Выключенная опция означает параллельное следование диодов
  • вертикальная - диоды в ленте расположенны вертикально, следуют сверху вниз или снизу вверх. Выключенная опция означает что лента уложенна горизонтально
  • зеркальные столбцы, зеркальные строки - перевернуть "верх/низ" или "лево/право" матрицы

параметры каскада матриц

  • плиток по X,Y - число модулей в каскаде по горизонтали/вертикали, результирующий размер составного холста будет высчитан автоматически

флаги каскада соответствуют по смыслу таковым же для настроек одной матрицы

ws2812 API

Конфигурацию и топологию ленты можно задать через API. Ожидаемый джейсон объект с параметрами имеет следующую структуру

{
  "pkg": "post",
  "action": "display_ws2812",
  "data": {
    "dtype": 0,
    "mx_gpio": 25,
    "CLmt": 2500,
    "width": 16,
    "height": 16,
    "snake": true,
    "vflip": false,
    "vertical": false,
    "hflip": false,
    "wcnt": 1,
    "hcnt": 2,
    "tsnake": false,
    "tvflip": false,
    "tvertical": false,
    "thflip": false
  }
}

где:

  • dtype - тип используемого дисплея: 0 - дисплей на основе ws2812, 1 - дисплей на основе HUB75

Пример структуры объекта отдаваемого в ответ на запрос текущей конфигурации для лент:

[
  {
    "mx_gpio": 25,
    "CLmt": 2500,
    "width": 16,
    "height": 16,
    "snake": true,
    "vflip": false,
    "vertical": false,
    "hflip": false,
    "wcnt": 1,
    "hcnt": 2,
    "tsnake": false,
    "tvflip": false,
    "tvertical": false,
    "thflip": false
  }
]

HUB75 API

Конфигурацию и параметры HUB75 панели можно задать через API. Параметры конфигурации основываются на функционале библиотеки ESP32-HUB75-MatrixPanel-DMA. Настоятельно рекоммендуется ознакомиться с документацией на библиотеку и о назначении конфигурационных опций. Ожидаемый джейсон объект с параметрами имеет следующую структуру:

{
  "pkg": "post",
  "action": "display_hub75",
  "data": {
    "dtype": 1,
    "width": 64,"height": 32,
    "R1": 25,"G1": 25,"B1": 25,
    "R2": 25,"G2": 25,"B2": 25,
    "A": 25,"B": 25,"C": 25,"D": 25,"E": -1,
    "CLK": 25,"OE": 25,"LAT": 25,
    "driver": 0,
    "clkrate": 15000000,
    "latblank": 2,
    "clkphase": true,
    "minrr": 60,
    "colordpth": 6
  }
}

где:

  • dtype - тип используемого дисплея: 0 - дисплей на основе ws2812, 1 - дисплей на основе HUB75
  • width, heigh - размер панели
  • R1-B2, A-E, CLK, OE, LAT - gpio соответствующих выводов HUB75
  • driver - тип используемого чип-драйвера в панели, значение типа "integer" из enum enum shift_driver
  • clkrate - частота clock, значение типа "integer" из enum clk_speed
  • latblank - параметр Latch blanking
  • clkphase - параметр I2S clock phase
  • minrr - параметр min_refresh_rate
  • colordpth параметр Color Depth

Конфигурационный файл

Парметры настройки ленты и ХАБ75 хранятся в контроллере в файле display.json в корневом каталоге. Файл можно скачать/залить в контроллер через ftp или скачать по ссылке http://myesp/display.json

Структура файла представлена ниже. Файл содержит кофигурацию для обоих типов вывода - лент и хаб75 панели. Если какое-то из устройств не используется, соотвестствующие блоки можно удалить. Переключение вывода осуществляется через установку параметра "dtype".

{
  "dtype": 0,
  "hub75": {
    "width": 64, "height": 32,
    "R1": 13, "G1": 23, "B1": 12,
    "R2": 14, "G2": 22, "B2": 27,
    "A":26, "B":18, "C":25, "D":5, "E":-1,
    "CLK": 33, "OE": 32, "LAT": 17,
    "driver": 0,
    "clkrate": 15000000,
    "latblank": 2,
    "clkphase": true,
    "minrr": 60,
    "colordpth": 6
  },
  "ws2812": {
    "mx_gpio": 4,
    "CLmt": 2000,
    "width": 16, "height": 16,
    "snake": true,
    "vertical": false,
    "vflip": false, "hflip": false,
    "wcnt": 1, "hcnt": 1,
    "tsnake": false,
    "tvflip": false, "thflip": false,
    "tvertical": false
  }
}