月實(shí)操突擊:從零基礎(chǔ)到拿下硬件工程師o(wú)ffer的完整路徑)
畢業(yè)季那陣子我真的是被“電子專(zhuān)業(yè)不好找工作”這句話壓得喘不過(guò)氣。投了上百份簡(jiǎn)歷絕大多數(shù)石沉大海少數(shù)幾個(gè)面試也都在技術(shù)面環(huán)節(jié)被問(wèn)得啞口無(wú)言。后來(lái)我復(fù)盤(pán)了一下不是崗位少而是我的狀態(tài)有問(wèn)題——手里除了課程設(shè)計(jì)和畢業(yè)論文沒(méi)有任何一個(gè)拿得出手的完整項(xiàng)目面試官一問(wèn)到“你實(shí)際做過(guò)什么”“這個(gè)電路為什么這么設(shè)計(jì)”我基本就只能背教材。痛定思痛之后我給自己定了3個(gè)月的實(shí)操突擊計(jì)劃從焊接、調(diào)試到完整項(xiàng)目落地一步一步補(bǔ)短板。這篇文章就是把那3個(gè)月我做過(guò)什么、踩過(guò)哪些坑、最后怎么拿到硬件工程師o(wú)ffer的完整過(guò)程記錄下來(lái)希望能給同樣處在迷茫期的電子相關(guān)專(zhuān)業(yè)同學(xué)一點(diǎn)參考。1. 先搞清楚硬件工程師到底需要什么能力1.1 拆解崗位需求別再盲目刷題我一開(kāi)始也走了彎路覺(jué)得找不到工作是因?yàn)槔碚摬粔蛟鷮?shí)于是抱著《模擬電子技術(shù)》《數(shù)字電子技術(shù)》重新啃啃了一周發(fā)現(xiàn)效率極低而且面試時(shí)根本用不上。后來(lái)我仔細(xì)分析了招聘網(wǎng)站上幾十個(gè)硬件工程師崗位的JD提煉出高頻出現(xiàn)的關(guān)鍵詞原理圖設(shè)計(jì)、PCB Layout、元器件選型、單片機(jī)編程、調(diào)試測(cè)試、焊接能力、文檔輸出。這些關(guān)鍵詞拼在一起其實(shí)就是一句話能獨(dú)立把一個(gè)電路從想法變成能穩(wěn)定運(yùn)行的實(shí)物。搞明白這個(gè)邏輯之后我就不再糾結(jié)“我是不是應(yīng)該先把某某理論課再學(xué)一遍”這種問(wèn)題了。硬件工程師的核心價(jià)值在于把理論轉(zhuǎn)化為產(chǎn)品學(xué)校里的考試考的是“怎么算”而實(shí)際工作是“怎么用”。所以我3個(gè)月的計(jì)劃完全圍繞項(xiàng)目展開(kāi)理論知識(shí)用到什么補(bǔ)什么而不是倒過(guò)來(lái)先堆理論再動(dòng)手。這里有一個(gè)很重要的心態(tài)轉(zhuǎn)變從學(xué)生思維變成工程師思維。學(xué)生思維是“我學(xué)完了再動(dòng)手”工程師思維是“我要做這個(gè)所以需要學(xué)那個(gè)”帶著目標(biāo)去學(xué)效率完全不一樣。1.2 明確實(shí)操訓(xùn)練的四個(gè)方向拆解完崗位需求之后我給自己定了四個(gè)能力維度后面的所有訓(xùn)練都是圍繞這四個(gè)維度展開(kāi)的電路設(shè)計(jì)能力能看懂?dāng)?shù)據(jù)手冊(cè)會(huì)根據(jù)需求選型能設(shè)計(jì)原理圖。版圖設(shè)計(jì)能力會(huì)用EDA工具畫(huà)PCB了解基本的布局布線規(guī)則。嵌入式基礎(chǔ)能力至少熟悉一種單片機(jī)能寫(xiě)簡(jiǎn)單的控制程序。調(diào)試與測(cè)試能力會(huì)用萬(wàn)用表、示波器、邏輯分析儀能定位問(wèn)題。這四個(gè)維度對(duì)應(yīng)到實(shí)際交付物上就是兩個(gè)完整的硬件項(xiàng)目。注意是完整項(xiàng)目不是開(kāi)發(fā)板例程。開(kāi)發(fā)板例程是別人搭好的電路你只是下載個(gè)程序跑一下這不算你的能力。面試官也心知肚明所以一看你寫(xiě)在簡(jiǎn)歷上的項(xiàng)目是“基于STM32開(kāi)發(fā)板的某某實(shí)驗(yàn)”基本就不會(huì)深問(wèn)了。真正的項(xiàng)目應(yīng)該是你自己選型、自己畫(huà)板、自己焊接、自己調(diào)試即使功能不復(fù)雜但整個(gè)流程走完你的收獲和面試時(shí)能講出來(lái)的內(nèi)容是完全不同的。2. 三個(gè)月實(shí)操計(jì)劃的設(shè)計(jì)思路2.1 時(shí)間規(guī)劃按月拆解目標(biāo)明確不焦慮3個(gè)月聽(tīng)起來(lái)不長(zhǎng)但如果規(guī)劃合理其實(shí)足夠完成從“只會(huì)理論”到“能獨(dú)立做項(xiàng)目”的轉(zhuǎn)變。我的時(shí)間安排是第一個(gè)月打基礎(chǔ)第二個(gè)月做第一個(gè)完整項(xiàng)目第三個(gè)月做第二個(gè)稍微復(fù)雜的項(xiàng)目同時(shí)開(kāi)始準(zhǔn)備簡(jiǎn)歷和面試。第一個(gè)月的核心任務(wù)是工具鏈的熟練。我花了一周時(shí)間專(zhuān)門(mén)練習(xí)焊接買(mǎi)的焊接練習(xí)板和各種封裝的小元件每天焊兩三個(gè)小時(shí)。一開(kāi)始焊得歪歪扭扭虛焊連焊是家常便飯到第一周結(jié)束基本能比較流暢地焊完一塊直插元件的小板子。第二周開(kāi)始學(xué)EDA工具我選的是立創(chuàng)EDA因?yàn)樯鲜挚臁⒃?kù)全而且跟嘉立創(chuàng)打板無(wú)縫銜接對(duì)新手非常友好。第三周第四周開(kāi)始接觸單片機(jī)編程用的STM32F103C8T6最小系統(tǒng)板把GPIO、定時(shí)器、中斷、ADC、I2C、SPI這些外設(shè)都過(guò)了一遍。第二個(gè)整月做第一個(gè)完整項(xiàng)目。我的選題是一個(gè)環(huán)境監(jiān)測(cè)節(jié)點(diǎn)用STM32讀取溫濕度傳感器和光照傳感器數(shù)據(jù)顯示在OLED屏上同時(shí)通過(guò)串口上傳到上位機(jī)。這個(gè)項(xiàng)目覆蓋了傳感器選型、I2C通信、電源電路、顯示驅(qū)動(dòng)、數(shù)據(jù)校驗(yàn)這些基礎(chǔ)點(diǎn)難度適中非常適合第一次完整走流程。第三個(gè)月做第二個(gè)項(xiàng)目難度要上一個(gè)臺(tái)階。我選的是一個(gè)帶閉環(huán)控制的直流電機(jī)調(diào)速系統(tǒng)用編碼器測(cè)速PID算法調(diào)速PWM驅(qū)動(dòng)可以通過(guò)按鍵設(shè)定目標(biāo)轉(zhuǎn)速OLED實(shí)時(shí)顯示實(shí)際轉(zhuǎn)速和PID參數(shù)。這個(gè)項(xiàng)目涉及閉環(huán)控制的概念面試時(shí)非常加分因?yàn)榇蟛糠謶?yīng)屆生都只會(huì)做開(kāi)環(huán)的東西你能做過(guò)閉環(huán)至少說(shuō)明你理解反饋這個(gè)概念而且動(dòng)手能力過(guò)關(guān)。2.2 工具和材料準(zhǔn)備一次性配齊不折騰實(shí)操最怕什么最怕做到一半發(fā)現(xiàn)缺個(gè)元件、缺個(gè)工具然后快遞等三天熱情全涼了。所以我在開(kāi)始之前就把工具和材料一次性配齊了。工具方面電烙鐵建議買(mǎi)帶數(shù)顯調(diào)溫的我用的是T12焊臺(tái)回溫快新手也容易上手、焊錫絲選含助焊芯的直徑0.6mm或0.8mm比較合適、助焊劑、吸錫帶、鑷子、斜口鉗、剝線鉗、萬(wàn)用表、直流穩(wěn)壓電源、示波器預(yù)算有限可以先買(mǎi)一個(gè)幾百塊的便攜款或者用虛擬示波器、邏輯分析儀便宜的USB邏輯分析儀就夠用調(diào)試I2C、SPI、UART非常香。元件方面不用貪多常用的電阻電容電感各買(mǎi)若干種規(guī)格常用的二極管三極管、穩(wěn)壓芯片AMS1117系列必備、運(yùn)放LM358、LM324、比較器LM393、傳感器模塊、單片機(jī)最小系統(tǒng)板、各種連接線杜邦線基本就能覆蓋絕大多數(shù)項(xiàng)目需求。我這里特別想說(shuō)一下示波器的問(wèn)題很多人覺(jué)得貴就跳過(guò)但硬件調(diào)試沒(méi)有示波器真的很難受你排查一個(gè)信號(hào)有沒(méi)有、頻率對(duì)不對(duì)、時(shí)序?qū)Σ粚?duì)用萬(wàn)用表只能測(cè)出有沒(méi)有電壓完全看不到波形。如果預(yù)算實(shí)在有限可以買(mǎi)一個(gè)USB虛擬示波器兩三百塊的那種帶寬低一點(diǎn)但看低速信號(hào)完全夠用我自己的邏輯分析儀就是這么干的幾十塊錢(qián)幫了大忙。3. 核心實(shí)操環(huán)節(jié)的細(xì)節(jié)全記錄3.1 焊接技能的刻意訓(xùn)練焊接是硬件工程師的基本功可以不精但不能不會(huì)。面試官基本不會(huì)讓你現(xiàn)場(chǎng)焊東西除非是崗位特別要求但在實(shí)際工作中你畫(huà)的板子要調(diào)試調(diào)試就離不開(kāi)焊接。而且焊接水平直接影響調(diào)試效率——焊一個(gè)虛焊排查問(wèn)題可能要花半天這個(gè)時(shí)間成本太高了。我在練習(xí)焊接時(shí)總結(jié)出幾個(gè)關(guān)鍵要點(diǎn)。第一烙鐵溫度要合適有鉛焊錫大概320到360度比較合適溫度太低焊錫不流動(dòng)容易造成虛焊溫度太高容易燙壞焊盤(pán)和元件。第二焊接順序有講究先焊矮的元件再焊高的元件先焊貼片再焊直插不然高的元件會(huì)擋住烙鐵頭影響操作。第三焊點(diǎn)質(zhì)量的判斷標(biāo)準(zhǔn)就是一個(gè)字——潤(rùn)。有鉛焊錫的焊點(diǎn)應(yīng)該是光亮、圓潤(rùn)、呈圓錐狀的如果焊點(diǎn)表面發(fā)灰、發(fā)暗多半是溫度不夠或者焊接時(shí)間太長(zhǎng)助焊劑已經(jīng)揮發(fā)完了。第四拆焊技巧也必須練兩個(gè)腳的元件用烙鐵頭同時(shí)加熱兩個(gè)焊點(diǎn)就能取下來(lái)多腳的芯片就得上吸錫帶或者用低熔點(diǎn)合金這個(gè)練熟了對(duì)后期調(diào)試時(shí)換元件非常有幫助。我練習(xí)焊接時(shí)還有個(gè)特別的技巧不要只用練習(xí)板練直接找一些廢舊電路板來(lái)拆焊。舊電腦主板上密密麻麻的貼片電阻電容拆一個(gè)少一個(gè)拆完再焊回去既練了拆焊又練了焊接而且拆下來(lái)的元件還能用。我當(dāng)時(shí)拆了一堆舊板子上的電解電容和貼片電阻攢了一大盒后面DIY項(xiàng)目時(shí)經(jīng)常用到省了不少錢(qián)。3.2 原理圖設(shè)計(jì)從數(shù)據(jù)手冊(cè)開(kāi)始做硬件設(shè)計(jì)第一課就是讀數(shù)據(jù)手冊(cè)。很多新手拿到芯片第一反應(yīng)就是找中文教程但正經(jīng)的設(shè)計(jì)流程一定是先看芯片的數(shù)據(jù)手冊(cè)搞清楚它的引腳定義、電氣特性、推薦電路然后再畫(huà)原理圖。以我做的環(huán)境監(jiān)測(cè)節(jié)點(diǎn)為例核心芯片選的是STM32F103C8T6。我第一次畫(huà)原理圖時(shí)對(duì)它的電源電路很不確定因?yàn)樗蠽DDA、VSSA這些引腳不知道該接什么。后來(lái)仔細(xì)讀數(shù)據(jù)手冊(cè)才明白VDDA是模擬電源引腳需要接一個(gè)磁珠或小電阻再連接到VDD同時(shí)加一個(gè)去耦電容這樣能減少數(shù)字噪聲對(duì)模擬電路的影響。這個(gè)細(xì)節(jié)如果不看數(shù)據(jù)手冊(cè)直接抄開(kāi)發(fā)板的原理圖可能永遠(yuǎn)都不會(huì)理解。面試時(shí)如果被問(wèn)到“為什么這里要加一個(gè)磁珠”你能說(shuō)出來(lái)是因?yàn)槟M電源和數(shù)字電源之間的隔離面試官就會(huì)知道你是真的做過(guò)設(shè)計(jì)而不是抄板。再比如傳感器選型環(huán)境監(jiān)測(cè)節(jié)點(diǎn)我用的溫濕度傳感器是SHT30它支持I2C通信精度和功耗都符合需求。選型時(shí)要看的關(guān)鍵參數(shù)包括工作電壓范圍、通信接口、測(cè)量精度、功耗、封裝形式。為什么選SHT30而不是DHT11因?yàn)镈HT11精度只有正負(fù)2度SHT30能做到正負(fù)0.3度而且SHT30是標(biāo)準(zhǔn)的I2C接口DHT11是單總線協(xié)議需要自己模擬時(shí)序調(diào)試起來(lái)更繁瑣。另外SHT30有多個(gè)I2C地址可選0x44和0x45一個(gè)I2C總線上可以掛兩個(gè)SHT30這個(gè)特性在某些項(xiàng)目里很有用。這些差異都是我在設(shè)計(jì)時(shí)通過(guò)對(duì)比數(shù)據(jù)手冊(cè)里的參數(shù)做出來(lái)的選擇面試時(shí)把這些講清楚遠(yuǎn)比說(shuō)“我用過(guò)DHT11”有說(shuō)服力。3.3 PCB Layout布局布線的關(guān)鍵細(xì)節(jié)PCB Layout是新手最容易忽視但面試官最看重的技能之一。我第一個(gè)項(xiàng)目的板子畫(huà)得很粗糙布局的時(shí)候元件隨便擺走線也不注意結(jié)果打樣回來(lái)后發(fā)現(xiàn)很多問(wèn)題電源走線太細(xì)導(dǎo)致壓降大高速信號(hào)線太長(zhǎng)導(dǎo)致波形畸變晶振離MCU太遠(yuǎn)導(dǎo)致起振困難。這些問(wèn)題如果不是自己走一遍打樣回來(lái)調(diào)試的流程永遠(yuǎn)體會(huì)不到布局布線的重要性。我總結(jié)的PCB布局布線核心規(guī)則主要有幾條。第一先布局后布線元件位置決定走線難度。布局時(shí)優(yōu)先把核心芯片放在板子中心晶振、去耦電容盡量靠近芯片引腳模擬部分和數(shù)字部分分區(qū)放置。第二電源線要寬地線要完整。我的經(jīng)驗(yàn)是電源線至少1mm寬地線能鋪銅就鋪銅盡量不要用細(xì)線走地。第三去耦電容要靠近電源引腳而且連接方式要正確——去耦電容的一個(gè)焊盤(pán)直接打孔到地平面另一個(gè)焊盤(pán)盡量靠近電源引腳走線這樣才是有效的去耦。如果我當(dāng)時(shí)把這些規(guī)則吃透第一個(gè)項(xiàng)目的調(diào)試時(shí)間至少能縮短一半。還有一個(gè)新手很容易犯的錯(cuò)走線走完了才發(fā)現(xiàn)某一個(gè)網(wǎng)絡(luò)還有沒(méi)連上的然后用一根很長(zhǎng)的繞線去連接。這種“飛線”不僅影響美觀還容易出問(wèn)題。正確的做法是在布線之前先把布局調(diào)好用原理圖的連接關(guān)系去指導(dǎo)元件擺放——經(jīng)常相連的元件擺在一起這樣布線就會(huì)很順暢。如果布線到一半發(fā)現(xiàn)某一根線怎么走都不對(duì)問(wèn)題很可能不是這根線的問(wèn)題而是前面的布局有問(wèn)題果斷回去調(diào)整元件位置比硬要繞線好得多。3.4 焊接調(diào)試從硬件到軟件的聯(lián)調(diào)板子打樣回來(lái)焊接調(diào)試是整個(gè)實(shí)操訓(xùn)練中最刺激也最折磨人的環(huán)節(jié)。我第一次焊完板子上電之前用萬(wàn)用表的蜂鳴檔先測(cè)了一遍電源和地之間有沒(méi)有短路確認(rèn)沒(méi)問(wèn)題之后才敢接電源。這是非常關(guān)鍵的一步——如果電源和地短路一上電芯片就冒煙了整個(gè)板子就廢了。上電之后下一步是檢查各點(diǎn)的電壓。先量電源芯片的輸出對(duì)不對(duì)AMS1117-3.3輸入5V輸出3.3V用萬(wàn)用表確認(rèn)一下。然后量MCU的供電引腳3.3V到位沒(méi)。接著量晶振兩個(gè)引腳正常情況下應(yīng)該量到0.5V左右的直流電壓這是晶振振蕩后引腳上的平均電壓量不到就說(shuō)明晶振沒(méi)起振要檢查晶振負(fù)載電容是否匹配、焊接是否可靠。這些基礎(chǔ)檢查做完才輪到程序下載。程序下載不進(jìn)去是新手最常見(jiàn)的坑。我的第一個(gè)板子就遇到了這個(gè)問(wèn)題用ST-Link連接之后報(bào)錯(cuò)“No target connected”。排查了半個(gè)多小時(shí)最后發(fā)現(xiàn)是MCU的Boot0引腳電平不對(duì)。STM32的Boot0拉高是進(jìn)入ISP下載模式拉低才是正常Flash啟動(dòng)模式。我的板子Boot0通過(guò)一個(gè)10K電阻接地了但是焊接時(shí)將電阻虛焊導(dǎo)致Boot0引腳懸空調(diào)試器連不上。用烙鐵補(bǔ)焊之后問(wèn)題立刻解決。這種情況如果沒(méi)有動(dòng)手實(shí)操經(jīng)驗(yàn)光靠看書(shū)是不可能遇到的而遇到一次之后你就能記住一輩子。硬件初始化完成之后就是軟件聯(lián)調(diào)了。我調(diào)試I2C通信時(shí)用的是邏輯分析儀看波形先看I2C的START條件對(duì)不對(duì)再看地址字節(jié)和ACK位有沒(méi)有。第一次看I2C波形時(shí)發(fā)現(xiàn)SDA線上有數(shù)據(jù)但SCL時(shí)鐘線上只有一個(gè)脈沖就停了看波形分析發(fā)現(xiàn)是我代碼里I2C時(shí)鐘初始化配置錯(cuò)了導(dǎo)致SCL頻率設(shè)置得太低傳感器響應(yīng)超時(shí)。把時(shí)鐘配置改對(duì)之后I2C通信就正常了。這種聯(lián)調(diào)的過(guò)程是把硬件和軟件結(jié)合起來(lái)理解的最好方式。4. 兩個(gè)完整項(xiàng)目的實(shí)戰(zhàn)復(fù)盤(pán)4.1 環(huán)境監(jiān)測(cè)節(jié)點(diǎn)打通傳感器到上位機(jī)的整條鏈路環(huán)境監(jiān)測(cè)節(jié)點(diǎn)項(xiàng)目雖然在技術(shù)上不算復(fù)雜但它的價(jià)值在于覆蓋了一整條硬件開(kāi)發(fā)鏈條需求分析、器件選型、原理圖設(shè)計(jì)、PCB Layout、焊接調(diào)試、嵌入式編程、上位機(jī)通信。每一個(gè)環(huán)節(jié)我都踩了坑也都從中收獲了經(jīng)驗(yàn)。需求方面我要求這個(gè)節(jié)點(diǎn)能實(shí)現(xiàn)讀取SHT30溫濕度數(shù)據(jù)、讀取BH1750光照強(qiáng)度數(shù)據(jù)、在0.96寸OLED屏上顯示、通過(guò)串口發(fā)送到PC上位機(jī)、數(shù)據(jù)刷新頻率1Hz。這個(gè)需求定義清楚之后選型就變得非常明確。STM32F103C8T6作為主控SHT30溫濕度傳感器走I2CBH1750光照傳感器也走I2C這里要注意兩個(gè)設(shè)備的I2C地址不能沖突OLED屏我用的是SSD1306驅(qū)動(dòng)的I2C版上位機(jī)用Python的pySerial庫(kù)讀取串口數(shù)據(jù)并打印到終端。PCB設(shè)計(jì)時(shí)我把傳感器和主控板做在了同一塊板上沒(méi)有用模塊插接的方式。這樣做的目的是為了鍛煉整板設(shè)計(jì)能力——如果都用現(xiàn)成模塊那其實(shí)就是搭積木畫(huà)板的賣(mài)出點(diǎn)就沒(méi)了。第一次畫(huà)板時(shí)犯了幾個(gè)錯(cuò)SHT30的I2C上拉電阻忘加了后來(lái)發(fā)現(xiàn)SHT30模塊上自帶但自己畫(huà)板時(shí)必須加上I2C總線需要外部上拉電阻才能工作OLED的供電腳和邏輯腳位置搞反了幸好只是主控端的連接反了軟件里改一下IO定義就行如果是板子上的排針定義錯(cuò)就得割線飛線晶振布局離MCU太遠(yuǎn)導(dǎo)致起振不穩(wěn)定。這些問(wèn)題讓我真正理解了“設(shè)計(jì)就是權(quán)衡”這句話——你不能只顧著布局美觀還要考慮信號(hào)完整性。調(diào)試過(guò)程中最典型的案例是BH1750的數(shù)據(jù)偏差問(wèn)題。讀出來(lái)的光照度在室內(nèi)是500勒克斯左右但總覺(jué)得不太對(duì)勁拿手機(jī)對(duì)照了一下手機(jī)顯示的光照度只有200多勒克斯。查了半天最后發(fā)現(xiàn)是PCB設(shè)計(jì)的問(wèn)題——我把BH1750靠近了一個(gè)功率電感電感的磁場(chǎng)干擾了傳感器的模擬電路。把傳感器挪遠(yuǎn)一些數(shù)據(jù)就準(zhǔn)確了。這個(gè)案例對(duì)我的啟發(fā)非常大硬件工程師不僅要能“把功能做出來(lái)”還要能“把性能做好”有時(shí)候功能能跑但數(shù)據(jù)不對(duì)這比完全沒(méi)輸出更讓人頭疼也更考驗(yàn)調(diào)試能力。這個(gè)項(xiàng)目完成后我的收獲不只是“我做出了一個(gè)能跑的板子”而是“我知道從無(wú)到有做一個(gè)產(chǎn)品需要經(jīng)歷什么”。面試時(shí)把這個(gè)項(xiàng)目的架構(gòu)畫(huà)出來(lái)講清楚每個(gè)模塊為什么這么選、中間踩過(guò)什么坑、最后怎么解決的面試官會(huì)覺(jué)得你是一個(gè)真正有項(xiàng)目經(jīng)驗(yàn)的人。4.2 直流電機(jī)調(diào)速系統(tǒng)閉環(huán)控制帶來(lái)的面試加分第二個(gè)項(xiàng)目我做的是帶PID閉環(huán)控制的直流電機(jī)調(diào)速系統(tǒng)這個(gè)項(xiàng)目明顯比環(huán)境監(jiān)測(cè)節(jié)點(diǎn)高一個(gè)level。硬件上多了電機(jī)驅(qū)動(dòng)電路我用的L298N驅(qū)動(dòng)模塊但板子上設(shè)計(jì)成可以直接插L298N模塊的方式?jīng)]有把大電流電路畫(huà)進(jìn)主板里多了編碼器接口電路電機(jī)自帶的霍爾編碼器軟件上PID控制算法的實(shí)現(xiàn)。為什么選擇這個(gè)項(xiàng)目因?yàn)殚]環(huán)控制是硬件工程師面試的高頻考點(diǎn)。大部分應(yīng)屆生對(duì)閉環(huán)的理解只停留在概念層面真正自己用PID控制過(guò)程量的經(jīng)歷是比較稀缺的。如果你能在簡(jiǎn)歷上寫(xiě)“實(shí)現(xiàn)了一個(gè)基于增量式PID的直流電機(jī)閉環(huán)調(diào)速系統(tǒng)”面試官大概率會(huì)深問(wèn)你幾個(gè)問(wèn)題PID參數(shù)怎么調(diào)的采樣周期怎么定的電機(jī)換向時(shí)需不需要死區(qū)這些問(wèn)題的答案都能體現(xiàn)你的實(shí)操深度。我在設(shè)計(jì)與實(shí)現(xiàn)這個(gè)項(xiàng)目時(shí)第一步是確定系統(tǒng)的物理結(jié)構(gòu)12V直流減速電機(jī)帶霍爾編碼器、L298N驅(qū)動(dòng)、STM32主控板、按鍵輸入、OLED顯示?;魻柧幋a器是AB相輸出通過(guò)定時(shí)器的編碼器模式讀取轉(zhuǎn)速方向定時(shí)器TIM4的編碼器模式可以直接識(shí)別A相B相信號(hào)的相位差不需要外部中斷來(lái)處理方向判斷這個(gè)設(shè)計(jì)大大簡(jiǎn)化了軟件邏輯。PID控制算法的實(shí)現(xiàn)上首先我實(shí)現(xiàn)了增量式PID因?yàn)楹臀恢檬絇ID相比增量式只輸出控制增量不會(huì)產(chǎn)生積分飽和的問(wèn)題而且準(zhǔn)和停的效果更好。采樣周期我設(shè)為10ms對(duì)應(yīng)的控制頻率是100Hz對(duì)于電機(jī)這個(gè)慣性較大的被控對(duì)象來(lái)說(shuō)足夠了。PID參數(shù)整定我用的是最樸素的試湊法先只加P從小往大調(diào)直到系統(tǒng)出現(xiàn)臨界振蕩記錄此時(shí)的比例增益為Ku約為3.2然后根據(jù)Ziegler-Nichols經(jīng)驗(yàn)公式初步設(shè)置PID參數(shù)在此基礎(chǔ)上微調(diào)。這個(gè)過(guò)程看似“老土”但它讓你真正理解了PID的每一項(xiàng)參數(shù)會(huì)對(duì)系統(tǒng)有什么影響——P大了超調(diào)I大了振蕩D大了噪聲放大。硬件調(diào)試中遇到的一個(gè)棘手問(wèn)題是編碼器信號(hào)抖動(dòng)。電機(jī)一啟動(dòng)編碼器的A相和B相信號(hào)波形簡(jiǎn)直慘不忍睹毛刺多、上升沿不陡。用示波器看了之后確認(rèn)這是共地問(wèn)題——電機(jī)驅(qū)動(dòng)電流大地線上的壓降在編碼器信號(hào)上疊加了噪聲。解決辦法是在編碼器信號(hào)線上加低通RC濾波同時(shí)把驅(qū)動(dòng)板和主控板的地進(jìn)行單點(diǎn)連接。這個(gè)問(wèn)題的解決讓我深刻體會(huì)了一個(gè)原則硬件調(diào)試時(shí)要習(xí)慣用示波器看信號(hào)質(zhì)量而不是只用萬(wàn)用表量“通不通”。這個(gè)項(xiàng)目做下來(lái)我的另一個(gè)收獲是學(xué)會(huì)了斗數(shù)據(jù)手冊(cè)。為了搞清楚電機(jī)編碼器的分辨率我的電機(jī)是每轉(zhuǎn)13線AB相輸出對(duì)應(yīng)四倍頻后每轉(zhuǎn)52個(gè)脈沖我翻了好幾頁(yè)電機(jī)規(guī)格書(shū)還去查了L298N和TB6612的區(qū)別。TB6612比L298N更適合這個(gè)場(chǎng)景因?yàn)樗膲航档汀l(fā)熱小、體積小我當(dāng)時(shí)為了省事用了L298N其實(shí)做一個(gè)正經(jīng)設(shè)計(jì)用TB6612會(huì)更合理。如果再做一次我會(huì)直接選TB6612。5. 求職準(zhǔn)備與面試實(shí)戰(zhàn)5.1 簡(jiǎn)歷怎么寫(xiě)項(xiàng)目經(jīng)歷要能經(jīng)得起追問(wèn)實(shí)操基礎(chǔ)打牢之后求職階段的信息差也很重要。硬件工程師的簡(jiǎn)歷項(xiàng)目經(jīng)歷部分是核心怎么寫(xiě)決定了你能不能拿到面試機(jī)會(huì)。我的寫(xiě)作思路是“1個(gè)自我評(píng)價(jià)2個(gè)核心項(xiàng)目若干技能清單”的結(jié)構(gòu)。自我評(píng)價(jià)不要寫(xiě)“性格開(kāi)朗、學(xué)習(xí)能力強(qiáng)”這種空話要寫(xiě)“能獨(dú)立完成單片機(jī)系統(tǒng)硬件設(shè)計(jì)具備扎實(shí)的焊接與調(diào)試能力熟悉常用測(cè)試儀器的使用”有實(shí)際的東西支撐。項(xiàng)目經(jīng)歷的描述要遵循“三段式”背景與目標(biāo)為什么要做這個(gè)、你的角色與實(shí)現(xiàn)方案你做了什么、結(jié)果與收獲做得怎么樣學(xué)到了什么。比如環(huán)境監(jiān)測(cè)節(jié)點(diǎn)這個(gè)項(xiàng)目我寫(xiě)的是“設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于STM32的環(huán)境監(jiān)測(cè)節(jié)點(diǎn)負(fù)責(zé)原理圖設(shè)計(jì)、PCB Layout雙層板與焊接調(diào)試實(shí)現(xiàn)了SHT30溫濕度與BH1750光照數(shù)據(jù)的采集與OLED顯示通過(guò)UART與上位機(jī)通信實(shí)測(cè)運(yùn)行穩(wěn)定”。一句話把項(xiàng)目?jī)?nèi)容和你的貢獻(xiàn)講清楚面試官一看就知道你在這個(gè)項(xiàng)目里干了什么活。簡(jiǎn)歷里寫(xiě)技能要誠(chéng)實(shí)不要寫(xiě)“精通”這個(gè)詞。精通意味著你在那個(gè)領(lǐng)域已經(jīng)達(dá)到專(zhuān)家水平而應(yīng)屆生幾乎不可能精通任何東西。我的寫(xiě)法是“熟練使用”還是“了解”用得非常小心。比如“熟練使用STM32系列單片機(jī)進(jìn)行嵌入式開(kāi)發(fā)”“熟悉模擬電路設(shè)計(jì)基礎(chǔ)與常用傳感器的應(yīng)用”“了解PID控制原理并具備實(shí)際調(diào)參經(jīng)驗(yàn)”。這種表述真實(shí)可信面試官也不會(huì)因?yàn)椤笆炀殹眱蓚€(gè)字就專(zhuān)門(mén)挑你的刺因?yàn)槊嬖嚂r(shí)聊兩句就知道你真實(shí)水平了。還有一個(gè)特別重要的點(diǎn)項(xiàng)目經(jīng)歷寫(xiě)到簡(jiǎn)歷上就必須能經(jīng)得起追問(wèn)。面試官不會(huì)只問(wèn)“你做了什么”一定會(huì)追問(wèn)“為什么這么做”“還有什么方案”“如果條件變了你怎么改”。所以在面試之前我把兩個(gè)項(xiàng)目的每一個(gè)關(guān)鍵決策都重新過(guò)了一遍用“面試官可能會(huì)問(wèn)什么”的思維梳理了一遍。比如環(huán)境監(jiān)測(cè)節(jié)點(diǎn)項(xiàng)目中面試官可能會(huì)問(wèn)“為什么選I2C接口的傳感器而不是SPI”我的回答是“I2C只需要兩根線布線更簡(jiǎn)單對(duì)于傳感器這種低速設(shè)備完全夠用SPI速度更快但需要更多引腳而且每個(gè)從設(shè)備都需要單獨(dú)的片選信號(hào)連線復(fù)雜?!边@種問(wèn)題想清楚了面試時(shí)才不會(huì)卡殼。5.2 面試問(wèn)題清單技術(shù)面反客為主硬件工程師的技術(shù)面試問(wèn)題風(fēng)格跟軟件崗差別很大。軟件崗喜歡考算法和八股硬件崗更看重你對(duì)實(shí)際工程問(wèn)題的理解和解決問(wèn)題的能力。我整理了一個(gè)自己面試時(shí)被問(wèn)過(guò)的高頻問(wèn)題清單供大家參考電源設(shè)計(jì)相關(guān)LDO和DC-DC的區(qū)別什么時(shí)候用LDO什么時(shí)候用DC-DC這個(gè)問(wèn)題的核心考察點(diǎn)是當(dāng)輸入輸出壓差小且負(fù)載電流不大時(shí)用LDO更簡(jiǎn)單效率不追求極致、紋波要求高時(shí)LDO有優(yōu)勢(shì)壓差大、電流大時(shí)用DC-DC但DC-DC有開(kāi)關(guān)噪聲布局布線要求更高。信號(hào)完整性相關(guān)什么是阻抗匹配什么時(shí)候需要考慮回答要提到差分信號(hào)、高速數(shù)字信號(hào)如USB、以太網(wǎng)走線需要控制阻抗常規(guī)低速信號(hào)不用太擔(dān)心但晶振信號(hào)線要盡量短??垢蓴_相關(guān)板子上的信號(hào)受到干擾會(huì)怎么排查這個(gè)我會(huì)結(jié)合編碼器抖動(dòng)的案例來(lái)回答先看波形確認(rèn)噪聲來(lái)源再確定是共地問(wèn)題還是電源濾波不足再對(duì)癥下藥。元器件選型相關(guān)如果給你一個(gè)需求你怎么選主控芯片我會(huì)從主頻、Flash和RAM大小、外設(shè)資源有幾個(gè)UART、I2C、SPI、定時(shí)器、功耗、封裝、價(jià)格、供貨穩(wěn)定性和開(kāi)發(fā)資料成熟度幾個(gè)方面來(lái)考慮。調(diào)試工具相關(guān)示波器的帶寬是什么意思為什么帶寬要夠帶寬決定你能觀測(cè)到的信號(hào)頻率范圍測(cè)3.3V的數(shù)字信號(hào)至少需要500MHz帶寬對(duì)于5ns的上升沿不然能看到的大概率是變形后的波形。這些問(wèn)題回答得好不好直接取決于你這3個(gè)月的實(shí)操積累。因?yàn)橹挥心阏娴暮高^(guò)板子、看過(guò)波形、排過(guò)故障才能講出那些只有“動(dòng)手”才能獲得的細(xì)節(jié)。不要背答案要講“我遇到這個(gè)問(wèn)題的場(chǎng)景我當(dāng)時(shí)的排查思路最后解決的辦法”這種有故事的表達(dá)遠(yuǎn)比干巴巴的答案更具說(shuō)服力。5.3 談薪與offer選擇別只看薪資還要看平臺(tái)拿到offer之后選擇也很有講究。我現(xiàn)在回頭看第一份工作的選擇對(duì)職業(yè)發(fā)展影響非常大平臺(tái)、業(yè)務(wù)方向、帶你的導(dǎo)師這些都比起薪重要得多。如果你手上同時(shí)有幾個(gè)offer我建議按這個(gè)優(yōu)先級(jí)來(lái)考慮第一優(yōu)先級(jí)是行業(yè)方向你做的東西是不是未來(lái)的發(fā)展方向比如汽車(chē)電子、工業(yè)控制、醫(yī)療電子、AIoT這些方向的積累在市場(chǎng)上是通用的第二優(yōu)先級(jí)是平臺(tái)大公司流程規(guī)范、培訓(xùn)體系完善創(chuàng)業(yè)公司能接觸更多模塊、成長(zhǎng)快但抗風(fēng)險(xiǎn)能力弱第三優(yōu)先級(jí)才是薪資薪資差距在5000以內(nèi)都可以接受但平臺(tái)和方向的差距在三年后會(huì)非常明顯。面試的時(shí)候有一個(gè)問(wèn)題一定要問(wèn)清楚團(tuán)隊(duì)現(xiàn)在的技術(shù)積累在哪個(gè)階段有沒(méi)有做過(guò)類(lèi)似產(chǎn)品的經(jīng)驗(yàn)如果團(tuán)隊(duì)還在從0到1的階段那你進(jìn)去之后要承擔(dān)很多驗(yàn)證性的工作成長(zhǎng)快但壓力大如果團(tuán)隊(duì)已經(jīng)有成熟的產(chǎn)品線那你會(huì)更多接觸到量產(chǎn)中的問(wèn)題——質(zhì)量、可靠性、成本控制這些經(jīng)驗(yàn)在職業(yè)發(fā)展后期非常值錢(qián)。我最后選的是一家做工業(yè)控制方向的公司產(chǎn)品涉及傳感器采集、電機(jī)控制、通信模塊面試時(shí)的技術(shù)主管看起來(lái)是務(wù)實(shí)型的老工程師聊技術(shù)問(wèn)題時(shí)給我的感受是“這個(gè)人能學(xué)到東西”這種判斷我認(rèn)為比薪資更重要。6. 給同樣處境的同學(xué)的建議與避坑指南6.1 3個(gè)月實(shí)操期最容易踩的5個(gè)坑經(jīng)歷了這3個(gè)月我總結(jié)出幾個(gè)新手實(shí)操時(shí)最容易掉進(jìn)去的坑寫(xiě)在這里給大家提個(gè)醒。第一個(gè)坑是貪多嚼不爛。很多同學(xué)一開(kāi)始熱情高漲想一個(gè)月同時(shí)學(xué)會(huì)STM32、畫(huà)板、焊板、學(xué)Python最后什么都沒(méi)學(xué)精。正確的做法是聚焦。3個(gè)月能做好兩個(gè)項(xiàng)目已經(jīng)非常優(yōu)秀了三心二意只會(huì)什么都做不成。第二個(gè)坑是過(guò)度依賴模塊和開(kāi)發(fā)板?,F(xiàn)在網(wǎng)上便宜的模塊太多了溫濕度模塊、WiFi模塊、語(yǔ)音識(shí)別模塊買(mǎi)來(lái)插上就能用。但如果你想靠這些模塊找硬件工程師的工作那就危險(xiǎn)了。面試官問(wèn)你這個(gè)模塊內(nèi)部是什么原理、為什么它壞了、怎么排查你就答不上來(lái)了。建議自己做核心電路模塊只作為輔助參考。第三個(gè)坑是忽視文檔輸出。做項(xiàng)目不只是把板子做出能跑就行還要養(yǎng)成寫(xiě)文檔的習(xí)慣。原理圖設(shè)計(jì)說(shuō)明、器件選型依據(jù)、調(diào)試過(guò)程記錄、問(wèn)題排查筆記這些都是非常寶貴的學(xué)習(xí)材料也是面試時(shí)可以展示的東西。我自己把每個(gè)項(xiàng)目的調(diào)試過(guò)程都寫(xiě)成了筆記面試時(shí)翻出來(lái)看既能幫我回憶細(xì)節(jié)也能展示給面試官看這是一個(gè)加分項(xiàng)。第四個(gè)坑是只做硬件不碰軟件或只做軟件不碰硬件。硬件工程師的崗位邊界現(xiàn)在越來(lái)越模糊純硬件崗位在減少“軟硬結(jié)合”的崗位在增加。就算你是以硬件為主的崗位也至少要懂得單片機(jī)軟件的基本流程因?yàn)橛布{(diào)試離不開(kāi)軟件配合。反過(guò)來(lái)做軟件也至少要能看懂原理圖不然出了問(wèn)題不知道從哪查起。第五個(gè)坑是遇到問(wèn)題就放棄不堅(jiān)持排查到底。硬件調(diào)試中90%的時(shí)間都在“找問(wèn)題”今天信號(hào)不對(duì)、明天程序跑飛、后天通信中斷這些是硬件工程師的日常。很多人做項(xiàng)目遇到一個(gè)棘手問(wèn)題就放著不管了這會(huì)讓項(xiàng)目永遠(yuǎn)停留在“半成品”狀態(tài)。我自己的經(jīng)驗(yàn)是只要不放棄大多數(shù)問(wèn)題在3天內(nèi)都能解決。堅(jiān)持排查的過(guò)程才是成長(zhǎng)最快的階段。6.2 實(shí)操訓(xùn)練如何保持持續(xù)產(chǎn)出3個(gè)月的實(shí)操訓(xùn)練最大的敵人不是難度而是時(shí)間跨度帶來(lái)的懈怠感。我用的方法是以“周”為單位設(shè)立小目標(biāo)每周結(jié)束復(fù)盤(pán)一次做一個(gè)工作匯報(bào)給自己看。比如第一周的目標(biāo)是“焊接水平達(dá)到能焊0.5mm間距的貼片芯片通過(guò)視覺(jué)檢查無(wú)明顯虛焊”第二周的目標(biāo)是“用立創(chuàng)EDA畫(huà)出一塊環(huán)境監(jiān)測(cè)節(jié)點(diǎn)主板通過(guò)DRC驗(yàn)證”第三周的目標(biāo)是“用STM32驅(qū)動(dòng)SHT30成功讀取溫濕度并在串口輸出”。這樣做的好處是每次完成的成就感都很強(qiáng)而且不會(huì)迷失大方向。另外一個(gè)保持持續(xù)產(chǎn)出的小技巧是把做出來(lái)的東西“曬”出來(lái)。我在那3個(gè)月里養(yǎng)成了在論壇和社區(qū)記錄自己項(xiàng)目進(jìn)度的習(xí)慣不是為了求關(guān)注而是為了逼自己把項(xiàng)目做完整因?yàn)榘氤善窌癯鰜?lái)會(huì)被別人指出問(wèn)題這反而是一種督促。剛開(kāi)始曬的時(shí)候被幾個(gè)熱心網(wǎng)友指出過(guò)電路設(shè)計(jì)的Bug那種場(chǎng)面雖然有點(diǎn)尷尬但確實(shí)是快速進(jìn)步的方式。6.3 實(shí)操3個(gè)月后的認(rèn)知升級(jí)這3個(gè)月除了讓我拿到了offer更重要的是改變了我對(duì)“學(xué)習(xí)”這件事的理解。上學(xué)的時(shí)候我們習(xí)慣了一道題一道題地刷一個(gè)知識(shí)點(diǎn)一個(gè)知識(shí)點(diǎn)地記但工程實(shí)踐不是這樣的——它不是線性的而是一個(gè)“完成一個(gè)完整目標(biāo)”的過(guò)程。你需要同時(shí)用上電路知識(shí)、編程知識(shí)、工具使用能力和問(wèn)題排查能力哪一塊缺了就補(bǔ)哪一塊。這種“做中學(xué)”的方式比單純的學(xué)習(xí)高效太多了。如果說(shuō)理論課是“認(rèn)識(shí)零件”那實(shí)操就是“裝配整機(jī)試車(chē)維修”的全過(guò)程。大學(xué)四年學(xué)了很多元件、很多理論但只有真正動(dòng)手做項(xiàng)目時(shí)那些知識(shí)才被真正“激活”了。我做一個(gè)直流電機(jī)調(diào)速系統(tǒng)時(shí)才發(fā)現(xiàn)自己以前學(xué)的模電知識(shí)在處理MOSFET驅(qū)動(dòng)電路時(shí)竟然派上了用場(chǎng)做環(huán)境監(jiān)測(cè)節(jié)點(diǎn)時(shí)才發(fā)現(xiàn)I2C協(xié)議在教材里三頁(yè)紙上是一個(gè)樣在實(shí)際示波器上又是另一個(gè)樣。所以如果你現(xiàn)在也在為找工作發(fā)愁我真心建議你把刷題、焦慮的時(shí)間換成動(dòng)手做項(xiàng)目的時(shí)間。去畫(huà)出第一張?jiān)韴D去打第一塊板子去寫(xiě)第一段控制程序去踩第一個(gè)坑然后再去解決它。這3個(gè)月的實(shí)操補(bǔ)課讓我拿到了offer但更重要的是它讓我真正變成了一個(gè)“能動(dòng)手”的工程師而不是一個(gè)“只會(huì)在紙上算題”的學(xué)生。最后再分享一個(gè)小技巧把自己做的項(xiàng)目整理成一個(gè)在線作品集截圖、視頻、調(diào)試筆記、原理圖、PCB圖都放上去。面試的時(shí)候直接甩給面試官看比任何簡(jiǎn)歷上的文字都更有說(shuō)服力。我就是這么拿到最終的那個(gè)硬件工程師o(wú)ffer的——筆試成績(jī)不算高但面試官看完我的項(xiàng)目記錄之后對(duì)我說(shuō)了一句讓我至今難忘的話“你是真的有動(dòng)手能力我們組就需要這樣的人?!?