基於STM32的機器學習(手勢識別)

2021-10-08 11:55:02 字數 1607 閱讀 4510

第一次寫部落格,希望能給研究微控制器ai的同仁乙個好的啟示。如有不當,多多指正。

所用到的感測器是10g的雷達晶元,晶元出來的是中頻訊號,需要根據這些中頻訊號做手勢識別。

微控制器模擬有無目標,當沒有目標時,微控制器模擬if輸出中頻訊號,雷達晶元輸出lo(本振訊號)

,混頻器的作用是將lo+if=rf。 得到的rf輸出到晶元的rx接收埠。 晶元會將這個訊號再解調出來作為最後的模擬訊號輸出到微控制器。

前期的工作接觸過微控制器的來說應該都不難,採集中頻訊號,ad轉換。

這些都不難。但重要是對這些訊號要進一步處理,包括去交流,求平均值,fft(加窗),一系列的轉換目的就是將時域的訊號轉換到頻域。曾經看過一篇經典的文章來描述時域和頻域,時域就是隨時間的變化狀態的變化,而頻域就是從側面看待這個問題,一切都是靜止的,就像每個人的人生看似隨時間不斷變化,每天充滿變數,但從頻域的角度來看,側面就好像很大的機械裝置,每個人的人生早已安排好了。很多時域看不出任何特徵的訊號在頻域一目了然。

首先神經網路的生成我用的是python,python生成神經網路現在已經很成熟了,網上的例程一大堆,我就不多說了,訓練好神經網路匯出 .h5檔案,你的工作就完成一半了。

接下來就用到官方的stm32cubemx,用這個工具生成keil5或者其他ide的工程,接下來的移植就是重中之重了。再移植之前你也考慮好你的微控制器rom和ram以及主頻速度。根據我的經驗rom 512k,ram 100k,主頻100m可以滿足初步的需要,stm32f411ceu6是我目前看到價效比最高的。下面的流程是stm32cubummx生成工程的流程,大家可以參考。

fft相關處理

ai處理

主函式部分

最終串列埠 輸出效果

不同的手勢outdata輸出不同的概率,我將概率round的最終輸出結果。至於你想用手勢控制外部任何裝置就很容易了。

基於STM32的串列埠通訊

序列通訊一般是以幀格式傳輸資料,即一幀一幀的傳輸,每一幀都含有起始訊號,資料資訊以及停止資訊等。資料各個位同時傳輸,速度快,但是占用引腳資源多。eg led1602 資料按位順序傳輸,占用引腳資源少,但是速度相對較慢。一位一位傳輸 bit iic spi 串列埠通訊 單工,半雙工,全雙工 同步通訊 ...

基於STM32的恆流源設計

本設計以stm32f103rct6為主控晶元,利用mos管的恆流區特點,設計恆流源。設計電流範圍為1 300ma。基本原理圖 q2為n溝道mos管,在正常工作情況下,運放與mos管之間構成深度負反饋,使得輸入控制電壓與vr虛短,近似相等。這可以得到負載電流 3.1.電源 電路圖如圖所示 電源由 12...

寫字機械人(基於STM32簡易實現)

寫此部落格的主要目的是為了記錄下來除錯過程中所遇到的問題,更重要的是記錄下來解決遇到的那些問題的方法,以供之後此後遇到問題之參考。該寫字機械人或叫機械臂的主控晶元為stm32f103c8t6,機械臂擁有三個水平自由度,乙個豎直自由度,該機械臂的關節處均用的是舵機驅動。從此出發,我們便需要用stm32...