I2S-parallel example: Drive a 64x32 display

ESP_Sprite
Posts: 9764
Joined: Thu Nov 26, 2015 4:08 am

Re: I2S-parallel example: Drive a 64x32 display

Postby ESP_Sprite » Thu Oct 05, 2017 11:10 am

Yes, these displays usually can be daisy-chained using an 14-pin ribbon cable. Needs some software rework; I'm sure you can figure out that bit ;)

BuddyCasino
Posts: 263
Joined: Sun Jun 19, 2016 12:00 am

Re: I2S-parallel example: Drive a 64x32 display

Postby BuddyCasino » Thu Oct 05, 2017 11:28 am

I see, yeah I'll figure it out. Sorry for bombarding you with questions. ^_^

wobblyboots
Posts: 19
Joined: Mon Sep 18, 2017 4:48 pm

Re: I2S-parallel example: Drive a 64x32 display

Postby wobblyboots » Thu Oct 05, 2017 1:45 pm

Yes, they daisy chain like one long shift register. Of course, the software needs to change at that point.

wobblyboots
Posts: 19
Joined: Mon Sep 18, 2017 4:48 pm

Re: I2S-parallel example: Drive a 64x32 display

Postby wobblyboots » Thu Oct 05, 2017 2:18 pm

Taking Sprite_tm's work and adding extra colour(s).
image1 (2).jpeg
image1 (2).jpeg (164.46 KiB) Viewed 33867 times
Jinx is a ... well it's a little hard to describe. It's a LED performance application that allows you to send fun graphics to LED and other lighting devices. All the processing is done on a PC and then it sends frames to the device.

It can talk a few protocols, of which I've picked TPM.net since this is over IP and the simplest one.

I took Sprite_tm's app and hacked in receiving tpm.net frame reception, resulting in this:
jinxdemo.gif
jinxdemo.gif (16.65 MiB) Viewed 33867 times
It doesn't look too bad at all, even through this dodgy GIF conversion from iphone video. In real life, the colours are lovely.

Some issues:

- Dropped packets hurt it of course- this is on my home wifi network, so can't imagine why there would be too many dropped UDP packets, but there are. Certainly the esp32 handles it better with fewer packets in a row, but I would be delighted to find that I've done UDP reception wrong and is easily fixed
- Even without the dropped frames, the regulation in making frames regular isn't great, so sometimes it's fine, sometimes it's not, again, I've done no work on making this better
- The frame display mechanism has a few issues - the left most (zero) pixel seems to be wrapped from the right hand side of the display (should be easy to fix) and there are some ghosting issues especially with green (not sure where this is coming from)

Certainly needs some work but shows the capabilities of the chip and a cheap display.

For Jinx:

- Choose File | Open, choose the demo.jnx. Do this first, since the display settings are embedded in here.
- Choose Setup | Matrix Options , enter 64 x 32, and 1 and 1 for pixel step and space
- In Setup | Output Devices, choose add, and enter tpm-net, the IP address of your esp32, channels = 6144 (which is 64x32x3) and Chan/Block of 1024. This determines how many UDP packets per frame are sent, so if you say "1" then you'll get 6144 UDP packets per frame. Seems to max out at packet size of 1500 (actually it lets you put in any value but then just fails to send packets), which is a shame since I'd hoped the wifi max of 1536 would mean one less packet per frame
- Now go to Setup | Output Patch, make sure red, green, blue are 0, 1 2, and hit Fast Patch. Enter 64 x 32, Linewise Top Left, RGB and 0, and OK. All the "pixels" in this window should show green.
- In View menu, turn on Scene list and Chase list.
- Find the Chase list window and press Play.

Finally, from the Setup menu, turn on Start Output.

Jinx should start sending packets to your ESP32 and you'll get pretty pictures. You can even set it up to take live video from your webcam or the actual screen output and shove it on the display.

Code is attached. Warning, ugly, hacked code for the purposes of seeing if I could get this working in an afternoon.

Ian.
Attachments
led_panel_example_jinx_v2.zip
(70.73 KiB) Downloaded 1644 times

bogdanr
Posts: 1
Joined: Wed Oct 18, 2017 5:04 am

Re: I2S-parallel example: Drive a 64x32 display

Postby bogdanr » Wed Oct 18, 2017 5:31 am

Looks awesome!
How do you wire the ESP32 to one of these displays? I would imagine more than 10 pins have to be used (RGB*3+ABCD+LAT+CLK) but I not sure how.
Any plans to also make an Arduino library?
It would be great if we could use the Pixel Led Art app to send animations via bluetooth.

User avatar
rudi ;-)
Posts: 1729
Joined: Fri Nov 13, 2015 3:25 pm

Re: I2S-parallel example: Drive a 64x32 display

Postby rudi ;-) » Sat Nov 25, 2017 4:40 pm

@Jeroen ( no hurry )

nice work, my panel was delivery.
IMG_9410_s.jpg
IMG_9410_s.jpg (353.87 KiB) Viewed 33615 times
now i can test your code.

did you pullup or pulldown any of the pins ( r1, g1, b1, r2, g2, b2, a, b, c, d, clk, lat, oe ) ?
why i ask:

i try the I2S parallel sample on a 64x32 ( P3-(2121)64*32-16S-D1.0 3mm LED Panel.
i used different boards ( nano32, jesp32nano )
nano32 have a led on GPIO16 example ( r2 ).
i think this disturb the line.

i get not a clear pic/animation.
in the bottom lines the led is more green.
first_try_64x32.jpg
first_try_64x32.jpg (115.84 KiB) Viewed 33616 times

a second try with jesp32nano the bottom lines now more ok.
but the cat is in bottom middle not white, it is more blue.
and the rows i think are gone 1-2 rows to the left side.
i must studdy first the shematic of jesp32nano, can be there are some pullups/pulldowns in the line
cause comes with debug modul on topside.

what you mean,
can you say, which pins must have pullup, pulldown, or which does not need/do not use pullup, pulldown?
R1 (02)
G1 (15)
B1 (04)
R2 (16)
G2 (27)
B2 (17)
A (05)
B (18)
C (19)
D (21)
LAT(26)
OE (25)
CLK (22)

i think, it is different which board is using, which board you using jeroen?
my next step is using "empty" wroom32 modul without a led or other.

my connect was:
conn.jpg
conn.jpg (52.5 KiB) Viewed 33613 times
best wishes
rudi ;-)
-------------------------------------
love it, change it or leave it.
-------------------------------------
問候飛出去的朋友遍全球魯迪

User avatar
rudi ;-)
Posts: 1729
Joined: Fri Nov 13, 2015 3:25 pm

Re: I2S-parallel example: Drive a 64x32 display

Postby rudi ;-) » Sat Nov 25, 2017 7:14 pm

(limit 3 attached files)

append post
it looks like this
anim_run.gif
anim_run.gif (745.94 KiB) Viewed 33611 times
best wishes
rudi ;-)
-------------------------------------
love it, change it or leave it.
-------------------------------------
問候飛出去的朋友遍全球魯迪

User avatar
rudi ;-)
Posts: 1729
Joined: Fri Nov 13, 2015 3:25 pm

Re: I2S-parallel example: Drive a 64x32 display

Postby rudi ;-) » Sat Nov 25, 2017 8:38 pm

@jeroen
figured it out.
after identifying your gif,
it had to be DevKitC.
must_be_DevKitC.jpg
must_be_DevKitC.jpg (68.85 KiB) Viewed 33608 times
after I remodeled everything
and DevKitC
tata:
your cat is "dancing in the night"
IMG_9411_s.jpg
IMG_9411_s.jpg (192.37 KiB) Viewed 33608 times
I have not used pullups / pulldowns now.
DevKitC was taken as it was.

Thanks for the example, come at the right time.
if you have a time frame (single frame)
perhabs you can suggest your mind to pullups/pulldown
usually and better to use mind from you is very welcome

what you mean,
can you say, which pins must have pullup, pulldown, or which does not need/do not use pullup, pulldown?
R1 (02)
G1 (15)
B1 (04)
R2 (16)
G2 (27)
B2 (17)
A (05)
B (18)
C (19)
D (21)
LAT(26)
OE (25)
CLK (22)


@wobblyboots
i will try your example, cause DMX and UDP was my way from begin,
so your example is very welcome too. txs!

best wishes
rudi ;-)
-------------------------------------
love it, change it or leave it.
-------------------------------------
問候飛出去的朋友遍全球魯迪

ESP_Sprite
Posts: 9764
Joined: Thu Nov 26, 2015 4:08 am

Re: I2S-parallel example: Drive a 64x32 display

Postby ESP_Sprite » Sat Nov 25, 2017 10:55 pm

@Rudi: Sorry, haven't seen this earlier than now. You shouldn't need pullups/downs, as the ESP32 actively drives the pins all of the time. However, keep in mind that you're playing with pretty sensitive high-speed signals here; if stuff happens that delays a signal too much or 'blunts the edges' (by somehow introducing parasitic capacitance on some or all wires) you can get strange effects.

User avatar
rudi ;-)
Posts: 1729
Joined: Fri Nov 13, 2015 3:25 pm

Re: I2S-parallel example: Drive a 64x32 display

Postby rudi ;-) » Sun Nov 26, 2017 2:51 pm

@Jeroen
thank you! all works now like a charme to me. many txs for this example, now I2S parallel mode on ESP32 goes more and more clear to me, this I2S mode is a high pulse for data. the esp32 works with this pretty good, more as i have thinked; and btw wifi works parallel without a problem here - this SoC is pure a "big work station/machine" , Jeroen thank you again.

@wobblyboots
see it from my face:

:D
test.gif
test.gif (3.48 MiB) Viewed 33518 times
txs for the tip to JINX!, this helped for the start in this.

btw:
i changed from station mode to ap mode, so the esp32 is SoftAP and Server at sime time and i need no extra AP.

(app_main.c)

Code: Select all

    //~rudi
    // can we create a SoftAP too?
    // yes - so we need not an extra AP in the network
    wifi_init_softap();
    // wifi_init_sta();
@BuddyCasino
the audio theme is here very interessted too - audio vu ...
final, i want use 9 panels ( 3x3 ) , price ( 20 USD/p3panel) or if price (25-29 USD/p2.5panel) is good, perhabs 16 ( 4x4 )
at first steps i will try out for 4 panels ( 128x64 )
first i must search right cheap power supply, XT power supply or other i think.

Code: Select all

Panel	Area		I		  Power
-----------------------------------------
1		64x32		 4A		5Vx4A= 	 20W
4		128x64	  16A		5Vx16A=	 80W
9		192x96	  36A		5Vx36A=	180W
16	  256x128    64A		5Vx64A=	320W
but will look for bigger (64x64) and finer ( p2) RGB offers too.

just in time, i connect a second 64x32 panel and try out to config the code for more as one panel.

best wishes
rudi ;-)
-------------------------------------
love it, change it or leave it.
-------------------------------------
問候飛出去的朋友遍全球魯迪

Who is online

Users browsing this forum: No registered users and 28 guests