hzeller / rpi-rgb-led-matrix

Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO
GNU General Public License v2.0
3.63k stars 1.15k forks source link

64x64 P2.5 LED panels #120

Closed KentWalker closed 6 years ago

KentWalker commented 8 years ago

I have had a quick look at some 64x64 P2.5 panels and discovered there is an additional decode line 'E' on the HUB75 interface. This is pin 8, which is currently pulled to ground on the Raspberry Pi adapter.

I would like to add this to the GPIO using either GPIO0 or GPIO1 (since we never are going to use the auto ID, I thought these might be safe). Earlier model B's have a P5 port which brought out GPIOs 28..31 but they don't seem accessible on the R.Pi 2 version. How do I go about mapping the GPIO (in the gpio.cc file) and what do I need to change in the framebuffer.cc file to add an extra row? (DumpToMatrix() only, or is there something else I need to do?)

U2 on the adapter board has a spare buffer (A0/B0), so not much to change on the PCB.

hzeller commented 6 years ago

The 'trailing line phenomen' is visible on some panels and can be influenced with the lsb nanoseconds, it also affects regular panels. This is an hardware issue and nothing really else than output-enable time that can be done as far as I know.

It is plausible that the RGB sequence is swapped, some of these panels are not taking the printing on the connector and the actual color sequence so accurately ... this is why I had to add the --led-rgb-sequence flag.

I don't have time to build and sell boards, but have a look at #406 there are people discussing a board that is apparently compatible and available.

maitredede commented 6 years ago

I have rewired to the pi, and retested patch 2 with demo 0. With default values, I see a weird rotating thing : sudo ./examples-api-use/demo --led-rows=64 --led-show-refresh --led-chain=2 --led-rgb-sequence=RBG -D 0 --led-slowdown-gpio=1 --led-pwm-bits=11 https://youtu.be/GdAlYLxShDo

With pwm-bits=1 : https://www.youtube.com/watch?v=5xN6GYI8jPo With pwm-bits=6 : https://www.youtube.com/watch?v=HVLfxo4P6eo

With gpio-slowdown=4 : https://youtu.be/guTP3AmaN3E With gpio-slowdown=4 pwm-bits=6: https://youtu.be/Vk4CfGBu9sw

Baerliner commented 6 years ago

I have a single 32x16 Display with 1/4 scan, but the demo is not ok.
I try: sudo ./examples-api-use/demo --led-rows=16 --led-pwm-bits=11 --led-show-refresh --led-chain=2 --led-rgb-sequence=RBG --led-slowdown-gpio=4 -D 0

This is the Demo: https://www.youtube.com/edit?o=U&video_id=3GBjaEODnyU is this the same Problem?

hzeller commented 6 years ago

No, this is simpler @Baerliner : you just need to write a transformer for your pixel mapping. The 1:4 scan displays behave like 64x8 displays with two 'wrapped around' pair of strips of 4 pixels each.

maitredede commented 6 years ago

@hzeller Demos of your lib with my panel : animated gif https://www.youtube.com/watch?v=O2vAXG4YBgI https://www.youtube.com/watch?v=5vsjHQbCAys

Using a C# app to read/convert images, your lib with my poc code for the panel...

maitredede commented 6 years ago

Hi @hzeller, I confirm that the adapter provided by https://github.com/hzeller/rpi-rgb-led-matrix/issues/406 works fine with my panel. For the library updates, I will check with your patches and get back to you.

alexgithub56 commented 6 years ago

Hi @hzeller,

I have 64x64 P2.5 module but the demo is not work. I used: sudo ./demo --led-no-hardware-pulse --led-gpio-mapping=regular --led-rows=64 --led-chain=2 -D 0 this is result: https://youtu.be/_yVozfE0Zfg and this is module pinout: img_1494 img_1495

alexgithub56 commented 6 years ago

It work right now.

hzeller commented 6 years ago

So I haven't heard anything about the library test changes of panels with AB address mode, so I've now submitted my changes, switchable via the flag --led-row-addr-mode=1.

If you have a 64x64 panel that only has AB in the address lines, try if this allow to make it working. It works for the panel I have tested here, but maybe it needs tweaks for other panels ?

(If you need tweaks and have figured out the protocol needed via a scope or otherwise, change class ShiftRegisterRowAddressSetter in lib/framebuffer.cc and let me know)

alexgithub56 commented 6 years ago

Hi Hanner Zeller,

Thank you for your great library. I have attach my project video. It's 64x128 RGB LED matrix. And I have 2 question.

  1. How we create text to scrolling and change color?
  2. How we create animate 64x128 file? Could you mention me?

Regards, Anurath

On Sat, Jan 20, 2018 at 3:26 PM, Henner Zeller notifications@github.com wrote:

So I haven't heard anything about the library test changes of panels with AB address mode, so I've now submitted my changes, switchable via the flag --led-row-addr-mode=1.

If you have a 64x64 panel that only has AB in the address lines, try if this allow to make it working. It works for the panel I have tested here, but maybe it needs tweaks for other panels ?

(If you need tweaks and have figured out the protocol needed via a scope or otherwise, change class ShiftRegisterRowAddressSetter in lib/framebuffer.cc and let me know)

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/hzeller/rpi-rgb-led-matrix/issues/120#issuecomment-359155538, or mute the thread https://github.com/notifications/unsubscribe-auth/AMYFL_2ksus46R_lZxSys5Ezyu5ETZHEks5tMaMlgaJpZM4HlCc9 .

AsafFisher commented 6 years ago

I have the 64x64 panel but from what I saw there are A, B and C not only A and B... Here is the information the seller provides:

Signal name Pin number Description
A 9 The lowest bit of row address
B 10 The second lowest bit of row address
C 11 The  highest bit of row address
LE 14 Latch of row
CLK 13 Clock
EN 15 Enable
R1 1 Red data 1
R2 5 Red data 2
G1 2 Green data 1
G2 6 Green data 2
B1 3 Blue data 1
B2 7 Blue data 2
GND 4,812,16 Grounding

I tried to use your original wiring, looks like that: sudo ./demo --led-rows=64 --led-cols=64 --led-no-hardware-pulse -t 10 -D 0 output: img_7020

Seems like only 2/4 of the panel works for some reason.

When I added the tag --led-row-addr-mode=1 the screen does not work.

AsafFisher commented 6 years ago

I tried to move a pixel down vertically it seems like the middle part and the lower part are shifted up 1/4 (overriding the upper and second mid part)

hzeller commented 6 years ago

@AsafFisher

So looks like you have a standard 64x64 display with [A, B, C, D, E], but your supplier did not specify that properly in the documentation. Your problem is that E is not connected, so everything in the second half folds itself up to the top again because E is kept to zero. This is why you see these strips overlay each other.

How did you connect the panel ? If you have connected it via the wiring description, you need to make sure to also connect the E line either to Pin 4 or Pin 8 wherever it is on your panel (might need to try).

If you are using the adapter, you can choose it via a jumper.

If you are using the Adafruit HAT, you have to make a little hardware mod so that it works.

erice194 commented 6 years ago

First, thank you so much for taking all the time you do to continue to help everyone. If you have a donation link, please share!

I have the same panels and problems as AsafFisher. However, I only realized the Adafruit tutorial and github link were outdated... after I started. I have a RaspPi3B and an Adafruit RGB Matrix HAT. I have already soldered the GPIO and HUB75 connectors to the HAT. Pardon the newbie question as I am a cable solderer and not used to working with PCB, but do I need to desolder the HUB connector so I can solder a bridge from 24->4 Could I make that connection from underneath the board? How can I be sure I'm supposed to go to 4 and not 8? Can I go to both and sever each connection from the rest of the board?

I see the illustration pictures in the 64x64 with E-line on Adafruit HAT section, but do you happen to have a picture of the completed mod? Again, many, many thanks!

erice194 commented 6 years ago

Maybe Ill just sell these displays and buy easier ones to work with.

hzeller commented 6 years ago

@erice194

If you directly connect the wire, you don't have to unsolder the HUB connector, just scratch the tiny GND connection as shown in the hardware mod.

You can test if pin 8 or pin 4 works if the 'E' line is not marked on your matrix board. There is no big harm in trying and then you see.

The completed mod is essentially having a wire from the source to the destination. The issue with this is of course, that that line will not be voltage adapted to 5V, so if you are really fancy then you lift a leg of the HCT245 and wire that up, but this is a little more advanced.

I really suggest to just solder up an adapter whose plans are provided in this project.

If you get another board that only does A,B, be aware that I have only ever tested one of these, they might be different, but would work directly with the Adafruit HAT at least electrically.

The Adafruit HAT only does four address lines, so typically you're limited to 32x32 or 64x32 panels. If you want to have the fastest update rate, use 32x32 with 1:8 multiplexing or 32x16 with 1:8 or 1:4.

AsafFisher commented 6 years ago

I have a (might not small) question for you @hzeller wonder if you could help. How do you in general reverse engineer such product? How do you know how the clock works with byte transfare? I’d like to reverse engineer this pcb just for the experience and understanding. Thank you. So for example to play with this board can I set clock to whatever speed I want for example?

THANK YOU very much for your time sir!

hzeller commented 6 years ago

@AsafFisher Mostly educated guesses and experimenting. It helps that the inputs are typically marked, so R1, G1, B1 is pretty clear and CLK an Strobe as well; experimenting with that then reveals that A, B, C, D set addresses in sub-panels. Also putting yourself in the egineers' shoes and thinking "how would I build such thing" or "what would be a reasonable approach", then testing hypothesis is helpful.

Reverse engineering on the chip level often works, but is hard for these panels: they often have specific chips for which there are no datasheets anywhere online. So you might find some things, but it is probably not worth it. These panels typically work all very similar. The one you have seems to be a standard one with A-E addressing. If you measure between pin4 or pin8 to GND, you can also see which is grounded, so which is then probably the E.

Regarding clock speed: you'd assume (and see in this case) that these are standard 74x TTL chips, so clocking is probably limited into the few tens of Mhz range. Then you know that this can be long chains and observe that the signals are not differential, so that as well gives a clue that this can not be overly fast. And yes, turns out these panels typically can't really get much faster than 10-30Mhz depending on the panel.

hzeller commented 6 years ago

@MaitreDede Can you test your panel with this --led-row-addr-mode=1 change ? It is essentially the last patch I had made accessible with a flag. I think last time you reported that you still some glitches with my previous patches, so if you can have a look and maybe modify ShiftRegisterRowAddressSetter so that it works with your panel, that would be great. Maybe we then can get a universal version that should work typically with these A/B panels.

Thanks!

maitredede commented 6 years ago

Hi @hzeller I would be pleased to test it :) I saw the updates, but I did not had spare time yet to give it a hand. I will report as soon as I give it a hand (within the next days).

erice194 commented 6 years ago

Is there anywhere to buy the Active-RPi-3xHub75-Adapter E-Line fully built?

https://github.com/hzeller/rpi-rgb-led-matrix/raw/master/img/three-parallel-panels-soic.jpg

maitredede commented 6 years ago

Hi @erice194. I bought one from here : http://www.electrodragon.com/product/rgb-matrix-panel-drive-board-raspberry-pi/

2018-01-25 12:23 GMT+11:00 erice194 notifications@github.com:

Is there anywhere to buy the Active-RPi-3xHub75-Adapter E-Line fully built?

https://github.com/hzeller/rpi-rgb-led-matrix/raw/master/ img/three-parallel-panels-soic.jpg

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/hzeller/rpi-rgb-led-matrix/issues/120#issuecomment-360330298, or mute the thread https://github.com/notifications/unsubscribe-auth/ABrwIGcbDVlDrP5AL3CuwwTr5vGbypUxks5tN9ecgaJpZM4HlCc9 .

maitredede commented 6 years ago

Hi @hzeller Guess what ? 😄

sudo ./demo --led-no-hardware-pulse -D 0 --led-rows=64 --led-cols=64 --led-row-addr-type=1

... with the electrodragon board...

Working flawlessly 🥇

Thanks for your time :)

birdtechstep commented 6 years ago

I have P4 64x64 (icn2038s) HUB75E now not work display blank. http://pmod86499.pic35.websiteonline.cn/upload/Q4F32V1.pdf

hzeller commented 6 years ago

How did you connect it @birdtechstep ? This one needs the E-line connected to pin 8.

birdtechstep commented 6 years ago

@hzeller Yes. I connect E-line to pin 8

hzeller commented 6 years ago

if the display is dark, then there are other problems. Power ? Does the panel have proper voltage on its 5V input ? Did you connect all the GNDs ?

birdtechstep commented 6 years ago

Yes. I use active-3 set pin 4 to GND, pin 8 to E-line power 5V 40A

P5 64x32 (connect pin 8 to GND work)

hzeller commented 6 years ago

So if your panel is an icn2038, probably this is similar to #466 - please continue on that issue with this. Apparently these panels don't work, but I haven't seen such a panel.

birdtechstep commented 6 years ago

Thanks you. @hzeller

MartyMacGyver commented 6 years ago

@AsafFisher Did you ever get your 64x64 panel working? (The one that says it's (A,B,C) but probably isn't?)

alm3dga commented 5 years ago

@hzeller Hi. I have the same problem with strips. , I haven't found solutions. May you check my setup? 1)Strips issue screen: https://clip2net.com/clip/m47983/03a52-clip-323kb.jpg https://clip2net.com/clip/m47983/661c9-clip-483kb.jpg https://clip2net.com/clip/m47983/2776f-clip-617kb.jpg https://clip2net.com/clip/m47983/d7f11-clip-89kb.jpg

2)My 64x64 2.5mm S32 led model https://aliexpress.com/item/32733178058.html https://clip2net.com/clip/m0/8984d-clip-59kb.jpg I have no info about type of adress lines (ABCDE or AB) 3) I use this RPi3 module as hat http://wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:rgb-led-matrix-driver-cap hub75 pins of this module https://clip2net.com/clip/m47983/40907-clip-15kb.png https://clip2net.com/clip/m47983/9c3cc-clip-127kb.png

Please help. I tested 4 panels and have the same issue with of them. I don't know the way to fix that. Is it possible that all 4 led panels are defective?

embedded-creations commented 4 years ago

I'm trying to add support for AB address panels to SmartMatrix Library, but I have some hardware limitations that mean I can't use the exact same signal timing that this library does. I can only toggle the AB lines while the latch signal is high, so I would have to shift my pixel data out, set latch high, toggle the AB lines, set latch low. Does anyone know if that would work with these panels?

(If anyone is interested in the details, to save pin count and RAM, the address lines are toggled by the RGB lines, and their state is stored in a transparent latch IC controlled by the Latch signal. See IC2 in the schematic)

I would love to be able to answer this question for myself, but I've had a hard time buying AB address panels for testing. Ironically these only seem to be sent to people that don't want them, while I've tried a few Aliexpress listings shared by people that got AB address panels and always been sent ABCDE address panels. If anyone can recommend a vendor that will sell and actually ship AB address panels, or is willing to sell, donate, or loan me a panel, I'd be grateful. I'm in the UK, but occasionally visit the US.