[智能硬件] 3、三分钟看懂智能硬件原理——简易智能手环制作教程(包括炫酷手机客户端开发)…

  

 

  首先恭喜大家挺过了测试二!为什么说“挺”呢为测试二的难度和测试一相比有一个比较大的跳跃:首先测试一仅仅利用现有硬件模块稍加改造而DIY一个蓝牙防丢器,而测试二则要求大家具有从脑袋里的一个想法到一个全新的小设备的实现的全部能力,显然该过程不是连几根线那么简单;其次测试一对蓝牙的使用仅限于信 搜索层面,而测试二一下子深入到可靠通信的层面了,其难度可想而知;最后在测试二中客户端的设计中复杂的状态转换过程,以及嵌入式编程时需要对所使用的硬件作细致的分析,都构成了对前期基础没打牢的同学一种挑战。不过好消息是大家挺过来了,接下来的模式大致相同。

  现在,让我们回到本次的正题!可能细心的读者会发现上次的遥控小风扇虽然利用了蓝牙的通信功能,但是仅限于客户端向硬件发送命令(在上次并未使用更严谨的应答模式,即客户端发送控制命令->硬件响应命令->硬件返回响应完毕命令)。为了弥补上次的缺陷,那么本次会将重点放在数据收集方面,楼主想来想去觉得还是一个简单的记步手环最适合了。[正版请搜索:beautifulzzzz(看楼主博客园官方博客,享高质量生活)]

 

1 智能手环简介

  智能手环是一种穿戴式智能设备。通过该设备,用户可以记录日常生活中的锻炼、睡眠等实时数据,并将这些数据与手机、平板同步,起到通过数据指导健康生活的作用。另外,智能手环还具有 交功能,能够将锻炼情况和睡眠质量发送到 交 络进行分享。

图 1_2某款智能手环核心电路板

 

2 如何实现记步

  看了上面的分析大家可能会疑惑——仅仅用一个加速计怎么能实现记步和睡眠质量检测呢实确实可以!因为加速计可以实时获取自身的XYZ三个轴向的加速度。当其静止时合加速度会在重力加速度附近波动;当佩戴者处于深度睡眠过程中时,其合加速度将呈现出长时间的稳定于重力加速度附近;当其随着运动的佩戴者手臂而做周期性摆动时,其数据也是有一定规律可循的。这样,设计时只要通过分析从加速计获的数据就能实现对运动或睡眠质量的记录。

 

3 预期效果构思

  上面已经提到:为了方便,我们并未采用存储器实现记步手环的离线记录,而是实时地将数据发送到客户端由一个可视化的折线图动态绘制结果。如图3_1所示系统中记步手环部分包含单片机模块、蓝牙模块、加速计模块和电源模块,这样通过单片机的协调可以实现将加速计模块的数据通过蓝牙实时地传送给客户端程序。在客户端部分则负责将收集到的实时数据以折线图的形式动态地展示出来,此外客户端中也加入一个滑动条来控制记步阈值来真正让大家明白其设计思想(真正商业化的智能手环多数采用的是先将有效数据保存在手环的小型存储器中,上位机周期性地将数据收集并同步到服务器端)。

图 4_1 硬件电路图

 

5 MPU6050介绍

  MPU-60X0是全球首例9轴运动处理器。它集成了3轴MEMS陀螺仪,3轴MEMS加速计,以及1个可扩展的数字运动处理器DMP(Digital Motion Processor)。如图5_1所示轴向是相对于加速计说的,当芯片水平静止放置时x轴和y轴的加速度分量几乎为0,z轴的加速度分量约为当地的重力加速度;而旋转极性则是对陀螺仪来说的,本次先不介绍。

图 5_2 MPU-60X0典型工作电路(来自MPU6050数据手册)

  MPU-60X0对陀螺仪和加速计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速运动,传感器的测量范围是可控的,陀螺仪可测范围为±250,±500,±1000,±2000°/秒(dps),加速计可测范围为±2,±4,±8,±16g(重力加速度)。如图5_3是直接从16位ADC中读出的6轴的数据(从左到右依次为加速计X轴数据、Y轴数据、Z轴数据、陀螺仪X极数据、Y极数据、Z极数据):

图5_4 实际值计算公式

  最后给大家推荐一款比较容易买到的MPU6050,如图5_5该模块将核心芯片和外围电路集成到一个模块上并留出八个引脚,本次使用只需用到上面四个即可(具体连接参考图4_1)。

图 6_1 摆臂时合加速度变化图

 

7 I2C总线介绍

    上次我们在使用蓝牙串口模块时使用过串口通信,由于51系列单片机将串口通信很多细节都封装到芯片内部,所以我们即使设计了串口驱动模块,也并没有真正了解串口通信的核心思想。其实串口协议的出现是为了构成一个总线线路,这样单片机只要使用比较少的引脚就能和比较多的设备进行通信了,这里要用到的I2C总线也具有相同的效果但又有些不同。

图 7_2 I2C总线中主从设备

这里要先介绍I2C总线中几个专有名词:

l  发送者:将数据发送到总线的设备 
l  接收者:从总线接收数据的设备 
l  主设备:产生时钟信 、启动通信、发送I2C命令和终止通信的设备 
l  从设备:监听总线、能被主设备寻址的设备 
l  多主设备:I2C能够拥有多个主设备,而且每个主设备都能够发送命令 
l  仲裁:当多个主设备请求使用总线时,决定哪一个主设备可以占用的一个过程 
l  同步:同步多个设备时钟信 的一个过程

上面是从宏观上对I2C总线介绍了下,接下来将深入细节研究其通信过程:

n  串行数据传送:

  在总线备用时SDA和SCL都必须保持高电平状态,只有关闭I2C总线时才能使SCL钳位在低电平。在I2C总线数据传输时,在时钟线高电平期间,数据线上必须保持有稳定的逻辑电平(也就是说在数据传输期间只有时钟线低电平期间,才允许数据线上的电平发生变化)。

图 7_4 开始和结束条件

如果时钟线保持高电平期间,数据线出现由高到低的电平变化,则会启动I2C总线,此时为I2C的起始信 :

若在时钟线保持高电平期间,数据线出现由低到高的电平变化,则会停止I2C总线的数据传输,此时为I2C的终止信 :

开始条件之后I2C总线被认为是忙状态,只有当停止信 之后其他主设备才能使用该总线。此外,当开始条件之后主设备能够多次发出开始信 。这些开始信 和第一次发出的开始信 类似,他们后面经常会跟从设备的地址。这样可以方便实现在I2C总线忙期间,当前占线的主设备可以和不同的从设备进行通信。

n  I2C数据传送:

  I2C总线上传送的每一个字节均为8位,但是每启动一次I2C总线,其后的数据传送字节数是没有限制的。同时每传送一字节的数据后面都要跟随一个接收者回应的应答位(低电平为应答信 ,高电平为非应答信 ),当全部数据发送完毕后主设备发送终止信 。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年6月23日
下一篇 2017年6月23日

相关推荐