amobbs.com 阿莫电子技术论坛

标题: 庆祝一下,PIZero+ESP32成功驱动LED屏 [打印本页]

作者: leon......    时间: 2019-8-8 11:24
标题: 庆祝一下,PIZero+ESP32成功驱动LED屏
本帖最后由 leon...... 于 2019-8-9 19:48 编辑

LED屏分辨率192*128, 总算对得起这一个月的努力,图像刷新率20HZ,LED屏刷新率70HZ,色彩支持RGB 555,  视频播放效果还算可以,速度受限于ESP32的SPI-SLAVE只有11M

              SPI(11M)                  I2S(20M)
PIZERO ---------------》ESP32------------------》LED屏HUB75

PI Zero本身可以直驱LED屏,但是因为是单核,所以在中间加入了ESP32做屏幕刷新。

PI Zero直驱LED屏的驱动在这里:https://github.com/hzeller/rpi-rgb-led-matrix

PI Zero的SPI驱动使用的是这个库:https://github.com/notro/fbtft

ESP32驱动LED屏我使用的是这个库:https://github.com/mrfaptastic/ESP32-RGB64x32MatrixPanel-I2S-DMA

ESP32的SPI驱动使用的是这个库:https://github.com/kimata/esp32_arduino_spi_slave

整合之后这是现在的效果。

为什么不用FPGA而用ESP32驱动LED屏?不会FPGA啊。FPGA的确是最佳方案。
为什么买PI Zero? PI4买不到,PI3又不想买,PI3二手也不好收。先拿PI ZERO试试水了。下一步打算买个香蕉ZERO回来试试。

[attach]473894[/attach]

作者: 天荒    时间: 2019-8-8 11:26
厉害了,赞一个!
作者: avr-arm    时间: 2019-8-8 11:29
厉害了,赞一个!
作者: genhao2    时间: 2019-8-8 11:29
多块屏拼在一起可以组个大屏幕了
作者: leon......    时间: 2019-8-8 11:43
genhao2 发表于 2019-8-8 11:29
多块屏拼在一起可以组个大屏幕了

这个本身是6块屏拼接成的,想拼接更大的ESP32是不行了,或者上PI4,  或者等ESP32-S2
作者: wxws    时间: 2019-8-8 11:47
漂亮
取图这块请教一下, 是直接读的framebuffer吗?  有没git介绍下


作者: leon......    时间: 2019-8-8 12:11
wxws 发表于 2019-8-8 11:47
漂亮
取图这块请教一下, 是直接读的framebuffer吗?  有没git介绍下

楼主位有连接,fbtft有很详细的介绍,https://github.com/notro/fbtft/wiki/Framebuffer-use
作者: Excellence    时间: 2019-8-8 13:01
厉害了,赞一个!
作者: Himem    时间: 2019-8-8 13:16
i2s推hub75这创意绝了
作者: didadida    时间: 2019-8-8 14:37
好看,发现点阵看起来比细腻的显示屏科技感还要强一些
作者: leon......    时间: 2019-8-8 15:05
高清MP4播放效果

[attach]473928[/attach]

[attach]473931[/attach]

[attach]473930[/attach]

[attach]473929[/attach]
作者: rom    时间: 2019-8-8 15:57
ESP32很强嘛
作者: javenreal    时间: 2019-8-8 16:02
高手 , 强 !
作者: qianj1986    时间: 2019-8-8 16:31
再大点,在远点,完美
作者: deadline2012    时间: 2019-8-8 21:45
leon...... 发表于 2019-8-8 15:05
高清MP4播放效果

楼主这个屏幕是什么型号的
作者: muniao    时间: 2019-8-8 21:59
厉害了。。
作者: leon......    时间: 2019-8-8 22:59
deadline2012 发表于 2019-8-8 21:45
楼主这个屏幕是什么型号的

驱动IC是ICN2037, 接口是HUB75

跟你说,买这个屏老坑人了,驱动IC不同,驱动方式波形就不同,就是同一个驱动IC,又分RGB和BGR(LED脚位不同)。

害我其中有二块屏不能匹配,我的130大洋,,,,,,,
作者: leon......    时间: 2019-8-8 23:01
qianj1986 发表于 2019-8-8 16:31
再大点,在远点,完美

嗯,320*256就比较完美了,等PI-4到了就升级试试。
作者: huangqi412    时间: 2019-8-9 13:27
还以为是做无线显示
作者: kevinchen026    时间: 2019-8-9 13:30
Pi zero ESP32 厉害
作者: 90soso    时间: 2019-8-9 16:02
我有派3,要出,不过串口输出有问题,其他正常,有兴趣可以联系我~~,价格好说~~
作者: 90soso    时间: 2019-8-9 16:03
顺便问一下,这个屏价格几何~~
作者: jjj    时间: 2019-8-9 16:25
楼主,你已经彻底颠覆了我的  世界观
LED 显示
作者: ayumi8    时间: 2019-8-9 17:02
我曹 我曹 高手   我现在还是玩单色的  就弄了个 时钟    图像不会玩哇  
作者: leon......    时间: 2019-8-9 17:35
90soso 发表于 2019-8-9 16:03
顺便问一下,这个屏价格几何~~

屏一片70块左右包邮 64X64
作者: leon......    时间: 2019-8-9 17:37
90soso 发表于 2019-8-9 16:02
我有派3,要出,不过串口输出有问题,其他正常,有兴趣可以联系我~~,价格好说~~ ...

串口输出坏了吗?是3B还是3
作者: motoedy    时间: 2019-8-9 17:41
厉害了,赞一个!
作者: yyts    时间: 2019-8-9 20:18
I2S 有的少位数据?你应该不止一个75接口吧?用多路I2S吗
作者: leon......    时间: 2019-8-9 20:50
yyts 发表于 2019-8-9 20:18
I2S 有的少位数据?你应该不止一个75接口吧?用多路I2S吗

支持8/16/32位,当前用的是16位,只有一个75  ESP32的IO不够用,只能接一路75接口。
作者: yyts    时间: 2019-8-9 21:08
leon...... 发表于 2019-8-9 20:50
支持8/16/32位,当前用的是16位,只有一个75  ESP32的IO不够用,只能接一路75接口。 ...

一个75也要6位数据(两组RGB),I2S有这么多数据位吗?
作者: leon......    时间: 2019-8-9 21:19
yyts 发表于 2019-8-9 21:08
一个75也要6位数据(两组RGB),I2S有这么多数据位吗?

有的,ESP32支持I2S并行8/16/32位数据传输。
作者: iandroid    时间: 2019-8-9 22:13
厉害了,赞一个!
作者: lyg407    时间: 2019-8-10 08:45
厉害,赞一个。

编辑原因:修正错别字。
作者: astankvai    时间: 2019-8-10 14:18
这个效果可以啊。
作者: 90soso    时间: 2019-8-12 09:10
leon...... 发表于 2019-8-9 17:37
串口输出坏了吗?是3B还是3

3b ,串口没有输出,其他正常,需要的话。我要周日才能给你发,周中没时间
作者: leon......    时间: 2019-8-12 15:43
90soso 发表于 2019-8-12 09:10
3b ,串口没有输出,其他正常,需要的话。我要周日才能给你发,周中没时间 ...

什么价格,这里需要3B的坛友很多,报一下价格,总会有不在意串口的兄弟会下手的。
作者: yyts    时间: 2019-8-13 18:59
leon...... 发表于 2019-8-9 21:19
有的,ESP32支持I2S并行8/16/32位数据传输。

是用的LCD模式吗?
作者: leon......    时间: 2019-8-14 10:19
yyts 发表于 2019-8-13 18:59
是用的LCD模式吗?

啊,不是LCD模式呀,用的是I2S 并行,下面是初始化代码 (I2S_PARALLEL_BITS_16):

typedef enum {
    I2S_PARALLEL_BITS_8=8, // BUG: Doesn't work.
    I2S_PARALLEL_BITS_16=16,
    I2S_PARALLEL_BITS_32=32,
} i2s_parallel_cfg_bits_t;


    i2s_parallel_config_t cfg={
        .gpio_bus={r1_pin, g1_pin, b1_pin, r2_pin, g2_pin, b2_pin, lat_pin, oe_pin, a_pin, b_pin, c_pin, d_pin, e_pin, -1, -1, -1},
        .gpio_clk=clk_pin,
        .clkspeed_hz=ESP32_I2S_CLOCK_SPEED, //ESP32_I2S_CLOCK_SPEED,  // formula used is 80000000L/(cfg->clkspeed_hz + 1), must result in >=2.  Acceptable values 26.67MHz, 20MHz, 16MHz, 13.34MHz...
        .bits= I2S_PARALLEL_BITS_16,
        .bufa=0,
        .bufb=0,
        desccount,
        desccount,
        dmadesc_a,
        dmadesc_a
    };

    //Setup I2S
    i2s_parallel_setup_without_malloc(&I2S1, &cfg);
作者: bitcoin2    时间: 2019-8-14 13:42
硬件没有怎么实现的?
作者: deadline2012    时间: 2019-8-14 14:20
leon...... 发表于 2019-8-9 17:35
屏一片70块左右包邮 64X64

这个屏幕尺寸是多少,LED点距离多少
作者: leon......    时间: 2019-8-14 15:34
本帖最后由 leon...... 于 2019-8-14 15:35 编辑
deadline2012 发表于 2019-8-14 14:20
这个屏幕尺寸是多少,LED点距离多少


LED的点距是P3也就是3MM
单块屏幕是192*192mm
图中是6块小屏拼接成的
作者: jiaowoxiaolu    时间: 2019-8-14 15:38
原来是并行输出,我说呢,IIS引脚怎么够用
作者: qwert1213131    时间: 2019-8-19 08:12
漂亮啊       赞
作者: zljcat3721    时间: 2019-8-19 11:34
赞一个,感谢分享
作者: leon......    时间: 2019-10-30 18:08
本帖最后由 leon...... 于 2019-10-30 18:45 编辑

最近有空,画了一块PCB,这下子像样多了。源文件已上传这里
[attach]485433[/attach]
[attach]485432[/attach]
作者: shangxf    时间: 2019-10-30 22:14
厉害了                 
作者: leon......    时间: 2019-10-30 23:18
guojihongwhpu 发表于 2019-10-30 23:09
用什么软件画的板子,3D看起来很牛

用的是KICAD https://www.amobbs.com/thread-5720175-1-1.html
作者: liurangzhou    时间: 2020-4-16 15:04
请教下,这种屏变颜色的原理是什么?我看ICN2037的SPI只能控制开和关,而不能控制电流是多少啊

作者: leon......    时间: 2020-4-16 16:33
liurangzhou 发表于 2020-4-16 15:04
请教下,这种屏变颜色的原理是什么?我看ICN2037的SPI只能控制开和关,而不能控制电流是多少啊
...

动态刷新,比如说刷新8次,1次亮,7次灭,那么就是最低亮度,能控亮度后就可以进行调色了。
作者: liurangzhou    时间: 2020-4-16 17:32
leon...... 发表于 2020-4-16 16:33
动态刷新,比如说刷新8次,1次亮,7次灭,那么就是最低亮度,能控亮度后就可以进行调色了。 ...

那得多高频率?
作者: leon......    时间: 2020-4-16 17:36
liurangzhou 发表于 2020-4-16 17:32
那得多高频率?

是的,需要很高的刷新频率。刷新也提不上来。暂且够用吧。
作者: iamseer    时间: 2020-4-17 03:11
本帖最后由 iamseer 于 2020-4-17 03:13 编辑

LZ你其实搞一块led驱动卡就可以了。我试过5A-75B,有开源驱动方案。只有linux端有千兆网卡即可,usb转出来的也行
作者: leon......    时间: 2020-4-17 10:03
iamseer 发表于 2020-4-17 03:11
LZ你其实搞一块led驱动卡就可以了。我试过5A-75B,有开源驱动方案。只有linux端有千兆网卡即可,usb转出来 ...

我也有想过,但没有找到驱动方案,可以共享一下资料吗?  
作者: iamseer    时间: 2020-4-18 04:55
http://falconchristmas.com/forum/index.php/topic,6871.0.html
https://github.com/FalconChristm ... olorLight-5a-75.cpp

falconchristmas 之前有人研究过这个,是mplayer的插件,很详细,你可以看一下。我当时测试还没有千兆树莓派,所以是用的NanoPi NEO2驱动。百兆网口不能用,我估计新树莓派没什么问题。
开源方案还没有人解决配置问题,所以必须在PC上用厂家配置工具配置好参数,点亮屏幕,写入flash,才能在linux上用。

我不太会写内核驱动,所以是在应用程序里软件渲染好画面,然后socket送出。由于5A-75B的数据包不是标准UDP包,所以必须root才能发送。如果你能成功用内核驱动点亮也欢迎分享。

协议的的话每一帧需要先发0101的包,再发0AFF的包,之后就可以用5500包填充数据,你可以参考github。具体0101还是0AFF负责从缓冲区输出帧我记不得了,但是二者缺一个就不行。另外5A-75B会缓冲大概一还是两帧数据,我也记不清了。




作者: iamseer    时间: 2020-4-18 05:01
有一个诀窍。5A-75B如果你同一个口上屏串得越多,刷新率就越低。我一般一个口只插一块屏,这样用摄像机拍比较不闪。

另外LEDVISION配置软件的操作比较诡异。中文网站上你找不到说明书可以到英文网站或者在google上搜一下,英文说明书是公开的而且比较齐全。
作者: iamseer    时间: 2020-4-18 05:15
本帖最后由 iamseer 于 2020-4-18 05:25 编辑

https://gist.github.com/DeqingSu ... c6246c46d3b728393f7

驱动代码我放这里了,gcc编译一下就行。

旧出厂的5A-75B设置到新一些的LED驱动芯片可能会出一些诡异的问题,看一下固件版本不是最新的话就先升级再测试。
作者: leon......    时间: 2020-4-20 09:59
iamseer 发表于 2020-4-18 05:15
https://gist.github.com/DeqingSun/5205978a25bccc6246c46d3b728393f7

驱动代码我放这里了,gcc编译一下 ...

谢谢了,这个可以学习学习,
作者: vvzhaodan    时间: 2020-7-1 17:52
我用STM32F407VE驱动192x128全彩RGB555,9场原理图(4/16T,8/16T,1T,2T,4T),扫描全屏一次1.3us,扫描一场11ms。现在已经改成驱动超大型点阵屏的方案STM32H745双核MCU,M4 240M内核全速扫描,M7视频解码,DMA搬运内存共享,已经比高成本的FPGA效果好很多了。
作者: polarbear    时间: 2020-7-1 22:56
vvzhaodan 发表于 2020-7-1 17:52
我用STM32F407VE驱动192x128全彩RGB555,9场原理图(4/16T,8/16T,1T,2T,4T),扫描全屏一次1.3us,扫描一场1 ...

灰度只有5比特,显示效果鸡肋; LED 显示屏要显示灰度,起步是8位;  
作者: vvzhaodan    时间: 2020-7-2 10:30
polarbear 发表于 2020-7-1 22:56
灰度只有5比特,显示效果鸡肋; LED 显示屏要显示灰度,起步是8位;

看用在什么方面吧,超大型屏肯定是24bit色了
作者: polarbear    时间: 2020-7-2 12:13
vvzhaodan 发表于 2020-7-2 10:30
看用在什么方面吧,超大型屏肯定是24bit色了

市场上要么就是不带灰度 几十元的烂大街的驱动板;

要么就是带FPGA的 全彩驱动板, 这种主板灰度起步就是8:8:8的;  

而且LED的色域比LCD要宽得多, 所以你这个5bit的方案自己玩玩就算了,没有市场价值的。
作者: vvzhaodan    时间: 2020-7-10 08:57
polarbear 发表于 2020-7-2 12:13
市场上要么就是不带灰度 几十元的烂大街的驱动板;

要么就是带FPGA的 全彩驱动板, 这种主板灰度起步就 ...

用恩智浦的搞定了,灰度8:8:8 256级,128*1024无压力 刷新1900Hz/s  比FPGA方案简单
作者: 13580445117    时间: 2020-8-5 22:28
图像刷新率20HZ,LED屏刷新率70HZ,色彩支持RGB 555
图像刷新率是指每秒画图的速度吗?
LED屏刷新率是指?
色彩支持RGB 555?为什么不是565格式
作者: vvzhaodan    时间: 2021-3-1 13:42
我用STM32H750 驱动大型128x1024 全彩屏 256级灰度,目前成本40元左右,吊打同级FPGA方案。
作者: 工程师030    时间: 2021-3-1 14:44
vvzhaodan 发表于 2021-3-1 13:42
我用STM32H750 驱动大型128x1024 全彩屏 256级灰度,目前成本40元左右,吊打同级FPGA方案。 ...

用H750是因为主频高吗?是不是可以用全志的芯片成本更有优势
作者: fengyunyu    时间: 2021-3-1 14:59
工程师030 发表于 2021-3-1 14:44
用H750是因为主频高吗?是不是可以用全志的芯片成本更有优势

全志的应该更便宜
作者: xintao929    时间: 2021-3-8 10:29

厉害了,赞一个!
作者: WUJIANLING    时间: 2022-4-6 20:45
朋友给个代码测试一下,“STM32H750 驱动大型128x1024 全彩屏 256级灰度,目前成本40元左右,吊打同级FPGA方案”
作者: WUJIANLING    时间: 2022-4-6 20:46
vvzhaodan 发表于 2021-3-1 13:42
我用STM32H750 驱动大型128x1024 全彩屏 256级灰度,目前成本40元左右,吊打同级FPGA方案。 ...
(引用自65楼)

太厉害了,代码能借鉴一下吗?
作者: vvzhaodan    时间: 2022-4-7 14:18
WUJIANLING 发表于 2022-4-6 20:46
太厉害了,代码能借鉴一下吗?
(引用自70楼)

现在H750涨价到100元一片了,性价比不算高了
作者: WUJIANLING    时间: 2022-4-8 00:44
没有吧,我前两天买了一块开发板,就80块钱
作者: armok.    时间: 2022-5-19 06:28
WUJIANLING 发表于 2022-4-8 00:44
没有吧,我前两天买了一块开发板,就80块钱
(引用自72楼)

此人:

违反版规使用大字体、谩骂坛友,WUJIANLING(手机号码:13580445117,4350098@qq.com,任君行-剑之凌)来泼妇骂街了 https://www.amobbs.com/forum.php?mod=viewthread&tid=5765955




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4