Standalone Matrix controller (APA102 to HUB75 Panel Adapter)

Ok, I was able to build the WLED-2D-FIXES branch of WLED SR with the increased LED limit. So that bit seems alright.

I wired the CLK to D4 and DAT to D2 (of the secondary ESP32) and configured accordingly in WLED. Just to clarify, is this treated like a single strand of 4096 LEDs (as far as WLED is concerned)?

Yes, a single strand

Ooh, I connected the other ESP32 through the 4 pin cable but it looks like that’s just an output. Whoops. :slight_smile:

So my best bet I think is moving the CLK and DAT over to pins 16 and 17. That seems to have a way better shot at working.

Edit: These are from my adapter config file. Then I set GPIO_I2S_IN_PIN_EN to pin 15.

Hey Louis,

I think the hardware is in order now but I’m still not getting output. Here’s what I’ve got so far:

from PixelvationEngine_HUB75.ino:

#include <MatrixHardware_ESP32_HUB75Adapter_V0_I2sIn1Bit.h>
#include <SmartMatrix.h>

#include “i2s_in.h”

#ifndef GPIO_I2S_IN_PIN_CLK
#pragma GCC error “I2S In pins not defined, include hardware-appropriate header at the top of your sketch”
#endif

// colorwheel.c has been modified to use the gimp32x32bitmap struct
#include “colorwheel.c”

#define COLOR_DEPTH 48 // known working: 24, 48 - If the sketch uses type rgb24 directly, COLOR_DEPTH must be 24
uint16_t kMatrixWidth = 64; // Set to the width of your display, must be a multiple of 8
uint16_t kMatrixHeight = 64; // Set to the height of your display
uint8_t kRefreshDepth = 36; // Tradeoff of color quality vs refresh rate, max brightness, and RAM usage. 36 is typically good, drop down to 24 if you need to. On Teensy, multiples of 3, up to 48: 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48. On ESP32: 24, 36, 48
uint8_t kDmaBufferRows = 4; // known working: 2-4, use 2 to save RAM, more to keep from dropping frames and automatically lowering refresh rate. (This isn’t used on ESP32, leave as default)
uint8_t kPanelType = SM_PANELTYPE_HUB75_64ROW_MOD32SCAN; // Choose the configuration that matches your panels. See more details in MatrixCommonHub75.h and the docs: https://github.com/pixelmatix/SmartMatrix/wiki
uint32_t kMatrixOptions = (SM_HUB75_OPTIONS_NONE); // see docs for options: https://github.com/pixelmatix/SmartMatrix/wiki
const uint8_t kBackgroundLayerOptions = (SM_BACKGROUND_OPTIONS_NONE);

From MatrixHardware_ESP32_HUB75Adapter_V0_I2sIn1Bit:

// include SmartMatrix Library MatrixHardware file first
#include <MatrixHardware_ESP32_SmartLedShieldV0.h>

#define I2S_RISING_EDGE_CLK true

#define GPIO_I2S_IN_PIN_CLK (gpio_num_t)17
#define GPIO_I2S_IN_PIN_EN (gpio_num_t)15

#define GPIO_I2S_IN_PIN_D0 (gpio_num_t)16

#define GPIO_I2S_IN_PIN_D1 -1
#define GPIO_I2S_IN_PIN_D2 -1
#define GPIO_I2S_IN_PIN_D3 -1
#define GPIO_I2S_IN_PIN_D4 -1
#define GPIO_I2S_IN_PIN_D5 -1
#define GPIO_I2S_IN_PIN_D6 -1
#define GPIO_I2S_IN_PIN_D7 -1

Any thoughts?

Thanks again for all your help!

-Mike

Edit: Panel is type P3-64*64-32S-V1.0 from Adafruit

GPIO_I2S_IN_PIN_EN needs to be pulled up or driven high. The default of GPIO 0 is already pulled up on most boards which is why I chose that pin.