大家好,今年帶學生參加了全國大學生電子設計競賽,比賽一共四天三夜?,F(xiàn)在比賽已經(jīng)結(jié)束,學生們也陸續(xù)回到正常的學習生活中,但這幾天的過程還是值得復盤一下。

在只有四天三夜的情況下,一支隊伍到底需要具備什么能力,才能把一個臨時拿到的題目,變成一個可以測試、可以演示的作品?
很多沒有參加過電賽的同學,可能會覺得四天時間已經(jīng)不少了。
但真正進入比賽以后,時間會過得非??臁?/span>
拿到題目之后,需要先讀題,理解指標,確定方案,然后開始準備硬件、編程、焊接、機械結(jié)構(gòu)和調(diào)試。中間只要有一個環(huán)節(jié)出問題,后面的進度就會一起往后推。
更麻煩的是,方案不能無限迭代。
平時做項目,如果發(fā)現(xiàn)思路不合適,可以推倒重來,重新畫板、重新買器件,甚至換一個方向。但是電賽只有四天三夜,很多時候你剛剛發(fā)現(xiàn)方案存在問題,時間已經(jīng)不允許你重新開始了。
所以電賽不是看誰能想出最復雜的方案,而是看誰能在有限時間里,判斷出什么能做,什么不能做,哪些功能必須先完成,哪些功能可以暫時放一放。
這個判斷能力,其實比單純的技術(shù)能力更重要。
有些方案理論上非常漂亮,但是實現(xiàn)周期太長,最后可能連基本功能都沒有完成;有些方案看起來沒有那么復雜,但是每個環(huán)節(jié)都比較穩(wěn),最后反而更容易把指標做出來。
這也是我?guī)ш犨^程中比較強調(diào)的一點:
電賽首先是一個工程問題,然后才是一個技術(shù)問題。
這次比賽前后,也有同學問過我,現(xiàn)在不是有很多AI工具嗎?能不能讓AI幫忙寫代碼,這樣是不是可以節(jié)省很多時間?
我的看法比較明確:AI可以輔助,但想靠AI完成電賽編程,現(xiàn)實中并沒有那么簡單。
首先,AI不知道你的硬件到底是什么狀態(tài)。
它可以根據(jù)你的描述,給你寫一段GPIO、定時器、ADC或者通信代碼,但代碼能不能直接運行,取決于芯片型號、寄存器配置、時鐘樹、引腳復用、外設連接方式以及工程本身的框架。
這些東西只要有一個地方不一致,代碼就可能無法運行。
其次,電賽里最花時間的往往不是把代碼寫出來,而是定位代碼為什么沒有按照預期運行。
屏幕沒有顯示,可能是程序問題,也可能是供電問題、焊接問題、引腳問題、時序問題,甚至可能是硬件已經(jīng)損壞。AI可以給出很多可能性,但它無法直接拿著示波器去測你的板子,也不能替你判斷某個焊點到底有沒有虛焊。
再往后,真正影響比賽進度的通常是軟硬件之間的配合。
你需要根據(jù)實際波形修改采樣方式,根據(jù)傳感器的安裝位置調(diào)整算法,根據(jù)機械結(jié)構(gòu)的響應修改控制參數(shù)。這些工作需要不斷觀察、測試和判斷,不是把一段代碼復制進去就結(jié)束了。
所以我并不是說AI沒有用。
查資料、理解陌生代碼、解釋函數(shù)、整理思路、協(xié)助檢查一些簡單邏輯,這些事情AI確實可以幫忙。
但是,想在四天三夜里臨時依靠AI建立起完整的編程能力,基本是不現(xiàn)實的。特別是當你對芯片、外設和工程框架都不熟悉時,AI生成的代碼即使看起來很專業(yè),也不代表它適合你的實際系統(tǒng)。
最終還是要回到一個比較傳統(tǒng)的能力:
你自己能不能讀懂代碼,能不能定位問題,能不能根據(jù)現(xiàn)象修改代碼。
這個能力沒有辦法完全外包給工具。
電賽中,很多同學并不是沒有想法,而是想法和實現(xiàn)之間隔著一段距離。
題目剛出來的時候,大家都能提出很多方案,甚至可以把系統(tǒng)框圖畫得很完整。但是一旦開始編程,就會發(fā)現(xiàn)每一個模塊都需要實際落地。
傳感器怎么采集?數(shù)據(jù)怎么處理?控制周期是多少?不同模塊之間怎么配合?出現(xiàn)異常時程序應該怎么處理?
如果編程基礎不夠,前面想得越多,后面越容易卡住。
這里的編程能力,也不只是會不會寫C語言語法。它還包括幾個方面:
平時如果只會調(diào)用現(xiàn)成庫函數(shù),遇到熟悉的開發(fā)板可能還能夠完成任務。但電賽的硬件和要求每年都會變化,真正到了現(xiàn)場,很多東西都需要自己判斷。
因此,編程能力不是比賽前臨時補幾天就能解決的。平時做項目時,就應該有意識地讓自己離開一鍵配置和現(xiàn)成例程,多理解一下底層運行過程。
這件事可能比較慢,但確實沒有太好的捷徑。
焊接這個事情,平時很容易被低估。
很多同學覺得,焊接只是把元器件焊到板子上,應該不算什么特別困難的能力。但到了比賽現(xiàn)場,焊接質(zhì)量會直接影響后面的調(diào)試進度。
一個焊點虛焊,可能導致系統(tǒng)時好時壞;一個電源短路,可能讓整塊板子無法工作;一個接口方向接錯,后面排查起來會非常麻煩。
更難受的是,有些焊接問題并不是一眼就能看出來的。
程序第一次運行正常,換一個角度或者碰一下線材就不正常,這時候很多人會先懷疑代碼,反復修改軟件,最后才發(fā)現(xiàn)根本原因在硬件連接上。
所以,焊接能力不只是“能焊上去”,還包括焊完之后的檢查能力。
供電是否正常,電源和地有沒有短路,關(guān)鍵引腳之間有沒有連錯,器件方向是否正確,接口信號是否符合預期,這些都應該形成基本習慣。
如果沒有經(jīng)過足夠的訓練,比賽時就容易出現(xiàn)一種情況:程序還沒有開始調(diào),硬件已經(jīng)先給你制造了很多問題。
這次涉及E題和H題,也讓我再次感覺到,很多電子類學生在機械設計方面準備得不夠。
大家對單片機、傳感器、通信和算法比較熟悉,但當作品需要穩(wěn)定運動、準確定位或者保持結(jié)構(gòu)一致時,機械部分就會直接影響最終效果。
機械結(jié)構(gòu)不是外觀問題。
結(jié)構(gòu)是否牢固,零件是否容易加工,傳感器安裝位置是否合理,重心是否合適,運動過程中有沒有干涉,這些都會影響程序調(diào)試。
如果機械結(jié)構(gòu)一直變化,軟件參數(shù)就很難穩(wěn)定下來。今天調(diào)好的參數(shù),明天換了一個安裝位置,可能就全部失效。
特別是控制類題目,機械系統(tǒng)的響應特性和軟件控制參數(shù)是連在一起的。結(jié)構(gòu)有間隙、摩擦力變化、重心不合適,都會反映到控制效果上。
因此,機械設計能力并不是機械專業(yè)學生才需要掌握的東西。對于參加電賽的隊伍來說,至少應該具備基本的結(jié)構(gòu)設計、尺寸測量、加工裝配和快速修改能力。
如果比賽前從來沒有做過實物結(jié)構(gòu),到了現(xiàn)場再臨時設計,時間壓力會非常大。
比賽結(jié)束以后,大家最容易關(guān)注的是結(jié)果。
但對于帶隊老師來說,我覺得還應該再往前看一步:這個作品是怎么完成的?哪些能力真正發(fā)揮了作用?哪些問題如果不解決,下一次還會繼續(xù)出現(xiàn)?
比如方案迭代次數(shù)為什么比較少,是因為判斷準確,還是因為前期準備不足,沒有時間重新來?
程序沒有完全按照預期運行,是編程能力問題,還是調(diào)試方法問題?
焊接出現(xiàn)問題,是操作不熟練,還是賽前沒有形成檢查流程?
機械結(jié)構(gòu)調(diào)試困難,是設計本身復雜,還是平時沒有做過類似的實物?
這些問題比“最后完成了多少功能”更值得記錄下來。
因為結(jié)果只屬于這一次比賽,但過程中的問題,很可能會出現(xiàn)在下一次比賽里。
我比較建議學生在賽后把整個過程重新梳理一遍,不一定要寫成很正式的總結(jié),哪怕只是把關(guān)鍵節(jié)點、遇到的問題和最后的解決方法記錄下來,也會有幫助。
尤其是那些當時花了很長時間才解決的問題,過一段時間以后很容易忘記。如果不記錄,下次遇到類似情況,可能還要重新走一遍彎路。
如果下一次還要參加電賽,我認為準備工作不能只放在比賽前幾周。
首先,應該提前訓練完整的開發(fā)流程,而不是只練某一個單獨模塊。拿到一個簡單任務后,從讀題、確定方案、準備硬件、編程、焊接到調(diào)試,盡量完整地走一遍。
其次,要有意識地訓練在不確定條件下解決問題的能力。比賽現(xiàn)場不可能所有器件、資料和環(huán)境都完全熟悉,遇到陌生芯片或者新的外設時,能不能快速找到手冊、理解關(guān)鍵部分并完成驗證,這很重要。
然后是機械和焊接。
這兩部分不應該等到確定題目之后才開始接觸。平時做一些小型的結(jié)構(gòu)設計、簡單加工和電路焊接,哪怕項目并不復雜,也是在為比賽積累經(jīng)驗。
最后,隊伍成員之間的分工需要提前磨合。
一個隊伍里不一定每個人都要什么都會,但至少要知道誰更擅長硬件,誰更擅長編程,誰更擅長機械和調(diào)試。比賽過程中遇到問題時,能夠快速判斷應該由誰來處理,而不是所有人一起圍著同一個問題反復討論。
這也是為什么我認為,電賽準備的重點不只是學習更多知識,而是盡量多做完整項目。
這次帶學生參加電賽,對我來說最大的感受還是:四天三夜確實很短,很多事情沒有辦法做到完美。
方案不能反復試太多次,代碼不可能臨時全部補齊,焊接和機械結(jié)構(gòu)也不可能在比賽現(xiàn)場突然變得非常熟練。
但比賽的意義,也不在于每一個細節(jié)都完美。
它更像是在有限時間里,讓大家真實地經(jīng)歷一次工程項目。從題目要求開始,到最后把作品做出來,中間會遇到很多平時在課堂上不容易遇到的問題。
AI工具以后肯定還會繼續(xù)發(fā)展,也會在資料查找、代碼理解和開發(fā)輔助方面發(fā)揮更大的作用。但對于電賽這種需要軟硬件結(jié)合、現(xiàn)場調(diào)試和快速判斷的比賽來說,學生自身的編程、焊接和機械設計能力,仍然是基礎。
這些能力可能不夠新,也不夠“智能”,但在真正需要把作品做出來的時候,還是非常實際。
以上僅僅是我一些個人感受,具體情況也會因隊伍、題目和準備程度不同而有所差異。如果大家在備賽過程中還有其他問題,也歡迎一起交流。