Poor WiFi performance or noise when using long wires #656
Replies: 5 comments 7 replies
-
The wires are too long in any case. Max 10 cm. 20cm jumper cables are like a TV antenna and pick up interference and noise the LED panels don't like. |
Beta Was this translation helpful? Give feedback.
-
Funny I just saw this post.. I've come here with a similar issue... but while my display is mostly OK.. I've got a whole lot of WIFI interference! My wires are all less then 15mm long! My ping rates are pretty bad most of the time, in the 100's of ms, with a smattering of packet loss as well. Bad enough at times that my sign, which displays weather data, has trouble contacting the weather service. Here is the funny part, same ESP module, if I remove it and let it run by itself without the display, I have no problems! My display is a standard everyday HUB75 module in P4 variety with the FM6124 ICs. I have two chained. On the software side, I have tried different settings, such as clkphase, 8M 10M 15M and 20M i2s speeds, multiple latch_blanking values, and FM6126A setting as well (works, but same interference). Double buffering, single buffering, reducing color depth, and different brightness levels. All with similar results. Came here to share my experience and maybe resolve my issue. I can open a new discussion if needed. Thank you for your time. Regards, |
Beta Was this translation helpful? Give feedback.
-
Ah, yes, the power supply. Almost forgot about that. I haven't focused on it, but thank you for reminding me, indeed something to look at. I have been using a switching Riden lab supply, but I have plenty of other, older/transformer/etc, based ones on the bench. I just tried it with one of the old transformer ones, and I can't say for certain it is making a difference. Yesterday I installed an external antenna version of the same ESP32 module. I'm thinking this may get me a better signal to the ESP and possibly overwhelm the noise? Of all the electronics issues I've always found RF and high speed switching interference problems to be difficult to troubleshoot, it doesn't help that not too many people have the expensive equipment to get a good view of things. Is there a way to stop and restart the display output during runtime? This may help me troubleshoot. The plan is to get some PCBs printed soon, that may help things a bit more. I think we are dealing with a lot of variables here and every little bit helps. It's sometimes hard to quantify the effects, as I'm not sure if I'm dealing with local wifi interference or saturation as well. Time to find Esp modules in 5ghz versions. If anyone is curious I make these into aviation weather displays with scrolling weather reports. Video here: I'll update this discussion with results, in case in helps someone else as well. Thank you board707 and mrcodetastic for your comments! Regards, |
Beta Was this translation helpful? Give feedback.
-
Mrcodetastic, I'll try stopDMAoutput() next time and see what happens. I have not tried experimenting with a blank display, but good idea, that may help. I didn't know about those HD-WF1 board, they do look like a neat solution if they work right. I was thinking of wiring in logic converters as a long shot, I may just buy a couple of those boards to experiment with. I put the quality bar higher when I make these for other people; as they usually leave my physical reach, and I prefer not to play tech support over the phone :) Thanks again for your help! Regards, |
Beta Was this translation helpful? Give feedback.
-
Some updates for the curious. I tested with long wires, seeing what would happen if the esp32 was further away from the display, hard to tell the difference with wifi interference, but it did induce glitching in the display. I have not seen a good video out there on what happens with long wires, so here is my HUB75 glitching video :) Shielding the HUB75 display from the ESP32 seems to have made the biggest difference, see attached picture. I used aluminum tape and insulated it with more tape before installing it behind the connector where the ESP32 attaches. I soon realized in all this testing, that my biggest problem with the interference is not when the display is running and has already connected, but it's the INITIAL wifi connection that is more sensitive to interference. Once I shielded parts of the display, I noticed an immediate decrease in the time the initial wifi connection takes. A curious test was with the ESP module plugged into the HUB75, with no display libraries loaded, it seems I still had interference. It appeared the plain fact that the matrix and ESP were plugged into each other and powered was causing trouble. I tried setting all output pins that went to the matrix display to 0 (ground) (before loading of the libraries) to see if maybe floating inputs were the cause, but my results were inconclusive. I know from experience floating inputs can cause trouble, so this may be something to keep in mind for the future. I tried the stopDMAoutput with the screen, I can't really tell if it made a difference, it's possible, but it's very slight. I'm happy with the results from shielding the led matrix at this point. I may have more modules for a simultaneous A/B test in the near future and I may still try the HD-WF1 modules as well. Thanks everyone! Regards, |
Beta Was this translation helpful? Give feedback.
-
Using the orginal criss-cross wiring resulted in a bad picture quality, missing lines and artefacts.

Therefore I changed the wiring, that all is straight:
which resulted in a perfect picture.
Wiring:

Code:
#define PANEL_WIDTH 64
#define PANEL_HEIGHT 64 // Panel height of 64 will required PIN_E to be defined.
#define PANELS_NUMBER 2 // Number of chained panels, if just a single panel, obviously set to 1
//--left row--
#define PIN_R1 32
#define PIN_B1 33
#define PIN_R2 25
#define PIN_B2 26
#define PIN_A 27
#define PIN_C 14
#define PIN_CLK 12
#define PIN_OE 13
//--right row--
#define PIN_G1 19
//GND -> connect to GND other side
#define PIN_G2 5
#define PIN_E 17
#define PIN_B 16
#define PIN_D 4
#define PIN_LAT 2
//GND -> connect to GND below
#define PANE_WIDTH PANEL_WIDTH * PANELS_NUMBER
#define PANE_HEIGHT PANEL_HEIGHT
.
.
.
HUB75_I2S_CFG mxconfig;
mxconfig.mx_width = PANEL_WIDTH;
mxconfig.mx_height = PANEL_HEIGHT;
mxconfig.chain_length = PANELS_NUMBER;
mxconfig.gpio.r1 = PIN_R1; //left row
mxconfig.gpio.b1 = PIN_B1;
mxconfig.gpio.r2 = PIN_R2;
mxconfig.gpio.b2 = PIN_B2;
mxconfig.gpio.a = PIN_A;
mxconfig.gpio.c = PIN_C;
mxconfig.gpio.clk = PIN_CLK;
mxconfig.gpio.oe = PIN_OE;
mxconfig.gpio.g1 = PIN_G1; //right row
// GND
mxconfig.gpio.g2 = PIN_G2;
mxconfig.gpio.e = PIN_E;
mxconfig.gpio.b = PIN_B;
mxconfig.gpio.d = PIN_D;
mxconfig.gpio.lat = PIN_LAT;
// GND
// Display Setup
dma_display = new MatrixPanel_I2S_DMA(mxconfig);
Beta Was this translation helpful? Give feedback.
All reactions