1回答

0收藏

[原创] 【Curie Nano试用】 A4.读写运动数据

DFROBOT DFROBOT 5046 人阅读 | 1 人回复 | 2017-05-15

Curie Nano是定位可穿戴的场合,有时候我们需要把采集到的运动数据保存下来进行分析。如果数据量比较大就必须得保存到大容量的SD卡里了。本篇我们就来学习一下怎么操作。
材料准备,如下图所示需要用的材料有:Curie Nano、MicroSD Card Adapter、MicroSD卡、读卡器、数据线和杜邦线若干。

硬件连接,按照下表所示进行连接。
Curie Nano
MicroSD Card Adapter
GND
GND
VCC
5V
MISO
D12
MOSI
D11
SCK
D13
CS
D4
经过实际的测试可以看出加速度的方向如下图所示:


把Curie Nano和sd卡转换器固定好以后就可以进行数据的采集了,这里有个小技巧就是做完一个完整的动作以后可以暂时个两三秒钟,这样有段时间数据是趋于稳定的,方便以后的数据处理。
示例代码:
  1. <font size="4">#include "SPI.h"
  2. #include "SD.h"
  3. #include "CurieIMU.h"

  4. #define SAMPLING_INTERVAL 10//ms

  5. File myFile;

  6. float ax, ay, az;

  7. uint64_t timer;

  8. void setup() {

  9. timer = 0;

  10. Serial.begin(9600);

  11. CurieIMU.begin();

  12. CurieIMU.autoCalibrateXAccelOffset(0);

  13. CurieIMU.autoCalibrateYAccelOffset(0);

  14. CurieIMU.autoCalibrateZAccelOffset(1);

  15. CurieIMU.setAccelOffsetEnabled(true);

  16. CurieIMU.setAccelerometerRange(4);

  17. if(!SD.begin(4)) {
  18.      Serial.println("initialization failed!");
  19.      return;
  20.   }
  21. }
  22. void loop() {

  23.    timer =millis();  
  24.    CurieIMU.readAccelerometerScaled(ax, ay, az);
  25.    myFile =SD.open("data.csv", FILE_WRITE);
  26.    if(myFile)
  27.    {
  28.        myFile.print(ax);
  29.        myFile.print(",");
  30.        myFile.print(ay);
  31.        myFile.print(",");
  32.        myFile.print(az);
  33.        myFile.print("\n");
  34.     }
  35.    myFile.close();   
  36.    while((millis() - timer) < SAMPLING_INTERVAL);
  37. }</font>
复制代码
上传上边的代码到Curie Nano中,我们可以重复做一个动作,然后断电将microsd通过读卡器插到电脑上,打开data.csv文件。
如下图就可以看到3轴加速度的数据了。

示例代码只是保存了加速度的数据,同样的方法可以保存9轴的数据或者任意你想保存的传感器采集到的数据。

分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

feixiang20

发表于 2017-12-22 10:09:55 | 只看该作者

我最喜欢连接这些芯片和数据线,但是,,,
您需要登录后才可以回帖 注册/登录

本版积分规则

硬件工程师
3071 积分
35 主题
+ 关注
关闭

站长推荐上一条 /3 下一条