3D打印机小型彩屏交互方案-WT2606B模组跑UI实战

3D打印机小型彩屏交互方案-WT2606B模组跑UI实战 现在市面上不少3D打印机还在用12864那种段码液晶屏蓝底白字能显示的温度和进度信息很有限。稍微高端一点的机器上了全彩TFT屏体验一下子就好很多但很多方案是用主控MCU直接驱屏占了大量算力和Flash空间搞不好切个圆角都掉帧。有些厂家想加彩屏但不想换主控也有些想把屏和主控解耦方便后续迭代UI这时候就需要一个独立的屏显芯片来干这个活。WT2606B就是干这个的。WT2606B芯片是个什么东西WT2606B是唯创知音做的一颗TFT屏显SoC定位是人机交互显示方案你把图片和视频素材丢进去MCU通过串口发几条指令就能控制屏幕显示什么内容。芯片自己跑UI不占你主控的资源。核心参数RISC-V 140MHz内核128Mbit Flash存素材供电2.8到4.5VQFN40封装5×5mm。图形加速器支持DMA、旋转、混叠、缩放能推到480×480分辨率30帧刷新。双串口设计一路跟主控MCU通信一路可以接语音芯片。带DAC音频输出能播提示音。27个GPIO待机电流小于100微安关机小于5微安。工作温度负40到正85度。QFN40的封装不大塞进3D打印机控制板上面没什么压力。128Mbit换算下来16MByte对UI素材来说够用了存几百张界面图加上几段开机动画绰绰有余。屏幕怎么选芯片支持QSPI和SPI两种接口的TFT屏分辨率从240×296到410×502都可以跑。3D打印机上最常见的是3.5寸到4.3寸的TFT屏。做桌面级机器的话240×296或者320×385的分辨率够用了。SPI接口走线少一些但刷新速度不如QSPI如果追求流畅度优先选QSPI接口的屏。软件层面可以自动适配分辨率不用改代码。整个系统怎么连WT2606B有个双串口的设计这个对3D打印机方案来说挺关键的。主串口接3D打印机的主控MCU另一个串口可以接语音识别芯片或者别的模块。MCU只需要一个串口就能同时控制显示和接收语音指令。管脚连接上MCU的TX接WT2606B的RX1MCU的RX接WT2606B的TX1。RX1和TX1是硬件DMA收发通信效率比普通IO口模拟串口高不少。INT1脚接MCU的一个GPIO低电平的时候走串口透传模式高电平的时候才响应控制指令。INT2脚默认低电平高电平表示有透传数据过来。BUSY脚控制功放使能播放音频的时候才打开功放省电也省噪。QSPI接口的D0到D3、CLK、CS直接接屏幕对应的脚就行。BLK脚接屏幕背光控制可以软件开关背光也能用D5指令做PWM调光。如果3D打印机上有个呼吸灯指示打印状态D5指令能输出3路10KHz的PWM直接拿来用。通信协议是标准UART3.3V TTL电平默认波特率115200。数据格式1位起始位、8位数据位、无校验、1位停止位。每条指令以7E开头EF结尾中间是长度、扩展码、代表码、命令码、参数和校验码。3D打印机UI怎么设计3D打印机的UI页面其实不算多但每个页面信息密度不低。我理了一下典型页面。**开机动画**。用视频播放功能开机的时候播一段2到3秒的品牌动画。WT2606B支持单次播放、单视频循环、全部视频循环三种模式开机动画用单次播放就行播完自动进入主界面。**主菜单**。文件选择、预加热、设置、关于这几个入口。用图片堆叠功能做背景图加几个图标按钮。D9指令最多支持1个背景加49个图标对一个主菜单来说绰绰有余。图标位置可以自定义坐标想做几宫格就几宫格。**打印状态页**。这是最核心的页面。喷头温度、热床温度、打印进度、当前层号、剩余时间这些信息需要实时刷新。用D9自定义图标位置的指令来做把温度数字、进度条、层号都当成图标贴在背景图上面。MCU拿到新数据就发D9指令更新对应位置的图标。举个例子喷头温度从180度升到200度你提前做好0到300度每个数字的图片素材MCU算出当前温度对应的图片索引用D9指令把图标贴到固定坐标就行。进度条也同理做好不同百分比的进度条图片按进度切换。刷新的时候可以选5种显示模式直接刷新、下进、上进、右进、左进。温度数字这种频繁更新的用直接刷新就好页面切换的时候可以用左进或者上进视觉效果好一些。**设置页**。温度调节、打印速度、风扇转速这些。和打印状态页类似用图标加背景的组合。调节的时候可以用D5的PWM输出做个呼吸灯效果正在调哪个参数就闪哪个。**二维码配网页面**。3D打印机要联网的话手机扫二维码配WiFi是最方便的。D4指令可以直接在屏幕上显示二维码字符串最长199个字符放一个WiFi配置链接完全够。手机扫完码跳转到配网页面输完密码传回MCU整个过程比在屏幕上一个字符一个字符选要快太多。**异常提示**。断料、堵头、温度异常这些情况弹一个全屏提示图加一段提示音。A0指令播音频D0指令切到对应的提示图片两个指令一起发就行。**打印完成**。播一段完成动画加提示音然后进待机。串口指令实操3D打印机UI最常用的几条指令我挑出来逐个讲。**D0 表情以及图片播放**。这是最核心的显示指令。参数1是图片索引两字节大端参数2是播放速度0到15参数3是显示模式0到40直接刷新1下进2上进3右进4左进参数4是推动速度0到10。比如要显示第7张图片用右进方式推动速度10发7E 00 0B FF 02 D0 00 07 02 03 0A F2 EF。芯片收到后返回7E 00 07 FF 02 D0 00 D8 EF反码00表示执行成功。**D9 自定义图标位置**。往屏幕指定坐标贴图标。参数是图标索引加x坐标加y坐标每组6字节最多49个图标加1个背景。背景可以是动图但速度不可调默认8。比如在第0行第0列放第33号图标在坐标(182, 182)放第115号图标一条指令搞定。**D3 清屏**。直接黑屏停止正在播放的表情进入黑屏状态。切页面的时候可以先清屏再显示新页面避免残影。**D7 屏幕背光开关**。1打开0关闭。3D打印机空闲的时候可以关背光省电有操作再打开。**A0 播放音频**。参数是音频索引从1开始两字节大端。按键提示音、报警音、完成提示音都能用这个。**AE 音量设置**。0到31级。晚上打印可以把音量调小。**D4 二维码显示**。参数1是字符串总长度参数2是二维码大小1到255参数3是字符串内容。直接传一个URL进去就行。**D5 占空比设置**。3路PWM输出频率10KHz。参数第一个字节表示设置哪路PWM按位与判断0x1是PWM10x2是PWM20x4是PWM3。第二个字节是占空比。用来做呼吸灯或者背光调光都行。**D2 暂停继续播放表情**。参数1播放0暂停。播放动画的时候可以暂停比如开机动画播到一半用户按了按键要进系统。这里有个实际要注意的点。D0指令的图片索引是固定的素材在Flash里的存储顺序就是索引顺序。所以制作素材的时候要规划好编号哪些是背景图、哪些是图标、哪些是动画分开编号段。后面要加新素材的话可以用唯创填充工具提前预留位置不用重新刷整个Flash。还有一个容易踩的D0指令返回的反码能告诉你具体哪里出错了。01是索引超过文件数量02是速度范围有误03是表情数据域有误04和05分别是参数3和参数4错误。调试的时候盯着返回码看比瞎猜效率高很多。素材制作和升级图片素材用唯创的图片转换工具转成BIN文件。支持的格式有GIF、PNG、JPG其中GIF是动画。转换的时候有个选项要注意背景图选不透明压缩率高一些。图标选需要透明这样叠图效果才是透明的。转完BIN文件之后用程序升级工具合成一个.wtui文件这个文件不能大于14M。合成的时候动画BIN文件一定要放在前面按文件名排序。命名的时候前面加数字前缀01_xxx.gif、02_xxx.gif这样排不会错。后续要单独更新某张图片或者某个视频不用重新刷整个Flash。用图片视频升级功能选要替换的BIN文件改一下编号就能升级。双击编号栏可以更改升级编号对指定编号图片进行更新注意编号不能大于已存在的文件数量。这个对3D打印机产品来说挺实用的比如换了新UI主题只更新变化的部分就行。OTA也支持通过串口发FD握手信息再用F0推固件数据包。FD指令的固件内容分四种0x01是程序0x02是单个表情0x03是全部表情加程序0x04是全部表情。F0每包512字节从包序号0开始推芯片确认后再发下一包。3D打印机联网之后有新UI可以直接推给用户。还有一个FE指令可以查询单个表情包占用的空间大小返回四个字节大端法。在规划Flash空间分配的时候用得上。文件填充工具也提一下。如果你计划编号1到16放GIF但实际只用了1到10想把后面新增的GIF直接放在11到16上可以用这个工具生成预估大小的BIN文件临时占位。后续更新时用图片视频升级功能替换就行填充后的BIN文件不会失去原有的显示效果。功耗管理3D打印机不工作的时候屏幕可以关掉省电。WT2606B有两种低功耗模式关机模式小于5微安待机模式小于100微安。待机模式下能直接接收指令快速进入工作状态初始化默认就是待机。实际用的时候打印完成或者用户长时间没操作MCU发D7关背光然后让芯片进待机。下次有按键或者开始打印发个指令就能唤醒屏幕很快就能亮起来。对桌面级3D打印机来说这个待机功耗基本可以忽略。几个坑**素材编号**。一定要规划好编号段。把图标和背景图混着编号后面加新素材的时候位置全乱了只能重新刷整个Flash。建议背景图从1开始编号图标从某个大数开始比如1000动画从另一个段开始。这样后续扩展不会打架。**动画文件顺序**。合成.wtui文件的时候动图BIN文件必须放前面按文件名排序。这个规格书里特意强调了顺序不对升级会失败。**D9图标数量**。最多49个图标加1个背景。如果界面元素超过49个就要拆成多个页面或者合并一些图标。3D打印机的打印状态页信息比较多设计界面的时候要算好图标数量别到时候发现放不下。**透传模式**。INT1脚低电平是透传模式高电平才是控制模式。如果你的MCU上电默认输出低电平芯片就一直在透传模式发什么指令都没反应。初始化的时候先把INT1拉高这个搞反了能调一天。**Flash容量**。128Mbit是16MByte。看着不少但如果存了很多高清动画和大量界面图也会满。做素材的时候控制好图片分辨率和颜色深度GIF动画帧数别太多。用FE指令查一下每个表情包的实际占用心里有个数。**透明处理**。图标转BIN文件的时候一定要选需要透明不然叠在背景图上面会带一块白底。背景图选不透明就行。这个搞反了界面会很难看。小结WT2606B做3D打印机的彩屏交互方案核心优势是MCU零负担。你不用在主控上跑复杂UI框架或者写一堆屏驱代码串口发几条指令就完事。128Mbit的Flash够存大量UI素材双串口设计让显示和语音可以并行OTA支持后续UI迭代。QFN40的封装小塞进现有控制板不费劲。如果你正在做3D打印机的彩屏升级或者新机器不想用主控直接驱屏这颗芯片值得试一试。规格书V1.06版本的指令集已经很完善了图片、视频、音频、二维码、PWM、OTA这些场景都覆盖了基本不用写什么底层代码就能把UI跑起来。当然这颗芯片原厂也提供配套的UI设计可以直接让原厂帮忙来完成这些配套的工作。