目錄
- 作業要求
- 設計原理與思路
- 擴展任務說明
- 課程感受
- 友情鏈接
- 工程鏈接
作業要求
體能測試記錄儀設計
基于課程發放的實驗板,設計一個帶有計時和數據采集功能的體能測試記錄儀。
基本設計內容
功能1:對應1000米體測場景,使用充電寶供電,提供計時功能,按K5清零并開始計時,K6停止計時。計時過程使用數碼管顯示當前計時,K2顯示分秒,K3顯示秒、百分秒,計時結束后保持顯示結果。
功能2∶計時完成后自動將測試時間(RTC時鐘的年月日時分秒)和測試時長(分、秒、百分秒)記錄到外置FLASH存儲器。最多保存100次記錄數據,并可由K1按鍵或串口發命令讀取所有記錄。
功能3:在計時狀態,提供數據采集功能,使用MPU6050六軸傳感器,采集測試者3軸加速度和3軸角速度,每隔50ms采集數據,包括時間、6軸數據,計時結束時自動存儲采集數據。采集數據僅保存單次計時過程產生的數據,重新開始計時后覆蓋上次數據。可使用K4按鍵或由串口發命令讀取所有采集數據。
擴展設計內容
擴展功能1:使用C++、Java、C#、Matlab或Python等高級語言,編寫記錄儀上位機數據處理工具,能讀取記錄儀存儲的所有信息。能根據記錄的時間、6軸數據繪制數據曲線(6軸數據分6條曲線可單獨顯示或疊加顯示)。
擴展功能2:提供藍牙或WIFI模塊,使用安卓手機連接記錄儀,通過手機上設計的App應用,讀取記錄儀上的所有信息。并能在手機上顯示當前計時時間、當前6軸數據,計時完成后,能繪制6軸數據曲線。
擴展功能3:對應不同的體測對象,根據其各自的記錄數據進行綜合計算,分析比較其體能強弱,需給出判斷依據、算法原理和設計流程。
設計原理與思路
系統設計流程:
下位機采集到數據并將數據按照相應的協議、數據幀格式分別發送給上位機以及手機。
手機app顯示波形和當前時間。
上位機顯示波形和時間, 6軸數據分6條曲線可單獨顯示或疊加顯示。
當所有數據接收完畢,上位機會將6軸數據以及時間以文本形式保存到電腦。再使用matlab對本文數據進行讀取、分析,得到測試者體能情況。
系統框圖:
下位機設計流程:
本作業主要使用到的模塊有:MPU6050、外置flash、無線模塊esp826、藍牙HC05
再加上板子上的數碼管、按鍵;這樣就能構成我們使用RTOS所需要的task了,分為:數據采集任務、無線數據傳輸任務、藍牙數據傳輸任務、時間顯示任務、按鍵檢測任務。
關于外置flash模塊,由于寫入速度較慢,所以并沒有單獨形成一個任務,而是在停止按鍵按下后,順序執行數據存入flash操作。同時為了可視化寫入進程,使用了led。
下位機處理流程圖:
擴展任務說明
擴展功能1 上位機開發環境:
擴展功能1 上位機開啟tcp服務:
擴展功能1 上位機繪制曲線:
擴展功能1 文件寫入功能:
拓展功能1 效果展示:(找不到有曲線繪圖的圖片了)
拓展功能2 APP介紹
手機APP端我們選擇的是對”藍牙調試器”做二次開發。
拓展功能2 APP設置:
設置接收數據包格式,除了幀頭幀尾以及校驗位之外,我們這里需要傳送12個byte類型數據,分別為年、月、日、時、分、秒、gx、gy、gz、ax、ay、az。注意這里的六軸數據在下位已經做好歸一化處理了,歸一化到-127~128的范圍了。關于幀頭幀尾校驗位需要在下位機設置。
選擇一個一維波形窗口,以及6個文本窗口。將數據幀的12個數據對應到各自的位置即可。
拓展功能3 原理:
首先對加速度計采集回來的數據進行處理,提取其中水平方向上的加速度變化,再通過離散傅里葉變化,獲取三個三個方向上加速度的頻域曲線,經過低通濾波,最后對頻域進行積分處理,得到一個數值,即可代表體能大小,改數值越大則代表體能越好,因為說明測試者大部分時間在高頻率地運動。
拓展功能4 代碼展示:
拓展功能3 效果展示:
課程感受
對團隊合作想法:分工合作、各自完成分配好的任務能夠節省不少時間。在對不同版本的工程進行更新時,也更容易發現隊友出現的問題;
對嵌入式課程的看法:平時作業量較大,能學到很多單片機知識;
友情鏈接
Zcc的博客
杭電嵌入式課程設計——上位機(ZCC)
[強哥博客](www.kensporger. com)
工程鏈接
鏈接:https://pan.baidu.com/s/14ZLFZjar8uSd8BBqZVTMIw
提取碼:ljn0