用TFmini Plus實現體前屈自動測量

  1. 體前屈自動測量儀

1.1 應用背景
坐位體前屈(如圖1.1所示)是一種體育鍛煉項目,也是中國大中小學體質健康測試項目,它的測試目的是測量在靜止狀態下的軀幹、腰、髖等關節可能達到的活動幅度,主要反映這些部位的關節、韌帶和肌肉的伸展性和彈性及身體柔韌素質的發展水平,現坐位體前屈是中國體育中考中的必考項目之一。html

clipboard.png

圖1.1 坐位體前屈
1.2 應用簡介
本系統爲利用北醒公司TFmini Plus、Arduino-UNO板、0.91寸OLED顯示模塊、BY8301-16P語音模塊、喇叭以及傳統的坐位體前屈測量儀結合設計開發的自動測量裝置。
系統做用:實現體前屈自動測量,並顯示、播報測量結果,減小人爲讀數過程,使體育測試過程更智能化、人性化。數組

  1. 試驗設備及接線

2.1 實驗設備
l Benewake TFmini Plus標版微信

clipboard.png

圖2.1 TFmini Plus
TFmini Plus(如圖2.1所示),詳細參數見TFmini Plus使用說明。
l Arduino-UNO板oop

clipboard.png

圖2.2 Arduino UNO
l 0.91寸OLED液晶屏測試

clipboard.png

圖2.3 OLED顯示屏
規格:0.91寸OLED屏(如圖2.3所示),128*32點陣,IIC控制接口,兼容3.3-5V。
做用:用來顯示測量結果。
l BY8301-16P語音模塊ui

clipboard.png
clipboard.png

圖2.4 BY8301-16P語音模塊
規格:語音模塊如圖2.4所示,其工做電壓爲DC 3.6-5V,支持MP3/WAV格式,支持UART串口通訊控制,自帶3W功放/可外接功放。
做用:用來控制喇叭,播報提示信息和測量結果。
l BY-90-1W 無源喇叭spa

clipboard.png

圖2.5 無源喇叭
規格:喇叭(如圖2.5所示)功率爲8Ω1W。
做用:播報提示信息和測量結果。
l 電腦設計

clipboard.png

圖2.6 電腦
如圖2.6所示,做爲該系統的上位機,用來編寫並上傳程序到UNO板。
l 傳統坐位體前屈測量儀code

clipboard.png

圖2.7 體前屈測試儀
l 鏈接線htm

clipboard.png

圖2.8 鏈接線

杜邦線——用於Plus與UNO板鏈接;
USB方口數據線——用於UNO板與電腦鏈接以及供電。

2.2 接線

clipboard.png

圖2.9 系統接線圖

clipboard.png

l TFmini Plus 線序:

clipboard.png

圖2.10 TFmini Plus線序

TFminiPlus供電電壓爲5V,直接鏈接Arduino板的5V和GND,其餘雷達需查閱產品規格書,確保供電正常;
l 對於Arduino UNO板,串口通訊鏈接須要注意:
(1) TFmini Plus的TX端接板子的pin 4口(軟串口Serial2的RX),雷達的RX端接板子的pin 5口(軟串口Serial2的TX),
(2) 語音模塊接UNO板的5V和GND,TX端接板子的pin 2口(軟串口Serial1的RX),雷達的RX端接板子的pin 3口(軟串口Serial1的TX),軟串口1定義在voice庫中,語音模塊只能按照順序接UNO板的二、3引腳,不然必須修改voice庫文件(支持設置音量0-20);
l 0.91寸OLED顯示屏鏈接5V(或3.3V)和GND供電, SCL和SDA接UNO板的SCL和SDA;

  1. 體前屈自動測量原理

clipboard.png

圖3.1 體前屈自動測量系統示意圖

clipboard.png

圖3.2 體前屈自動測量工做原理流程圖
如圖3.1和圖3.2所示,爲體前屈自動測量的系統示意圖和工做原理流程圖。
首先,咱們包含voice和oled庫文件,定義變量,對串口、語音模塊和OLED顯示屏進行初始化;讀取雷達數據,對系統進行標定,得到start=dist1,zero=dist0;
而後,讀取數據,判斷位置初始化狀態init_stat和雷達數據與start的關係,若是不知足要求,獲取數據再進行判斷,若是知足要求(!init_stat(沒有初始化) && D==start(雷達數據與標定的初始位置相等)),語音模塊播報「ready」 ,開始測量;
測量過程當中,繼續判斷位置初始化狀態init_stat和雷達數據與start的關係,若是不知足要求,獲取數據再進行判斷,若是知足要求(init_stat(位置初始完畢) && D!=start(擋板離開初始位置));時刻檢測擋板是否移動,若是擋板靜止,大約經歷2.3s,系統測距穩定,播報和顯示測量結果;
最後,判斷是否須要進行下一次測試,若是不須要,斷電,結束測試。

  1. 系統程序編寫

該例程須要添加OLED的庫和自定義的庫voice和oled。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image035.jpg

include "voice.h"

include "oled.h"

include<SoftwareSerial.h>//軟串口頭文件

SoftwareSerial Serial2(4,5); //定義軟串口名稱爲Serial2,並把pin2定爲RX,pin3定爲TX
/對於有多個串口的arduino板如DUE板,註釋掉上面兩段代碼,直接使用Serial1串口/
/雷達基本數據/
int check;//校驗數值存放
int uart[9];//存放雷達測量的數據
int k;
const int HEADER=0x59;//數據包幀頭
/體前屈自動測量數據/
int D;//雷達實測距離值
int d=0;//上一個距離值
int result=0;
const int zero=40;//標定的0點值,安裝完成後須要進行標定設置
int VAR[23]={0};
int var;
int num=0;
const int start=54;//標定的起點值,安裝完成後須要進行標定設置
int CHA[15]={0};
int cha=0;
int count=0;
boolean init_stat=false;//判斷是否進行位置初始化
void setup()
{
Serial.begin(115200);//設置arduinouno與電腦鏈接串口的波特率
Serial2.begin(115200);
oled_begin();//OLED顯示模塊初始化
voice_begin();//語音模塊初始化
voice_setvolume(14);//設置喇叭音量
}
void loop()
{
Serial2.listen();
if(Serial2.available())//查看串口是否有數據輸入
{
if(Serial2.read()==HEADER)//判斷數據包幀頭0x59

{
  uart[0]=HEADER;
 if(Serial2.read()==HEADER)//判斷數據包幀頭0x59
  {
   uart[1]=HEADER;
   for(k=2;k<9;k++)//存儲數據到數組
    {
     uart[k]=Serial2.read();
    }
   check=uart[0]+uart[1]+uart[2]+uart[3]+uart[4]+uart[5]+uart[6]+uart[7];
   if(uart[8]==(check&0xff))//按照協議對收到的數據進行校驗
    {
     D=uart[2]+uart[3]*256;//計算距離值
      if(!init_stat&& D==start)
      {
       cha=D-start;
       for(k=15;k>=1;k--)
        {
         CHA[k]=CHA[k-1];
        }
        CHA[0] =cha;
       for(k=0;k<15;k++)
        {
         if(CHA[k]==0)
          {
           count++;
          }        
        }
       oled_measuring();
       if(count>=15)
        {
         voice_ready();
         init_stat=true;  
        }
      }
      if(D!=0 &&D!=start && init_stat)
      {
       var=abs(D-d);
       for(k=23;k>=1;k--)
        {   
         VAR[k]=VAR[k-1];
        }
        VAR[0] =var;
       for(k=0;k<23;k++)
        {
         if(VAR[k]==0)
          {
           num++;      
          }
        }
       if(num>=23)
        {
         result=zero-D;
         oled_result(result);
         voice_num(result);
         Serial2.listen();
         init_stat=false;
        }
        d=D;
        num=0;
      }
    }
  }
}

}
}

  1. 系統工做流程和數據查看

5.1 工做流程圖

clipboard.png

圖5.1 系統工做流程圖
l 系統安裝完成後,供電,上傳程序,校準起始點和0位置;
l 擋板置於起始點,等語音模塊播報「ready」後,開始測量;
l 擋板離開起始點後,不能停頓過長時間,通常在2.3s之內,擋板靜止後,穩定測量後,播報並在OLED中顯示測量結果。
5.2 數據查看

clipboard.png

圖5.2 工做數據

  1. 注意事項

l TFmini Plus的測量分辨率爲5mm,若是測量精度爲mm,會有較大偏差,因此只測量到cm,後面能夠用精度更高的產品,實現mm級測量。l 體前屈自動測量儀在測量過程當中,不會播報,可是,不能停頓過長時間(小於2.3s)。l 該系統爲一次一測,測量完畢後,須要從新歸位到起始點。 如您承認上述經驗,歡迎您的聯繫:010-57456983北醒(北京)光子科技有限公司北醒激光雷達電話:010-5745 6983官方微信公衆號:benewake-bj或搜索淘寶:北醒光子科技有限公司

相關文章
相關標籤/搜索