記我的17電賽

2021-08-07 22:06:10 字數 3179 閱讀 5536

把比賽收穫的經驗放在最前面:

技術上:

1.平時要多做做專案,c語言功底要打牢,不然臨場寫程式很容易error而且一下子找不出來原因。

2.各種常用模組比如攝像頭、霍爾感測器、mpu6050之類的角度感測器、陀螺儀都要會用。

3.各種通訊協議要掌握,學會用上位機除錯(比如匿名四軸地面站),要會自己擬定通訊協議,要會給個上位機的通訊協議能寫出符合協議的通訊**。

單純比賽的準備上:

1.多買點模組玩玩吧。

2.提前打好板子,比如攝像頭與微控制器核心板的連線,再比如核心板和鍵盤、螢幕的連線。

3.少用杜邦線,至少用了得拿膠粘牢來。

4.提前準備各種電源,控制題比賽總不能抱個學生直流電源去吧。

5.核心板最好連個觸控螢幕,什麼gui什麼的提前寫好。。。比賽的時候不能帶電腦。low點也可以搞個矩陣鍵盤+oled除錯。要是啥除錯途徑都沒有那評測的時候就很難受了。

其他方面:

1.賽前好好睡覺。不然比賽的時候就會意識到睡眠的可貴了。。

2.和隊員好好溝通,比賽過程中意外肯定是難免的,心態要放好。

3.還是心態,心態一定要好,別總想這拿大獎,比賽就乙個勁做下去,不能想太多。目標太大,遇到困難很容易心灰意冷就放棄了。

有幸在大一這個暑假參加了電賽,由於電賽註冊系統更新,比賽前一周突然可以報名了,就拉著留校做專案的倆大一室友開搞了。。。我們仨技能點都差不多51->stm32,我多乙個arduino的經驗,但32用的不熟。

這次電賽我們選擇的b題--滾球控制系統。當時出來元器件清單,網上已經有很多**是做這個東西的,但我們沒怎麼信,因為據說滾球控制系統已經是很成熟的方案了,很多高校都有樣品。萬萬沒想到,真理往往還是在大多數人手裡,就是要做滾球控制系統。

按元器件清單買的直線絲杆電機恐怕沒有用了,之前調了幾天的mpu6050模組也沒有用武之地,而繼續的攝像頭和推桿電機(舵機)都沒有準備,一切從頭開始。

第一天早上八點拿到題目,趕緊採購、搭建機械結構,經過簡單的討論,我們選擇用180°x2的舵機(從實驗室翻到乙隻機械臂然後上拆下來的)控制平板角度,考慮到arduino庫比較方便,決定使用arduino作為主控、l298n驅動、由於沒有使用攝像頭的經驗,所以決定先盲控試試能不能搞定。

很快我們就學會了使用舵機。中午12點,我調好了舵機並封裝了一些控制函式,嘉寧提前學習攝像頭的知識,鑫偉去列採購清單。

中午吃完飯,一行仨人前赴建材市場大肆採購。買來kt板、鋁合金條、泡沫膠、皮筋、美工刀之類的。

下午開始搭建機械結構,我們用鋁合金條搭架子鋪kt板做板麵,感覺挺穩的。舵機連著舵機,以乙個類似機械臂的結構固定在板**控制板麵。。。半夜搭完。。。睡覺。。

早上起來調舵機,才發現我們這種結構鬆動有點嚴重,而且舵機每打乙個角、板麵傾斜角度過大。老師建議我們改萬向節連線-邊緣打角的機械結構,但買不到萬向節了。。。。硬著頭皮幹吧。。。。。調了一下午,居然能盲控實現到第二個要求了,雖然成功率只有50%,但我們很興奮。

調到第二天中午,發現盲控並沒有什麼提公升空間,而且特別受外界因素干擾結果。覺得得找合適的感測器檢測小球位置才能把這個控制做好。

於是我們打起了實驗室的祖傳線性ccd的主意,好像是智慧型車用剩的,於是planb誕生:ccd小球檢測法。第二天傍晚調通線性ccd,這模組用起來是真簡單,讀個模擬值就行,但無奈視角太狹窄。於是planb流產。。。只能晚上和一起做控制題學長合資購買攝像頭---ov7670,髮順豐到付。。。繼續盲調。。。

第三天下午,攝像頭到貨。嘉寧很快就調通了攝像頭demo,並且讓實時畫面顯示在了一塊lcd螢幕上。但我們發現f103驅動攝像頭的例程幀率實在是太低了,大概只有2-3幀/s,顯然這個幀率對控制的實時性是不能保障的。這時候嘉寧的技術很好的體現了。嘉寧對著demo一頓操作,在刪刪減減後,幀率達到了7-8幀/s。時間到了第三天晚上,現在問題就是如何定位小球的位置了。。。

很快我就通過軟體實現了將攝像頭影象二值化(其實就是設定乙個閾值,大於這個值判定為白色,否則判定為黑色),但在如何從二值化的影象上提取小球的位置這一問題上,我和嘉寧出現了分歧:我認為將顏色跳變的畫素點向後讀三位,如果還為黑色則判定為有效畫素點並記錄下來,最後對有效畫素點統計取個平均就行;嘉寧思路和我不大一樣,所以我們各自寫程式測試,這是個痛苦的過程,因為c語言不夠熟練、加上對模組的不熟悉,夜裡很深我和嘉寧才各自調通,實現對小球的定位。兩個程式都有問題,就是健壯性很爛,很容易受到外界干擾影響。加上攝像頭我們是杜邦線連的,干擾就更強了。因為各種玄學原因,我的程式面對干擾稍微靠譜些,就採用我的prj了。。。

f103採集影象定位,將小球位置傳送給arduino。arduino的pid和舵機控制程式我在攝像頭到貨前的夜裡已經寫好了。現在問題是二者如何通訊。串列埠連線吧,又快又方便。我負責arduino通訊協議,嘉寧寫f103的,然而我們一對接,發現資料根本就讀不出來。。。。。。。。。。又忙活了幾個小時,天都亮了,還是讀不出來。(至今不知道那天夜裡無法通訊的原因)。。。。還是技術不過關吧,心灰意冷,感覺非常喪氣。。。。這時候瞟到桌上魏老師為電賽特地買的的串列埠wifi模組,我之前除錯過,拿來一用,果然好用。。。就決定是他了。。。。哈哈。。柳暗花明。。

第四天,也就是最後一天。。調了一整天的pid,苦於調pid經驗不足和攝像頭時不時罷工和抽風,整個板球控制系統宛如乙個智障。。。

後來綜測就不說了,電源都沒準備好,杜邦線+麵包板連線的電路從封裝箱子裡拿出來都散架了,好容易把線整理好,用手機充電器驅動舵機,舵機直接選擇罷工不幹了。。。。。。。。。。。。

技術上:

1.平時要多做做專案,c語言功底要打牢,不然臨場寫程式很容易error而且一下子找不出來原因。

2.各種常用模組比如攝像頭、霍爾感測器、mpu6050之類的角度感測器、陀螺儀都要會用。

3.各種通訊協議要掌握,學會用上位機除錯(比如匿名四軸地面站),要會自己擬定通訊協議,要會給個上位機的通訊協議能寫出符合協議的通訊**。

單純比賽的準備上:

1.多買點模組玩玩吧。

2.提前打好板子,比如攝像頭與微控制器核心板的連線,再比如核心板和鍵盤、螢幕的連線。

3.少用杜邦線,至少用了得拿膠粘牢來。

4.提前準備各種電源,控制題比賽總不能抱個學生直流電源去吧。

5.核心板最好連個觸控螢幕,什麼gui什麼的提前寫好。。。比賽的時候不能帶電腦。low點也可以搞個矩陣鍵盤+oled除錯。要是啥除錯途徑都沒有那評測的時候就很難受了。

其他方面:

1.賽前好好睡覺。不然比賽的時候就會意識到睡眠的可貴了。。

2.和隊員好好溝通,比賽過程中意外肯定是難免的,心態要放好。

3.還是心態,心態一定要好,別總想這拿大獎,比賽就乙個勁做下去,不能想太多。目標太大,遇到困難很容易心灰意冷就放棄了。

電賽經歷 記難忘的四天三夜

乙個很菜很菜的菜雞的電賽經歷,但對於本人卻意義深刻,對別人或許有啟發,大佬勿噴 從大一起還沒有參加過乙個需要連續熬夜的比賽,記得第一次了解到電子設計大賽時,了解到他需要熬過四天三夜之後做出乙個電子作品,當時就覺得這項比賽的難度和意義不一般,因為當時也是乙個剛學會點燈的辣雞,翻著知乎看各種大佬的回答,...

記阿里的電面

記2019年4月阿里的一次電面 在接到阿里 通知面試的時候,心情別提有多激動了,阿里那是之前自己想都不敢想的公司,阿里的員工各個都是精英,他們擁有紮實的基礎以及先進的技術,通過此次面試讓我清楚的認識到自己的不足,了解自己在今後應該從哪些方面提公升自己!下面是 具體細節 面試官是乙個超級和藹的 小哥哥...

XDU1200題解(西電17年校賽E題)

漢諾塔問題 本題將古老問題做了點改動,每乙個圓盤有相同的兩個,但是實際上這兩個圓盤必須同時移動,所以只需要將最終步驟乘2即可。自己推導了一下這個問題。首先可知,要想把處於最下層的盤x移動到c柱,必須把其上的盤集合q移動到b柱。這是第一層劃分 將x之上的盤集合q移動到b柱,然後將盤x移動到c柱,然後將...