2023年國賽b題,板球控制系統的一點經驗。

2021-09-18 03:43:23 字數 2467 閱讀 8051

基於arm開發板和stm32的半球控制系統
對於2023年國賽b題,想必看到我的這篇部落格的朋友也和我一樣,是做訓練的。沒錯,我是乙個為2023年國賽做準備的菜鳥。剛做完半球控制系統。想來這裡交流一下經驗。

剛看到這個題目的時候,我想過stm32是最佳的選擇。但是用stm32有乙個很大的問題,因為stm32裸機限制,不能實時處理多個程序。所以需要用兩塊stm32開發板。但是由於stm32的運算能力和自己對於演算法不熟的侷限性。我另外想了一種方案。

armlinux+opencv+stm32做這個題。

下面我們進行對比:

一:兩塊stm32:

1,(優點) 操作方便,開發簡單容易, 低成本,stm32入門簡單,邏輯清晰。

2,(缺點)stm32運算能力較arm開發板較低,無實時系統。影象的抗干擾能力差。會受周圍光線影響。

二:一塊arm開發板作為主控

這裡做一下說明,我剛開始就是打算用一塊arm開發版做這個題。我用的友善的開發板,用的人家martix庫驅動的pwm(不知道的可以google或者維基百科);但是後來我發現他們的程式設計師寫這個驅動的時候沒有考慮動態的改變pwm的頻率和占空比,只是簡單的實現的pwm輸出而已。經過我的實踐發現,這個pwm驅動動態改變時,每一次都會在linux核心進行檔案操作。以至於響應慢。輸出還有噪音。最後我放棄了這種做法。改用stm32做電機控制機。

三:arm和是stm32:用stm32做電機控制可以說非常簡單了,對於占空比和頻率的改變響應迅速。opencv又是開源的影象處理工具,非常強大。經過opencv處理後的影象抗干擾能力強。基本不受光照的影響。但是難點在於串列埠的通訊。32和arm開發板的通訊過程需要自己設計。

機械結構及其硬體方案

這裡我採用的是舵機驅動,易於調節。採用一塊木板和萬向節作為板的支撐。然後x,y方向放置兩個舵機,利用pwm的占空比控制舵機上下移動來定位。

關於程式設計

首先要解決的問題是,怎麼讓stm32接受一幀完整的資料,怎麼分辨arm傳送的資料是有效資料。說白了,就是自己寫乙個通訊協議。當然,github上面有更加標準化的用資料結構寫的也可以拿來用用。這裡貼出我寫的stm32的接受協議

if(usart_getitstatus(usart1, usart_it_rxne) != reset)  //接收中斷(接收到的資料必須是0x0d 0x0a結尾)

break;

case 1:

if( usart1->dr=='$')

else if( usart1->dr=='#')

puarthandle.step = 1;

else

break;

case 2:

if( usart1->dr=='#')

else

}break;

case 3:

// printf("%d",puarthandle.tmpcnt);

puarthandle.arxbuf_1[puarthandle.arxbufindex++] = usart1->dr;

puarthandle.tmpcnt--;

if(puarthandle.arxbufindex >= rx_buf_1_length)

if(puarthandle.tmpcnt==0)

break;

default:

struct_init();

break;

}

}

上面貼上的是stm32中斷接收的**,**實現了對於幀頭的識別和區分,有效資料位識別,請自行研究。說明一下:裡面的 puarthandle是乙個結構體,在下面貼出。

struct pos

puarthandle;

void struct_init(void)

}然後就是傳送的函式了:

char *send(char a, short int data)

str[n + 3] = 『\0』;

//printf("%s\n",str);

return str;

}包括pid的運算都是在linux系統上完成的

主函式中傳送x,y座標我用了"*" ,"#"這兩個不同的幀頭作為識別。

利用乙個子執行緒去做pid運算,主線程做影象處理。

2023年省賽b組

小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。這不,xx大 又來了!老闆夫人開出了長長的購物單,都是有打折優惠的。小明也有個怪癖,不到萬不得已,從不刷卡,直接現金搞定。現在小明很心煩,請你幫他計算一下,需要從取款機上取多少現金...

2017藍橋杯B組國賽 瓷磚樣式

題目 小明家的一面裝飾牆原來是 3 10 的小方格。現在手頭有一批剛好能蓋住2個小方格的長方形瓷磚。瓷磚只有兩種顏色 黃色和橙色。小明想知道,對於這麼簡陋的原料,可以貼出多少種不同的花樣來。小明有個小小的強迫症 忍受不了任何2 2的小格仔是同一種顏色。瓷磚不能切割,不能重疊,也不能只鋪一部分。另外,...

雷射樣式 2023年藍橋盃國賽題

問題描述 x星球的盛大節日為增加氣氛,用30台機光器一字排開,向太空中打出光柱。安裝除錯的時候才發現,不知什麼原因,相鄰的兩台雷射器不能同時開啟!國王很想知道,在目前這種bug存在的情況下,一共能打出多少種雷射效果?顯然,如果只有3臺機器,一共可以成5種樣式,即 全都關上 sorry,此時無聲勝有聲...