Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
HMI-Board
【Renesas GUI挑战赛】基于HMI-Board和LVGL的儿童益智学习机
发布于 2023-09-17 23:19:41 浏览:2482
订阅该版
# 【Renesas GUI挑战赛】基于HMI-Board和LVGL的儿童益智学习机 > 概要 > > 本文给大家介绍一个基于HMI-Board和LVGL的儿童益智学习机项目,该项目是博主架构师李肯参加由RT-Thread、瑞萨、LVGL社区联合举办的2023嵌入式GUI挑战赛的参赛项目,旨在探索嵌入式GUI技术以及人工智能AIGC技术在儿童益智玩具的潜在应用,希望能给大家带来帮助和启发。 [TOC] ![image-20230921155845807](https://s2.loli.net/2023/09/21/24BPlsVMLYhSj8U.png?my_wx_id=721317716) # 1 前言 借势于当前科技技术的高速发展,我们可以发现目前面向儿童的玩具类的学习机也趋近于智能化。 但是不可否认的是,市面上所见的儿童益智学习机还是固化比较严重,出厂时,厂家已经将学习资源等内置了,作为新时代的家长,如果需要对适龄儿童学习的内容做一些个性化定制,显然这样的学习机是无法满足我们的需求的。 同时,当下人工智能非常火爆,尤其以ChatGPT最为强大,倘若我么的学习机能够接入最前沿的ChatgPT,那么可以想象的是,这个学习机的可玩性将会大大提升,而本项目正是基于这样的目的,着手去探讨这样方案的可行性。 # 2 项目简介 ## 2.1 项目名称 **基于HMI-Board和LVGL的儿童益智学习机** ## 2.2 设计思路 本项目主要使用HMI-Board(板载瑞萨的R7FA6M3AH3CFB作为主控芯片),实现一个儿童益智学习机,主控制器周边搭载Wi-Fi模块、TF卡存储模块、LCD显示模块、传感识别模块,通过各外围器件的组合,完成儿童益智学习机的核心功能。这个项目中,定位的应用场景是在于儿童的益智学习场景,能够最大化地利用主控的性能优势,实现一些传统儿童学习机无法实现的功能。暂考虑的有功能有:中英数认知学习、图片+文字模式展示、附带点读笔操作、学习模式和考核模式灵活切换、本地考核和联机考核切换、在线更新学习资料等等。 ## 2.3 主要解决的问题 在传统的儿童益智学习机中,往往是功能比较单一,比如通过按键式操作,以此来选择不同模式,从而播放不同的学习内容。这种方式对幼龄较小的儿童倒是可以应付,但当儿童比较大的时候,他们会对有触屏操作的学习机更为感兴趣,而本项目中设计的学习机正式结合了LCD显示和触摸识别的功能,满足这一部分学习好奇心的需求。 另一方面,传统的学习机往往学习资料都是固化好的,家长不能灵活地根据自家孩子的特点选择且更换学习资料,这样在一定程序上,就限制了学习机的使用范围;而本项目实现的联机更新学习资料也正是为了解决这一痛点,满足家长对儿童多样化的学习需求。 目前看本项目主要难点有: - 1)HMI-Board外设的驱动打通,尤其以Wi-Fi、LCD、触摸模块等为核心; - 2)触摸识别(触屏)的实现; - 3)LVGL的移植接入和熟练应用; - 4)声音输出模块的接入; - 5)学习机应用逻辑的设计; - 6)联机更新学习资料的核心功能; - 7)接入人工智能系统,借助AIGC来产生学习内容。 ## 2.4 项目创新点 - 按键、触摸、显示、音视频等多种方式拉起儿童学习的兴趣; - 接入人工智能系统,借助AIGC来产生学习内容。 ## 2.5 本次参赛的初衷 采用本项目参赛,本身并不期望作出多么惊艳的产品,旨在探索嵌入式GUI技术以及人工智能AIGC技术在儿童益智玩具的潜在应用,希望能给大家带来帮助和启发。 # 3 系统架构介绍 ## 3.1 方案预研 在多年之前,基于新唐的开发板,我曾经做过一个国学唐诗的儿童学习机,那一次觉得做益智类的儿童高级玩具,还是挺好玩的,于是这次有机会再次深入这个主题。 在项目开始前,我家里也是有着各式各样的儿童玩具,但我觉得要么就是太粗糙,要么就是没啥吸引力,家里的儿童很快就不喜欢玩了。 在这个过程,我也仔细观察和摸索存量儿童学习机的优缺点,也为了更好地设计本项目。 ## 3.2 系统核心架构图 经过调研设计,得到整个系统的核心架构图如下所示: ![screenshot_2023GUI挑战赛系统架构图.png](https://oss-club.rt-thread.org/uploads/20230922/0f474827c87616468bb3f35dd08d7533.png.webp) 从上面这个核心架构图中,我们可以看到益智学习机系统的组成,包括智能设备终端侧(显示屏、喇叭音频输出、SD存储等)、OpenAI-ChatGPT后台,自定义后台服务(负责对接openai平台)等等。下面就整个产品系统的几大重要组件,我会一一进行简要讲解。 ## 3.3 终端侧 终端侧主要承载的是对GUI界面的逻辑处理,包括展示对应的资源图片、播放对应的音频资源、界面的切换、按键的响应等等。 同时,终端还需要处理网络相关的能力,后续的功能迭代中,需要加上http-client的功能,使用网络能力对外获取一些网络资源,包括更新固件、更新学习机的资源包等等。 终端侧包括的核心组件有:**瑞萨电子的RA6M3主处理器**,搭载的是国产实时操作系统 [RT-Thread](https://www.rt-thread.org/),同时外设板载有 RW007 这款Wi-Fi通讯模组、LED显示灯(GPIO模拟)、存储的SD卡、小喇叭播放等等。 终端侧不仅包含设备硬件,还需要对应的固件软件,两者相辅相成,共同完成终端侧的功能逻辑。 ![img](https://s2.loli.net/2023/09/21/BVEq1TZ4Ml9GrA2.png?my_wx_id=721317716) ## 3.4 后端侧 这是一个TODO的部分,为了对接好ChatGPT,我需要部署一个轻量级的http服务器,当终端有需要请求ChatGPT服务器时,先转到这个http服务器,然后由它去跟openai的后台对接。 这样的设计,主要也有网络因素的考量,比如openai的账号常常容易被封,而通过这样的方式之后,网络拓扑结构就变化了,一定程度上就规避了这个问题。 当然,这样的坏处也比较明显,就是多了一层网络转发,可能会导致数据传输更慢。 有利有弊,折中选择就好。 # 4 系统设计说明 ## 4.1 硬件部分 - **MCU主控:瑞萨电子 RA6M3 微控制器** 瑞萨电子 RA6M3 微控制器 (MCU) 群组使用高性能 Arm® Cortex®-M4 内核,提供具备 2D 加速器和 JPEG 解码器的 TFT 控制器。此外,RA6M3 MCU 提供具有单独 DMA 和 USB 高速接口的以太网 MAC,可确保大的数据吞吐量。RA6M3 MCU 采用高效的 40nm 工艺,由开放且灵活的生态系统概念提供支持,即基于 FreeRTOS 的灵活配置软件包 (FSP),能够扩展以使用其他 RTOSes 和中间件。RA6M3 适用于需要 TFT、以太网、安全性、大型嵌入式 RAM 和 USB 高速 (HS) 的物联网应用。。 HMI-Board 为 RT-Thread 联合瑞萨推出的高性价比图形评估套件,取代传统的 HMI + 主控板 硬件,一套硬件即可实现 HMI + IoT + 控制 的全套能力。依托于瑞萨高性能芯片 RA6M3 及 RT-Thread 软件生态,HMI Board 不仅硬件性能强劲,同时软件生态丰富,助力开发者快速开发出 GUI 智能硬件产品。HMI-Board 搭载 2M Flash 大容量主控芯片 RA6M3,内置 2D 加速、JPEG 编解码器、LCD控制器等模块,助力图形应用开发,并且板载TFT显示屏和音频接口,可以让开发者在 HMI 领域大展身手;此外,HMI-Board 还支持 IoT 连接,板载以太网接口、高速WIFI模块,让开发板无时无刻连接云端;同时,HMI-Board 还支持多种控制方式,包括 CAN 接口、Arduino 接口以及两路 PMOD 接口等,可以让开发者方便地扩展各种外设,从而实现更加灵活的控制方式。通过 HMI-Board 开发板,开发者可以轻松实现 GUI 智能硬件产品。 RA6M3处理器的基本框图如下: ![RA6M3 Block Diagram](https://s2.loli.net/2023/09/21/MQ2unp1YBoAqLjS.png?my_wx_id=721317716) 对应到HMI-Board开发板上,具体接口资源展示如下: > ● RA6M3(R7FA6M3AH3CFB):Cortex-M4F 内核,120Mhz 主频,具有 2MB Flash/640KB RAM,集成 TFT 控制器、2D 加速器和 JPEG 解码器。 > > ● 4.3 寸 LCD (RGB 888) > > ● 板载仿真器 > > ● 以太网 > > ● RW007 (SPI 高速 WIFI) > > ● USB-Device > > ● TF Crad > > ● CAN > > ● 1路麦克风,1 路扬声器 > > ● Arduino 扩展接口 > > ● 2 路 PMOD 扩展接口 > > ● 4个按键:3个用户按键,一个复位按键 在我的项目中,我主要使用它的以下几个外设资源: 1)UART9:RT-Thread的终端调试串口; 2)SPI:用于连接wi-Fi模块RW007,实现网络通讯能力; 3)I2C:用于连接显示屏(带触摸); 4)SDIO:外挂SD卡,用于存储ChatGPT的交互信息; 5)PWM:用于连接小喇叭,播放声音; 6)GPIO: 主要用于控制LED灯,表示一些状态。 以下是我的实物连接示意图: ![image-20230921204843444](https://s2.loli.net/2023/09/21/51TpiuzgWokE9Vm.png?my_wx_id=721317716) - **Wi-Fi模组:WR007** 本次参赛配备的开发板中就已经有RW007, 它是由上海睿赛德电子科技有限公司开发的高速 WiFi 模块,模块基于 Realtek RTL8710BN(Ameba Z 系列) WIFI SOC,使用 SPI/UART 与主机通信 ,支持 IEEE 802.11b/g/n 网络、 WEP/WPA/WPA2 加密方式和 STA 和 AP 模式。 > 主要特性 > > 1.Cortex-M4 高性能 MCU > 2.可自由选择的 AT SPI 双模式,工作模式可由主机配置 > 3.SPI 时钟高达 30Mbps,UART 波特率高达 6Mbps。 > 4.SPI 模式下有效以太网带宽高达上传 1MBytes/s,下载 1MBytes/s > 5.内置 Bootloader,支持固件升级、安全固件功能。 > 6.支持快速连接、airkiss 配网 > 7.支持存储多达 5 条连接信息 值得注意的是,RT-Thread官方已经制作了一个软件包专门用于适配RW007,从实际使用的情况来看,还是非常方便的。 ![img](https://s2.loli.net/2023/09/21/AcZDgvpeB7OFi8S.jpg?my_wx_id=721317716) - **GPIO控制**: 目前这一块的接入,采用的是GPIO用作指示灯展示: 其中,P209 用作系统工作状态显示灯(**每一秒闪烁一次**),P210 用于展示网络连接状态(网络好则灯亮)。 ## 4.2 软件部分 整个软件部分的开发主要是**终端软件**开发。 主要包括四大部分:瑞萨的RA6M3的原厂BSP、RT-Thread实时操作系统、RW007相关的配置代码使能、个性化的应用逻辑代码。 其中瑞萨的RA6M3的原厂BSP基本不动,原厂和相关的社区开发者已经适配好了;通用的RT-Thread操作系统的代码也不在此处的修改中,直接复用已有的代码,这里使用的版本是 **5.0.0**版本 。 所以这里重点讲一下,应用逻辑的代码,以下是终端软件应用逻辑部分的层次图: ![image-20230921215214550](https://s2.loli.net/2023/09/21/DRxcYEChOP8ilQV.png?my_wx_id=721317716) 其中: **Wi-Fi线程**:由于在RT-Thread中开启RW007软件包后,默认就跑起来了,而在应用层暂时没有一个比较好的方式感知网络能力的建立,所以这里新建了一个线程,用于实时检查网络通讯能力;当网络通讯能力已建立时,通过信号量的方式,通知其他模块,也会把网络指示灯点亮。同时呢,这个模块也开放了一些API,用于操作网络; **LVGL GUI刷新显示线程**:该模块主要用于更新GUI界面,这里设计的界面代码都是由SquareLine Studio 1.3.2生成的;但是关于回调事件的逻辑处理,我全部转到了自己的逻辑代码; **系统运行展示线程**:此线程并没有参与过多的应用逻辑,仅仅是每一秒钟闪烁一下运行指示灯,表示系统正在运行中; **文件管理模块**:此模块负责管理一些系统关键信息的存储,这里采用的是ini文件格式存储,可读性会比较好,且处理起来也比较轻量化; **音频播放模块**:此模块以API的形式提供服务,用于播放一些存放在SD卡中的音频资源文件。 以上各个线程各司其职,相辅相成,共同完成这个儿童益智学习机的应用逻辑功能。 下面展示的是工程项目中的代码结构,里面的代码结构一本与上面的代码逻辑示意图保持一致。 ![image-20230921215656025](https://s2.loli.net/2023/09/21/61krM5gyqUSaXHV.png?my_wx_id=721317716) ## 4.3 创新性的开发环境 由于我早期基于RT-Thread做开发,也是非常依赖于RT-Thread Studio开发环境,虽然提供了一些便利,但是碍于它的配置实在是太慢了,并且非常吃内存和吃存储空间,于是被我启用了。 也正是由于这些吃瘪,我自己经过设计,延续了scons+env的构建环境,打造了一套属于自己的开发环境,我取名叫 **xiotman**。 关于它的介绍,详见我的开源项目:[xiotman: 一套致力于解决物联网终端应用多样化挑战的软件架构解决方案。 (gitee.com)](https://gitee.com/recan-li/xiotman) 以下是xiotman的软件架构示意图: ![image-20230602232120443](https://s2.loli.net/2023/07/15/C2bY67VwlynAtru.png?my_wx_id=721317716) 借助这个项目,我很方便就把我本次参赛的项目移植移植进来了,这里也要感谢 **小点点** 同学,在前期把 RA6M3-HMI的适配代码从rt-thread的官方仓库中移植到xiotman来,也方便了我做后续的开发。 以下是我本次项目工程在xiotman中的示意图: ![image-20230921132513720](https://s2.loli.net/2023/09/21/8aM1GS2YZqtUcvT.png?my_wx_id=721317716) 基于scons+env的构建编译,也是非常的丝滑,多线程编程,想想就开心: ![image-20230921133548990](https://s2.loli.net/2023/09/21/Q3lMbtH5U2phzrK.png?my_wx_id=721317716) 在烧录固件这块,由于我没有基于RT-Studio进行开发,所以我也没有使用RT-Studio集成的PYOCD下载工具,而是另辟溪窍,写了一个脚本在env环境中,调用一个KEIL工程的脚本化下载,具体的方式,感兴趣的可以看看我提交的脚本。 ![image-20230921133142896](https://s2.loli.net/2023/09/21/GMtYy6kjOcvJTD2.png?my_wx_id=721317716) 下载速度维持在90秒左右,其实还是比较慢了,调试下载过程是真的郁闷这一点。 ![image-20230921133730663](https://s2.loli.net/2023/09/21/ioQGErgJH4RcBs3.png?my_wx_id=721317716) # 5 项目实施过程 **1)熟悉瑞萨的RA6M3-HMI-LVGL的基本开发资料** 这一步主要是熟悉开发板的基本资源,对外设等信息有一定的概念,以便于方便后续的开发调试;同时,还需要把相关的一些官方软件给安装好,熟练使用配置工具和下载工具。 值得注意的是,本次大赛使用的RA6M3核心板,使用的DAP-link作为调试下载器,虽然它是开源的,成本比较低,但是实际的体验来说,下载速度真的太慢了。 在这个阶段呢,也会积极参加大赛主办发举行的一些线上直播活动,主要是了解开发板的基本情况,了解必要的开发基础。 磨刀不误砍柴工,只要熟练上手了,才能开发出优秀的应用程序。 **2)移植RT-Thread操作系统** 本次参赛,其实并不要求去移植RT-Thread,其实也要多感谢RT-Thread官方和社区的小伙伴,还有LVGL官方技术社区,其实他们都已经做好了基本的移植了,只需要对照着自己的开发板资源跳调整一下即可。 有了上面的踩坑经验,直接上手RT-Thread的DEMO教程,很快就可以把操作系统跑起来了,一切都回归到熟悉的地方,研发进度再次提速。 下面就是基于RT-Thread操作系统进行编程了。 **3)配置RT-Thread的软件包** 目前由于xiotman的在线更新软件包的功能还没完全打通,所以我是通过在原生rt-thread/bsp目录,使用env配置工具先把软件包下载下来,然后手动拷贝到xiotman的components/packages/对应的目录。 本次参赛过程中,我也想过如何在xiotman中打通在线软件包的更新和安装,只是可能实践起来会麻烦一些,所以这块我还是延续了上面的手动步骤,下面有空还是要把这个流程打通才方便。 这个项目中,我主要使用了 **rw007-v2.1.0软件包、LVGL-v8.3.9软件包、lv_music_demo-v0.3.3软件包、gui_guider_demo-latest**;这个软件包的灵活应用,的确让我的项目开发提速了不少。 简单说一下这几个软件包的作用: - rw007这个软件包,主要用于对接Wi-Fi 芯片rw007的,使得开发板可以通过SPI接口快速获得Wi-Fi网络通讯的能力; - LVGL-v8.3.9这个软件包,是RT-Thread社区和LVGL社区联合维护的软件包,它可以完美适配在RT-Thread操作系统上使用LVGL这个开源轻量级显示框架; - lv_music_demo-v0.3.3和gui_guider_demo-latest这两个软件包,在我的工程中,并没有显式使用,只是在做LVGL的一些接口时,参考了里面一些的设计和使用方法。 ![image-20230921134330045](https://s2.loli.net/2023/09/21/Kq5IgxyXaBEtFp6.png?my_wx_id=721317716) **4)熟悉SquareLine Studio,配置项目产品的UI界面** 这里面主要是熟悉SquareLine Studio的各个控件,比如按钮、文本框、文字标签、开关选择、下拉框等,然后也要熟悉各个组件的配置方法,比如名称的修改,回调事件的设定等等。 这里面,由于我项目中主要使用中文显示,所以在研究SquareLine Studio上使用中文,也花了不少的心思,也踩了一些坑,幸运的是,效果还是做出来了。 ![image-20230921140140030](https://s2.loli.net/2023/09/21/1UuSowl6gHr3VkM.png?my_wx_id=721317716) **5)调试外设驱动** 这里主要是结合软件包调试几种需要用到的外设接口,包括**GPIO(指示灯的操作)、SPI接口(RW007 Wi-Fi模块)、I2C接口(LCD显示屏)、PWM接口(音频播放)、SDHI接口(SD卡存储和文件系统的支持)**等等。。 在调试过程中,一般一个个模块来,避免模块直接的干扰,这样可以有效地加快开发速度。 等到各个功能模块完成后,统一串起来跑一跑,确保没有问题。 **6)全功能自测** 到了这一步,基本功能开发就已经完成了,需要将学习机的每一个功能都测试一遍;好在本产品中,各个功能没有太多的耦合关系,相对来说都是比较独立的功能,只需要一个个自测通过就好。 > **由于时间紧张,导致还有两个模块没有完全开发完:对接ChatGPT在线获取资源,以及对视频文件的播放支持。** **7)准备结项资料** 项目收尾的最后,需要准备各种结项资料,包括项目文档、演示视频、各种实物图片;还有总结博文等等。 # 6 项目效果显示 ## 6.1 功能描述 本期项目中,**已实现以下功能**: - 开机动画和开机欢迎词音频播放;展示5秒后自动切换到主页面; - 主页面显示6个功能菜单入口,每个功能菜单具有独立页面; - 某些多图展示的功能页面支持向左和向右的手势滑动; - 语文宝藏模块:支持国学唐诗和三字经两个学习板块,支持手势滑动;支持使用SD卡自定义快速更换图片资源; - 数学运算模块:支持加减法选择,支持配置最大运算数(5-100,以5为递增单位);支持退出记忆(记忆设置的最大运算数); - 英语启蒙模块:支持随机切换英语字母和趣味单词;支持手势滑动;支持使用SD卡自定义快速更换图片资源; - 智能AI模块:支持以图片形式展示两个智能AI板块(童话故事和知识百科);支持手势滑动;支持使用SD卡自定义快速更换图片资源; - 趣味动画模块:支持以图片形式展示两个趣味动画板块(唱唱英语和小猪佩奇);支持手势滑动;支持使用SD卡自定义快速更换图片资源; - 系统设置模块:支持查询版本信息;支持Wi-Fi热点的扫描和链接。 **还未实现的功能**: - 完善一些UI设计,某些界面下屏幕切换会有卡顿; - 固件的OTA功能; - 在线资源包(图片、音频、视频)的本地下载更新; - **对接OpenAI,基于API KEY 实现ChatGPT的功能**,包括自动更新通话故事和知识百科; - **新增对AVI视频文件的播放支持**,以便于完成【趣味动画】那个菜单内容。 ## 6.2 图片展示 以下是项目的部分图片展示: - **项目应用启动log** ![image-20230921103107262](https://s2.loli.net/2023/09/21/xfWZQkTUwrFvcgR.png?my_wx_id=721317716) - **开机启动播放欢迎词的log** ![image-20230921103218251](https://s2.loli.net/2023/09/21/3F7emLwIsQPOgqS.png?my_wx_id=721317716) - **wifi扫描和wifi连接成功的log** ![image-20230921103337569](https://s2.loli.net/2023/09/21/jQvC975tHEedFhO.png?my_wx_id=721317716) - **手势滑动到图片切换的log** ![image-20230921103529535](https://s2.loli.net/2023/09/21/5YGrSiscOCK2Z6e.png?my_wx_id=721317716) - **产品菜单层级展示**: ![image-20230921104919880](https://s2.loli.net/2023/09/21/vDX7iYkPQyo6js8.png?my_wx_id=721317716) - **屏幕真机显示画面**: ![image-20230921110205608](https://s2.loli.net/2023/09/21/zuSViAUabR8NMGZ.png?my_wx_id=721317716) ![image-20230921110235564](https://s2.loli.net/2023/09/21/8SGnUPzKIBlWcVs.png?my_wx_id=721317716) ![image-20230921110306899](https://s2.loli.net/2023/09/21/hTmLRr63fDtJVY2.png?my_wx_id=721317716) ![image-20230921114724310](https://s2.loli.net/2023/09/21/hKPpQtyR1MvYnuH.png?my_wx_id=721317716) ![image-20230921114905854](https://s2.loli.net/2023/09/21/kOXTlHW1IjL5McQ.png?my_wx_id=721317716) ![image-20230921114929562](https://s2.loli.net/2023/09/21/O3CtLJFhZ1WcYPH.png?my_wx_id=721317716) ![image-20230921115009001](https://s2.loli.net/2023/09/21/lH6jhyef3n1TZbq.png?my_wx_id=721317716) ![image-20230921115044186](https://s2.loli.net/2023/09/21/EBvcw4H6YKeqju3.png?my_wx_id=721317716) ![image-20230921115209476](https://s2.loli.net/2023/09/21/zGolBXgANvtH6RD.png?my_wx_id=721317716) ![image-20230921115232369](https://s2.loli.net/2023/09/21/eJaCFtwYLI4kn2M.png?my_wx_id=721317716) ![image-20230921115109325](https://s2.loli.net/2023/09/21/uTc9MokeBDZsfvt.png?my_wx_id=721317716) ![image-20230921115144925](https://s2.loli.net/2023/09/21/3zDQ4LTvrpExe5m.png?my_wx_id=721317716) ![image-20230921114800386](https://s2.loli.net/2023/09/21/f2PyvZzlqLnrghT.png?my_wx_id=721317716) ![image-20230921114835944](https://s2.loli.net/2023/09/21/RYAeMbndUqIpVwL.png?my_wx_id=721317716) ## 6.3 视频展示 B站视频:[【Renesas GUI挑战赛】基于HMI-Board和LVGL的儿童益智学习机](https://www.bilibili.com/video/BV1Ey4y1F7jK/?share_source=copy_web&vd_source=b81cd689c31728c97b1f10f2ac4acd2d) ## 6.4 代码开源 本参赛项目的源代码已全面开源在 [这里](https://gitee.com/recan-li/xiotman) 其中应用部分的代码在 [https://gitee.com/recan-li/xiotman/tree/master/apps/app_hmi_board_gui](https://gitee.com/recan-li/xiotman/tree/master/apps/app_hmi_board_gui) 有关项目源代码的事情,也可与我讨论。 # 7 项目复盘 项目还有一部分功能未实现,小小总结一下这次项目: - **DDL无效论:时间不够用,下次别留这么少的时间了**;前期没投入太多时间,临期才发猛力,这次不可取的,切记此次教训; - 尽信书,不如无书:有一点体会比较深,本来做图片显示和音频播放,想参考下官方的demo例程(音乐播放器和AVI视频播放器),无奈前面这个音乐播放器,是假的播放,仅仅是做了UI展示,对我来说没参考价值;后面这个视频播放器因为太庞大了,导致最后链接的时候报BSS越界了,连这个demo都没跑起来,只能瞎摸索。后面看到一位小伙伴提交的 [音乐播放器的demo工程](https://club.rt-thread.org/ask/article/457fced1bdd9635c.html),我好奇地去看看,结果代码拉下来,硬是没编译通过,可能少提交了啥文件;最后,无奈,只能硬着头皮自己上;最后在播放音频时,出来的效果非常拉稀,不正常,音调很高,不是常规的声音;初步断定是播放速率的问题,于是打电话给之前搞过音视频的技术朋友,经过我们一勾兑,初步断定就是播放速率的问题。再一排查,**原来这款芯片适配pwm播放audio时,仅仅设配了44KHZ的WAV文件,而其他采样率的音频文件,它也是按44KHZ来播放**;好巧不巧,我用的是16KHZ的文件,所以出来的声音就叽叽哇哇,非常不自在。 - 我用的GUI设计工具是SquareLine Studio,整体来说,还是挺优秀的,可以快速帮助你设计GUI,并且可以自动生成代码,跟LVGL直接联系起来,这个省心很多;唯一发现一点不爽的就是,这玩意占CPU很猛,并且CTRL+Z的撤回功能是个迷,我有好几次撤回,都不知道帮我撤回到了那离,以至于我后面不敢用这个快捷键;终究还是不够熟练啊; - HMI-Board这块板子搭配的是DAP-Link,虽然可以使用PYOCD软件来烧录,但是真的太慢了,这还是使用社区提供的方法提高了下载速度的;平均下载时间达90S;如果不提升,我估计2mins开外;开发调试过程有些难受; - xiotman第二次用于参加业余比赛,感觉使用起来还是比较清爽的,同时也遇到了一些调整,比如这次的arm-gcc最后链接时,由于文件太多,命令行的长度不够用了,只能通过修改python的编译脚本building.py。不过,我也有信心后面慢慢会用起来更爽,也会陆续转到它来开发更多的项目。 # 8 致谢 感谢本次大赛的主办方RT-Thread和LVGL技术社区,以及瑞萨电子,为广大开发者提供福利的同时,也带来了业内前沿的开发技术,是我们学习和提高的一个好平台,期待下次继续参与这样的比赛。 尤其是本次以嵌入式GUI为主题,结合LVGL技术,我们可以设计出很多有意思的产品,真的是一次不错的实践机会。 至于,比赛结果怎么样,倒是其次,参与过,学习过,思考过,提高过,差不多就可以了。 # 9 项目的TODOLIST - **实现视频资源,比如AVI文件的播放**; - **以ChatGPT为代表的人工智能平台的接入,为学习机的学习资源注入源源不断的活水**; - **结合儿童的特点,为产品设计并整理更加优秀的GUI,提升产品的可玩性**; - **寻找一些可商业化产品落地的机会**。 # 10 参考链接 - [2023嵌入式GUI挑战赛介绍](https://www.rt-thread.org/competition2.html) - 小伙伴的音乐播放器的demo工程: [RT-Thread-【Renesas GUI挑战赛】基于RTT-LVGL音乐播放器RT-Thread问答社区 - RT-Thread](https://club.rt-thread.org/ask/article/457fced1bdd9635c.html) - [xiotman: 一套致力于解决物联网终端应用多样化挑战的软件架构解决方案。 (gitee.com)](https://gitee.com/recan-li/xiotman) - [HMI-Board (rt-thread.org)](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/hw-board/ra6m3-hmi-board/ra6m3-hmi-board) - [Board Certification Program | From idea to product (lvgl.io)](https://lvgl.io/boards) - [RA6M3 - 32-bit Microcontrollers with 120MHz with USB High-Speed, Ethernet and TFT controller | Renesas](https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra6m3-32-bit-microcontrollers-120mhz-usb-high-speed-ethernet-and-tft-controller) - [SquareLine Studio 1.3.2 Documentation | SquareLine Studio](https://docs.squareline.io/docs/squareline/) - [文字转语音|语音合成 - 在线文字转换语音软件](https://app.xunjiepdf.com/text2voice/) - [wav音频文件格式解析【个人笔记】(自用) - douzujun - 博客园 (cnblogs.com)](https://www.cnblogs.com/douzujun/p/10600793.html) # 11 更多分享 本次项目介绍后,我还继续探索RT-Thread在各种嵌入式平台开发的可能性,并以此来要求自己输出各种关于RT-Thread、嵌入式、物联网等等热门技术话题的原创内容,欢迎大家持续关注我。 我是 **架构师李肯** (**全网同名**),**2022年电子发烧友论坛优秀开发者、2022年RT-Thread技术社区优秀布道者、CSDN博客专家**,欢迎大家来交流。
9
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
李肯陪你玩赚嵌入式
2022年度和2023年度RT-Thread社区优秀开源布道师,COC深圳城市开发者社区主理人,专注于嵌入式物联网的架构设计
文章
47
回答
504
被采纳
82
关注TA
发私信
相关文章
1
HMI-Board创建RT-Thread Studio工程后添加LVGL后编译报错
2
使用瑞萨的 FSP里面不小心把配置属性的界面给删除掉了,然后就找不回来这个页面了,这啥软件啊叉掉了就找不回了,重装也不行
3
HMI Board DAP下载异常
4
HMI-Board拉取官方最新代码报错
5
HMI-Board FSP 關於Ethernet HAL 的設定疑問
6
如何在HMI-BOARD工程里面,开启HWTIMER外设
7
HMI_Board关于开启C++特性编译出错的问题
8
HMI_Board关于开启C++特性编译出错的问题续
9
HMI_Board配置Smart Configurator完外设后编译出现报错
10
关于HMI-Board ADC配置(RA6M3 HMI Board 之ADC实践)问题,没有“使能ADC选项”
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部