文章目录[隐藏]
“复古手环”是开源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源代码
直流电源的监测包括直流电源的电压监测和供电柜各支路电压电流监测。这两种电量信号均被送往单片机进行实时处理。电压信号的获取和检测相对简单,而难点在于对微弱的接地直流电流的检测。为此,研制了基于直流传感器的监测装置,原理如图6所示。
在代码编译完成后,你需要将其上载到Arduino板上。在上载之前,选择主板型号“Arduino Pro mini 3.3伏(ATmega328)”,在上载前按下板上的重设按钮。如果过程失败,就会有下列信息反馈:
arvdud: stk500_getsync():not in sync: resp=0×00
显示这段信息的原因通常是:
-
你在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.http://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打印机打印的。
第七步:后记
复古手环是我的第二个作品,”自制智能手表(复古手表)“的后续作。我的智能手环比起其他活动跟踪产品的功能太简单了,但蓝牙模块和加速计是其他作品要用到的基本模块。根据我的程序源代码,你能做出不同的改型。
我希望本教程对你有所帮助。感谢以下诸位帮我完成这个作品。
Chang-Han Jeon、Il-Yong Park、Byung-Gyu Kim、KyungReol Ku、Sang-Won Lee、Kyung-Bu Jeong。
参考个人主页: HardCopyWorld.com