免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

智能中控屏设计思路解析:从需求分析到嵌入式UI落地

智能中控屏设计思路解析:从需求分析到嵌入式UI落地 做产品设计或者技术方案时我习惯第一步先不打开画图工具也不急着写代码而是先把“设计思路”这四个字拆开揉碎。无论你手里拿的是一个App界面、一块嵌入式屏幕还是整套业务流程只要方向没定清楚后面越努力越容易返工。我最近完整复盘了一个智能中控屏的设计全过程从最开始的碎片想法到信息架构再到最终落地成能跑起来的产品发现把“思路解析”做扎实了后续开发效率能提升一大截。这篇文章我想聊聊面对一个模糊的需求怎么把设计思路一层层拆出来怎么从问题定义一路走到可执行方案以及中间哪些坑最容易踩。内容更适合产品经理、独立开发者还有刚入门想做智能硬件或界面设计的同学参考你会发现所谓“设计感”很多时候不是审美问题而是逻辑问题。1. 先把需求吃透中控屏到底要解决什么问题1.1 需求不是“做一块屏”而是“把信息讲清楚”很多项目失败败在第一句话。比如“我想做一个桌面中控屏”这句话听起来很酷但它不是一个设计输入因为没有回答任何关键问题屏幕给谁看放在什么位置显示什么信息用户会不会去点它如果只是一块屏那用户为什么不直接用手机我这次做中控屏最开始接收到的需求描述也是零散的“想要一个能放桌面上看时间天气的小东西”“最好能显示一些系统状态”“墙上太满了桌面的比较合适”。把这些碎片整理成设计问题后核心需求才浮现出来用户需要一块无需解锁手机就能快速扫一眼的“信息仪表盘”它满足的是高频、低交互、远距离可读的场景。如果直接把这类需求翻译成“做个带屏幕的设备”就会漏掉最重要的隐含约束这块屏绝大多数时间是在“被看”而不是“被操作”。所以UI设计的优先级不该是交互花哨而应该是信息层级清楚、一眼能找到关键数据、弱光环境下也看得清。设计思路正确的话硬件选型和视觉方案都会顺着这个方向收敛。1.2 用“五个为什么”挖出用户真正在意的事面对泛泛的需求描述我习惯用连续追问的方式把表层描述往下钻。比如用户说“我想看到天气”那我接着问为什么要在桌面上看天气手机不行吗得到的答案往往是“不想解锁手机”“把手机放在一旁充电时不想拿起来”“希望余光扫到就行”。再看远一点他希望这块屏幕替代的是“拿起手机→解锁→打开天气App→看数据”的完整路径把路径缩短成“扫一眼”这个动作。我自己整理需求时会把问题列表分成三层表层需求显示天气、时间、日程、系统状态。体验需求唤醒快、不刺眼、待机功耗低、信息结构有优先级。技术约束主控成本控制在几十元内、开发周期短、通信协议最好不依赖第三方云。这类结构化追问很管用。它能帮你在设计早期就砍掉不必要功能比如有人会在中控屏上加语音助手但连续追问后发现使用场景安静、且大多在公司工位上语音明显不合适砍掉后节省大量时间。设计思路解析的第一步其实不是在纸上画框而是把“模糊愿望”筛选成“具体场景下的任务清单”。1.3 场景假设决定设计边界需求必须是场景化的。同样显示天气放在床头或工位上亮度、色温、数据刷新频率都不一样。我自己把使用场景写成了一个小故事用户工作日坐在工位前屏幕距离眼睛大约60到80厘米因为键盘和杂物会占据部分桌面屏幕视角会有30度左右倾斜。大部分时间是待机状态只有用户偏头去看时才会留意到信息。光线条件复杂白天有窗光晚上则是室内灯和显示器背光。这个场景描述虽然简单但价值很大直接推导出三个设计指标。第一观看距离决定了字体不能太小正文信息在60厘米外至少要能看清所以字号要控制在合理范围。第二屏幕需要有自动亮度调节否则晚上关灯后一块高亮屏幕在桌面上非常突兀甚至会让人失眠。第三既然是“偏头扫一眼”而不是“凑过去操作”那触摸交互就不是最核心的交互手段真正核心是常显性能和低功耗长续航。场景一旦写清楚很多取舍就自动有答案了。2. 方案选型三条线屏幕、主控、通信2.1 屏幕选型不是越大越好而是和场景匹配拿到需求以后我第一件纠结的事就是选屏幕。筛选范围包括1.28英寸的圆形LCD、2.1英寸的方形IPS屏、2.8英寸的电阻触摸屏和3.5英寸的电容触摸屏。从视觉上看大屏幕肯定更气派但结合桌面这个场景并没那么美好屏占比过大会侵占本就不富余的桌面空间功耗和成本也跟着上去。最后我选了1.28英寸的圆形LCD屏分辨率是240x240RGB 565色深使用ST7789驱动芯片。选型逻辑有三个圆形表盘形态和信息仪表盘气质天然吻合把时间放在正中心也符合阅读习惯。240x240分辨率在1.28英寸下像素密度已经达到263PPI左右近看也看不出明显颗粒感。圆屏功耗远低于大尺寸屏幕尤其在静态画面下普通IPS屏可以做到几毫瓦级别。这里有个容易忽略的坑很多屏幕标称IPS全视角但实际在低亮度或倾斜角度下颜色会明显偏移。拿到样品后一定要实际点亮并旋转角度观察而不要只看参数表。我测试时发现同一型号不同批次的偏色表现都有差异所以选屏后最好锁定一家供应商不要混用。2.2 主控芯片性能和开发效率之间找平衡屏幕确定后主控选型范围也收窄了。我需要一块带足够RAM驱动240x240的RGB565帧缓冲大约需要115KB、支持常见网络协议栈、且有足够社区资料的单片机。最开始考虑过使用传统8位MCU但驱动圆形屏幕实现平滑动画非常吃力光刷一帧全屏数据就让CPU长期处于高负载状态。综合考虑后我选了ESP32-S3理由是它自带Wi-Fi和蓝牙不需要外挂网络芯片有320KB SRAM可以轻松开一个全屏帧缓冲主频到240MHz后刷小面积动态区域完全够用。对比其他方案时我列过一张简单的表格主控方案RAM网络能力开发难度成本传统8位MCU2KB~32KB需外挂模块或无法联网低低普通32位MCU32KB~192KB多数需外挂网络模块中中ESP32320KB内置Wi-Fi和蓝牙中低中等偏低带MPU的高端SoC几十MB内置或外挂均可高高如果只是做一个静态显示的闹钟用8位MCU足够。但如果未来需要升级动画、触摸、音频甚至联网同步那提前选择ESP32-S3这类芯片等于用低时间成本换了后续扩展空间。硬件设计有一点像买房你可以暂时不住满每个房间但结构上不能把扩展空间封死。2.3 通信协议选型我想要的是“确定性”中控屏通常需要从外部获取天气、时间或系统状态数据。通信方式的决策顺序比一般人想的重要得多。我给的选项包括互联网天气API、局域网内设备主动上报、以及基于订阅的推送协议。很多人第一反应是“直接联网轮询天气”但做设计时我不能只看能不能实现还要看可靠性。轮询的方案逻辑上最简单设备每隔一段时间向服务器请求一次天气数据。但它有两个问题一是依赖外部网络家宽或移动网络抖动时信息就断了二是很多免费天气API有请求频率限制如果每次只为了刷新温度就发一次请求很容易被限流。我最后选择了“局域网数据源 互联网补充数据”的双通道设计。具体来说在局域网内部跑一个轻量级MQTT Broker中控屏订阅固定主题日常显示的温度、日程、系统状态都由局域网内的设备发布不经过外网。需要显示室外天气时再由局域网内已有的网关设备从天气API获取并转发到MQTT。这样一来屏幕本身不需要直接访问公网通信更稳定也省掉了反复握手的开销。这种方案的意外收获是安全性更好屏幕不对互联网暴露任何端口。如果你也想做类似项目我强烈建议先画一张通信拓扑把“谁来采集数据、谁来传输数据、谁来显示数据”三个角色分工列清楚再决定屏幕端要不要直接联网。先分角色再选协议能少走很多弯路。3. 从框架到细节UI布局与关键参数计算3.1 信息架构主次分明比漂亮重要UI设计过程中我犯过的一个错是一上来就调颜色和字体后来发现布局没定所有视觉调整都是白费。这个项目里信息只有三类时间类信息时钟、日期、星期、环境类信息天气、温度、湿度、事件类信息日程、提醒。而要判断信息优先级只要回归场景。用户在60厘米外扫一眼最想知道的一定是时间其次是今天有没有特殊安排最后才是温度和天气。这个结论直接决定了我的布局时间显示在最中央用最大字重日期和星期放时间下方日程在左侧以列表形式存在温湿度放右上角作为辅助信息。这类布局真不需要太多创意需要的是克制。为了验证信息层级的合理性我做了一个小测试把屏幕放在桌面正常距离让另一个人快速瞄一眼然后说出三个信息点。如果他首先说出的是时间其次才是日程说明布局是合格的。实测中很多参与测试者反馈第一眼捕捉到时间的同时余光会被右上角的温度图标干扰说明那个区域饱和度过高了后来降低了饱和度才解决。信息架构优化往往是减法比加法难。3.2 字体、字号与对比度的硬指标很多嵌入式UI在开发时只用默认字体但自定义字体带来的可读性提升非常明显。中文显示可以用汉仪或思源等开源字体的子集提取将文件转为二进制数组直接存储。考虑到圆屏面积小字体渲染不能沿用手机App的逻辑。我按观看距离推算字号需要的经验公式是文本高度不小于观看距离除以100到200。以60厘米观看距离为例最小文本高度应该在3毫米以上换算到240x240分辨率、1.28英寸直径约32.5毫米的屏幕3毫米约等于22像素所以主时间字号建议不低于56像素次要信息不能低于28像素。这也是为什么有些嵌入式屏幕显示效果差不是屏不好而是字号根本没适配。对比度方面我在深灰背景上用白色文字作为第一层级米白色作为第二层级第三层级的辅助图标单独用低饱和度的青色或橙色。避免大面积纯黑背景加纯白文字因为OLED或LCD的响应特性不同过高的对比在黑暗中会显得刺眼且低灰阶下容易产生色带。3.3 自动化亮度与夜间模式的参数计算桌面中控屏区别于手机的最大一点是它需要长时间保持常亮因此亮度和功耗必须一起考虑。我早期版本采用固定亮度晚上测试时发现两格最低亮度仍然很刺眼根本没法放在卧室。后来我加入光敏传感器根据环境照度动态调节亮度同时加入“夜间时段”配置。用参数描述会更直观。面板背光的PWM频率设为1kHz占空比调节范围从1%到100%。白天环境照度在500勒克斯以上时占空比设为80%黄昏约100到200勒克斯时占空比降到40%夜间低于10勒克斯时占空比直接压到5%。5%占空比下屏幕仍然清晰可见但功耗显著下降实测整机待机电流从120mA降到35mA如果你的设备用电池供电这个调节量会直接影响续航。RGB色彩调节也需要换算。夜间模式不能只是单纯降低全局亮度否则颜色会失真白色文字会变成灰白色图标也会失去层次。正确方式是把背景色从#202124切换到#101114把时间文字从#FFFFFF降为#E8EAED强调色饱和度降低40%并开启蓝光过滤把色温向暖黄方向偏移约1500K。这些参数写死在代码里没有意义做成配置项后可以根据用户反馈随时调整。4. 落地踩坑设计常见问题与排查实录4.1 刷屏残影与撕裂帧缓冲策略调整圆屏调试过程中最让我头疼的问题是画面刷新时出现撕裂和残影。因为ESP32-S3驱动ST7789是通过SPI接口通信240x240的RGB565一帧数据是115.2KB在40MHz SPI速度下刷一屏全屏数据大约需要23毫秒。如果一边刷屏一边更新UI不可避免会出现上半屏是新的、下半屏还是旧数据的撕裂现象。我试过两种方案第一种是“局部刷新”只在变化区域重新绘制例如秒数变化时只更新秒数相关区域第二种是“双缓冲”将UI先绘制到内存缓冲区再一次性刷到屏幕。局部刷新速度快但圆形屏幕的坐标计算很麻烦圆弧边缘容易留下残影双缓冲稳定但占用内存明显增加ESP32-S3虽然能承受但缓冲区的分配和释放需要仔细管理。最终我采用混合策略静态背景和顶部状态栏只在数据变化时更新中央时钟区域使用独立的小缓冲区只绘制数字部分数字变化时通过计算出的最小外接矩形进行局部刷新。这套设计让秒级刷新产生的SPI流量从上到下全屏刷的80多KB降低到不到10KBCPU占用率也明显下降。嵌入式UI优化有时就是和带宽较劲你越了解底层传输机制越能用最小代价换取最优效果。4.2 时间总是慢半拍网络对时与RTC漂移中控屏没做好的话会出现“时间偷懒”的问题第一天时间准第三天慢了两分钟。原因是许多开发板默认只在启动时校准一次时间然后依赖内部RC振荡器计时而RC振荡器受温度影响非常大一天的漂移量可能达到几十秒甚至几分钟。解决办法是加外部RTC芯片或依赖网络周期对时。我选择了网络对时方案开机时通过NTP服务器取得标准时间然后每6小时重新校准一次。NTP校准间隔也不能太短频繁访问NTP服务器会被拒绝或产生不必要的功耗。为了让校时更平滑代码里加入了一个偏移量平均值的逻辑每次NTP返回的时间差如果小于1000毫秒说明系统时基没有严重漂移只需要微调如果超过这个阈值则立即校准。这能避免因为网络抖动导致时间跳变。我建议做任何和时间相关的设备都先问一句如果断网了这个设备能撑多久不出错如果超过一天就必须考虑外部RTC芯片了。4.3 圆形屏幕空间利用率与文字裁剪圆形屏幕看上去是个设计亮点实际布局时才发觉处处是坑。屏幕上下的圆弧区域天然浪费如果像方形屏幕那样顶格放文字就必然出现字母或汉字被圆弧裁掉的情况。最理想的方案是“内容内缩”策略把可视安全区设成内接正方形时间主体放在这个正方形内而温度、图标等信息放在靠近圆弧的边缘但不超出屏幕内切圆。我第一次布局时把星期字段放在左上角偏上的位置结果字母顶到圆弧边缘后显示残缺一开始以为是字体问题排查半天才发现是坐标超出了圆形可视区域。解决方法是把所有UI元素坐标限制在以圆心为中心、半径小于屏幕显示半径的范围内程序员千万不要信眼睛看到的圆屏边缘很多屏幕边缘的像素本身负责弧形过渡显示内容即使画上去也会被物理遮罩挡住。常见问题原因解决方案画面撕裂全屏刷新未考虑SPI带宽和帧率局部刷新 最小外接矩形时间漂移依赖内部RC振荡器NTP周期校准或外挂RTC芯片边缘文字裁切用正方形布局思路写圆形屏幕定义圆形安全区图标内缩夜间显示刺眼背光占空比过高加入光敏调节 夜间色温切换MQTT断线后无数据没有本地缓存机制屏幕端缓存最近一次数据并标记时间4.4 MQTT断线重连与数据新鲜度中控屏做过一轮后我以为最麻烦的是显示问题实际使用里“数据不更新”才最恼人。局域网内部的MQTT协议虽然稳定但路由器重启、设备休眠、网关升级都可能导致链路断开。如果没有处理断线逻辑屏幕就会定格在最后一次接收的数据上看起来像死机了一样。解决思路是设计一个分层心跳机制应用层每30秒发送一次心跳请求如果连续3次没有收到响应就认为连接已经断开屏幕立即显示“数据等待更新”的状态栏提示同时底层MQTT库使用指数退避策略进行重连从1秒开始每次失败重连间隔翻倍最长不超过5分钟。这个方案比固定间隔重连更合理因为固定3秒重连会在网络恢复前不断消耗资源而指数退避能在网络长时间不可用时自动降低打请求的频率。还有一个容易忽略的点屏幕要显示数据的“新鲜度”。天气数据可能来自30分钟前的缓存如果直接展示而不标注时间用户会误以为是实时信息。我在数据右上角加了一个半透明的小圆点绿色表示数据在5分钟以内黄色表示半小时以内灰色则代表缓存时间超过一小时。这个细节极大减少了因为“显示过时数据”产生的困惑。5. 工具与方法论沉淀这套思路还能用在哪5.1 从零搭建项目时文档先行有没有必要很多人觉得“设计思路解析”是虚的写文档不如直接写代码。但我自己的经验是小型项目可以没有完整PRD但至少要有一页纸的逻辑说明包括目标用户、核心场景、三类功能优先级和两个不做清单。这次中控屏项目里我在动手前写了一份极简方案里面包含目标场景桌面近距离观看替代“解锁手机看信息”的动作。核心任务扫一眼获取时间和今日日程。不做清单不做语音、不做视频、不做外部云服务强依赖。这份文档在项目中期发挥的作用非常大。有一次我差点忍不住加一个表情动画功能但翻翻不做清单立刻冷静了下来。许多产品是“做加法”时失控的所以设计文档的价值不是给人看而是在每个“想放飞”的时刻提醒你回到初衷。5.2 输入限制转化为创造力参数约束的价值这个项目让我对“限制”有了新的理解。如果给你一块任意大小的触摸屏、一台高性能主机、无限电源供电很可能做出来的只是另一个手机界面。真正的设计挑战恰恰来自限制屏幕很小、内存有限、用户只愿意扫一眼、不能频繁充电。这些限制逼着你去思考什么才是核心什么是可以放弃的。反过来如果一开始就按照“尽可能满足所有需求”的方式来设计你大概率会把屏幕做成功能堆叠的怪物。后来在做别的项目时我也学会了一步主动列出范围限制控制面板只显示三个核心指标超过就换页阅读器只保留下划线功能不做笔记同步。每一条限制最后都变成清晰的产品特质。5.3 三个可以复用的实用技巧我会把这次实践里值得一提的通用经验做个简单总结方便你直接迁移到自己的项目。第一做任何界面设计之前先确定观看距离和操作方式这两个参数决定字体、字号、配色、交互热区等一半以上的后续决策。桌面场景和手持场景的界面设计逻辑完全不同不要混用。第二信息架构用“扫一眼测试法”验证把界面截图缩小或放到实际使用距离找人快速浏览三秒问他记住了什么。如果三个人的回答都不一致说明视觉层级出了问题要减少第一视觉落点上的元素数量。第三数据链路设计要预留降级方案。就像MQTT断线后要显示缓存状态一样任何依赖外部服务的界面都应该考虑断网、延时、服务不可用的情况。给用户的反馈永远不应该只有“转圈”而应该是有意义的提示和可恢复的路径。这套思路说起来简单做起来需要一遍遍在“想要什么”和“实际能用什么”之间找平衡。我现在回头看设计过程里最开心的并不是最终点亮屏幕那一刻而是想清楚为什么做这一步、为什么放弃那一步的每个瞬间。希望这篇思路解析能帮你少走一些弯路也期待你做出更有自己逻辑的产品。
返回列表