5

I would like to use the Raspberry Pi 3B+ to operate the rectangular HyperPixel 4.0 touchscreen from Pimoroni. However, I don’t want to plug the touchscreen directly onto the Raspberry Pi, but instead use a 3.5 meter long cable to connect the touchscreen to the Raspberry Pi.

My structure is such that I bring the Raspberry Pi to a circuit board using a 40-pin cable. From there I pick up the I²C signal so that I can connect some I/O’s on the board. There is also a 40-pin connection on the circuit board, to which I can connect my 3.5 meter cable to the HyperPixel 4.0.

When I still had the cable connection from the circuit board to the HyperPixel 4.0 with a 40 cm cable, everything worked fine. However, when I replaced the 40 cm long cable with the 3.5 m, the display only flickered, but the touch still worked. I replaced the 3.5 m cable again with the 40 cm cable and the image display on the touchscreen still didn’t work. However, if I plug the HyperPixel directly onto the Raspberry Pi header again, everything works again.

At first I thought it was the I/O board that connects the Raspberry Pi to HyperPixel, but replacing this board didn’t help either. I’m at a loss, because I don’t know where to start troubleshooting. How can I do it?

MatsK
  • 2,882
  • 3
  • 17
  • 22
manintree
  • 69
  • 4

4 Answers4

12

All cables have a length limit. When you exceed that length limit, the signals in the cable attenuate due to resistance of the cable, get deformed due to capacitance and inductance in the cable, and radio waves both leak out of the cable and into the cable causing external RFI and internal noise. If there are multiple wires in the cable, you can also get cross talk, where signals from neighboring wires leak into each other. (Longer more advanced cables might also have timing issues caused by the length of the cable.)

If attenuation is the only problem, you can add a booster. However ribbon cables, especially something like 40 pin wide ones, suffer all of the above problems even if the cable is only a few feet long, and there is no way it is going to work over a meter!

The only solution for longer cables is to change to another signal format (like HDMI(7m?) or ethernet(100m)) that is designed for longer cables with sufficient bandwidth.

For high bandwidth / high frequency signals, to get any significant length, you need to use transmission lines which internally use either twisted pair or coax or something similar which tries to reduce radio leakage in the cable, and the signal is designed to take advantage of the inductance and capacitance in the cable rather than have their signal mangled by it.

user10489
  • 1,001
  • 1
  • 6
  • 11
5

Your Hyperpixel has a resolution of 800 x 480 x 60fps, so the data rate is 23,040,000 pixels per second, plus some gaps for synchronisation.

You can't send such a fast signal over an arbitrarily long cable. You're basically dealing with radio frequencies, and it won't take much cable capacitance & inductance to degrade the signal so it becomes unusable.

jayben
  • 597
  • 2
  • 4
2

Think about what else is connected to your Pi which should be 3.5m away from the screen. Are those USB devices? Some I2C sensors? A power supply?

It could be that your best option is to keep the screen plugged into the Pi and have long cables for everything else you need in your system.

Dmitry Grigoryev
  • 28,277
  • 6
  • 54
  • 147
1

The bottom line is that DPI was simply not designed for those kinds of distances. It might be possible to stretch it out by building something like a custom cable with individually screened wires (or at least a ground between every pair of signals) and then experimenting with different terminations on the signal lines, but it would be at best a horrible hack.

Either you need to locate the Pi with the screen, or you need to use a screen that uses an interface that is designed for long cables like HDMI.

Peter Green
  • 6,595
  • 1
  • 21
  • 26