用开源硬件打造属于你自己智能手环

作者: kaierwen
上传时间为: 2016-09-07 09:26 AM
2016-09-07
阅读:

“复古手环”是开源Arduino可穿戴设备的第二版作品。以我来说,这不该称为“智能手环”,这仅有简单功能罢了。实际上,还不如称之为活动跟踪记录仪……只是“智能手环”这个词对我来说更亲切些。智能手环的重要特征是他们能通过蓝牙和移动设备相连,记录用户工作日程。

Arduino实现的复古手环只有单一功能,即通过加速计收集数据,然后发到移动设备上,移动设备根据数据计算用户消耗热量和走动步数。功能很简单,也就意味着这个装置结构上比之前的“复古手表”简单,那么根据你的个人品味制作也就变得容易了。

安卓应用使用Arduino复古手环反馈信息计算行走步数,而应用的算法并不复杂。如果你对算法这一块颇有心得,用你自己的算法 替代亦可。手机应用储存消耗热量数据,所以你能得到每月/每日/每小时图表报告。不过要提醒的是,Arduino复古手环的内存很小,不能在自身储存信 息,它只能在连接到移动设备上工作,也就是说你不能单靠Arduino复古手环收集数据。我认为,这个问题在Arduino改进后将得到很好解决。

第一步:工作机制

复古手环由Arduino部分和一个安卓应用组成。

Arduino部分分为4个主要部分——Arduino板、加速计(MPU-6050)、蓝牙模块(HC-06)、聚合物锂电池(充电板可选)。

安卓应用也包括4个部分——安卓界面、蓝牙管理、算法部分、后台服务。

如果Arduino电源开启,并和复古手环应用配对完毕,那么主板将每秒读取加速计数据20次。接着,它将数据每秒发送一次到移 动设备上。加速计测量x轴、y轴和z轴数据(20次x3轴),发送它们到移动设备上。安卓应用收到两秒之间的数据进行比对,找出用户在步伐加速上的周期。 在用户步伐加速时,就计算为用户踏出了一步。接着,安卓应用根据用户的体重和步数计算消耗的热量,并按月、日和小时进行叠加。

第二步:准备工作

这里用了下列零件来制作: – Arduino Pro mini 3.3伏 – 加速计/陀螺仪传感器(MPU-6050) – 蓝牙模块(HC-06) – USB异步收发机转接器(FTDI)

手环部分(硬件)

Arduino

我用了“复古手表”上相同的Arduino板,Arduino Pro Mini 3.3伏(ATmega328)。选择它的原因是它能在锂聚合物电池3.7伏电压下工作以及它的尺寸。如果你不介意模块和电池的尺寸,而仅仅拿来测试,那 用Arduino Nano板也未尝不可(容易实现和测试)。Arduino Pro Mini以8兆赫频率工作,在5伏时则是16兆赫,但8兆赫的频率就足够了。总的来说,你只需要准备Arduino Pro Mini 3.3伏板和USB异步收发机转接器模块。

蓝牙

大部分你能入手的蓝牙模块都是HC-06模块,而且有控制界面板。界面板上有重设按钮、工作状态LED,支持3.3伏或5伏工作电压,就显得比较方便,但尺寸就较大了。而LED不是必须的,而且还耗电。所以我直接就用HC-06模块,忽略界面板。

加速计

使用的是MPU-6050加速/陀螺仪传感器模块。如果你有其他类似的加速计,也可以拿来替代。不过这么一来,源代码就要做出改动了。

电池

在这里我使用了锂聚合物电池。单芯锂电输出电压为3.7伏,能让Arduino Pro mini正常工作。当然市面上也有不同尺寸和容量大小的电池任君选择。低于100毫安时的电池尺寸小,但不能保证持续供电,而且电量太低的话,启动系统都 是个问题。我建议使用带有过充放保护的电池,如果由可拆卸插座的就更好了。

为了方便,你也可以加上锂电池充电模组,带有USB充电口,从引脚输出电源到Arduino上。

其他材料

你需要导线、电烙铁、开关、电池座。而这个组装教程也对你有所帮助。

安卓部分

复古手环的安卓程序在安卓4.0环境下运行。如果你的安卓版本低于4.0,或者用的是iPhone的话,呵呵……

第三步:组装

图上显示的是除了电池外每个模块组装后的结果。现在FTDI为整个模组供电,所以就不需要电池。

连接Arduino-蓝牙模块

如果想知道如何配对测试蓝牙模块,百度之!只要跟着教程对VCC、GND、TXD、RXD引脚接线即可。 (VCC接3.3伏、GND接地、TX接D2、RX接D3)

连接Arduino-加速计(MPU-6050)

加速计模块使用I2C界面。(VCC接3.3伏、GND接地、SDA接A4、SCL接A5)

连接Arduino-电池

供电是很简单的事,只要将正极接入输入端(RAW),负极接地(GND)即可。如果你想带有充电功能,那么就使用锂电池充电模块吧。这是,你应将电池的B+、B-接到充电模块的正负输出上,将输出的正负极分别连到Arduino板的RAW和GND上。

检查连接

完成了所有过程后,就轮到下面步骤了。除了电池外,连接了每个部分,电源由FTDI模块供给,在源代码上载和完成测试前就不要连接电池了。当所有测试完成后,断开FTDI模块,将电池连上(或加上充电模块)。

第四步:手环的Arduino源代码

在GitHub上你能下载到手环的程序框架:https://github.com/godstale/retroband

上载Arduino源代码

在代码编译完成后,你需要将其上载到Arduino板上。在上载之前,选择主板型号“Arduino Pro mini 3.3伏(ATmega328)”,在上载前按下板上的重设按钮。如果过程失败,就会有下列信息反馈:

arvdud: stk500_getsync():not in sync: resp=0×00

显示这段信息的原因通常是:

  1. 你在Arduino开发环境里选择的主板类型和实际的不同。 2. TX、RX引脚连接错误。 3. 用作连接TX、RX引脚的串口引脚出错。 4. 板上的启动引导故障。 5. 用户使用了不支持自动重设功能的USB模块。

对于第一种情况,你需要在Arduino开发环境的[tools > board]中选择正确的主板类型;第二种情况,检查TX、RX引脚是否正确连接;改正后如果还是像第三种情况所说的那样,将D0和D1引脚断开连接;第 五种情况,你只需按下重设按钮。当你按下Arduino开发环境里的上载按钮后,观察出现的信息,有一个时刻上它会从“Compiling”(编译中)转 为“Uploading”(上载中)。如果你看到USB模块上TX/RXLED灯在闪烁,那么表示上载过程正常。比较罕见的是情况4的那种,那你就用一块 UNO板对故障的启动模块进行重写。这个方法描述篇幅太长,脱离了我们原来教程目的太远,下面是帮助解决问题的链接。

1.https://forum.sparkfun.com/viewtopic.php?f=32&t=27960

2.https://arduino.cc/en/Tutorial/ArduinoISP/

调试

你需要确定连接好了每个模块,工作无误。首先运行Arduino开发环境的串行监视器,看看加速计是否正常运行。(在完成上载程 序代码后,板上的LED会亮,运行程序试验。)因为下面的源代码有段检错代码,当连接正常时,它应当显示Arduino板发回的数值。没有的话,就证明加 速计连接有问题。(在完成所有调试工作后,可以删除检错代码。)

// Print the raw acceleration values  Serial.print(F("accel x,y,z: "));  Serial.print(accel_t_gyro.value.x_accel, DEC);  Serial.print(F(", "));  Serial.print(accel_t_gyro.value.y_accel, DEC);  Serial.print(F(", "));  Serial.print(accel_t_gyro.value.z_accel, DEC);  Serial.print(F(", at "));  Serial.print(iAccelIndex);  Serial.println(F(""));

现在,轮到检查蓝牙模块。准确连接VCC、GCN引脚后,移动设备扫描下模块应该能被找到。如果在设备列表上看不到HC-06模块,就检查一下电源引脚。完成这步后,是时候检查程序应用部分。

假设配对过程正常,但程序应用收不到数据,那么就是TX/RX引脚连接出了问题。换个说法,从Arduino到蓝牙模块的数据传输异常。

第五步:安装运行应用

讲解如何编译及修改安卓源代码会很长,所以这里就掠过了。不过你能在GitHub上下载整个复古手环安卓源代码,并对其进行修改,任意传播,只要保留版权信息即可。在[RetroBand_Android\RetroBand]文件夹内可以找到安卓应用的源代码。

我将应用放到了谷歌应用商店上了,只要在上面搜索“RetroBand”就能找到,然后安装。它在安卓4.0系统以上运行。 应用链接:https://play.google.com/store/apps/details?id=com.hardcopy.retroband

安装应用,运行程序,利用复古手环对移动设备程序进行校正,看应用能否成功收到信息。安卓应用有3个列表选单。

时间轴:这里每小时收集累计消耗热量数据,你能查到每小时、每日、每月消耗热量数据。

图表:显示加速计收到的数据,并将其绘制为图表,你能看到3轴数据是如何变换的。

设置:这里配置程序设定,输入自己体重。其他功能将陆续开放。

成功测试安卓应用的话,连接锂电池,完成接下来的工作。

复古手环技术参数:

  • 处理器:ATmega328-3.3v(8MHz),32KB闪存(2KB引导启动共享),2KB内存,1KB EEPROM。
  • 安卓4.0或以上的专用安卓应用。
  • 基于步数计算的消耗热量计算功能。
  • 累计消耗热量数据,将统计数据以每月、每日、每小时方式显示出来。
  • 实时监测加速计上3轴数据变化。
  • 开源。

在下图你能看到产品原型——Arduino、加速计、蓝牙模块、充电模块、锂电池、电源开关的组合体。我故意抹上了一些胶,让它看起来脏兮兮的,但还是能正常工作的。

第六步:包装

如果你有一台3D打印机,那就试试看自己设计外壳。这里看到的外壳就是由一台3D打印机打印的。

第七步:后记

复古手环是我的第二个作品,”自制智能手表(复古手表)“的后续作。我的智能手环比起其他活动跟踪产品的功能太简单了,但蓝牙模块和加速计是其他作品要用到的基本模块。根据我的程序源代码,你能做出不同的改型。

文章来源于网络

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示