单片机低代码交互UI:LVGL+Squareline+Arduino学习记录

这个系列的第一篇,也是我在网上发布的第一篇帖子,写写心路吐槽和演示下最终效果。

cut-off

也许是从接触了纯软件和网页之后,对以前那种框框块块、或者纯文字显示的显示效果越看越难受(以前感觉还可以),然后就是为了炫各种踩坑。

说实话写这个系列文章之前其实我并未搞过纯代码的LVGL,对于LVGL的UI制作一看那代码就脑袋大,于是寻求界面化工具,Squareline是LVGL官方的工具,试用期过了后支持最多5个页面,50个部件。

190刀一年。。。等待专业人士。。。

最开始接触Squareline的时候毛病一大堆,扔进了留观区,后来找到恩智浦的GUI Guider,唉~。

不知是我没找到还是本就如此,就制作一个漂亮的屏幕界面而言,找教程和工具是真的难,当然更难的还有素材,如果能坚持做下去,有想法弄一个素材的合集,搞创意、电路、编程已经很费劲了,一个坑连一个坑,设计UI这种东西反正我是没有艺术细胞,不成套的东西凑起来是真的难看,国内网络上的玩意也是真的一言难尽。

反正兜兜转转不知多久最终又转回来了Squareline,即使它毛病不少,但确实自家更懂自家货。

吐槽一句,现在的网络简直就是个大型垃圾场,同质化太严重了,LVGL作为一个主打硬件的UI框架,竟然特喵每个讲Squareline这个软件的教程都不讲应用的代码,真搞不懂入门入了个啥?

送入坑吗?

下到板子上能亮就完了,放个动图上去不更简单?交互不需要控制是吧,反正我是从小白趟着坑过来的,LVGL的代码我一个字都不懂,我只知道看完教程和没看没什么区别,该不会用还是不会用。

软件上就这么点东西,只要搞懂界面上的英文是什么意思,稍微动手实践一下就知道它是干什么的,特喵又不是PS或者Altium。

古话还讲送佛送到西,你这站门槛子上瞧屋内,蹭蹭就不进去是吧?

还是说官方教程没说就默认大家都懂了?(油管上官方视频也是个鬼屎)

不避讳不藏着,我喜欢拿来主义和开箱即用,技术比我牛的人多了去了,我就是个普通爱好者,我能熬几个通宵造轮子,但却并不喜欢研究别人的代码,尤其是贼多的那种,你不懂它的逻辑再没有注释是真的恶心。

硬件这条路,即使是别人走过的也是一坑又一坑,那些炫成果的,只有他自己知道糟了多么老罪。

cut-off

最开始用Squareline时最头痛的就是导出的代码如何使用,当然不是怎么下到板子里运行,而是我的代码如何获取LVGL控件的数据、和LVGL控件触发的事件如何执行我的代码。

这两条也是交互最重要的东西,否则LVGL就成了自己玩自己的,和你毫不相干。

由于之前没接触过LVGL,网上那些讲LVGL的教程和官方文档也是真的难顶,找遍全网没一个说怎么用的,百度翻到几十页都特喵一样是真的想哭。

最终在官方论坛靠翻译找了良久之后才找到,其实真的很简单,删掉ui_events.c或者干脆不输出,直接在主函数里创建你那个名字的事件函数就行,教程里多这么句话亏网费了还是怎么了?

简单也只是在知道了才简单,不知道的时候谁知道这玩意从哪来到哪去的,对于小白是真特喵的不友好。。。

这篇不是讲这个的先略过,后面详说从零构建UI,再到结合自己代码的每一步。

实战不多讲原理、只讲应用,有时候挺搞不懂的,我就只想用,为什么都想把我往精通上送,最终半瓶子咣当还没有用的熟效果好,贼无语。

甚至还有人教程搞留一手、让你猜这种环节,实在是不知道该怎么评价,也许是忘了自己踩过的坑?或者让别人掉坑里更有乐子?

有时真的你觉得就特喵这啊,的东西,可能在别人那就是个坎。也许是我太菜了?那么我为我的菜发言,你这我真不懂。。。

cut-off

效果演示不用官方例程,一切从头踩坑。

Squareline 版本 1.3.0,

LVGL 版本 8.3.7,

TFT-eSPI 版本 2.5.0,

TFT屏幕是ILI9341驱动、 2.8寸、 240*320分辨率、电阻触摸、 16位色,

主控为合宙ESP32-C3,

Arduino平台(其它平台的用法大差不差的,自己搞吧)。

很多人觉得Arduino低端、是玩具,但真的没必要,实际应用中Arduino做的产品还是有很多的,天天对着寄存器表挠头才是高大上吗?这个社会的节奏越来越快了,等你磨出来一个产品人家都迭代两三代了,还有什么优势可言。当然BUG多也是Arduino的劣势,开源平台没办法的事。

同样我也挺看好合宙家Luatos的,虽然也在他家评论区里喷过,只能说有待完善,尤其是底层部分的手册文档,之前有个项目想移植个库过去,搞了好久最终放弃了。就目前而言个人感觉,lua这个语言真的很友好,不过luatos目前做点小东西可以,在某些方面比Arduino优势更大,可一旦复杂了,就工作量而言,还是去Arduino里抓虫子去吧,生态和环境还没建起来。

作为一个国产开源平台,我还是挺想贡献一份bug的,讲基础使用的估计都烂大街了,还是等研究明白了再说吧。

物料都是成品模块,碰到的最大的坑就是连线,我的杜邦线不是那种三五块钱40p一板的便宜货,25CM的线,SPI不通、不稳定。。。IIC和SPI我甚至用过近半米的线都没出过问题,但这个就碰上了,最终焊洞洞板上所有问题全部消失。

屏幕加触摸占用9个IO,算了下C3的IO,抛去那些有限制的,带完这块屏没剩几个,所以画了个板子做到一起了,想法是用这块C3当屏幕驱动,剩一对串口和板载LED占用的那两个IO,用来做外部扩展。

(边框2mm,贴装螺母,贴装交错2.54排针,既能防磕,以后直接在后面拓展也不难看。)

(留了一个立贴的typec位置隐藏供电线,WIFI天线没办法了,背面是屏幕排线,只能禁止铺铜减少影响)

有点类似串口屏,不过串口屏我也用过不少,只能说一般,限制很多,控制也很麻烦,两者各有优劣。

FPS 锁33帧下,正常运行CPU占用44%左右,摁下触摸的时候88%左右(这个是触摸检测间隔小,不具太大参考性),如果再开个WIFI,自己的代码如果多还是放到别的地方更好。

C3这块板子,板载FLASH有点小,需要大的可以自己换,luatos的WIKI里有教程。

https://wiki.luatos.com/chips/esp32c3/change_flash.html

目前Squareline还不支持SD卡,自己从代码改也行,不过C3由于挂了外置FLASH只剩1路SPI,还是屏幕和触摸共用的,SDIO的引脚又都被占用了,况且平时也用不到什么动画视频,板子上就没做,C3自带4MB FLASH,最大可更换为16MB的(需要自己改分区表,后面再说),只要图片素材做的好点,一般都足够用了。

(板子的图纸有空整理下放到立创开源上,弄好了再回来加上链接,直接可以白嫖官方打板。)

照片拍的拉裤里了,切屏时的动效掉帧比较严重,各小部件运行都很流畅。

扩大了些缓冲帧的空间,切屏流畅了点,但切屏动效依然便秘,最低时只有7帧,毕竟价格在这摆着,总共才不到40块,不要要求太高,大多数串口屏动效这一项连有都没有。

总之,这种能给单片机做UI的太少了,用和弄线框同样的时间搞出这种来,个人感觉这点小毛病都能接受。

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空