
做產品設計或者技術方案時我習慣第一步先不打開畫圖工具也不急著寫代碼而是先把“設計思路”這四個字拆開揉碎。無論你手里拿的是一個App界面、一塊嵌入式屏幕還是整套業(yè)務流程只要方向沒定清楚后面越努力越容易返工。我最近完整復盤了一個智能中控屏的設計全過程從最開始的碎片想法到信息架構再到最終落地成能跑起來的產品發(fā)現(xiàn)把“思路解析”做扎實了后續(xù)開發(fā)效率能提升一大截。這篇文章我想聊聊面對一個模糊的需求怎么把設計思路一層層拆出來怎么從問題定義一路走到可執(zhí)行方案以及中間哪些坑最容易踩。內容更適合產品經理、獨立開發(fā)者還有剛入門想做智能硬件或界面設計的同學參考你會發(fā)現(xiàn)所謂“設計感”很多時候不是審美問題而是邏輯問題。1. 先把需求吃透中控屏到底要解決什么問題1.1 需求不是“做一塊屏”而是“把信息講清楚”很多項目失敗敗在第一句話。比如“我想做一個桌面中控屏”這句話聽起來很酷但它不是一個設計輸入因為沒有回答任何關鍵問題屏幕給誰看放在什么位置顯示什么信息用戶會不會去點它如果只是一塊屏那用戶為什么不直接用手機我這次做中控屏最開始接收到的需求描述也是零散的“想要一個能放桌面上看時間天氣的小東西”“最好能顯示一些系統(tǒng)狀態(tài)”“墻上太滿了桌面的比較合適”。把這些碎片整理成設計問題后核心需求才浮現(xiàn)出來用戶需要一塊無需解鎖手機就能快速掃一眼的“信息儀表盤”它滿足的是高頻、低交互、遠距離可讀的場景。如果直接把這類需求翻譯成“做個帶屏幕的設備”就會漏掉最重要的隱含約束這塊屏絕大多數(shù)時間是在“被看”而不是“被操作”。所以UI設計的優(yōu)先級不該是交互花哨而應該是信息層級清楚、一眼能找到關鍵數(shù)據(jù)、弱光環(huán)境下也看得清。設計思路正確的話硬件選型和視覺方案都會順著這個方向收斂。1.2 用“五個為什么”挖出用戶真正在意的事面對泛泛的需求描述我習慣用連續(xù)追問的方式把表層描述往下鉆。比如用戶說“我想看到天氣”那我接著問為什么要在桌面上看天氣手機不行嗎得到的答案往往是“不想解鎖手機”“把手機放在一旁充電時不想拿起來”“希望余光掃到就行”。再看遠一點他希望這塊屏幕替代的是“拿起手機→解鎖→打開天氣App→看數(shù)據(jù)”的完整路徑把路徑縮短成“掃一眼”這個動作。我自己整理需求時會把問題列表分成三層表層需求顯示天氣、時間、日程、系統(tǒng)狀態(tài)。體驗需求喚醒快、不刺眼、待機功耗低、信息結構有優(yōu)先級。技術約束主控成本控制在幾十元內、開發(fā)周期短、通信協(xié)議最好不依賴第三方云。這類結構化追問很管用。它能幫你在設計早期就砍掉不必要功能比如有人會在中控屏上加語音助手但連續(xù)追問后發(fā)現(xiàn)使用場景安靜、且大多在公司工位上語音明顯不合適砍掉后節(jié)省大量時間。設計思路解析的第一步其實不是在紙上畫框而是把“模糊愿望”篩選成“具體場景下的任務清單”。1.3 場景假設決定設計邊界需求必須是場景化的。同樣顯示天氣放在床頭或工位上亮度、色溫、數(shù)據(jù)刷新頻率都不一樣。我自己把使用場景寫成了一個小故事用戶工作日坐在工位前屏幕距離眼睛大約60到80厘米因為鍵盤和雜物會占據(jù)部分桌面屏幕視角會有30度左右傾斜。大部分時間是待機狀態(tài)只有用戶偏頭去看時才會留意到信息。光線條件復雜白天有窗光晚上則是室內燈和顯示器背光。這個場景描述雖然簡單但價值很大直接推導出三個設計指標。第一觀看距離決定了字體不能太小正文信息在60厘米外至少要能看清所以字號要控制在合理范圍。第二屏幕需要有自動亮度調節(jié)否則晚上關燈后一塊高亮屏幕在桌面上非常突兀甚至會讓人失眠。第三既然是“偏頭掃一眼”而不是“湊過去操作”那觸摸交互就不是最核心的交互手段真正核心是常顯性能和低功耗長續(xù)航。場景一旦寫清楚很多取舍就自動有答案了。2. 方案選型三條線屏幕、主控、通信2.1 屏幕選型不是越大越好而是和場景匹配拿到需求以后我第一件糾結的事就是選屏幕。篩選范圍包括1.28英寸的圓形LCD、2.1英寸的方形IPS屏、2.8英寸的電阻觸摸屏和3.5英寸的電容觸摸屏。從視覺上看大屏幕肯定更氣派但結合桌面這個場景并沒那么美好屏占比過大會侵占本就不富余的桌面空間功耗和成本也跟著上去。最后我選了1.28英寸的圓形LCD屏分辨率是240x240RGB 565色深使用ST7789驅動芯片。選型邏輯有三個圓形表盤形態(tài)和信息儀表盤氣質天然吻合把時間放在正中心也符合閱讀習慣。240x240分辨率在1.28英寸下像素密度已經達到263PPI左右近看也看不出明顯顆粒感。圓屏功耗遠低于大尺寸屏幕尤其在靜態(tài)畫面下普通IPS屏可以做到幾毫瓦級別。這里有個容易忽略的坑很多屏幕標稱IPS全視角但實際在低亮度或傾斜角度下顏色會明顯偏移。拿到樣品后一定要實際點亮并旋轉角度觀察而不要只看參數(shù)表。我測試時發(fā)現(xiàn)同一型號不同批次的偏色表現(xiàn)都有差異所以選屏后最好鎖定一家供應商不要混用。2.2 主控芯片性能和開發(fā)效率之間找平衡屏幕確定后主控選型范圍也收窄了。我需要一塊帶足夠RAM驅動240x240的RGB565幀緩沖大約需要115KB、支持常見網絡協(xié)議棧、且有足夠社區(qū)資料的單片機。最開始考慮過使用傳統(tǒng)8位MCU但驅動圓形屏幕實現(xiàn)平滑動畫非常吃力光刷一幀全屏數(shù)據(jù)就讓CPU長期處于高負載狀態(tài)。綜合考慮后我選了ESP32-S3理由是它自帶Wi-Fi和藍牙不需要外掛網絡芯片有320KB SRAM可以輕松開一個全屏幀緩沖主頻到240MHz后刷小面積動態(tài)區(qū)域完全夠用。對比其他方案時我列過一張簡單的表格主控方案RAM網絡能力開發(fā)難度成本傳統(tǒng)8位MCU2KB~32KB需外掛模塊或無法聯(lián)網低低普通32位MCU32KB~192KB多數(shù)需外掛網絡模塊中中ESP32320KB內置Wi-Fi和藍牙中低中等偏低帶MPU的高端SoC幾十MB內置或外掛均可高高如果只是做一個靜態(tài)顯示的鬧鐘用8位MCU足夠。但如果未來需要升級動畫、觸摸、音頻甚至聯(lián)網同步那提前選擇ESP32-S3這類芯片等于用低時間成本換了后續(xù)擴展空間。硬件設計有一點像買房你可以暫時不住滿每個房間但結構上不能把擴展空間封死。2.3 通信協(xié)議選型我想要的是“確定性”中控屏通常需要從外部獲取天氣、時間或系統(tǒng)狀態(tài)數(shù)據(jù)。通信方式的決策順序比一般人想的重要得多。我給的選項包括互聯(lián)網天氣API、局域網內設備主動上報、以及基于訂閱的推送協(xié)議。很多人第一反應是“直接聯(lián)網輪詢天氣”但做設計時我不能只看能不能實現(xiàn)還要看可靠性。輪詢的方案邏輯上最簡單設備每隔一段時間向服務器請求一次天氣數(shù)據(jù)。但它有兩個問題一是依賴外部網絡家寬或移動網絡抖動時信息就斷了二是很多免費天氣API有請求頻率限制如果每次只為了刷新溫度就發(fā)一次請求很容易被限流。我最后選擇了“局域網數(shù)據(jù)源 互聯(lián)網補充數(shù)據(jù)”的雙通道設計。具體來說在局域網內部跑一個輕量級MQTT Broker中控屏訂閱固定主題日常顯示的溫度、日程、系統(tǒng)狀態(tài)都由局域網內的設備發(fā)布不經過外網。需要顯示室外天氣時再由局域網內已有的網關設備從天氣API獲取并轉發(fā)到MQTT。這樣一來屏幕本身不需要直接訪問公網通信更穩(wěn)定也省掉了反復握手的開銷。這種方案的意外收獲是安全性更好屏幕不對互聯(lián)網暴露任何端口。如果你也想做類似項目我強烈建議先畫一張通信拓撲把“誰來采集數(shù)據(jù)、誰來傳輸數(shù)據(jù)、誰來顯示數(shù)據(jù)”三個角色分工列清楚再決定屏幕端要不要直接聯(lián)網。先分角色再選協(xié)議能少走很多彎路。3. 從框架到細節(jié)UI布局與關鍵參數(shù)計算3.1 信息架構主次分明比漂亮重要UI設計過程中我犯過的一個錯是一上來就調顏色和字體后來發(fā)現(xiàn)布局沒定所有視覺調整都是白費。這個項目里信息只有三類時間類信息時鐘、日期、星期、環(huán)境類信息天氣、溫度、濕度、事件類信息日程、提醒。而要判斷信息優(yōu)先級只要回歸場景。用戶在60厘米外掃一眼最想知道的一定是時間其次是今天有沒有特殊安排最后才是溫度和天氣。這個結論直接決定了我的布局時間顯示在最中央用最大字重日期和星期放時間下方日程在左側以列表形式存在溫濕度放右上角作為輔助信息。這類布局真不需要太多創(chuàng)意需要的是克制。為了驗證信息層級的合理性我做了一個小測試把屏幕放在桌面正常距離讓另一個人快速瞄一眼然后說出三個信息點。如果他首先說出的是時間其次才是日程說明布局是合格的。實測中很多參與測試者反饋第一眼捕捉到時間的同時余光會被右上角的溫度圖標干擾說明那個區(qū)域飽和度過高了后來降低了飽和度才解決。信息架構優(yōu)化往往是減法比加法難。3.2 字體、字號與對比度的硬指標很多嵌入式UI在開發(fā)時只用默認字體但自定義字體帶來的可讀性提升非常明顯。中文顯示可以用漢儀或思源等開源字體的子集提取將文件轉為二進制數(shù)組直接存儲。考慮到圓屏面積小字體渲染不能沿用手機App的邏輯。我按觀看距離推算字號需要的經驗公式是文本高度不小于觀看距離除以100到200。以60厘米觀看距離為例最小文本高度應該在3毫米以上換算到240x240分辨率、1.28英寸直徑約32.5毫米的屏幕3毫米約等于22像素所以主時間字號建議不低于56像素次要信息不能低于28像素。這也是為什么有些嵌入式屏幕顯示效果差不是屏不好而是字號根本沒適配。對比度方面我在深灰背景上用白色文字作為第一層級米白色作為第二層級第三層級的輔助圖標單獨用低飽和度的青色或橙色。避免大面積純黑背景加純白文字因為OLED或LCD的響應特性不同過高的對比在黑暗中會顯得刺眼且低灰階下容易產生色帶。3.3 自動化亮度與夜間模式的參數(shù)計算桌面中控屏區(qū)別于手機的最大一點是它需要長時間保持常亮因此亮度和功耗必須一起考慮。我早期版本采用固定亮度晚上測試時發(fā)現(xiàn)兩格最低亮度仍然很刺眼根本沒法放在臥室。后來我加入光敏傳感器根據(jù)環(huán)境照度動態(tài)調節(jié)亮度同時加入“夜間時段”配置。用參數(shù)描述會更直觀。面板背光的PWM頻率設為1kHz占空比調節(jié)范圍從1%到100%。白天環(huán)境照度在500勒克斯以上時占空比設為80%黃昏約100到200勒克斯時占空比降到40%夜間低于10勒克斯時占空比直接壓到5%。5%占空比下屏幕仍然清晰可見但功耗顯著下降實測整機待機電流從120mA降到35mA如果你的設備用電池供電這個調節(jié)量會直接影響續(xù)航。RGB色彩調節(jié)也需要換算。夜間模式不能只是單純降低全局亮度否則顏色會失真白色文字會變成灰白色圖標也會失去層次。正確方式是把背景色從#202124切換到#101114把時間文字從#FFFFFF降為#E8EAED強調色飽和度降低40%并開啟藍光過濾把色溫向暖黃方向偏移約1500K。這些參數(shù)寫死在代碼里沒有意義做成配置項后可以根據(jù)用戶反饋隨時調整。4. 落地踩坑設計常見問題與排查實錄4.1 刷屏殘影與撕裂幀緩沖策略調整圓屏調試過程中最讓我頭疼的問題是畫面刷新時出現(xiàn)撕裂和殘影。因為ESP32-S3驅動ST7789是通過SPI接口通信240x240的RGB565一幀數(shù)據(jù)是115.2KB在40MHz SPI速度下刷一屏全屏數(shù)據(jù)大約需要23毫秒。如果一邊刷屏一邊更新UI不可避免會出現(xiàn)上半屏是新的、下半屏還是舊數(shù)據(jù)的撕裂現(xiàn)象。我試過兩種方案第一種是“局部刷新”只在變化區(qū)域重新繪制例如秒數(shù)變化時只更新秒數(shù)相關區(qū)域第二種是“雙緩沖”將UI先繪制到內存緩沖區(qū)再一次性刷到屏幕。局部刷新速度快但圓形屏幕的坐標計算很麻煩圓弧邊緣容易留下殘影雙緩沖穩(wěn)定但占用內存明顯增加ESP32-S3雖然能承受但緩沖區(qū)的分配和釋放需要仔細管理。最終我采用混合策略靜態(tài)背景和頂部狀態(tài)欄只在數(shù)據(jù)變化時更新中央時鐘區(qū)域使用獨立的小緩沖區(qū)只繪制數(shù)字部分數(shù)字變化時通過計算出的最小外接矩形進行局部刷新。這套設計讓秒級刷新產生的SPI流量從上到下全屏刷的80多KB降低到不到10KBCPU占用率也明顯下降。嵌入式UI優(yōu)化有時就是和帶寬較勁你越了解底層傳輸機制越能用最小代價換取最優(yōu)效果。4.2 時間總是慢半拍網絡對時與RTC漂移中控屏沒做好的話會出現(xiàn)“時間偷懶”的問題第一天時間準第三天慢了兩分鐘。原因是許多開發(fā)板默認只在啟動時校準一次時間然后依賴內部RC振蕩器計時而RC振蕩器受溫度影響非常大一天的漂移量可能達到幾十秒甚至幾分鐘。解決辦法是加外部RTC芯片或依賴網絡周期對時。我選擇了網絡對時方案開機時通過NTP服務器取得標準時間然后每6小時重新校準一次。NTP校準間隔也不能太短頻繁訪問NTP服務器會被拒絕或產生不必要的功耗。為了讓校時更平滑代碼里加入了一個偏移量平均值的邏輯每次NTP返回的時間差如果小于1000毫秒說明系統(tǒng)時基沒有嚴重漂移只需要微調如果超過這個閾值則立即校準。這能避免因為網絡抖動導致時間跳變。我建議做任何和時間相關的設備都先問一句如果斷網了這個設備能撐多久不出錯如果超過一天就必須考慮外部RTC芯片了。4.3 圓形屏幕空間利用率與文字裁剪圓形屏幕看上去是個設計亮點實際布局時才發(fā)覺處處是坑。屏幕上下的圓弧區(qū)域天然浪費如果像方形屏幕那樣頂格放文字就必然出現(xiàn)字母或漢字被圓弧裁掉的情況。最理想的方案是“內容內縮”策略把可視安全區(qū)設成內接正方形時間主體放在這個正方形內而溫度、圖標等信息放在靠近圓弧的邊緣但不超出屏幕內切圓。我第一次布局時把星期字段放在左上角偏上的位置結果字母頂?shù)綀A弧邊緣后顯示殘缺一開始以為是字體問題排查半天才發(fā)現(xiàn)是坐標超出了圓形可視區(qū)域。解決方法是把所有UI元素坐標限制在以圓心為中心、半徑小于屏幕顯示半徑的范圍內程序員千萬不要信眼睛看到的圓屏邊緣很多屏幕邊緣的像素本身負責弧形過渡顯示內容即使畫上去也會被物理遮罩擋住。常見問題原因解決方案畫面撕裂全屏刷新未考慮SPI帶寬和幀率局部刷新 最小外接矩形時間漂移依賴內部RC振蕩器NTP周期校準或外掛RTC芯片邊緣文字裁切用正方形布局思路寫圓形屏幕定義圓形安全區(qū)圖標內縮夜間顯示刺眼背光占空比過高加入光敏調節(jié) 夜間色溫切換MQTT斷線后無數(shù)據(jù)沒有本地緩存機制屏幕端緩存最近一次數(shù)據(jù)并標記時間4.4 MQTT斷線重連與數(shù)據(jù)新鮮度中控屏做過一輪后我以為最麻煩的是顯示問題實際使用里“數(shù)據(jù)不更新”才最惱人。局域網內部的MQTT協(xié)議雖然穩(wěn)定但路由器重啟、設備休眠、網關升級都可能導致鏈路斷開。如果沒有處理斷線邏輯屏幕就會定格在最后一次接收的數(shù)據(jù)上看起來像死機了一樣。解決思路是設計一個分層心跳機制應用層每30秒發(fā)送一次心跳請求如果連續(xù)3次沒有收到響應就認為連接已經斷開屏幕立即顯示“數(shù)據(jù)等待更新”的狀態(tài)欄提示同時底層MQTT庫使用指數(shù)退避策略進行重連從1秒開始每次失敗重連間隔翻倍最長不超過5分鐘。這個方案比固定間隔重連更合理因為固定3秒重連會在網絡恢復前不斷消耗資源而指數(shù)退避能在網絡長時間不可用時自動降低打請求的頻率。還有一個容易忽略的點屏幕要顯示數(shù)據(jù)的“新鮮度”。天氣數(shù)據(jù)可能來自30分鐘前的緩存如果直接展示而不標注時間用戶會誤以為是實時信息。我在數(shù)據(jù)右上角加了一個半透明的小圓點綠色表示數(shù)據(jù)在5分鐘以內黃色表示半小時以內灰色則代表緩存時間超過一小時。這個細節(jié)極大減少了因為“顯示過時數(shù)據(jù)”產生的困惑。5. 工具與方法論沉淀這套思路還能用在哪5.1 從零搭建項目時文檔先行有沒有必要很多人覺得“設計思路解析”是虛的寫文檔不如直接寫代碼。但我自己的經驗是小型項目可以沒有完整PRD但至少要有一頁紙的邏輯說明包括目標用戶、核心場景、三類功能優(yōu)先級和兩個不做清單。這次中控屏項目里我在動手前寫了一份極簡方案里面包含目標場景桌面近距離觀看替代“解鎖手機看信息”的動作。核心任務掃一眼獲取時間和今日日程。不做清單不做語音、不做視頻、不做外部云服務強依賴。這份文檔在項目中期發(fā)揮的作用非常大。有一次我差點忍不住加一個表情動畫功能但翻翻不做清單立刻冷靜了下來。許多產品是“做加法”時失控的所以設計文檔的價值不是給人看而是在每個“想放飛”的時刻提醒你回到初衷。5.2 輸入限制轉化為創(chuàng)造力參數(shù)約束的價值這個項目讓我對“限制”有了新的理解。如果給你一塊任意大小的觸摸屏、一臺高性能主機、無限電源供電很可能做出來的只是另一個手機界面。真正的設計挑戰(zhàn)恰恰來自限制屏幕很小、內存有限、用戶只愿意掃一眼、不能頻繁充電。這些限制逼著你去思考什么才是核心什么是可以放棄的。反過來如果一開始就按照“盡可能滿足所有需求”的方式來設計你大概率會把屏幕做成功能堆疊的怪物。后來在做別的項目時我也學會了一步主動列出范圍限制控制面板只顯示三個核心指標超過就換頁閱讀器只保留下劃線功能不做筆記同步。每一條限制最后都變成清晰的產品特質。5.3 三個可以復用的實用技巧我會把這次實踐里值得一提的通用經驗做個簡單總結方便你直接遷移到自己的項目。第一做任何界面設計之前先確定觀看距離和操作方式這兩個參數(shù)決定字體、字號、配色、交互熱區(qū)等一半以上的后續(xù)決策。桌面場景和手持場景的界面設計邏輯完全不同不要混用。第二信息架構用“掃一眼測試法”驗證把界面截圖縮小或放到實際使用距離找人快速瀏覽三秒問他記住了什么。如果三個人的回答都不一致說明視覺層級出了問題要減少第一視覺落點上的元素數(shù)量。第三數(shù)據(jù)鏈路設計要預留降級方案。就像MQTT斷線后要顯示緩存狀態(tài)一樣任何依賴外部服務的界面都應該考慮斷網、延時、服務不可用的情況。給用戶的反饋永遠不應該只有“轉圈”而應該是有意義的提示和可恢復的路徑。這套思路說起來簡單做起來需要一遍遍在“想要什么”和“實際能用什么”之間找平衡。我現(xiàn)在回頭看設計過程里最開心的并不是最終點亮屏幕那一刻而是想清楚為什么做這一步、為什么放棄那一步的每個瞬間。希望這篇思路解析能幫你少走一些彎路也期待你做出更有自己邏輯的產品。