描述
<div class="document">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">注:* 为必填项</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="color: #0093e6;">请在报名阶段填写 ↓</span></strong></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">* 1、项目功能介绍</h3>
<hr class="horizontal-splitline normal-bold-2">
<p><span style="font-family: 宋体;">本设计项目具有非常广泛的推广性。随着全球人类亚健康以及新冠病毒的全球传播,穿戴式健康检测仪的重要性也越来越不可或缺。</span><span style="font-family: 宋体;">到</span>2016年,全球穿戴式智能设备市场的规模,将达到60亿美元。为了占据有利的领先地位,世界知名公司已率先吹响了号角。在面市之初的两三年,这是不起眼的小众市场,但在未来三到五年后,这一领域将创造出不菲的收入。2017年将售出7000万台可联网的穿戴式智能设备,而2013年仅为1500万。市场上此类设备,多为运动健康品牌的运动监测仪器<span style="font-family: 宋体;">。本项目就是</span><span style="font-family: 宋体; font-size: 16px;">设计制作智能穿戴人体健康数据监测仪器,以及无线运动传感器。设备采用电池供电,可以供人体日常穿戴。可以准监测穿戴者的心电信息、体表温度及运动信息。并将这些信息实时的传送到移动终端比如电脑或者手机显示,同时完成危险信息指标报警功能。</span></p>
<p><span style="font-family: 宋体; font-size: 16px;">其主要涉及技术问题分解如下:</span></p>
<p><span style="font-size: 16px;">1、 <span style="font-family: 宋体;">模拟前端设计心电检测电路,完成穿戴者心电信号实时检测,实现动态新心电图的测试与显示;并且计算出穿戴者心率,心率测量相对误差不超过</span>5%。</span></p>
<p><span style="font-size: 16px;">2、 <span style="font-family: 宋体;">温度传感器测量使用者体表温度,温度采样率不低于</span>10次/分钟,体表温度测量误差不大于2%。另外穿戴者温度高于37.5°时穿戴器给出报警提示。</span></p>
<p><span style="font-size: 16px;">3、 <span style="font-family: 宋体;">基于加速度计等传感器监测穿戴者的运动信息。实现运动步数和运动距离的统计分析。运动距离误差不大于</span>10%,同时运动步数误差不大于5%。</span></p>
<p><span style="font-size: 16px;">4、 <span style="font-family: 宋体;">通过网络上传穿戴者的基本心电信号、体表温度、和运动信息延迟不大于</span>1S<span style="font-family: 宋体;">。</span></span></p>
<p><span style="font-size: 16px;">5、 <span style="font-family: 宋体;">可以用过手机终端设置穿戴器的监测或提示功能,比如久坐提醒,运动不达标提醒等等。</span></span></p>
<p><span style="font-size: 16px;">6、 <span style="font-family: 宋体;">可以通过手机或物联网终端看到穿戴者的实时心电信号,当出现心电一场或者心率过快时可以及时报警。</span></span></p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*2、项目属性</h3>
<hr class="horizontal-splitline normal-bold-2">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">本项目为原创项目,首次公开。团队先申请学校苗子工程项目,在学校参加过答辩并顺利结题,因此在此参加比赛。</span></p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">* 3、开源协议</h3>
<hr class="horizontal-splitline normal-bold-2">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">本项目PCB可以开源,原理图代码部分不可开源。但所有资料不允许个人制作出售以及倒卖。同时,也感谢立创EDA提供此次难能宝贵的机会,也谢谢立创EDA为开源建设所付出的一切,相信在立创的带领下,国内开源环境会越来越好,本设计因为涉及学校技术发布所以有些资料无法开源。</span></p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*4、硬件部分</h3>
<hr class="horizontal-splitline normal-bold-2">
<h2><strong>1</strong><strong><span style="font-family: 宋体;">设计主题框架</span></strong></h2>
<p><span style="font-family: 宋体;">首先,在核心处理器上,选择性价比更高的</span>ESP32<span style="font-family: 宋体;">做为核心处理器,不论是功耗还是体积,都基本符合设计要求。模块数据通信部分通过</span>IIC<span style="font-family: 宋体;">总线方式分别控制:姿态传感器(</span>MPU6050<span style="font-family: 宋体;">)、体温传感器(</span>MAX30205<span style="font-family: 宋体;">)。另外</span>ESP32<span style="font-family: 宋体;">内部的</span>AD<span style="font-family: 宋体;">转换模可以直接转换来自心电采集模块(</span>AD8232<span style="font-family: 宋体;">)所采集的模拟电压信号并转换为数字信号。用户前端部分采用</span>ESP32<span style="font-family: 宋体;">自带的内部低功耗蓝牙与手机通讯,手机</span>APP<span style="font-family: 宋体;">实现可视化操控设计。设计框架如图</span>1<span style="font-family: 宋体;">。</span></p>
<p align="center"><img src="//image.lceda.cn/pullimage/ndHp3O9ajTMZO74nkleepW8L2UShI3pL3wDXqGXb.png" alt="" width="1213" height="731"></p>
<p align="center"><span style="font-family: 宋体;">图</span>1 <span style="font-family: 宋体;">智能穿戴健康检测器硬件构架</span></p>
<p> </p>
<p><span style="font-family: 宋体;">进行心电信号测试时,可以通过直接输入模拟器心电信号进行校准,在确认达到相应的测量精度后,再对具体的使用者进行心电信号测试。</span></p>
<p><span style="font-family: 宋体;">对于温度采集部分,进行体表温度测量的温度传感器是</span>MAX30205<span style="font-family: 宋体;">,另外温度标定部分可以采用水银温度计和人体温度数据采集,再进行数据整合,以保证温度测量的准确性。在进行测试校验和实测时,可以通过使用标准体温计来测量使用者手腕温度,与本作品测量使用者手腕温度来进行比对,验证设备温度测量的准确性。</span></p>
<p><span style="font-family: 宋体;">最后,测量的使用者运动信息,可以通过使用者在标定</span> 10<span style="font-family: 宋体;">米长的直线上来回运动进行测试,统计运动步数和运动距离。</span></p>
<h2><strong>3</strong><strong><span style="font-family: 宋体;">心电采集模块AD8232</span></strong></h2>
<p><span style="font-family: 宋体;">心电采集模块所采用的芯片是</span>AD8232<span style="font-family: 宋体;">。</span>AD8232<span style="font-family: 宋体;">是一款用于</span>ECG<span style="font-family: 宋体;">及其他生物电测量的芯片,能够在运动状态或者是在远程电极放置产生噪声的情况下采集、放大并且过滤微弱的生物电信号</span><span style="font-family: 宋体;">。</span>AD8232<span style="font-family: 宋体;">内置一个专用仪表放大器(</span>IA<span style="font-family: 宋体;">),可以放大</span>ECG<span style="font-family: 宋体;">信号并且可以实现高增益及高通滤波;含有一个运算运输放大器(</span>A1<span style="font-family: 宋体;">),是一个轨到轨的器件,可以用来创建一个三级点低通滤波器,从而消除额外噪声;</span>AD8283<span style="font-family: 宋体;">还内置一个右腿驱动放大器(</span>A2<span style="font-family: 宋体;">)和一个基准电压缓冲器;除此之外,其内部还有导连脱落检测电路和和一个自动快速恢复电路,可以减小高通滤波器原本较长的建立长尾现象,从而在导联脱落后重新连接时能够快速的恢复信号</span><span style="font-family: 宋体;">。</span><span style="font-family: 宋体;">心电检测原理图如图</span>2<span style="font-family: 宋体;">所示。</span></p>
<p align="center"><img src="//image.lceda.cn/pullimage/CqtdP8kIyhTYgMlQ7MoikPe4JZgkhpJBWZKe7zaN.png" alt="" width="1090" height="554"><span style="font-family: 宋体;">图</span>3.2 <span style="font-family: 宋体;">心电检测原理图</span></p>
<p> </p>
<h2><strong>2 </strong><strong><span style="font-family: 宋体;">姿态采集模块MPU-6050</span></strong></h2>
<p>MPU-6050<span style="font-family: 宋体;">是一款集成的</span>3<span style="font-family: 宋体;">轴陀螺仪和</span>3<span style="font-family: 宋体;">轴加速度计的</span>6<span style="font-family: 宋体;">轴</span>MotionTracking<span style="font-family: 宋体;">设备,也是目前唯一一款将</span>3<span style="font-family: 宋体;">轴陀螺仪与</span>3<span style="font-family: 宋体;">轴加速度计集于一体的设备。并且它可以通过</span>IIC<span style="font-family: 宋体;">接口连接一个其他的数字传感器,例如磁力计、压力传感器等,从而构成一个</span>9<span style="font-family: 宋体;">轴的</span>MotionTracking<span style="font-family: 宋体;">设备</span><sup>[6]</sup><span style="font-family: 宋体;">。</span>MPU-6050<span style="font-family: 宋体;">还集成了一个数字运动处理器</span>DMP<span style="font-family: 宋体;">(</span>Digital Motion Processo<span style="font-family: 宋体;">),能够对集成和外接的传感器进行滤波、融合处理,可以直接输出姿态解算后的数据,其目的是降低主控核心处理器的运算量。</span>MPU6050<span style="font-family: 宋体;">对</span>3<span style="font-family: 宋体;">轴陀螺仪和</span>3<span style="font-family: 宋体;">轴的加速度计都分别配备了</span>16<span style="font-family: 宋体;">位的</span>ADC<span style="font-family: 宋体;">,所以有着较高的精度。还有一个片上</span>1024<span style="font-family: 宋体;">字节的</span>FIFO<span style="font-family: 宋体;">,能够选择包括陀螺仪数据、加速计的数据以及芯片温度数据的输入,有助于降低系统功耗</span><span style="font-family: 宋体;">。</span><span style="font-family: 宋体;">为了能够得到精准的快速和慢速运动的数据,</span>3<span style="font-family: 宋体;">轴陀螺仪和</span>3<span style="font-family: 宋体;">轴加速度计的测量范围是可以控制的,陀螺仪的测量范围有</span>±250<span style="font-family: 宋体;">、</span>±500<span style="font-family: 宋体;">、</span>±1000<span style="font-family: 宋体;">、</span>±2000dps<span style="font-family: 宋体;">,加速度计的测量范围有</span>±2<span style="font-family: 宋体;">、</span>±4<span style="font-family: 宋体;">、</span>±8<span style="font-family: 宋体;">、</span>±16g<span style="font-family: 宋体;">。</span>MPU-6050<span style="font-family: 宋体;">只有</span>400KHz<span style="font-family: 宋体;">的</span>IIC<span style="font-family: 宋体;">这一种通信方式,这一点不像</span>MPU-600<span style="font-family: 宋体;">还有一个</span>1MHz<span style="font-family: 宋体;">的</span>SPI<span style="font-family: 宋体;">接口可以通信。它的</span>IIC<span style="font-family: 宋体;">地址是由引脚</span>AD0<span style="font-family: 宋体;">控制的,如果</span>AD0<span style="font-family: 宋体;">接低电平,</span>IIC<span style="font-family: 宋体;">地址为:</span>0x68<span style="font-family: 宋体;">;如果接</span>AD0<span style="font-family: 宋体;">接高电平,则</span>IIC<span style="font-family: 宋体;">地址为:</span>0x69<span style="font-family: 宋体;">。不过值得注意的是,这个</span>IIC<span style="font-family: 宋体;">地址并非是</span>8<span style="font-family: 宋体;">位,而是除去了读写控制位的</span>7<span style="font-family: 宋体;">位地址</span><span style="font-family: 宋体;">关于电源,</span>MPU6050<span style="font-family: 宋体;">的供电电源的电压有三种可以选择,分别是</span>2.5V<span style="font-family: 宋体;">、</span>3.0V<span style="font-family: 宋体;">和</span>3.3V<span style="font-family: 宋体;">,允许的电压误差为</span>±5%<span style="font-family: 宋体;">。其芯片封装采用的是</span>QFN<span style="font-family: 宋体;">。<img src="//image.lceda.cn/pullimage/l0GVwXlN1Qpe8tbzmOUG2K1fLN4yPmKJx4qgGZGy.png" alt="" width="631" height="541"></span></p>
<h2><strong>3</strong><strong><span style="font-family: 宋体;">体温采集模块</span></strong></h2>
<h3><strong>MAX30205</strong><strong><span style="font-family: 宋体;">介绍</span></strong></h3>
<p>MAX30205<span style="font-family: 宋体;">温度传感器能够精确的测量使用者的体温,并且有过温度报警输出。模数转换器采用的是</span>16bit<span style="font-family: 宋体;">的</span>ADC<span style="font-family: 宋体;">,具有较高的分辨率</span><sup>[7]</sup><span style="font-family: 宋体;">。通信方式采用的</span>I2C<span style="font-family: 宋体;">通信,而</span>I2C<span style="font-family: 宋体;">的地址由</span>A0<span style="font-family: 宋体;">、</span>A1<span style="font-family: 宋体;">、</span>A2<span style="font-family: 宋体;">共同控制。该传感器的供电电源电压范围为</span>2.7V~3.3V<span style="font-family: 宋体;">。</span>MAX30305<span style="font-family: 宋体;">的工作电流一般在</span>600uA<span style="font-family: 宋体;">,工作电流低,功耗小,非常适合用作可穿戴设备<strong>,</strong></span>MAX30205<span style="font-family: 宋体;">的</span>Pin1<span style="font-family: 宋体;">(</span>SDA<span style="font-family: 宋体;">)和</span>Pin2<span style="font-family: 宋体;">(</span>SCL<span style="font-family: 宋体;">)分别是</span>I2C<span style="font-family: 宋体;">的数据和时钟引脚。</span>Pin3<span style="font-family: 宋体;">(</span>OS<span style="font-family: 宋体;">)是过温中断引脚。这</span>3<span style="font-family: 宋体;">个引脚上都分别接了一个</span>4.7KΩ<span style="font-family: 宋体;">的上拉电阻。</span>Pin7<span style="font-family: 宋体;">(</span>A0<span style="font-family: 宋体;">)、</span>Pin6<span style="font-family: 宋体;">(</span>A1<span style="font-family: 宋体;">)和</span>Pin5<span style="font-family: 宋体;">(</span>A2<span style="font-family: 宋体;">)是</span>I2C<span style="font-family: 宋体;">地址控制引脚,</span>A0<span style="font-family: 宋体;">、</span>A1<span style="font-family: 宋体;">、</span>A2<span style="font-family: 宋体;">与</span>I2C<span style="font-family: 宋体;">的地址的关系如表</span>3.8<span style="font-family: 宋体;">所示(</span>1<span style="font-family: 宋体;">表示高电平,</span>0<span style="font-family: 宋体;">表示低电平,其实</span>A0<span style="font-family: 宋体;">和</span>A1<span style="font-family: 宋体;">还可以为</span>SDA<span style="font-family: 宋体;">和</span>SCL<span style="font-family: 宋体;">,所以有</span>32<span style="font-family: 宋体;">种地址</span></p>
<p> </p>
<p><span style="font-family: 宋体;">电容</span>C1<span style="font-family: 宋体;">用作电源电压滤波。</span>H1<span style="font-family: 宋体;">是排针接口。体温测量电路如图</span>4<span style="font-family: 宋体;">所示。</span></p>
<p align="center"><img src="//image.lceda.cn/pullimage/7kvh7fDf0YlGehOnjvCBESGpG8VVCdT0UJRGTYcK.png" alt="" width="475" height="302"></p>
<p align="center"><span style="font-family: 宋体;">图4</span> <span style="font-family: 宋体;">体温测量电路</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">所有原理图详见:</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/lI8z89fkvICPirnawoUi2wBA9qNhjNYrvQHUaiB3.png" alt="" width="827" height="824"><img src="//image.lceda.cn/pullimage/FBrnWSdXgoFBhTNCCx9KaGPgrOpyU9RmLndxzcev.png"></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/wehHj6n7HbxVDYFRL4bWRXl9lNWMJ4SxuAP5je8U.png" alt=""></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/Sl6sr4iEjLl5rVBqKIiQURoBir0vPSBkeSs1fV2b.png" alt="" width="697" height="380"><img src="//image.lceda.cn/pullimage/w794vxGFuzArPXAbTovGU5Qm24kUAQfOxtvBT3dR.png" alt="" width="1334" height="710"></p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*5、软件部分</h3>
<hr class="horizontal-splitline normal-bold-2">
<h3><strong><span style="font-family: 宋体;">1心电测量</span></strong></h3>
<p>AD8232<span style="font-family: 宋体;">将采集到的心电以电压的形式输出,在由</span>ESP32<span style="font-family: 宋体;">的</span>ADC<span style="font-family: 宋体;">进行数模转换得到我们所以需要的数据。在默认的情况下,</span>EPS32<span style="font-family: 宋体;">的</span>ADC<span style="font-family: 宋体;">是</span>12bit<span style="font-family: 宋体;">的分辨率,而能够转换的电压范围是</span>0V-1V<span style="font-family: 宋体;">,如果输入电压大于</span>1V<span style="font-family: 宋体;">,输出的数字量都将是</span>4095<span style="font-family: 宋体;">。但设计的心电采集模块所输出的模拟电压超过了</span>1V<span style="font-family: 宋体;">,所以需要将该电压进行衰减,而衰减</span>11db<span style="font-family: 宋体;">后</span>ADC<span style="font-family: 宋体;">所能转换的电压范围大致是</span>0.0V~3.6V<span style="font-family: 宋体;">。</span>SDN<span style="font-family: 宋体;">接的是</span>ESP32<span style="font-family: 宋体;">的</span>Pin33<span style="font-family: 宋体;">,该引脚做输出,设置为高电平。</span>LO+<span style="font-family: 宋体;">与</span>LO-<span style="font-family: 宋体;">分别连接</span>ESP32<span style="font-family: 宋体;">的</span>Pin25<span style="font-family: 宋体;">与</span>Pin26<span style="font-family: 宋体;">。</span><span style="font-family: 宋体;">将</span>ADC<span style="font-family: 宋体;">转换的数字量用公式</span><span style="font-family: 宋体;">计算出心电模块输出的模拟电压。为了能够知道导联脱落情况,加入了对</span>LO+<span style="font-family: 宋体;">与</span>LO-<span style="font-family: 宋体;">的判断,如果二者只要有一个为高电平说明导联脱落,输出</span>“LO no”<span style="font-family: 宋体;">。</span><span style="font-family: 宋体;">在连接好心率为</span>70bmp<span style="font-family: 宋体;">的心电模拟器后</span><span style="font-family: 宋体;">可以看到心电的波形以及对应的电压,所测到的波形比较标准,且噪声较小。</span></p>
<h3><strong>2</strong><strong><span style="font-family: 宋体;">心率计算</span></strong></h3>
<p><span style="font-family: 宋体;">用</span>AD8323<span style="font-family: 宋体;">只能得到心电图,需要使用算法来计算出心率。先设置一个阈值电压</span>hert_th_v<span style="font-family: 宋体;">,大于</span>hert_th_v<span style="font-family: 宋体;">的电压区域标为</span>a<span style="font-family: 宋体;">,小于</span>hert_th_v<span style="font-family: 宋体;">的心电电压区域标注为</span>b<span style="font-family: 宋体;">,从图</span>3.11<span style="font-family: 宋体;">中可以看出如果一分钟出现</span>n<span style="font-family: 宋体;">个</span>a<span style="font-family: 宋体;">,则心率为</span>n bpm<span style="font-family: 宋体;">。当心电电压达到</span>a<span style="font-family: 宋体;">区域,将变量</span>h_v<span style="font-family: 宋体;">设置为</span>1<span style="font-family: 宋体;">,心电电压回到</span>b<span style="font-family: 宋体;">区域时便判断</span>h_v<span style="font-family: 宋体;">是否为</span>1<span style="font-family: 宋体;">,如果为</span>1<span style="font-family: 宋体;">,就说明电压区域出现了啊</span>a<span style="font-family: 宋体;">,以此方法反复判断,累计</span>1<span style="font-family: 宋体;">分钟</span>a<span style="font-family: 宋体;">的数量,便得出心率。这种方法优点是能够精确的测量出心率,减小误差影响;缺点是测量时间过长。</span></p>
<h3><strong>2姿态</strong><strong><span style="font-family: 宋体;">传感器数据输出</span></strong></h3>
<p>ESP32<span style="font-family: 宋体;">有两个硬件</span>I2C<span style="font-family: 宋体;">,但这两个硬件</span>I2C<span style="font-family: 宋体;">都不支持</span>MPU-6050<span style="font-family: 宋体;">,所以只能使用软件</span>I2C<span style="font-family: 宋体;">,配置传输频率为</span>100KHz<span style="font-family: 宋体;">。</span>MPU-6050<span style="font-family: 宋体;">的</span>SCL<span style="font-family: 宋体;">与</span>SDA<span style="font-family: 宋体;">管脚分别连接在</span>ESP32<span style="font-family: 宋体;">的</span>Pin18<span style="font-family: 宋体;">和</span>Pin19<span style="font-family: 宋体;">,而</span>INT<span style="font-family: 宋体;">管脚连接在</span>ESP32<span style="font-family: 宋体;">的</span>Pin5<span style="font-family: 宋体;">上。</span>EPS32<span style="font-family: 宋体;">的</span>I2C<span style="font-family: 宋体;">数据的数据传输,在用于</span>ESP32<span style="font-family: 宋体;">的</span>MicroPython<span style="font-family: 宋体;">固件中也有相应的函数。</span></p>
<p><span style="font-family: 宋体;">查看设备</span>I2C<span style="font-family: 宋体;">地址可用</span>I2C.scan()<span style="font-family: 宋体;">函数扫描,得到的地址显示的是十进制(</span>0x68<span style="font-family: 宋体;">的十进制是</span>104<span style="font-family: 宋体;">)。</span></p>
<h3><strong>3</strong><strong><span style="font-family: 宋体;">步数计算</span></strong></h3>
<p><span style="font-family: 宋体;">人在行走或跑步时,可以通过运动的加速度和人体的姿态变化来进行计步分析</span><sup>[11]</sup><span style="font-family: 宋体;">。人体在向某个方向移动时,会在该方向上产生相应的加速度,如果是在行走,人体的重心和加速度都将呈现周期性变化。在迈步时,人的身体会向前倾重心会向下,所以在前进方向上加速度会增大,而垂直方向上加速度会减小,在收脚时,前进方向上加速度会减小,垂直方向上加速度会增大</span><span style="font-family: 宋体;">。</span></p>
<p><span style="font-family: 宋体;">根据人体的步行模型图</span><span style="font-family: 宋体;">可以看出人在行走时,加速度的波形应当呈现的是从小到大在到小的周期变换。由于从</span>MPU6050<span style="font-family: 宋体;">所得到的原始数据是带符号的</span>16<span style="font-family: 宋体;">位数据(最高位为符号位),所以需要将数据进行转换。判断最高位是否为</span>1<span style="font-family: 宋体;">,如果为</span>1<span style="font-family: 宋体;">,说明数据为负数,将数据取反,否则数据为正数,数据为原始数据。</span><span style="font-family: 宋体;">计步流程图如图</span>5<span style="font-family: 宋体;">所示。</span></p>
<p align="center"><img src="//image.lceda.cn/pullimage/5vvU1nbkzMqkRcgTapW7OXBiPY0DcrPEgjUbz6AO.png" alt="" width="1242" height="1391"></p>
<p align="center"><span style="font-family: 宋体;">图</span>5<span style="font-family: 宋体;">计步流程图</span></p>
<h3><strong>4</strong><strong><span style="font-family: 宋体;">距离计算</span></strong></h3>
<p><span style="font-family: 宋体;">距离的大小跟步幅和步数有关,而步幅与身高和速度有关,身高越高和速度越大,则步幅越大。计算距离的公式为下图6所示</span><span style="font-family: 宋体;">,其中,</span>step_v<span style="font-family: 宋体;">是步幅;</span>k<span style="font-family: 宋体;">是速度与身高的比例系数;</span>V<span style="font-family: 宋体;">是速度;</span>H<span style="font-family: 宋体;">是身高;</span>S<span style="font-family: 宋体;">是距离;</span>step_cou<span style="font-family: 宋体;">是步数。</span></p>
<p><span style="font-family: 宋体;"><img src="//image.lceda.cn/pullimage/KyNpGNJJzkBeHxo90jXVZ3UCuZHWzPwFDvuz3LjB.png" alt="" width="660" height="182"></span></p>
<h3><strong>5</strong><strong><span style="font-family: 宋体;">体温测量</span></strong></h3>
<p>MAX30205<span style="font-family: 宋体;">也不被</span>ESP32<span style="font-family: 宋体;">的硬件</span>I2C<span style="font-family: 宋体;">支持,只能采用软件</span>I2C<span style="font-family: 宋体;">,与</span>MPU-6050<span style="font-family: 宋体;">共用同一个</span>I2C<span style="font-family: 宋体;">总线,传输的频率也是</span>100KHz<span style="font-family: 宋体;">。过温中断管脚</span>OS<span style="font-family: 宋体;">连接到</span>ESP32<span style="font-family: 宋体;">的</span>Pin4<span style="font-family: 宋体;">。引脚配置程序如下:</span></p>
<p>i2c = SoftI2C(scl=Pin(18), sda=Pin(19), freq=100000)</p>
<p>os = Pin(4, Pin.IN)</p>
<p><span style="font-family: 宋体;">在体温采集模块电路设计当中,</span>A0<span style="font-family: 宋体;">、</span>A1<span style="font-family: 宋体;">、</span>A2<span style="font-family: 宋体;">都接的地,所以</span>MAX30205<span style="font-family: 宋体;">的</span>I2C<span style="font-family: 宋体;">地址是</span>0x90<span style="font-family: 宋体;">。</span><span style="font-family: 宋体;">所以需要将</span>0x90<span style="font-family: 宋体;">向右移动一位。代码如下:</span></p>
<p>Sev_adr = 0x90 >> 1 #<span style="font-family: 宋体;">设备地址</span>,8<span style="font-family: 宋体;">位地址转</span>7<span style="font-family: 宋体;">位</span></p>
<p><span style="font-family: 宋体;">通过函数</span>I2C.scan()<span style="font-family: 宋体;">扫描的</span>I2C<span style="font-family: 宋体;">地址,</span>MAX30205<span style="font-family: 宋体;">也需要配置相应的寄存器来使设备工作在需要的模式下。</span><span style="font-family: 宋体;">在用温枪测得体温为</span>36.3℃<span style="font-family: 宋体;">的情况下的测试结果如图</span>3.29<span style="font-family: 宋体;">所示。在图中我们可以看到体温在</span>34.8℃<span style="font-family: 宋体;">左右,波形未有较大摆动,噪声较小。但数据与实际有所偏差,需要进行数据校准。</span></p>
<h3><strong><span style="font-family: 宋体;">6过温报警</span></strong></h3>
<p><span style="font-family: 宋体;">过温报警的设计有两种方式,一是通过编写代码实现,优点是能够简洁电路,</span>MAX30205<span style="font-family: 宋体;">配置简单;缺点是占用</span>CPU<span style="font-family: 宋体;">,功能实现复杂化。二是通过配置</span>MAX30205<span style="font-family: 宋体;">直接实现,优点是简洁代码,功能实现简单;缺点是增加了线路连接,容易造成绕线困难。</span><span style="font-family: 宋体;">通过配置</span>MAX30205<span style="font-family: 宋体;">来实现过温报警,需重新设置</span>TOS<span style="font-family: 宋体;">寄存器和</span>THYST<span style="font-family: 宋体;">寄存器的值,设定阈值为</span>35℃<span style="font-family: 宋体;">和</span>34.8984℃<span style="font-family: 宋体;">,配置程序如下:</span></p>
<p> Reg_write(Sev_adr, Reg_adr['T_HYS'], 0x22e6) #34.8984 </p>
<p> Reg_write(Sev_adr, Reg_adr['T_OS'], 0x2300) #35</p>
<p><span style="font-family: 宋体;">在没有进行体温校准的情况下,体温超过</span>35℃<span style="font-family: 宋体;">时,</span>OS<span style="font-family: 宋体;">引脚输出低电平,在体温低于</span>34.8984℃<span style="font-family: 宋体;">时恢复到高电平。在检测到高温报警时打印</span>“<span style="font-family: 宋体;">体温过高</span>”<span style="font-family: 宋体;">。报警判断程序如下:</span></p>
<p>def os_out(): #<span style="font-family: 宋体;">过温报警</span></p>
<p> if os.value() == 0 :</p>
<p> print('<span style="font-family: 宋体;">体温过高</span>')</p>
<p><span style="font-family: 宋体;">串口打印的结果</span><span style="font-family: 宋体;">可以看出在检测到温度为</span>34.98828℃<span style="font-family: 宋体;">时,</span>OS<span style="font-family: 宋体;">就输出了低电平,有着近</span>0.002℃<span style="font-family: 宋体;">的误差。而在</span>34.90625℃<span style="font-family: 宋体;">时</span>OS<span style="font-family: 宋体;">重新恢复到了高电平,与设置的</span>34.8984℃<span style="font-family: 宋体;">相差了近</span>0.008℃<span style="font-family: 宋体;">。</span></p>
<h2><strong>6手机App Inventor</strong><strong><span style="font-family: 宋体;">的开发环境</span></strong></h2>
<p>APP<span style="font-family: 宋体;">的设计所使用的开发环境是</span>App Inventor<span style="font-family: 宋体;">。</span>App Inventor<span style="font-family: 宋体;">是一个开源的图形化编程工具</span><span style="font-family: 宋体;">,</span><span style="font-family: 宋体;">可在线和离线编程</span><span style="font-family: 宋体;">,</span><span style="font-family: 宋体;">在线编程只需输入网址</span><span style="font-family: 宋体;">(</span><span style="font-family: 宋体;">中文版</span><span style="font-family: 宋体;">):</span><a href="http://ai2.17coding.net/" target="_blank">http://ai2.17coding.net/</a><span style="font-family: 宋体;">。</span>App Inventor<span style="font-family: 宋体;">提供了一个基于</span>Web<span style="font-family: 宋体;">的图形化的用户界面设计工具,能够直接添加组件设计外观,编程不需要写像</span>C<span style="font-family: 宋体;">语言、</span>C++<span style="font-family: 宋体;">以及</span>Java<span style="font-family: 宋体;">等代码一样需要一定的专业知识,零基础也容易入手。</span></p>
<p>APP<span style="font-family: 宋体;">的设计主要分为界面设计和程序设计。在</span>App Inventor<span style="font-family: 宋体;">的开发环境中,客户端界面的设计是直接拖拽组件操作界面。系统操作布置界面如图</span>7<span style="font-family: 宋体;">所示。摆放组件分为</span>6<span style="font-family: 宋体;">大类:用户界面、界面布局、多媒体、绘图动画、地图应用、传感器、社交应用、数据存储、通信连接、乐高机器人(乐高机器人专用组件)、试验组件、外部组件(该组件是用于外部组件的插入)。在</span>App Inventor<span style="font-family: 宋体;">的设计界面中,还有着属性面板,可以对操作界面和组件的属性进行设计</span><span style="font-family: 宋体;">。</span></p>
<p align="center"><img src="//image.lceda.cn/pullimage/5dKaIFMQ62wHBWHFh11TOzh3NIQy2ztbwmQDm2cn.png" alt="" width="594" height="855"></p>
<p align="center"><span style="font-family: 宋体;">图7</span> <span style="font-family: 宋体;">系统操作布置界</span></p>
<p> 最终呈现效果如下图8所示:</p>
<p><img src="//image.lceda.cn/pullimage/szNUocpvbg3tUB6aTW8KYGsx1kv5luNXqkyY3xST.png" alt="" width="1080" height="2340"></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">注:若您的项目涉及软件开发,请在附件上传对应的工程源码。这里可以详细说明您的软件流程图、功能模块框图、相关算法的解释或科普、源码结构、编译环境的搭建和配置、源码编译方法、程序烧录方法等。推荐图文并茂的形式向别人介绍您的想法。</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*6、BOM清单</h3>
<hr class="horizontal-splitline normal-bold-2">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;"><br><img src="//image.lceda.cn/pullimage/AzA1hAkyGAzWsD1ZQai56uJ3R56tc5OkuCRmqbh6.png" alt="" width="1132" height="620">输入内容…</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">注:项目涉及的BOM清单。这个位置请上传BOM的截图。清单详情请以PDF的格式上传到附件中。建议包括型号、品牌、名称、封装、采购渠道、用途等内容。具体内容和形式应以表达清楚项目构成为准。</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*7、大赛LOGO验证</h3>
<p><img src="//image.lceda.cn/pullimage/Ie4Zs3nnpWcOeW6JzowRGbI7M4JDpL0HGh0lDjX5.png" alt="" width="468" height="234"></p>
<hr class="horizontal-splitline normal-bold-2">
<p style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/x5e5edmFOi0nyO11y3wfF8avYFc75frgXbSFzC0y.jpeg" alt=""><img src="//image.lceda.cn/pullimage/G35nyKcKen12j1hCusVSvDTscu9nzMBV99i5ixza.png" alt="" width="827" height="824"></p>
<p style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">请上传包含大赛logo的项目图片,logo以丝印形式印刷在PCB上面。</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">点击zip下载大赛logo标识! <span style="text-decoration: underline;"><a href="https://image.lceda.cn/easyedaResource/images/%E7%AB%8B%E5%88%9B%E7%94%B5%E8%B5%9B%E6%A0%87%E8%AF%86.rar" target="_blank">(大赛标识).zip</a></span></span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">* 8、演示您的项目并录制成视频上传</h3>
<hr class="horizontal-splitline normal-bold-2">
<p style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 14px;">更多详情:<a href="/posts/06c94d90c2c447dfbd9ed7339ff4a5b1" target="_blank">https://diy.szlcsc.com/posts/d76d9cb41705430e9a54e7a5feed07a5</a></span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
</div>
评论(3)