<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[用TFmini Plus实现体前屈自动测量]]></title><description><![CDATA[<ol>
<li>
<pre><code>      体前屈自动测量仪
</code></pre>
</li>
</ol>
<p dir="auto">1.1         应用背景<br />
坐位体前屈（如图1.1所示）是一种体育锻炼项目，也是中国大中小学体质健康测试项目，它的测试目的是测量在静止状态下的躯干、腰、髋等关节可能达到的活动幅度，主要反映这些部位的关节、韧带和肌肉的伸展性和弹性及身体柔韧素质的发展水平，现坐位体前屈是中国体育中考中的必考项目之一。<br />
<img src="/assets/uploads/files/1564737633200-2a62c296-1a88-462e-a6ed-f7745a33f299-image.png" alt="2a62c296-1a88-462e-a6ed-f7745a33f299-image.png" class=" img-responsive img-markdown" width="289" height="231" /><br />
图1.1 坐位体前屈<br />
1.2         应用简介<br />
本系统为利用北醒公司TFmini Plus、Arduino-UNO板、0.91寸OLED显示模块、BY8301-16P语音模块、喇叭以及传统的坐位体前屈测量仪结合设计开发的自动测量装置。<br />
系统作用：实现体前屈自动测量，并显示、播报测量结果，减少人为读数过程，使体育测试过程更智能化、人性化。<br />
2.           试验设备及接线<br />
2.1         实验设备<br />
l  Benewake TFmini Plus标版<br />
<img src="/assets/uploads/files/1564737648864-f69a5b9c-b245-43cb-93b2-be4108f2d727-image.png" alt="f69a5b9c-b245-43cb-93b2-be4108f2d727-image.png" class=" img-responsive img-markdown" width="522" height="337" /><br />
图2.1 TFmini Plus<br />
TFmini Plus（如图2.1所示），详细参数见TFmini Plus使用说明。<br />
l  Arduino-UNO板<br />
<img src="/assets/uploads/files/1564737662955-a857fc74-0c4d-4f54-82b4-4d90eca95977-image.png" alt="a857fc74-0c4d-4f54-82b4-4d90eca95977-image.png" class=" img-responsive img-markdown" width="800" height="450" /><br />
图2.2 Arduino UNO<br />
l  0.91寸OLED液晶屏<br />
<img src="/assets/uploads/files/1564737677648-09fb98a3-ded5-4214-bb2a-fbd6ca9ad236-image.png" alt="09fb98a3-ded5-4214-bb2a-fbd6ca9ad236-image.png" class=" img-responsive img-markdown" width="780" height="780" /><br />
图2.3 OLED显示屏<br />
规格：0.91寸OLED屏（如图2.3所示），128*32点阵，IIC控制接口，兼容3.3-5V。<br />
作用：用来显示测量结果。<br />
l  BY8301-16P语音模块<br />
<img src="/assets/uploads/files/1564737702785-b1f50374-40b2-45e5-a8d3-7c307a3c22c3-image.png" alt="b1f50374-40b2-45e5-a8d3-7c307a3c22c3-image.png" class=" img-responsive img-markdown" width="475" height="399" /><br />
图2.4 BY8301-16P语音模块<br />
规格：语音模块如图2.4所示，其工作电压为DC 3.6-5V，支持MP3/WAV格式，支持UART串口通信控制，自带3W功放/可外接功放。<br />
作用：用来控制喇叭，播报提示信息和测量结果。<br />
l  BY-90-1W 无源喇叭<br />
<img src="/assets/uploads/files/1564737718232-51980e4c-ff5d-423f-b080-4b1bd8ab66e5-image.png" alt="51980e4c-ff5d-423f-b080-4b1bd8ab66e5-image.png" class=" img-responsive img-markdown" width="337" height="328" /><br />
图2.5 无源喇叭<br />
规格：喇叭（如图2.5所示）功率为8Ω1W。<br />
作用：播报提示信息和测量结果。<br />
l  电脑<br />
<img src="/assets/uploads/files/1564737731586-609994fb-0777-4d88-8c7b-a48152b895dc-image.png" alt="609994fb-0777-4d88-8c7b-a48152b895dc-image.png" class=" img-responsive img-markdown" width="428" height="248" /><br />
图2.6 电脑<br />
如图2.6所示，作为该系统的上位机，用来编写并上传程序到UNO板。<br />
l  传统坐位体前屈测量仪<br />
<img src="/assets/uploads/files/1564737742380-ea11e23f-6120-4def-add7-25eb981cbaff-image.png" alt="ea11e23f-6120-4def-add7-25eb981cbaff-image.png" class=" img-responsive img-markdown" width="790" height="790" /><br />
图2.7 体前屈测试仪<br />
l  连接线<br />
<img src="/assets/uploads/files/1564737758952-055d4db8-3628-4a9b-9230-04f1703a83e3-image.png" alt="055d4db8-3628-4a9b-9230-04f1703a83e3-image.png" class=" img-responsive img-markdown" width="500" height="500" /><br />
图2.8 连接线</p>
<p dir="auto">杜邦线——用于Plus与UNO板连接；<br />
USB方口数据线——用于UNO板与电脑连接以及供电。<br />
2.2         接线<br />
<img src="/assets/uploads/files/1564737770799-0b22ad21-9b2e-4f9b-8d87-3c590dc474f2-image.png" alt="0b22ad21-9b2e-4f9b-8d87-3c590dc474f2-image.png" class=" img-responsive img-markdown" width="800" height="800" /><br />
图2.9 系统接线图<br />
l  TFmini Plus 线序：<br />
<img src="/assets/uploads/files/1564737788303-01bbd060-5957-4470-af78-1503dd9a9549-image.png" alt="01bbd060-5957-4470-af78-1503dd9a9549-image.png" class=" img-responsive img-markdown" width="1029" height="605" /><br />
图2.10 TFmini Plus线序<br />
<img src="/assets/uploads/files/1564737835248-2daaf77f-78e1-4d90-a4d8-0b2ada47aa37-image.png" alt="2daaf77f-78e1-4d90-a4d8-0b2ada47aa37-image.png" class=" img-responsive img-markdown" width="612" height="199" /><br />
TFminiPlus供电电压为5V，直接连接Arduino板的5V和GND，其他雷达需查阅产品规格书，确保供电正常；<br />
l  对于Arduino UNO板，串口通信连接需要注意：<br />
（1）   TFmini Plus的TX端接板子的pin 4口（软串口Serial2的RX），雷达的RX端接板子的pin 5口（软串口Serial2的TX），<br />
（2）   语音模块接UNO板的5V和GND，TX端接板子的pin 2口（软串口Serial1的RX），雷达的RX端接板子的pin 3口（软串口Serial1的TX），软串口1定义在voice库中，语音模块只能按照顺序接UNO板的2、3引脚，否则必须修改voice库文件（支持设置音量0-20）；<br />
l  0.91寸OLED显示屏连接5V（或3.3V）和GND供电， SCL和SDA接UNO板的SCL和SDA；</p>
<ol start="3">
<li>
<pre><code>        体前屈自动测量原理
</code></pre>
</li>
</ol>
<p dir="auto"><img src="/assets/uploads/files/1564737854377-ba9a164a-76c8-46ac-965f-7965cd659d3c-image.png" alt="ba9a164a-76c8-46ac-965f-7965cd659d3c-image.png" class=" img-responsive img-markdown" width="642" height="303" /><br />
图3.1 体前屈自动测量系统示意图<br />
<img src="/assets/uploads/files/1564737867158-fac9cd0a-acb7-419e-9f5a-e34436f3e353-image.png" alt="fac9cd0a-acb7-419e-9f5a-e34436f3e353-image.png" class=" img-responsive img-markdown" width="351" height="491" /><br />
图3.2 体前屈自动测量工作原理流程图<br />
如图3.1和图3.2所示，为体前屈自动测量的系统示意图和工作原理流程图。<br />
首先，我们包含voice和oled库文件，定义变量，对串口、语音模块和OLED显示屏进行初始化；读取雷达数据，对系统进行标定，获得start=dist1,zero=dist0;<br />
然后，读取数据，判断位置初始化状态init_stat和雷达数据与start的关系，如果不满足要求，获取数据再进行判断，如果满足要求（!init_stat（没有初始化） &amp;&amp; D==start（雷达数据与标定的初始位置相等）），语音模块播报“ready” ，开始测量；<br />
测量过程中，继续判断位置初始化状态init_stat和雷达数据与start的关系，如果不满足要求，获取数据再进行判断，如果满足要求（init_stat（位置初始完毕） &amp;&amp; D！=start（挡板离开初始位置））；时刻检测挡板是否移动，如果挡板静止，大约经历2.3s，系统测距稳定，播报和显示测量结果；<br />
最后，判断是否需要进行下一次测试，如果不需要，断电，结束测试。</p>
<ol start="4">
<li>
<pre><code>        系统程序编写
</code></pre>
</li>
</ol>
<p dir="auto">该例程需要添加OLED的库和自定义的库voice和oled。<br />
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image035.jpg<br />
##include “voice.h”<br />
#include “oled.h”<br />
#include&lt;SoftwareSerial.h&gt;//软串口头文件<br />
SoftwareSerial Serial2(4,5); //定义软串口名称为Serial2，并把pin2定为RX，pin3定为TX<br />
/<em>对于有多个串口的arduino板如DUE板，注释掉上面两段代码，直接使用Serial1串口</em>/<br />
/<em>雷达基本数据</em>/<br />
int check;//校验数值存放<br />
int uart[9];//存放雷达测量的数据<br />
int k;<br />
const int HEADER=0x59;//数据包帧头<br />
/<em>体前屈自动测量数据</em>/<br />
int D;//雷达实测距离值<br />
int d=0;//上一个距离值<br />
int result=0;<br />
const int zero=40;//标定的0点值，安装完成后需要进行标定设置<br />
int VAR[23]={0};<br />
int var;<br />
int num=0;<br />
const int start=54;//标定的起点值，安装完成后需要进行标定设置<br />
int CHA[15]={0};<br />
int cha=0;<br />
int count=0;<br />
boolean init_stat=false;//判断是否进行位置初始化<br />
void setup()<br />
{<br />
Serial.begin(115200);//设置arduinouno与电脑连接串口的波特率<br />
Serial2.begin(115200);<br />
oled_begin();//OLED显示模块初始化<br />
voice_begin();//语音模块初始化<br />
voice_setvolume(14);//设置喇叭音量<br />
}<br />
void loop()<br />
{<br />
Serial2.listen();<br />
if(Serial2.available())//查看串口是否有数据输入<br />
{<br />
if(Serial2.read()==HEADER)//判断数据包帧头0x59<br />
{<br />
uart[0]=HEADER;<br />
if(Serial2.read()==HEADER)//判断数据包帧头0x59<br />
{<br />
uart[1]=HEADER;<br />
for(k=2;k&lt;9;k++)//存储数据到数组<br />
{<br />
uart[k]=Serial2.read();<br />
}<br />
check=uart[0]+uart[1]+uart[2]+uart[3]+uart[4]+uart[5]+uart[6]+uart[7];<br />
if(uart[8]==(check&amp;0xff))//按照协议对收到的数据进行校验<br />
{<br />
D=uart[2]+uart[3]*256;//计算距离值<br />
if(!init_stat&amp;&amp; D==start)<br />
{<br />
cha=D-start;<br />
for(k=15;k&gt;=1;k–)<br />
{<br />
CHA[k]=CHA[k-1];<br />
}<br />
CHA[0] =cha;<br />
for(k=0;k&lt;15;k++)<br />
{<br />
if(CHA[k]==0)<br />
{<br />
count++;<br />
}<br />
}<br />
oled_measuring();<br />
if(count&gt;=15)<br />
{<br />
voice_ready();<br />
init_stat=true;<br />
}<br />
}<br />
if(D!=0 &amp;&amp;D!=start &amp;&amp; init_stat)<br />
{<br />
var=abs(D-d);<br />
for(k=23;k&gt;=1;k–)<br />
{<br />
VAR[k]=VAR[k-1];<br />
}<br />
VAR[0] =var;<br />
for(k=0;k&lt;23;k++)<br />
{<br />
if(VAR[k]==0)<br />
{<br />
num++;<br />
}<br />
}<br />
if(num&gt;=23)<br />
{<br />
result=zero-D;<br />
oled_result(result);<br />
voice_num(result);<br />
Serial2.listen();<br />
init_stat=false;<br />
}<br />
d=D;<br />
num=0;<br />
}<br />
}<br />
}<br />
}<br />
}<br />
}<br />
5.            系统工作流程和数据查看<br />
5.1         工作流程图<br />
<img src="/assets/uploads/files/1564737901484-9ac2285a-b450-4241-8f35-dfa2b6a93815-image.png" alt="9ac2285a-b450-4241-8f35-dfa2b6a93815-image.png" class=" img-responsive img-markdown" width="182" height="333" /><br />
图5.1 系统工作流程图<br />
l  系统安装完成后，供电，上传程序，校准起始点和0位置；<br />
l  挡板置于起始点，等语音模块播报“ready”后，开始测量；<br />
l  挡板离开起始点后，不能停顿过长时间，一般在2.3s以内，挡板静止后，稳定测量后，播报并在OLED中显示测量结果。<br />
5.2         数据查看<br />
<img src="/assets/uploads/files/1564737910338-63d40a3f-3ecc-4298-b53d-551eede37a3a-image.png" alt="63d40a3f-3ecc-4298-b53d-551eede37a3a-image.png" class=" img-responsive img-markdown" width="536" height="414" /><br />
图5.2 工作数据<br />
6.           注意事项<br />
l  TFmini Plus的测量分辨率为5mm，如果测量精度为mm，会有较大误差，所以只测量到cm，后面可以用精度更高的产品，实现mm级测量。<br />
l  体前屈自动测量仪在测量过程中，不会播报，但是，不能停顿过长时间（小于2.3s）。<br />
l  该系统为一次一测，测量完毕后，需要重新归位到起始点。</p>
]]></description><link>http://community.bwbot.org/topic/783/用tfmini-plus实现体前屈自动测量</link><generator>RSS for Node</generator><lastBuildDate>Sun, 14 Jun 2026 04:36:30 GMT</lastBuildDate><atom:link href="http://community.bwbot.org/topic/783.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Aug 2019 09:25:55 GMT</pubDate><ttl>60</ttl></channel></rss>