圖4 GPRS電路圖
4 系統(tǒng)軟件設計
4.1 系統(tǒng)軟件整體流程圖
圖5所示為系統(tǒng)軟件整體流程圖,首先對STM32進行初始化配置,包括時鐘電路RCC高速時鐘和低速時鐘的起振、通用引腳GPIO輸出輸出模式的配置、串口USART波特率的設置,然后將SIM300設置為透傳模式,進行網絡連接(具體過程可參考3.3),成功連接網絡之后,配置iNEMO模塊各傳感器的分辨率、字節(jié)對齊方式、讀取頻率等,然后分別讀取腰部和腿部iNEMO模塊的加速度、陀螺儀、磁力計原始數(shù)據(jù),獲得原始數(shù)據(jù)之后根據(jù)分別率的設置計算磁力計、陀螺儀、加速度的大小,最后通過擴展卡爾曼濾波融合得到腰部的俯仰角PITCH、腿部的偏航角YAW,結合兩個角度信息通過查表法進行姿態(tài)判斷,設置相應的標志位,通過GPRS將姿態(tài)標志位打包后發(fā)送到遠程監(jiān)控端。

4.2 姿態(tài)檢測
如圖6所示,iNEMO模塊中L3GD20、LSM303DLHC 以及LPS331AP 通過I2C串行總線與單片機進行通信,I2C總線兩根雙向信號線一根是數(shù)據(jù)線SDA,另一根是時鐘線SCL,通過上拉電阻接到正電源VDD,每個接到I2C總線上的器件都有唯一的地址,主機發(fā)送地址時,總線上的每個從機都將7位地址碼與自己的地址進行比較,如果相同,則認為自己正被主機尋址。

iNEMO各個傳感器的地址碼宏定義如下:
#define ACC_ADDRESS 032 //加速度計地址碼
#define MAG_ADDRESS 03C //磁力計地址碼
#define GYRO_ADDRESS 0D6 //陀螺儀地址碼
采集到傳感器的數(shù)據(jù)之后,首先利用三軸陀螺儀信號,采用四元數(shù)的姿態(tài)表達式,積分求得姿態(tài)角,然后采用三軸加速度計和三軸磁力計,利用大地磁場和重力磁場在地理坐標系和運動坐標系之間的方向余弦進行絕對角度的解算,然后采用卡爾曼濾波進行前三者數(shù)據(jù)的融合,得到腰部的俯仰角PITCH、腿部偏航角YAW。通過大量實驗建立姿態(tài)角與人體姿態(tài)的對應表如下:

4.3 GPRS發(fā)送