Dfrobot智能穿戴评测之手表式计步器(库已上传)-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7393|回复: 8

Dfrobot智能穿戴评测之手表式计步器(库已上传)

[复制链接]
发表于 2017-4-17 00:48 | 显示全部楼层 |阅读模式
本帖最后由 沧海笑1122 于 2017-4-17 13:44 编辑

DF穿戴评测报告之计步器手表

【评测项目概览】
    感谢DFrobotarduino.cn社区提供的穿戴评测机会。这次评测申请是三个精良的模块:
全家福1.jpg
当我第一眼看到评测邀约时,脑海里面直接映出一个计步器手表来。Beetle BLE做主控(328核心)、10dof姿态模块采集并且解算姿态、OLED作为终端显示。45日到货后,经过十几天的折腾。现在的手表是这样的:
正面.jpg
    嘿嘿,很眼熟吧,用的就是上一季心率表的外壳,PCB也是心率表打板时多出的,经过了适当的改造(下文会详述),OLED用的是0.49寸的IIC接口,本次评测的DF产品,做工精良,但OLED尺寸大了些,请示luna后只好割爱。好了,下面一起进入这块计步器手表(穿戴)的评测之旅吧。
【评测清单】

主角1Beetle BLE是非常有特点的一块主控,尺寸很小。
beetle.png
下面是她的主要参数:
蓝牙芯片:TI CC2540(蓝牙低功耗,V4.0)
微控制器:ATmega328(16 MHz)
数字口数量:4(如果你使用dfoled模块,需要占用一个D4)
模拟输入口数量:4个(复用A4,A5IIC1组)
尺寸: 28.8mm X 33.1mm(体积非常袖珍)
重量:10g
电源方面:支持小于8V大于等于5Vvin输入,提供一组5V--GND的电源输出。这次测试用的10DOFOLED都是3V3-5V的,因此可用。
焊盘是镀金的,PIN之间的距离不是标准的2.54,说明这是一款基于穿戴的主控,鼓励玩家将其“缝制”在作品上,或者用线仔进行灵活连接,而不是固定在PCB上。

AT指令进入调试界面后,设置蓝牙为从机方式,固件为最新的1.97(玩家不必再折腾刷固件了),设备名称默认BLUNO,密码默认:dfrobotAT退出,波特率默认115200.这些看看就好,建议没有折腾的必要。
AT指令.png
主角210dof模块(全称:10自由度惯性导航模块)
10dof.png
主要参数:
集成10自由度传感器
ADXL345 加速度计
ITG3205 陀螺仪
HMC5883L 磁罗盘
BMP085 气压传感器和温度传感器
尺寸:26x18mm(集成度非常高,布局紧凑,带LED电源指示)

主角3OLED 0.96
oled.png
主要参数:
IIC接口,主流的SSD1306芯片
RST:复位信号输入引脚---D4
SDAIIC数据输入引脚
SCLIIC时钟输入引脚
DCSAO设置引脚---GND

可以使用Adafruit_SSD1306库。亲测可用。
【硬件清单】
材料表1.jpg
(红色字体为本次评价的主角,绿色字体为其他模块或材料)

【软件清单】
1Arduino IDE 1.8.0
2ADXL345加速度传感器(作者Frankie Chu for seeed studio)、Pedometer(作者lawliet zou seeed)计步器库
3U8glib库(oled显示,来自https://bintray.com/olikraus/u8glib/Arduino
4blynk库(http://www.blynk.cc,下一篇用于介绍BeetleBLEblynk的一段美好尝试)
下列库均打包,供下载


【代码】
[kenrobot_code]/**************************************************************
* Blynk is a platform with iOS and Android apps to control
* Arduino, Raspberry Pi and the likes over the Internet.
* You can easily build graphic interfaces for all your
* projects by simply dragging and dropping widgets.
*
*   Downloads, docs, tutorials: http://www.blynk.cc
*   Ske tch generator:           http://examples.blynk.cc
*   Blynk community:            http://community.blynk.cc
*   Social networks:            http://www.fb.com/blynkapp
*                               http://twitter.com/blynk_app
*
* Blynk library is licensed under MIT license
* This example code is in public domain.
*2017-04-15 不与blynk server 连接,本地显示OLED
**************************************************************
*
* This example shows how to use DFRobot Bluno or BLE Link module
* to connect your project to Blynk.
*
* Please be sure to update your DFRobot firmware to at least V1.97:
*   https://github.com/DFRobot/BLE_firmware_V1.9
*
* For Bluno, read instructions here:
*   [url=https://www.dfrobot.com/wiki/index.php/Bluno_SKUFR0267]https://www.dfrobot.com/wiki/index.php/Bluno_SKUFR0267[/url]
*
* For BLE-Link, read instructions here:
*   https://www.dfrobot.com/wiki/index.php/BLE-Link_(SKU:TEL0073)
*
* NOTE: BLE support is in beta!
*2017-4-13 计步器数据本地显示,不需要通过blynk上送APP
*计步器以及ADXL345库来自seeed
*
**************************************************************/
#include "U8glib.h"
//#include <BlynkSimpleSerialBLE.h>
#include <Wire.h>
#include <ADXL345.h>
#include "pedometer.h"
Pedometer pedometer;
int oldstep=0;
int newstep=0;
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);  // I2C / TWI
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "41********(your auth code)***********687"; //project2

  

  
void sendSensor()
{
  pedometer.stepCalc();//计算步伐
  newstep=pedometer.stepCount;//获取步数

  if (newstep>oldstep)//如果获取新的步数----避免频繁显示、上送
  {
   //--- Blynk.virtualWrite(V2,newstep);//上送blynk server
    char newstep_str[4];
    itoa(newstep,newstep_str, 10);
    // Serial.println(newstep);//调试语句,实际可注释
    //------开始写oled
     u8g.firstPage();  
     do {
       u8g.setFont(u8g_font_ncenB18);
       u8g.drawStr(39,57,newstep_str);//oled显示,我用的是64*32,所以座标如此
      
     }while( u8g.nextPage() );
  //--------oled显示循环
  oldstep=newstep;
  delay(30);
  }

}

void setup()
{

  Serial.begin(115200);
  //---Blynk.begin(Serial, auth);//BLE连接 server
  pedometer.init();//计步器初始化

}

void loop()
{
//--- Blynk.run();
  sendSensor();
}
[/kenrobot_code]
64_32.png
(整个灰色绘图区部分为128*64,也就是传统的led 0.96寸的绘图区,用0.49寸,直接调用ssd1306的u8glib就在图中绿色框内作图即可)
【外壳及组装】
1、改装PCB,主要是两个问题:一是10dofIIC线序和我的PCB不一致,需要改接。二是OLEDIIC线序和我的PCB不一致,需要改接。用了四根线仔解决。
2、电源:使用美科的BM(锂电池充电及电源管理模块,提供稳定的3V3以及5V输出),所以不再从beetle BLE上取电。将OLED以及10dof均接3V3,将beetle BLE VIN5V
3、接线:OLED SCL\SDA   10dof SCL\SDA  beetle BLE SCL\SDA对应接线即可。
4、组装:锂电池在底部、上面依次是beetleBLE----美科BM模块----PCB---OLED&10dof

         BM的管理面板引出,可以充电,拨动开关控制电源关断
PCB_BEETLE.jpg PCB1.jpg
表侧面.jpg
【计步器使用情况】
     上手试验后,计步器可用,上电后需要静置10~20秒,然后OLED开始显示输出。正常行走姿态,摆臂时相应计步器开始计数。OLED显示数据累进。目前为了显示需要,字体选择14号,所以只能显示三位数,可以设置小字体已获取更大适应性。

【评测点评】
1Dfrobot出品做工精良。尤其为beetleBLE以及10dof点赞。像艺术品。
   beetleBLE328主控以及BLE 4.0于一身。电源设计宽容度较高(5--8伏),数字口和电源口的输出焊盘做工很棒,可以焊接也可以绑。尤其是电源接口设计成(+-镂空,可谓匠心独具)
210dof这次玩得还不深,只是利用seeed的库测试了计步器功能。后续会陆续琢磨其他玩法。
3、建议:
1oled这次有点遗憾,由于受体积的限制只好割爱,我看到DF出品了一款0.5oled,简直是为穿戴而生,希望有机会可以研究。
2)关于beetle BLE,建议选配一组架子线(一头小鳄鱼夹,一头杜邦线),可以再不焊接的情况下,将PIN引出,便于调试。否则在调试中,易短路,此建议供参考。

【下一步提升】
1、通过blynk server,将beetle BLE采集的数据,上送至blynkserver 进而显示在手机APP上。是不是很期待,随后跟帖更新。此功能已经OK
2、打印外壳,这次偷懒了,借用了上一季的外壳,还是那么大,那么方(luna会心一笑)。希望可以重新为他们设计一件好衣服。另外,这次没有重新画PCB,整个10dof以及oled都悬在外壳上,实在是辜负。抱歉啊。

【鸣谢】
    感谢孝肃兄、luna妹纸的优秀工作,感谢Dfrobot以及arduino.cn给我参与评测的机会,Dfrobot是自2012年初我开始玩arduino后,知道的第一个国产品牌。自己开始做的第一个评测,也是来自DF的语音识别模块以及mp3播放模块,帖子还保存在极客工坊里,偶尔想起也会打开看看。五年时光不长,感谢这样优秀的极客团队带给我们不断惊喜。

    感谢hunter等评测群师兄弟的支持。沧海抱拳!春天来了,极客之路也会一路春光、无尽颜色吧。。。
   Remember that Hope is a good thing, Red,maybe the best of things, and no good thing ever dies.
----摘自《肖申克救赎》,AndyRed的信尾。

libraries_Pedometer.rar (479.77 KB, 下载次数: 34) U8glib.rar (910.22 KB, 下载次数: 16)
 楼主| 发表于 2017-4-17 00:53 | 显示全部楼层
本帖最后由 沧海笑1122 于 2017-4-17 01:01 编辑

占楼为视频。

发表于 2017-4-17 09:51 | 显示全部楼层
裸表其实挺帅的!
发表于 2017-4-17 13:20 | 显示全部楼层
沧海发的都是高质量贴啊  跟前辈学习学习
 楼主| 发表于 2017-4-17 13:40 | 显示全部楼层
O_oYYQ 发表于 2017-4-17 13:20
沧海发的都是高质量贴啊  跟前辈学习学习

感谢指导,算法部分我也是拿来主义。
发表于 2017-4-17 13:47 | 显示全部楼层
沧海笑1122 发表于 2017-4-17 13:40
感谢指导,算法部分我也是拿来主义。

我之前打算用Genuino 101自带的6轴陀螺仪做个计步器的  但测试了好久发现计步算法精确度不高  后来就放弃了  现在看了你发的这个    打算参考着去试试
发表于 2017-4-17 13:52 | 显示全部楼层
O_oYYQ 发表于 2017-4-17 13:47
我之前打算用Genuino 101自带的6轴陀螺仪做个计步器的  但测试了好久发现计步算法精确度不高  后来就放弃 ...

101那个我也试过,感觉挺好的啊
发表于 2017-4-17 14:01 | 显示全部楼层
hunter1217 发表于 2017-4-17 13:52
101那个我也试过,感觉挺好的啊

我的精度不够  可能是我能力不够 程序问题吧  哈哈
发表于 2017-4-18 13:12 | 显示全部楼层
O_oYYQ 发表于 2017-4-17 14:01
我的精度不够  可能是我能力不够 程序问题吧  哈哈

是我想的太少吧,给你分享个论文,关于计步的,你可以看看,,以满足你的要求

自适应计步检测算法研究.pdf

311.4 KB, 下载次数: 29

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 02:38 , Processed in 0.144285 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表